Ada kepercayaan luas di kalangan programmer bahwa semakin dinamis dan longgar mengetik bahasa, semakin produktif programmer di dalamnya. Guido van Rossum menulis tentang produktivitas pemrograman menggunakan python pada tahun 1998 dan mencari di web saya masih melihat orang-orang yang mereferensikan klaim ini:
Secara sintaksis, kode Python terlihat seperti kode pseudo yang dapat dieksekusi. Pengembangan program menggunakan Python 5-10 kali lebih cepat daripada menggunakan C / C ++, dan 3-5 kali lebih cepat daripada menggunakan Java. Dalam banyak kasus, prototipe aplikasi dapat ditulis dalam Python tanpa menulis kode C / C ++ / Java. Seringkali, prototipe cukup fungsional dan berkinerja cukup baik untuk dikirim sebagai produk akhir, menghemat waktu pengembangan yang cukup besar. Di lain waktu, prototipe dapat diterjemahkan sebagian atau seluruhnya ke C ++ atau Java - sifat berorientasi objek Python membuat terjemahan menjadi proses yang mudah.
Apakah masalah ini telah dievaluasi secara ilmiah? Jika tidak untuk python maka mungkin untuk bahasa scripting saudara seperti ruby , perl atau php ?
Saya tidak mencari rasionalisasi, analogi, atau penjelasan mengapa ini berpotensi sulit untuk dijawab, kecuali pendapat para peneliti atau pakar yang telah meluangkan waktu untuk menyelidiki masalah ini.
Saya awalnya menanyakan pertanyaan ini di skeptics.SE , dan seseorang menyarankan saya harus menanyakannya di sini juga.
sumber
Jawaban:
Artikel 1 Ousterhout tentang bahasa scripting menunjukkan bahwa semakin tinggi level pemrogramannya, semakin produktif sang programmer. Jika kita ambil itu, seperti yang dikatakan Boehm 2 , jumlah baris yang dapat ditulis oleh programmer dalam waktu tertentu adalah konstan dan tidak tergantung pada bahasa atau jenisnya (level rendah, pemrograman sistem, skrip), orang dapat dengan mudah mempercayai klaim tersebut. Instruksi yang dihasilkan-per-sumber-kode-baris-rasio dapat menjadi urutan besarnya (atau beberapa) lebih baik dengan bahasa skrip daripada dengan bahasa pemrograman sistem.
Karena bahasa scripting sangat bergantung pada utilitas siap pakai untuk tugas-tugas umum (misalnya struktur data, manipulasi string), penggunaan utamanya biasanya untuk meningkatkan produktivitas dengan biaya kecepatan lari yang lebih lambat dengan menyediakan sintaks yang mudah dipelajari dan efisien untuk memelihara program dengan. Seseorang tidak menggunakan bahasa scripting ketika kecepatan eksekusi puncak diperlukan.
[1]: JK Ousterhout, Scripting: Pemrograman Tingkat Tinggi untuk Abad 21 , Komputer (IEEE), 1998
[2]: B. Boehm, Ekonomi Rekayasa Perangkat Lunak , Prentice Hall, 1981
sumber
Jika Anda mengukur produktivitas sebagai "waktu untuk menulis program sederhana yang spesifik" maka itu tergantung lebih banyak pada pengalaman programmer dan pikiran cepat daripada bahasa yang Anda benar-benar mengevaluasi programmer, bukan bahasa.
Saya percaya kontes kode waktu menunjukkan bahwa bahasa tersebut tidak terlalu penting untuk tugas-tugas semacam itu. Tidak ada satu bahasa yang memenangkan tantangan seperti itu lebih mudah daripada yang lain (setidaknya tidak jika Anda mengizinkan popularitas relatif bahasa).
Jika Anda mengukur kinerja sebagai "keefektifan program terbaik" yang ditulis dalam bahasa tertentu, maka itu semakin tidak tergantung pada bahasa. Lihat misalnya hasil kontes AI Galcon . Pemenangnya ditulis dalam Lisp. Entri Lisp berikutnya, bagaimanapun, adalah peringkat # 280. Apa yang dikatakan di sini tentang kesesuaian bahasa untuk menulis AI yang hebat secara efisien? Menurut saya, tidak ada. Itu hanya memberitahu kita bahwa "bocsimacko" datang dan menerapkan algoritma yang paling efektif. Sebagai catatan, waktu bukanlah faktor utama dalam kontes ini - orang memiliki lebih dari dua bulan untuk mengembangkan kode mereka.
Terakhir, jika Anda mengukur kinerja sebagai "biaya jangka panjang untuk mempertahankan suatu proyek" maka saya pikir Anda tertarik pada sesuatu. Terutama jika Anda hanya mempekerjakan orang-orang terbaik untuk pekerjaan itu, dan menghitung biaya dalam jam kerja daripada dolar. Saya memiliki pendapat yang kuat tentang bahasa mana yang terbaik untuk ini, tetapi tidak memiliki bukti kuat untuk menghubungkan Anda dengan saya akan mengabaikan pendapat ini. Mungkin orang lain memiliki tautan untuk jenis kinerja ini.
sumber
http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprtTR.pdf adalah salah satu dari sedikit studi yang saya ketahui yang melakukan perbandingan langsung aktual antara produktivitas dalam berbagai bahasa. Itu sudah tua, tetapi layak dibaca jika Anda menemukan topik yang menarik. Perbandingan memiliki sejumlah kekurangan utama yang artikelnya sangat jujur.
Hasil keseluruhannya adalah bahwa bahasa tingkat rendah (misalnya C, C ++) membutuhkan waktu lebih lama untuk ditulis, dapat menggunakan lebih sedikit memori, dan dapat berjalan lebih cepat. Tetapi dengan variabilitas yang sangat tinggi. Bahasa scripting tingkat tinggi cenderung memakan waktu setengah untuk menulis dan kurang variabilitas dalam pendekatan. Pada tingkat yang awalnya mengejutkan, cenderung ada cara yang jelas untuk melakukan sesuatu dalam bahasa scripting.
Perhatikan bahwa semua angka kinerja untuk Jawa harus diambil dengan sebutir garam - kertas diproduksi pada 90-an sebelum orang memiliki banyak pengalaman dengan Jawa, dan sebelum JVM dioptimalkan dengan baik. Kedua faktor tersebut harus memiliki dampak yang signifikan.
sumber
Secara umum, menulis sebuah program dengan Python biasanya akan lebih cepat daripada menulis program yang sama di C, C ++, Java.
Ini juga cenderung berjalan lebih lambat.
Tentu saja ada aplikasi tertentu yang bahasa-bahasa lain mungkin lebih cepat karena tugas-tugas tertentu yang terlibat didukung secara 'lebih asli'.
Meskipun saya tidak mengetahui adanya penelitian untuk mengkonfirmasi peningkatan kecepatan / produktivitas ini (seperti yang disebutkan oleh seorang komentator, ini mungkin sulit untuk diukur secara tepat), telah ada penelitian langsung ke dalam ekspresi bahasa.
Saya pikir ada beberapa manfaat korelasi antara ekspresi bahasa dan kecepatan pemrograman. Bayangkan saja pola iterasi sederhana dan bagaimana Pythonic for-loop atau daftar pemahaman bisa lebih ringkas. Tidak hanya itu dapat langsung diketik lebih cepat, tetapi juga menghilangkan kekhawatiran kesalahan satu-per-satu, indeks di luar batas, dan masalah lain yang secara signifikan dapat memperlambat proses pengkodean.
Ini menunjukkan tabel perkiraan untuk rasio ekspresi bahasa. Meskipun harus diambil dengan sebutir garam, catatan kaki yang disebutkannya sangat bermanfaat.
http://en.wikipedia.org/wiki/Comparison_of_programming_languages#Expressiveness
sumber
Terakhir kali saya menggunakan Java (beberapa waktu lalu diakui) butuh layar penuh kode untuk membuka dan menulis ke file. Bandingkan dengan beberapa baris dalam Python atau Perl, dan Anda bisa menebak mana yang lebih cepat.
Jelas bahasa semua memiliki kekuatan dan kelemahannya sendiri, tetapi untuk sebagian besar tugas, Python akan lebih cepat menulis.
sumber
write()
danread()
dan di sisa akses file proyek Java Anda akan sama ringkasnya seperti di Python. Saya pikir contoh Anda agak terlalu terbatas untuk membandingkan Python dan Java (meskipun saya setuju bahwa Java cenderung lebih verbose).