Peringatan: ini hampir tidak sebanyak jawaban sebagai kritik terhadap pembicaraan yang "dikaitkan pengguna" dalam jawaban.
Poin utama pertamanya adalah (seharusnya) "standar yang terus berubah". Pada kenyataannya, contoh-contoh yang ia berikan berhubungan dengan perubahan C ++ sebelum ada standar. Sejak tahun 1998 (ketika standar C ++ pertama selesai) perubahan bahasa sudah sangat minim - pada kenyataannya, banyak yang akan berpendapat bahwa masalah sebenarnya adalah bahwa lebih banyak perubahan harus dibuat. Saya cukup yakin bahwa semua kode yang sesuai dengan standar C ++ asli masih sesuai dengan standar saat ini. Meskipun agak kurang pasti, kecuali jika sesuatu berubah dengan cepat (dan sangat tidak terduga), hal yang sama akan benar dengan standar C ++ yang akan datang juga (secara teoritis, semua kode yang digunakanexport
akan pecah, tetapi hampir tidak ada; dari sudut pandang praktis, ini bukan masalah). Saya dapat memikirkan beberapa bahasa lain, OS (atau banyak hal lain yang berhubungan dengan komputer) yang dapat membuat klaim semacam itu.
Dia kemudian masuk ke "gaya yang selalu berubah". Sekali lagi, sebagian besar poinnya cukup dekat dengan omong kosong. Dia mencoba untuk menggambarkan for (int i=0; i<n;i++)
sebagai "tua dan rusak" dan for (int i(0); i!=n;++i)
"panas baru". Kenyataannya adalah bahwa walaupun ada beberapa tipe yang perubahannya masuk akal, karena int
, tidak ada bedanya - dan bahkan ketika Anda bisa mendapatkan sesuatu, jarang diperlukan untuk menulis kode yang baik atau benar. Bahkan yang terbaik, dia membuat gunung dari molehill.
Klaim berikutnya adalah bahwa C ++ adalah "mengoptimalkan ke arah yang salah" - khususnya, bahwa meskipun ia mengakui bahwa menggunakan perpustakaan yang baik itu mudah, ia mengklaim bahwa C ++ "membuat penulisan perpustakaan yang baik hampir mustahil." Di sini, saya percaya adalah salah satu kesalahannya yang paling mendasar. Pada kenyataannya, menulis perpustakaan yang bagus untuk hampir semua bahasa sangat sulit. Paling tidak, menulis perpustakaan yang baik membutuhkan pemahaman beberapa domain masalah dengan baik sehingga kode Anda berfungsi untuk banyak aplikasi yang mungkin di (atau terkait dengan) domain itu. Sebagian besar dari apa yang dilakukan C ++ sebenarnya adalah "menaikkan standar" - setelah melihat seberapa baik perpustakaan dapat , orang jarang mau kembali menulis jenis ombak yang seharusnya mereka miliki.coders yang benar - benar baik menulis beberapa perpustakaan, yang kemudian dapat digunakan (dengan mudah, seperti yang dia akui) oleh "kita semua". Ini benar-benar kasus di mana "itu bukan bug, itu fitur."
Saya tidak akan mencoba untuk mencapai setiap titik secara berurutan (yang akan mengambil halaman), tetapi langsung lompat ke titik penutupnya. Dia mengutip Bjarne yang mengatakan: "optimasi seluruh program dapat digunakan untuk menghilangkan tabel fungsi virtual yang tidak terpakai dan data RTTI. Analisis semacam ini sangat cocok untuk program yang relatif kecil yang tidak menggunakan tautan dinamis."
Dia mengkritik ini dengan membuat klaim yang tidak didukung bahwa "Ini adalah masalah yang sangat sulit", bahkan sejauh membandingkannya dengan masalah penghentian. Pada kenyataannya, itu bukan semacam itu - pada kenyataannya, linker disertakan dengan Zortech C ++ (cukup banyak kompiler C ++ pertama untuk MS-DOS, kembali pada 1980-an) melakukan hal ini. Memang benar bahwa sulit untuk memastikan bahwa setiap bit data yang mungkin tidak ada telah dihilangkan, tetapi masih sepenuhnya masuk akal untuk melakukan pekerjaan yang cukup adil.
Terlepas dari itu, bagaimanapun, poin yang jauh lebih penting adalah bahwa ini sama sekali tidak relevan bagi kebanyakan programmer dalam hal apa pun. Seperti yang kita ketahui yang telah membongkar sedikit kode, kecuali jika Anda menulis bahasa rakitan tanpa pustaka sama sekali, file executable Anda hampir pasti berisi sejumlah "barang" (baik kode dan data, dalam kasus tertentu) yang Anda mungkin bahkan tidak tahu, belum lagi benar-benar menggunakan. Bagi kebanyakan orang, sebagian besar waktu, itu tidak masalah - kecuali jika Anda mengembangkan untuk sistem tertanam terkecil, bahwa konsumsi penyimpanan tambahan sama sekali tidak relevan.
Pada akhirnya, memang benar bahwa kata-kata kasar ini memang memiliki substansi yang sedikit lebih banyak daripada kebodohan Linus - tapi itu justru memberikan penghinaan dengan pujian samar yang layak diterima.
virtual
fungsi, kan?