Bagaimana dengan lima hal yang saya benci dari daftar "Hal yang saya benci tentang beberapa bahasa"? : D
5- Melukis merah oranye tidak membuatnya menjadi apel.
Ketika suatu bahasa dirancang, para desainer biasanya memikirkan apa manfaatnya. Menggunakannya untuk sesuatu yang sama sekali berbeda bisa berhasil, tetapi mengeluh ketika itu tidak bodoh. Ambil Python. Saya yakin seseorang memiliki atau seseorang suatu hari nanti akan membuat utilitas untuk membuat exe dari kode Python. Mengapa di bumi Tuhan Anda inginkan melakukan itu? Itu akan rapi — jangan salah paham — tetapi tidak ada gunanya. Jadi berhentilah mengeluh tentang hal itu!
Proyek yang dirancang dengan baik kemungkinan akan berisi kode dari berbagai bahasa. Itu tidak berarti Anda tidak dapat menyelesaikan proyek dengan hanya satu bahasa. Beberapa proyek mungkin baik dalam kemampuan bahasa apa pun yang Anda gunakan.
4 - Apakah Anda berdiri di atas kaki kayu?
Platform bisa menjadi pengaruh besar dari apa yang bisa dilakukan oleh bahasa. Dengan pengumpul sampah saat ini, atau bahkan pascals upaya awal pada "pengumpulan sampah", dapat membantu dalam memori memudar (mungkin malloc lebih banyak ram ??). Komputer lebih cepat dan tentu saja, kami berharap lebih banyak dari bahasa kami. Dan sejujurnya, kita mungkin harus. Namun, ada harga yang sangat besar untuk membayar kenyamanan kompiler untuk membuat tabel hash atau string atau berbagai konsep lainnya. Hal-hal ini mungkin tidak diwariskan ke platform tempat mereka digunakan. Untuk mengatakan mereka mudah dimasukkan ke bahasa hanya memberitahu saya Anda mungkin tidak memiliki kaki untuk berdiri.
3- Kesalahan siapa ini?
Bug. Kamu tahu. Saya suka serangga. Mengapa saya suka bug. Karena itu berarti saya dapat mempertahankan pekerjaan saya. Tanpa bug, akan ada banyak toko pizza tertutup. Namun, pengguna membenci bug. Tapi di sini ada sedikit air dingin. Setiap bug adalah kesalahan pemrogram. Bukan bahasa. Bahasa dengan sintaks yang ketat yang secara signifikan akan mengurangi berapa banyak bug yang mungkin dihasilkan akan menjadi bahasa yang sama sekali tidak berguna. Kemampuannya mungkin bisa dihitung dengan satu tangan. Anda ingin fleksibilitas atau kekuatan? Anda punya bug. Mengapa? Karena Anda tidak sempurna, dan Anda membuat kesalahan. Ambil contoh yang benar-benar dapat diidentifikasi di C:
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
Kita semua tahu apa yang akan dilakukan. Namun, apa yang mungkin sebagian dari kita tidak sadari adalah .. bahwa fungsionalitas dapat sangat bermanfaat. Tergantung apa yang kamu lakukan. Buffer overruns adalah biaya fungsionalitas itu. Kode itu di atas. Jika saya benar-benar merilisnya ke publik. Itu lagi .. katakan dengan saya .. "Salahku". Bukan C karena mengizinkan saya melakukannya.
2 - Bukankah seharusnya kita meletakkan itu di tempat sampah?
Sangat mudah untuk menunjuk fitur dalam bahasa yang tidak kita mengerti karena kita tidak sering menggunakannya dan menyebutnya bodoh. Mengeluh bahwa itu ada di sana, dll. Goto selalu menghibur saya. Orang-orang selalu mengeluh tentang keberadaan goto dalam bahasa. Namun saya yakin program terakhir Anda termasuk jenis goto. Jika Anda pernah menggunakan istirahat atau melanjutkan, Anda telah menggunakan goto. Itu apa adanya. Memang, itu adalah goto "aman", tetapi memang demikianlah adanya. Goto memiliki kegunaannya. Apakah goto "implisit" seperti melanjutkan atau menghancurkan digunakan atau gotos eksplisit (menggunakan kata kunci "goto" yang sebenarnya untuk bahasa apa pun). Bukan berarti pengembang bahasa sempurna, tetapi biasanya ... jika fungsionalitas telah ada sejak awal waktu (untuk bahasa itu). Kemungkinan aspek itu adalah kualitas yang menentukan bahasa itu. Berarti .. itu Sedang digunakan dan kemungkinan tidak berkeliaran karena kompatibilitas ke belakang. Ini digunakan hari ini. Seperti 5 menit yang lalu. Dan digunakan dengan benar. Yah .. bisa dibilang seseorang menggunakannya dengan tidak benar, tetapi itu berhubungan dengan # 3 dalam daftar saya.
1. - Semuanya adalah objek.
Oke .. ini benar-benar bagian dari # 2. Namun sejauh ini ini adalah keluhan paling menyebalkan yang saya lihat dalam daftar kebencian. Tidak semuanya adalah objek. Ada banyak sekali konsep yang tidak termasuk atau perlu menjadi objek. Menempatkan barang-barang di tempat yang bukan milik mereka hanya jelek dan dapat mengurangi efisiensi suatu program. Tentu. Mungkin tidak banyak tergantung pada bahasanya. Ini juga berhubungan dengan # 5. Ini berarti ... ya. Global tidak masalah. Fungsi seperti metode statis seharusnya ok. Menggabungkan pemrograman OO dengan fungsi global tidak masalah. Sekarang .. itu tidak berarti kita semua harus keluar dan "membebaskan" kode kita dari model objek itu juga. Saat mendesain bagian kode atau keseluruhan proyek, apa yang terjadi di balik layar harusdipertimbangkan saat menyusunnya. Bukan hanya di mana konsep itu hidup dan banyak faktor lainnya. Mengapa membungkus fungsi global dalam kelas atau konsep ruang nama jika tidak ada gunanya? Ambil variabel anggota statis. Itu sangat menghibur saya karena .. well..Tergantung pada bahasa dan implementasi tentu saja, tetapi secara umum, Anda baru saja menyatakan global. Ya, ada beberapa alasan untuk membungkus konsep non-OO ini dalam pembungkus OO. Salah satunya tentu saja mendokumentasikan kode diri. Itu bisa masuk akal. Jadi .. seperti yang saya katakan. Jangan keluar dan "bebaskan" kode Anda. Tetapi setiap bahasa modern yang bagus akan memiliki konsep global di luar pemodelan OO itu. Ya saya secara khusus bermaksud menunjukkan bahwa bahasa pemrograman OO tanpa konsep global kemungkinan besar memiliki cacat desain yang serius. Sekali lagi .. tergantung pada niat dan desain bahasa jadi saya tidak mencoba untuk memilih bahasa tertentu dan ada terlalu banyak untuk dianalisis di sini. Siapa pun, Pertimbangkan di mana kode itu harus hidup dan menjadi yang paling efektif. Menambahkan sekelompok suar ke sesuatu yang tidak menambah fungsionalitas atau dukungan hanya mengurangi keyboard lebih cepat. Tidak ada gunanya bagi siapa pun. Yah .. kecuali Anda suka poin brownies dari orang yang mungkin salah mengajari Anda bahwa semuanya adalah objek.
Singkatnya, pemrograman tidak hanya mengetuk keyboard tanpa berpikir. Ada banyak pertimbangan desain untuk proyek apa pun. Saya tahu ini klise, tetapi Anda harus melihatnya dari setiap sudut. Bahkan dengan jenis bahasa yang aman saat ini. Anda tidak hanya membuang kode dan mengharapkannya berfungsi dengan baik. Tentu .. ini mungkin berhasil, tetapi mungkin bukan cara yang tepat untuk melakukannya. Secara keseluruhan, pilih bahasa dan format yang paling cocok untuk pekerjaan tertentu DAN lingkungan. Tetapi tidak ada bahasa yang menghilangkan pemikiran di baliknya. Jika Anda tidak berpikir .. Anda hanya mengetik.