Bahasa favorit dan bahasa menakutkan. Padang rumput hijau dan ladang coklat





Hasil survei Stack Overflow adalah sumber informasi yang bagus tentang apa yang terjadi di dunia pengembangan. Saya sedang menelusuri hasil tahun 2020 mencari beberapa ide tentang bahasa mana yang akan ditambahkan ke dokumentasi build container kami dan melihat sesuatu yang menarik tentang jenis bahasa tersebut. Menurut saya hal ini tidak sering terlihat dalam berbagai diskusi tentang preferensi pengembang.



Jajak pendapat tersebut memiliki kategori "Bahasa pemrograman yang paling mengerikan" (dari Bahasa Pemrograman yang Paling Ditakuti) dan "Bahasa-bahasa favorit" . Kedua peringkat tersebut didasarkan pada pertanyaan yang sama:



, ? ( , , ).


"Bahasa menakutkan" adalah salah satu bahasa yang aktif Anda tangani tahun ini, tetapi tidak ingin terus menggunakannya. Bahasa favorit adalah bahasa yang sering Anda gunakan dan ingin terus Anda gunakan. Hasilnya menarik karena mencerminkan pendapat orang-orang yang aktif menggunakan bahasa masing-masing. Pendapat seperti "Saya dengar X itu keren" tidak dihitung ketika orang menghargai hal-hal yang TIDAK mereka gunakan karena mereka mendengar bahwa ini adalah tren baru. Kebalikannya juga benar: orang yang mengungkapkan keengganan pada bahasa tertentu sebenarnya menggunakannya secara luas. Mereka takut pada bahasanya, bukan karena mereka telah mendengar tentang kerumitannya, tetapi karena mereka harus mengatasinya dan mengalami rasa sakit yang nyata.



15 bahasa pemrograman menakutkan teratas:

VBA, Objective-C, Perl, Assembly, C, PHP, Ruby, C ++, Java, R, Haskell, Scala, HTML, Shell, dan SQL.



15 bahasa pemrograman favorit teratas:

Rust, TypeScript, Python, Kotlin, Go, Julia, Dart, C #, Swift, JavaScript, SQL, Shell, HTML, Scala, dan Haskell.



Ada pola dalam daftar. Pernahkah Anda memperhatikan?



Kode terburuk adalah yang ditulis sebelum saya



Kode lama adalah yang terburuk. Jika basis kode telah dalam pengembangan aktif selama lebih dari tiga tahun, maka itu sudah tidak konsisten. Lapisan pertama yang sederhana dilapisi dengan kasus khusus dan pengoptimalan kinerja, dan berbagai cabang yang dikendalikan oleh parameter konfigurasi. Kode nyata berevolusi agar sesuai dengan ceruknya, sementara pada saat yang sama semakin sulit untuk dipahami. Alasannya sederhana, dan saya pertama kali mendengar ungkapan ini dari Joel Spolsky.



, [] , , : , .



โ€” ยซ, ยป


Sebut saja Hukum Joel. Banyak yang mengikuti dari premis ini. Mengapa sebagian besar pengembang mengira kode lawas mereka berantakan dan ingin membuangnya dan memulai kembali? Karena menulis sesuatu yang baru lebih mudah bagi otak daripada kerja keras untuk memahami basis kode yang ada, setidaknya pada awalnya. Mengapa upaya untuk menulis ulang kode sering kali gagal? Karena banyak artefak sampah adalah perbaikan kecil penting yang terakumulasi dari waktu ke waktu. Tanpa rencana pemfaktoran ulang khusus, Anda akan kembali ke tempat semula.





Scott Adams Mengerti



