Apakah ada penelitian yang dilakukan pada keefektifan bahasa yang diketik secara statis vs dinamis?
Khususnya:
- Pengukuran produktivitas programmer
- Tingkat Cacat
Juga termasuk efek apakah pengujian unit digunakan atau tidak.
Saya telah melihat banyak diskusi tentang manfaat dari kedua belah pihak tetapi saya bertanya-tanya apakah ada orang yang telah melakukan penelitian tentang hal itu.
productivity
comparison
type-systems
dynamic-typing
static-typing
Winston Ewert
sumber
sumber
Jawaban:
Beberapa menyarankan membaca:
Tidak persis pada pengetikan statis, tetapi terkait:
Beberapa artikel atau esai yang menarik tentang subjek atau analisis statis program secara umum:
Dan bagi mereka yang bertanya-tanya tentang apa ini:
Namun, saya meragukan semua ini dengan memberi Anda jawaban langsung, karena mereka tidak melakukan studi yang Anda cari. Mereka akan menjadi bacaan yang menarik.
Sendiri, Saya dengan tegas mempertimbangkan bahwa pengetikan statis atas pengetikan dinamis memfasilitasi deteksi bug. Saya menghabiskan terlalu banyak mengetik mencari kesalahan ketik dan kesalahan kecil seperti ini ke dalam JavaScript atau bahkan kode Ruby. Dan ketika sampai pada pandangan bahwa Pengetikan Dinamis memberi Anda dorongan dalam produktivitas, saya pikir sebagian besar tergantung pada perkakas. Jika bahasa yang diketik secara statis memiliki alat yang tepat untuk memungkinkan kompilasi latar belakang dan menyediakan antarmuka REPL, maka Anda mendapatkan manfaat dari kedua dunia. Scala menyediakan ini misalnya, yang membuatnya sangat mudah untuk dipelajari dan prototipe di konsol interaktif, tetapi memberi Anda manfaat pengetikan statis (dan sistem jenis yang lebih kuat daripada banyak bahasa lain, selain ML-bahasa). Demikian pula, saya tidak berpikir saya kehilangan produktivitas dengan menggunakan Java atau C ++ (karena pengetikan statis), selama saya menggunakan IDE yang membantu saya. Ketika saya kembali ke pengkodean hanya dengan konfigurasi sederhana (editor + compiler / interpreter), maka rasanya bahasa yang lebih rumit dan dinamis sepertinya lebih mudah digunakan. Tapi Anda masih mencari bug. Saya kira orang akan mengatakan bahwa masalah perkakas adalah argumen yang dapat dibalikkan, seolah-olah perkakas lebih baik untuk bahasa yang dinamis, maka sebagian besar bug dan kesalahan ketik akan ditunjukkan pada waktu pengkodean, tetapi itu mencerminkan cacat pada sistem menurut pendapat saya. Namun, saya biasanya membuat prototipe di JRuby dan akan membuat kode di Jawa nanti sebagian besar hal yang saya lakukan. seolah-olah perkakas lebih baik untuk bahasa dinamis, maka sebagian besar bug dan kesalahan ketik akan ditunjukkan pada waktu pengkodean, tetapi itu mencerminkan kelemahan dalam sistem menurut pendapat saya. Namun, saya biasanya membuat prototipe di JRuby dan akan membuat kode di Jawa nanti sebagian besar hal yang saya lakukan. seolah-olah perkakas lebih baik untuk bahasa dinamis, maka sebagian besar bug dan kesalahan ketik akan ditunjukkan pada waktu pengkodean, tetapi itu mencerminkan kelemahan dalam sistem menurut pendapat saya. Namun, saya biasanya membuat prototipe di JRuby dan akan membuat kode di Jawa nanti sebagian besar hal yang saya lakukan.
PERINGATAN: Beberapa tautan ini tidak dapat diandalkan, dan beberapa melalui portal berbagai komunitas komputasi menggunakan akses berbasis biaya untuk anggota. Maaf tentang itu, saya mencoba mencari beberapa tautan untuk masing-masing tautan ini tetapi tidak sebaik yang saya inginkan.
sumber
Baru kemarin saya menemukan studi ini: Pengujian unit tidak cukup. Anda juga perlu mengetik statis.
Pada dasarnya penulis menggunakan alat yang dapat mengkonversi secara otomatis proyek dari bahasa pengetikan non-statis menjadi pengetikan statis (python ke haskell)
Kemudian ia memilih sejumlah proyek Python open source yang juga termasuk sejumlah unit uji yang masuk akal, dan secara otomatis mengubahnya menjadi haskell.
Terjemahan ke Haskell mengungkapkan serangkaian kesalahan terkait dengan jenis variabel: kesalahan tidak ditemukan oleh unit uji.
sumber
Pendapat saya. Meskipun ada bukti lemah bahwa bahasa yang diketik secara dinamis lebih produktif, itu tidak konklusif. (1) Ada banyak faktor yang tidak terkontrol, (2) ada terlalu sedikit penelitian, (3) ada sedikit atau tidak ada diskusi tentang apa yang merupakan metode pengujian yang tepat.
sumber
Inilah titik awalnya:
Makalah ini menantang kebijaksanaan yang diterima umum bahwa, semua yang lain sama, programmer menulis jumlah baris kode yang sama per waktu terlepas dari bahasa. Dengan kata lain, makalah ini harus berfungsi sebagai bukti empiris pendukung bahwa produktivitas mekanik (garis kode tertulis) bukan ukuran yang baik dari produktivitas fungsional, dan setidaknya harus dinormalisasi oleh bahasa.
sumber
Saya telah menemukan bahasa Static vs. dynamic: review literatur , yang berisi daftar beberapa studi tentang subjek dan memberikan ringkasan yang bagus pada setiap studi.
Inilah ringkasan eksekutif:
sumber
Sejujurnya saya tidak berpikir bahwa pengetikan Static vs Dynamic adalah pertanyaan sebenarnya.
Saya pikir ada dua parameter yang harus didahulukan:
Jika Anda nyaman dalam bahasa ini, Anda akan menulis kode dan Anda akan melacak bug dengan mudah.
Jika Anda menulis kode yang dipisahkan, dan menguji setiap fungsi secara luas, maka Anda akan menghasilkan kode yang terasah dengan baik, dan dengan demikian Anda akan menjadi produktif (karena Anda tidak dapat memenuhi syarat sebagai produktif jika Anda tidak menilai kualitas produk, bukan? )
Oleh karena itu saya akan menganggap bahwa debat statis dan dinamis berkaitan dengan produktivitas cukup diperdebatkan, atau setidaknya sangat digantikan oleh pertimbangan lain.
sumber
Berikut ini beberapa di antaranya:
Stefan Hanenberg. 2010. Eksperimen tentang sistem tipe statis dan dinamis: keraguan tentang dampak positif sistem tipe statis terhadap waktu pengembangan. Dalam Prosiding konferensi internasional ACM tentang bahasa dan aplikasi sistem pemrograman berorientasi objek (OOPSLA '10). ACM, New York, NY, AS, 22-35. DOI = 10.1145 / 1869459.1869462 http://doi.acm.org/10.1145/1869459.1869462
Daniel P. Delorey, Charles D. Knutson, Scott Chun, "Apakah Bahasa Pemrograman Mempengaruhi Produktivitas? Sebuah Studi Kasus Menggunakan Data dari Proyek Sumber Terbuka," benang, hlm. '07: Lokakarya ICSE 2007), 2007
Daly, M.; Sazawal, V., Foster, J .: Bekerja dalam Kemajuan: Studi Empiris tentang Pengetikan Statis di Ruby, Workshop Evaluasi dan Kegunaan Bahasa dan Alat Pemrograman (PLATEAU) di ON-WARD 2009.
Lutz Prechelt dan Walter F. Tichy. 1998. Eksperimen Terkontrol untuk Menilai Manfaat dari Pemeriksaan Tipe Argumen Prosedur. IEEE Trans. Softw. Eng 24, 4 (April 1998), 302-312. DOI = 10.1109 / 32.677186 http://dx.doi.org/10.1109/32.677186
sumber