Dari percobaan terkontrol, hanya tiga yang menunjukkan efek yang cukup besar untuk memiliki signifikansi praktis. Studi Prechelt membandingkan C, C ++, Java, Perl, Python, Rexx, dan Tcl; studi Endrikat membandingkan Jawa dan Dart; dan percobaan Cooley dengan VHDL dan Verilog. Sayangnya, mereka semua memiliki masalah yang membuat sulit untuk menarik kesimpulan yang sangat kuat.
Dalam studi Prechelt, populasi berbeda antara bahasa yang dinamis dan diketik, dan kondisi untuk tugas-tugas juga berbeda. Ada penelitian lanjutan yang menggambarkan masalah ini dengan mengundang Lispers untuk datang dengan solusi mereka sendiri untuk masalah ini, yang melibatkan membandingkan orang-orang seperti Darius Bacon dengan undergrads acak. Tindak lanjut dari tindak lanjut secara harfiah melibatkan membandingkan kode dari Peter Norvig dengan kode dari mahasiswa acak.
Dalam studi Endrikat, mereka secara khusus memilih tugas yang menurut mereka pengetikan statis akan membuat perbedaan, dan mereka menarik subjek dari populasi di mana setiap orang mengikuti kelas menggunakan bahasa yang diketik secara statis. Mereka tidak berkomentar apakah siswa memiliki pengalaman dalam bahasa yang diketik secara dinamis atau tidak, tetapi tampaknya aman untuk berasumsi bahwa sebagian besar atau semua memiliki lebih sedikit pengalaman dalam bahasa yang diketik secara dinamis.
Eksperimen Cooley adalah salah satu dari sedikit yang menarik orang dari populasi non-siswa, yang bagus. Tapi, seperti semua eksperimen lainnya, tugas itu adalah tugas mainan yang sepele. Meskipun tampaknya memberatkan bahwa tidak satu pun dari peserta VHDL (bahasa statis) mampu menyelesaikan tugas tepat waktu, itu sangat tidak biasa untuk ingin menyelesaikan desain perangkat keras dalam 1,5 jam di mana saja di luar proyek sekolah. Anda mungkin berpendapat bahwa tugas besar dapat dipecah menjadi banyak tugas yang lebih kecil, tetapi argumen yang masuk akal adalah bahwa ada biaya tetap menggunakan VHDL yang dapat diamortisasi di banyak tugas.
Adapun sisa percobaan, takeaway utama yang saya miliki dari mereka adalah bahwa, di bawah seperangkat keadaan khusus yang dijelaskan dalam penelitian, efek apa pun, jika ada sama sekali, kecil.
Pindah ke studi kasus, dua studi kasus penemuan bug membuat untuk membaca yang menarik, tetapi mereka tidak benar-benar membuat kasus untuk atau melawan jenis. Satu menunjukkan bahwa menyalin program Python ke Haskell akan menemukan jumlah bug yang tidak diketahui dengan tingkat keparahan yang tidak diketahui yang mungkin tidak ditemukan melalui pengujian unit yang berorientasi pada cakupan garis. Sepasang makalah Erlang menunjukkan bahwa Anda dapat menemukan beberapa bug yang akan sulit ditemukan melalui segala jenis pengujian, beberapa di antaranya parah, menggunakan analisis statis.
Sebagai pengguna, saya merasa nyaman ketika kompiler saya memberi saya kesalahan sebelum saya menjalankan alat analisis statis terpisah, tapi itu kecil, mungkin bahkan lebih kecil dari ukuran efek dari studi terkontrol yang tercantum di atas.
Saya menemukan studi kasus 0install (yang membandingkan berbagai bahasa dengan Python dan akhirnya menetap di Ocaml) menjadi salah satu hal yang lebih menarik yang saya temui, tapi itu adalah jenis subjektif yang akan ditafsirkan oleh setiap orang secara berbeda, yang dapat Anda lihat dengan melihat .
Ini sesuai dengan kesan yang saya miliki (di sudut kecil dunia saya, ACL2, Isabelle / HOL, dan PVS adalah prover yang paling umum digunakan, dan masuk akal bahwa orang akan lebih suka otomatisasi ketika menyelesaikan masalah dalam industri), tapi itu juga subyektif.
Dan kemudian ada studi yang menambang data dari proyek yang ada. Sayangnya, saya tidak dapat menemukan orang yang melakukan apa pun untuk menentukan sebab-akibat (misalnya, menemukan variabel instrumen yang sesuai), sehingga mereka hanya mengukur korelasi. Beberapa korelasi tidak terduga, tetapi tidak ada informasi yang cukup untuk menentukan mengapa.
Satu-satunya studi penambangan data yang menyajikan data yang berpotensi menarik tanpa eksplorasi lebih lanjut adalah ulasan Smallshire tentang bug Python, tetapi tidak ada informasi yang cukup tentang metodologi untuk mencari tahu apa sebenarnya arti penelitiannya, dan tidak jelas mengapa ia mengisyaratkan untuk melihat data untuk bahasa lain tanpa menyajikan data3.
Beberapa kelalaian penting dari studi ini adalah studi komprehensif menggunakan programmer yang berpengalaman, apalagi studi yang memiliki populasi besar programmer "baik" atau "buruk", melihat apa pun yang mendekati proyek yang signifikan (di tempat saya pernah bekerja, proyek tiga bulan akan dianggap kecil, tapi itu beberapa kali lipat lebih besar daripada proyek apa pun yang digunakan dalam studi terkontrol), menggunakan bahasa "modern" yang diketik secara statis, menggunakan pengetikan bertahap / opsional, menggunakan IDE arus utama modern (seperti VS dan Eclipse), menggunakan IDE radikal modern (seperti LightTable), menggunakan editor sekolah lama (seperti Emacs dan vim), melakukan pemeliharaan pada basis kode non-sepele, melakukan pemeliharaan dengan apa pun yang menyerupai lingkungan yang realistis, melakukan pemeliharaan pada basis kode yang sudah Anda kenal, dll.
Jika Anda melihat komentar internet pada studi ini, kebanyakan dari mereka dibagikan untuk membenarkan satu sudut pandang atau yang lain. Studi Prechelt tentang dinamis vs statis, bersama dengan tindak lanjut pada Lisp adalah favorit abadi advokat bahasa dinamis, dan studi penambangan github baru-baru ini menjadi tren di kalangan programmer fungsional.