Mudah untuk memahami kode yang Anda tulis. Anda melakukannya dan meningkatkannya di sepanjang jalan. Tetapi sulit untuk memahami kode hanya dengan membacanya setelah fakta. Jika Anda kembali ke kode lama Anda, Anda mungkin menemukan bahwa itu tidak konsisten. Mungkin Anda tumbuh sebagai pengembang dan akan menulis lebih baik hari ini. Tetapi kemungkinan besar kode itu secara intrinsik kompleks, dan Anda menafsirkan kesulitan Anda dalam memahami kompleksitas ini sebagai masalah kualitas kode. Mungkin itu sebabnya volume PR yang belum ditinjau terus bertambah? Meninjau permintaan tarik adalah pekerjaan hanya-baca, dan sulit melakukannya dengan baik ketika Anda tidak memiliki model kode yang berfungsi di kepala Anda.



Inilah mengapa Anda takut pada mereka.



Jika kode lama yang sebenarnya secara tidak adil dianggap berantakan, mungkinkah bahasa pemrograman dievaluasi secara tidak adil? Jika Anda menulis kode Go baru tetapi harus mempertahankan basis kode C ++ berusia 20 tahun yang luas, apakah Anda dapat memberi peringkat yang adil? Saya pikir inilah yang sebenarnya diukur oleh survei: bahasa menakutkan kemungkinan besar akan digunakan dalam proyek-proyek brownfield yang ada. Bahasa favorit lebih sering digunakan dalam proyek baru untuk menciptakan padang rumput hijau. Mari kita lihat. satu



Perbandingan bahasa hijau dan coklat



Indeks TIOBE mengukur "jumlah insinyur, kursus, dan pekerjaan yang memenuhi syarat di seluruh dunia" untuk bahasa pemrograman. Mungkin ada beberapa masalah dengan metodologi, tetapi cukup akurat untuk tujuan kita. Kami menggunakan Indeks TIOBE Juli 2016 , yang tertua yang tersedia di Mesin Wayback, sebagai proxy untuk mengidentifikasi bahasa yang telah mengumpulkan banyak kode. Jika bahasa itu populer pada tahun 2016, kemungkinan besar orang-orang mendukung kode yang tertulis di dalamnya.



20 bahasa pemrograman teratas di daftar TIOBE per Juli 2016: Java, C, C ++, Python, C #, PHP, JavaScript, VB.NET, Perl, assembler, Ruby, Pascal, Swift, Objective-C, MATLAB, R, SQL, COBOL dan Groovy. Kami dapat menggunakan ini sebagai daftar bahasa yang lebih mungkin digunakan dalam proyek dukungan kode. Sebut saja mereka lidah coklat. Bahasa yang tidak termasuk dalam 20 teratas pada tahun 2016 lebih cenderung digunakan dalam proyek baru. Ini adalah lidah hijau.





Dari 22 bahasa dalam daftar gabungan menakutkan / favorit, 63% berwarna coklat



Bahasa Coklat: Bahasa yang paling mungkin Anda gunakan dalam dukungan perangkat lunak.



Java, C, C ++, C #, Python, PHP, JavaScript, Swift, Perl, Ruby, Assembly, R, Objective-C, SQL




Green bahasa: Bahasa yang kemungkinan besar Anda gunakan dalam proyek baru.



Pergi, Rust, TypeScript, Kotlin, Julia, Dart, Scala dan Haskell


TIOBE dan StackOverflow memiliki ide berbeda tentang apa itu bahasa pemrograman. Untuk mengatasinya, kita harus menormalkan kedua daftar tersebut dengan menghapus HTML / CSS, skrip shell, dan VBA. 2



Tentu saja, pembagian sederhana menjadi hijau dan cokelat kehilangan banyak nuansa, termasuk dalam ukuran bidang. Saya berharap akan ada lebih banyak padang rumput hijau di Swift daripada Objective-C, tetapi teknik saat ini tampaknya mencakup semua yang kita butuhkan. Ada lebih banyak bahasa coklat di daftar ini daripada bahasa hijau, tetapi ini cukup diharapkan, karena relatif sedikit bahasa baru yang muncul setiap tahun.



Sekarang kita dapat menjawab pertanyaan: apakah orang benar-benar takut pada bahasa, atau mereka hanya takut pada kode lama? Atau dengan kata lain: Jika Java dan Ruby telah muncul hari ini, tanpa setumpuk aplikasi Rails lama dan aplikasi Java perusahaan lama untuk mendukung, apakah mereka masih ditakuti? Atau apakah mereka lebih mungkin muncul di daftar favorit Anda?



