Dr Bjarne Stroustrup dalam bukunya D&E mengatakan
Beberapa pengulas meminta saya untuk membandingkan C ++ dengan bahasa lain. Ini saya putuskan untuk tidak melakukannya. Dengan demikian, saya telah menegaskan kembali pandangan lama dan sangat dipegang: "Perbandingan bahasa jarang bermakna dan bahkan lebih jarang adil". Perbandingan yang baik dari bahasa pemrograman utama membutuhkan lebih banyak upaya daripada yang ingin dihabiskan oleh kebanyakan orang, pengalaman dalam berbagai bidang aplikasi, pemeliharaan yang kaku dari sudut pandang yang terpisah dan tidak memihak, dan rasa keadilan. Saya tidak punya waktu, dan sebagai perancang C ++, ketidakberpihakan saya tidak akan pernah sepenuhnya kredibel.
- Desain dan Evolusi C ++ (Bjarne Stroustrup)
Apakah Anda setuju dengan pernyataannya ini " Language comparisons are rarely meaningful and even less often fair
"?
Secara pribadi saya berpikir bahwa membandingkan bahasa X dengan Y masuk akal karena memberi lebih banyak alasan untuk mencintai / membenci X / Y :-P
Apa yang kalian pikirkan?
sumber
Jawaban:
Saya suka membandingkan bahasa pemrograman!
saya membandingkan java dengan angin hangat dengan sedikit hujan
saya membandingkan C # dengan hari musim semi yang indah dengan awan putih yang cukup halus untuk membuat langit bahagia
Saya membandingkan C dengan palu godam di ruangan yang penuh kaca
saya membandingkan C ++ dengan tas palu godam di dunia kristal
Saya membandingkan VB dengan mainan lama yang tenggelam di bak mandi
Saya membandingkan PL / 1 dengan landasan berkarat, melesat ke lantai
Anda membandingkannya dengan apa?
sumber
Saya pikir Stroustrup sepenuhnya benar. Dengan membandingkan dua bahasa secara memadai pada kemampuan teknisnya, mereka perlu cukup akrab dengan keduanya untuk menulis kode idiomatik dan menggunakan pola desain yang sama yang biasanya digunakan oleh para programmer yang sangat produktif dalam kedua bahasa tersebut. Seseorang yang tidak memiliki tingkat pengetahuan kedua bahasa tersebut dapat melihat hal-hal yang tidak secara eksplisit disediakan oleh bahasa yang tidak dia kenal, dan menganggap akan ada masalah sebagai hasilnya.
Misalnya, seseorang yang tidak menggunakan Python secara teratur dapat berasumsi bahwa pengguna Python secara teratur mengalami masalah karena lekukan. Atau seseorang yang tidak terbiasa dengan Common Lisp mungkin melihat kurangnya perpustakaan yang dipoles, tetapi tidak tahu bahwa FFI cukup kuat untuk menulis pembungkus untuk perpustakaan C dengan upaya nominal. Seseorang yang tidak terbiasa dengan Ruby mungkin melihat kurangnya pengetikan statis dan menganggap kesalahan ketik akan menjadi masalah besar. Akhirnya, seseorang yang tidak terbiasa dengan Haskell mungkin melihat kurangnya penugasan, dan menganggap itu tidak bisa menangani keadaan.
Sekarang semua ini mengasumsikan bahwa bahasa sebenarnya hanya dibandingkan pada kemampuan teknis mereka.
sumber
Bahasa adalah alat. Yang mengatakan, saya telah melihat alat yang benar-benar jelek sebelumnya. Tidak ada yang mau bekerja dengan palu yang kepalanya bisa terbang dan menabrak tukang kayu lain di perutnya. Demikian juga, jika Anda melihat palu rekan kerja Anda berada dalam kondisi seperti itu, Anda mungkin akan menghindari mereka ketika mereka menggunakannya.
Penting juga untuk benar-benar memahami alat apa itu. Anda tidak dapat menggunakan obeng dan palu secara bergantian (meskipun beberapa berusaha mati-matian). Sial, Anda bahkan tidak bisa menggunakan semua palu secara bergantian; Anda perlu kereta luncur untuk beberapa hal, palu untuk orang lain dan taktik untuk yang lain. Jika Anda menggunakan alat yang tidak pantas, maka yang terbaik, Anda akan melakukan pekerjaan yang lebih buruk, paling buruk Anda akan melukai diri sendiri atau rekan kerja.
Dengan kata lain, perbandingan bahasa berguna karena dapat mencegah kecelakaan di tempat kerja. Mengambil di atas dari metafora; sulit untuk mengetahui tanpa membandingkan apakah bahasa yang diberikan adalah palu godam, obeng, dremel atau gergaji meja, karena (tidak seperti dengan alat fisik) Anda tidak dapat benar-benar tahu hanya dengan melirik. Anda perlu memikirkan fitur-fitur yang ditawarkannya, melihatnya dalam aksi (dengan mencoba membaca bagian-bagian signifikan dari basis kode besar yang tertulis di dalamnya), dan idealnya, uji-drive sendiri juga. Hati-hati jangan sampai membuat kesalahan dengan hanya menulis Cobol dengan Python (misalnya). Anda perlu menggunakan bahasa baru secara idiomatis, yang berarti mempelajarinya dengan baik. Ini mungkin mengapa Bjarne mengatakan kebanyakan orang tidak berupaya cukup untuk perbandingan yang bermanfaat.
Jenis perbandingan yang dimulai dengan "Saya suka Blub" dan berlanjut dengan "Yah, saya suka Blub ++" sama sekali tidak berguna. Jika akhirnya memilih bahasa, yang benar-benar memberitahu Anda adalah siapa yang paling persuasif dalam kelompok tertentu dan / atau perusahaan bahasa mana yang memiliki anggaran iklan terbesar. Jika Anda menganalisis apa yang bisa dilakukan oleh suatu bahasa, tugas apa yang cocok untuknya, dan di mana kekurangannya tanpa menggunakan argumen yang tidak masuk akal atau bias pribadi, maka itu memang bisa bermanfaat.
sumber
Pengecualian itu, kecuali dalam beberapa perkecualian yang jarang (dan - jarang - seperti dalam "itu terjadi sekali atau dua kali dalam masa tata surya"), itu biasanya mengarah pada perang bahasa, dalam varian yang kurang lebih kuat, dan sangat jarang meninggalkan beberapa praktis dan kesimpulan yang bermanfaat.
Bahasa adalah alat, bukan agama. Anda tidak membandingkan palu dengan obeng, tetapi Anda menggunakan palu yang sesuai dengan tugas Anda & cara berpikir / pendidikan / tingkat abstraksi yang paling dibutuhkan. Juga, karena orang yang melakukan perbandingan bias oleh fakta bahwa ia tahu setidaknya satu dari dua, atau setidaknya lebih suka salah satu dari dua, sulit untuk menemukan kriteria yang benar-benar obyektif untuk membandingkannya (pengecualian ada).
sumber
Jika kami memperlakukan bahasa sebagai produk dan semua pengembang sebagai pasar, kami bisa sampai pada beberapa kesimpulan menarik:
sumber
Stroustrup sepenuhnya benar.
Kebanyakan "perbandingan bahasa" dilakukan dengan hasil tertentu dalam pikiran, yaitu untuk "menunjukkan" bahwa yang satu lebih "unggul" dari yang lain.
Seringkali ini berarti menulis sepotong kode dalam kedua bahasa dan mengukur kinerja yang dapat dieksekusi, menulis satu bahasa yang sangat dioptimalkan dan yang lainnya sengaja untuk kinerja yang buruk. Begitulah mitos "Jawa lambat" terus diabadikan. "Tes" untuk "membuktikan" itu ditulis dengan sengaja untuk tidak mengukur kinerja menjalankan kode Java tetapi waktu startup JVM. Ambil contoh operasi matematika sederhana dan putar 100 kali, lakukan itu di Java dan C ++, kompilasi versi C ++ dengan optimisasi dihidupkan, versi Java tanpa flag optimasi, kemudian jalankan kedua versi yang dapat dieksekusi. Kelas Java akan berjalan jauh lebih lama daripada C ++ yang dapat dieksekusi, hanya karena waktu startup JVM. Ini tidak menunjukkan bahwa "Java lambat" tetapi waktu startup JVM berarti Java bukan alat yang tepat untuk proses yang berjalan sangat singkat (tidak ada bahasa yang ditafsirkan, atau apa pun yang membutuhkan pemuatan runtime). Jika tes ditulis dengan benar untuk menjalankan selama beberapa jam dengan basis kode dan sistem kompiler menggunakan tingkat optimisasi yang setara, hasilnya sangat berbeda (mungkin menunjukkan kinerja yang sangat mirip).
Dan itu hanya satu contoh (yang saya kenal).
sumber
Sebagai manajer proyek, Anda harus membuat beberapa perbandingan untuk memilih bahasa tempat perangkat lunak Anda akan dikodekan. Kriteria mungkin tidak teknis:
sumber