Apa tujuan pengembangan yang "ideal" untuk bahasa pemrograman?





Informasi tentang rilis versi baru dari bahasa pemrograman tertentu muncul secara berkala. Dan dengan setiap versi baru, kemampuannya berkembang, konstruksi sintaks baru atau peningkatan lainnya ditambahkan.



Dan ini sangat mirip dengan perkembangan teknologi, seperti di bidang teknologi lainnya. Saat kreasi yang dibuat diperbaiki dengan tahap selanjutnya. Lebih cepat, lebih tinggi, lebih kuat ... dan pada saat yang sama jauh lebih sulit.



Artikel April Mop "Pemrograman Demonstratif" membuat saya memikirkan masalah ini .



Jelas bahwa tanggal publikasi artikel berbicara sendiri. Namun demikian, standar C ++ yang baru, spesifikasi Java yang terus-menerus keluar atau sintaks baru dalam PHP 8, secara tidak sengaja membuat Anda bertanya-tanya, apakah perkembangan bahasa pemrograman berjalan ke arah yang benar? Bagaimanapun, sebagian besar inovasi menambah kompleksitas pada alat kerja utama dan memecahkan beberapa masalah, secara implisit menambahkan banyak masalah lainnya.



Dan apa yang harus ada di akhir kemajuan dalam pengembangan disiplin ilmu seperti pemrograman? Atau setidaknya satu bahasa tertentu? Demi mencapai tujuan akhir "ideal" apa standar bahasa pemrograman baru sedang dikembangkan?



Jika Anda berfantasi tentang tujuan akhir ideal pembangunan, misalnya, transportasi, maka itu akan menjadi gerakan seketika pada jarak berapa pun dengan muatan sewenang-wenang dan konsumsi energi nol.



Atau, misalnya, apa tujuan pengobatan yang ideal? Yang miskin tidak sakit, dan yang kaya tidak sembuh, mungkin pengobatan penyakit dan keabadian biologis.



Tentu saja, tujuan "ideal" adalah konsep yang sangat sederhana. Faktanya, "ideal" identik dengan "tidak mungkin tercapai", karena ia akan selalu ditantang oleh kebutuhan untuk mempertahankan kompromi antara berbagai kondisi batas yang saling eksklusif.



Tetapi Anda tidak dapat secara langsung membandingkan pengembangan perangkat lunak dengan proses pengembangan dalam disiplin teknis lainnya. Memang, saat membuat produk akhir dalam bidang teknis apa pun, semua operasi produksi kompleks yang membutuhkan partisipasi langsung manusia hampir selalu dapat dibagi menjadi beberapa bagian atau tahapan yang terpisah dan lebih sederhana.



Hal tersebut dilakukan antara lain agar kompleksitas suatu operasi yang dilakukan tidak menjadi hambatan bagi pelakunya. Tapi bagaimana ini bisa dilakukan dalam pengembangan perangkat lunak?



Dalam hal ini, yang saya maksud adalah batasan terakhir dari kemampuan satu orang tertentu, yang bertentangan dengan kemungkinan membagi proses teknologi ke dalam tahap-tahap terpisah, yang masing-masing dapat dilakukan oleh orang yang sama sekali berbeda (sebagai contoh, ini adalah konveyor biasa dengan pembagian kerja menjadi operasi dasar atau spesialisasi sempit dokter - spesialis di satu bidang tertentu).



Lagipula, bahkan sulit untuk membayangkan sebuah organisasi fantastis dari pekerjaan pemrogram dalam bentuk pipeline: Pengembang pertama hanya menulis antarmuka fungsi dan panggilannya, setelah itu ia mentransfer kode ke karyawan kedua. Yang kedua menulis dalam teks program hanya kondisi pengujian dan lompatan tanpa syarat dan meneruskan teks ke yang ketiga. Yang ketiga bertanggung jawab untuk menulis loop dan pemformatan kode umum, dll. - hasilnya diharapkan tidak masuk akal.



Karena itu, industri pengembangan perangkat lunak dipaksa untuk mengikuti jalur pengembangan yang luas (yaitu dengan meningkatkan sumber daya yang digunakan dalam produksi). Bahasa pemrograman industri modern memiliki kemampuan yang sangat kaya untuk membagi kode aplikasi menjadi fungsi / modul / komponen terpisah, yang memungkinkan banyak karyawan untuk mengembangkan produk perangkat lunak yang kompleks sekaligus.



Namun perkembangan ini pun memiliki batasan alami. Dan batasan ini adalah orangnya sendiri, karena setiap pengembang harus tahu dan dapat menggunakan alat kerjanya, yaitu. bahasa pemrograman.



Jika kita mengambil analogi di atas dengan belt conveyor, maka setiap pekerja di dalamnya harus benar-benar tahu tentangsebagian besar mesin dan peralatan yang digunakan di seluruh tanaman, terlepas dari salah satu operasi khusus dia melakukan di tempat kerjanya.



Bagaimanapun, paradoks pengembangan bahasa pemrograman adalah bahwa dengan menambahkan fitur baru dan konstruksi sintaksis, kami memperumit alat kerja yang dirancang untuk penggunaan bersama dan individu!



Dan ternyata bersamaan dengan proses peningkatan kemampuan alat pengembangan yang terus-menerus, ada juga proses sebaliknya - peningkatan kompleksitas pengembangan kode oleh pengembang individu. Nyatanya, ini adalah kontradiksi yang sangat eksklusif dan tidak dapat diatasi.



Mungkin itu sebabnya tidak mungkin menemukan "peluru perak" yang akan meningkatkan produktivitas seorang programmer? Bagaimanapun, perhatian dan kemampuan seseorang tidak terbatas. Dan setiap inovasi dan peningkatan dalam alat kerja pemrogram dipaksa untuk mendorong seluruh industri TI ke jalur pengembangan yang luas.



Mungkin kita harus mengembangkan pendekatan baru yang fundamental, dan tidak mengejar gula sintaksis dalam bahasa pemrograman dari abad terakhir? Ataukah ia sama sekali tidak melonjak, untuk terus menggunakan apa yang ada, dan teori kakek Darwin akan meletakkan segala sesuatu pada tempatnya dengan sendirinya?



All Articles