Lidah coklat yang menakutkan





Bahasa menakutkan 83% coklat



Bahasa menakutkan teratas hampir seluruhnya coklat: 83% coklat. Ini lebih tinggi dari 68% bahasa coklat di daftar lengkap.



Bahasa hijau favorit









Bahasa favorit saya 54% hijau. Di antara bahasa favorit saya, 54% hijau. Pada saat yang sama, dalam daftar lengkap, hanya 36% bahasa yang berwarna hijau. Dan setiap bahasa hijau ada di suatu tempat di daftar favorit.



Kelemahan manusia lainnya adalah setiap orang ingin membangun dan tidak ada yang mau melakukan pemeliharaan.



- Kurt Vonnegut


Ini tidak cukup untuk mengatakan dengan pasti bahwa kebutuhan untuk menggunakan bahasa dalam proyek dukungan menakutkan. Tetapi sangat mungkin bahwa ini setidaknya salah satu alasannya. Banyak dari bahasa "favorit" terlalu baru atau terlalu tidak populer untuk mengumpulkan banyak proyek besar dan kotor.



Dengan kata lain, Rust, Kotlin dan bahasa hijau lainnya masih dalam tahap bulan madu. Cinta untuk mereka dapat dijelaskan oleh fakta bahwa programmer tidak perlu berurusan dengan basis kode berusia 20 tahun.



Hilangkan bias







Beberapa bahasa pemrograman yang lebih baru atau yang secara historis kurang populer mungkin lebih baik daripada bahasa yang lebih lama atau lebih umum, tetapi kemampuan kita untuk menilai mereka tampaknya agak bias. Secara khusus, jika bahasanya baru atau belum pernah digunakan sebelumnya, maka itu memiliki citra malaikat tertentu. Dan semakin lama suatu bahasa digunakan, semakin jahat hal itu di mata pengembang. Saya kira alasannya adalah tidak ada yang suka memelihara kode orang lain. Dan juga karena Hukum Joel: Sangat sulit dibaca di dunia nyata. Membuat sesuatu yang baru itu menyenangkan, dan bahasa baru lebih sering digunakan.



Siklus Hype Bahasa Pemrograman



Awalnya, saya mulai menggali peringkat ini untuk menyorot daftar bahasa yang umum digunakan dan sekaligus bahasa favorit - untuk contoh tambahan dalam dokumentasi kami dan contoh perakitan . Alih-alih, ide siklus hidup bahasa pemrograman muncul: bahasa pemrograman favorit sering digunakan, ini mengarah pada pemeliharaan kode, yang membuat orang tidak menyukainya, yang, pada gilirannya, mengarah pada orang-orang yang mencari padang rumput yang lebih hijau - dan mencoba bahasa baru ... Kerangka kerja yang mungkin populer mengikuti siklus hidup yang sama.





Siklus Hype Bahasa Pemrograman



Saya tidak memiliki datanya, tetapi saya ingat dengan jelas bahwa Ruby adalah bahasa paling populer di tahun 2007. Meskipun saat ini memiliki lebih banyak pesaing, Ruby lebih baik hari ini daripada sebelumnya. Namun, sekarang mereka takut padanya. Saya pikir orang-orang sekarang memiliki aplikasi Rails berusia 14 tahun di tangan mereka yang perlu dipelihara. Ini sangat mengurangi daya tarik Ruby dibandingkan dengan hari-hari ketika hanya ada proyek baru. Jadi hati-hati, Rust, Kotlin, Julia dan Go: pada akhirnya, Anda juga akan kehilangan sayap malaikat Anda. 3






1. . , .



, .



TIOBE, , โ€ฆ Wayback Machine. []



2. HTML/CSS - , TIOBE . - , VBA , . []



3. : Python, C#, Swift, JavaScript SQL . - . , Scala Haskell โ€” ,  โ€” . - ??? []



All Articles