Dalam semangat beberapa diskusi umum seperti ini , saya membuka utas ini dengan maksud untuk mengumpulkan pendapat tentang apa saja tantangan terbuka dan topik hangat dalam penelitian tentang bahasa pemrograman . Saya berharap bahwa diskusi ini bahkan dapat memunculkan pendapat tentang masa depan penelitian dalam bahasa pemrograman.
Saya percaya bahwa diskusi semacam ini akan membantu peneliti mahasiswa baru, seperti saya, tertarik pada PL, serta mereka yang sudah agak terlibat.
Jawaban:
Saya pikir tujuan keseluruhan dari teori PL adalah untuk menurunkan biaya pemrograman skala besar dengan cara meningkatkan bahasa pemrograman dan ekosistem techincal di mana bahasa digunakan.
Berikut ini adalah deskripsi tingkat tinggi, agak kabur dari area penelitian PL yang telah menerima perhatian berkelanjutan, dan mungkin akan terus melakukannya untuk sementara waktu.
Sebagian besar penelitian bahasa pemrograman telah dilakukan dalam konteks perhitungan sekuensial, dan saat ini kami telah berkumpul pada inti fitur yang tersedia di sebagian besar bahasa pemrograman modern (misalnya fungsi tingkat tinggi, inferensi tipe (parsial), pencocokan pola, pencocokan pola , ADT, polimorfisme parametrik) dan dipahami dengan baik. Belum ada konsensus tentang fitur bahasa pemrograman untuk komputasi bersamaan dan paralel.
Terkait dengan poin sebelumnya, bidang penelitian sistem pengetikan telah melihat sebagian besar aktivitasnya tentang komputasi sekuensial. Bisakah kita menggeneralisasi pekerjaan ini untuk menemukan disiplin pengetikan yang praktis dan bermanfaat membatasi komputasi paralel dan paralel?
Sebagai kasus khusus dari poin sebelumnya, korespondensi Curry-Howard mengaitkan teori bukti struktural dan pemrograman fungsional, yang mengarah pada transfer teknologi berkelanjutan antara ilmu komputer dan (dasar-dasar) matematika, dengan misalnya teori tipe homotopy menjadi contoh yang mengesankan. Ada banyak petunjuk menggiurkan bahwa itu dapat diperluas ke (beberapa bentuk) perhitungan bersamaan dan paralel.
Spesifikasi dan verifikasi program telah matang banyak dalam beberapa tahun terakhir, misalnya dengan asisten bukti interaktif seperti Isabelle dan Coq, tetapi teknologi ini masih jauh dari dapat digunakan dalam skala besar dalam pemrograman sehari-hari. Masih banyak pekerjaan yang harus dilakukan untuk memperbaiki keadaan ini.
Bahasa pemrograman dan teknologi verifikasi untuk bentuk-bentuk komputasi yang baru. Saya sedang
berpikir di sini khususnya tentang perhitungan kuantum, dan mekanisme komputasi yang diilhami secara biologis, lihat misalnya di sini .
Penyatuan. Ada banyak pendekatan untuk bahasa pemrograman, jenis, verifikasi, dan satu kadang-kadang merasa bahwa ada banyak tumpang tindih di antara mereka, dan bahwa ada beberapa pendekatan yang lebih abstrak menunggu untuk ditemukan. Secara khusus, mekanisme komputasi yang diilhami secara biologis cenderung terus membanjiri kita.
Salah satu masalah penelitian PL adalah bahwa tidak ada masalah terbuka yang jelas seperti pertanyaan P / NP di mana kita dapat langsung mengatakan apakah solusi yang diusulkan berfungsi atau tidak.
sumber
Biarkan saya membuat daftar beberapa asumsi yang membatasi penelitian bahasa pemrograman. Ini sulit untuk dilepaskan dari karena mereka merasa seperti mereka adalah bagian penting dari apa bahasa pemrograman tentang, atau karena menjelajahi alternatif akan "bukan pemrograman bahasa desain lagi". Dengan asumsi masing-masing saya daftar efek yang membatasi.
Program adalah konstruksi sintaksis.
Program yang ditulis sebagian tidak dapat dijalankan.
Program adalah tentang memberikan instruksi kepada komputer.
Pemrograman seperti rekayasa dan tidak bisa dilakukan oleh orang biasa.
Saya pikir saya bisa melanjutkan.
sumber
Ada satu masalah yang saya pikirkan. Saya tidak tahu apakah itu memenuhi syarat sebagai tantangan terbuka.
Pengetahuan matematika terus berkembang seiring waktu. Fondasi teoretis, konsep, notasi, dan bukti telah berkembang selama berabad-abad. Matematikawan telah berhasil agregasi tanpa harus memeriksa konsistensi globalnya secara sistematis dan formal pada setiap titik waktu (meskipun ada upaya untuk melakukannya).
Kita harus mengharapkan bahasa pemrograman dan pustaka program untuk berkumpul dan berkembang dengan cara yang sama dari waktu ke waktu. Alat macam apa yang dapat membantu mengatur agregasi hasil pemrograman dan perpustakaan agar tetap konsisten dan dapat digunakan oleh semua orang, karena komputer dapat menjadi lebih formal dan menuntut konsistensi. Apakah kita harus mengulang perpustakaan untuk setiap bahasa pemrograman baru. Mengapa kita harus memilih bahasa karena memiliki perpustakaan yang tepat untuk aplikasi yang dimaksud daripada kualitas intrinsiknya sebagai media pemrograman?
Pada topik yang berbeda, Anda mungkin menemukan ide dalam pertanyaan berikut: Apakah bahasa pemrograman menjadi lebih seperti bahasa alami? Saya menyadari bahwa gagasan itu mungkin tidak menarik bagi banyak ilmuwan komputer teoretis, tetapi mungkin masih berguna dengan melihat masalah yang berbeda atau dari sudut pandang yang berbeda. Saya jauh dari setuju dengan banyak ide yang diposting, tetapi itulah gunanya diskusi.
sumber
telah ada inovasi dan ledakan yang luar biasa dalam bahasa pemrograman dari sisi teori dan terapan selama abad terakhir, namun suatu kasus dapat dibuat bahwa ini adalah peristiwa tunggal / satu kali dalam sejarah komputasi, mirip dengan "ledakan evolusi" (lihat juga "mengapa ada begitu banyak bahasa pemrograman?" di cs.se), dan karena itu masa depan tidak akan seperti masa lalu dalam hal ini. namun ada beberapa tren jangka panjang saat ini yang dapat diidentifikasi dalam permainan / pengembangan.
Pemrograman / kompleksitas perangkat lunak dan cara mengelola / meminimalkan / mengurangi / mengurangi itu adalah topik yang selalu mempengaruhi desain bahasa dan bahkan mungkin lebih signifikan di zaman sekarang dengan sistem perangkat lunak yang sangat besar / kompleks cukup umum. itu adalah aspek utama dari pemikiran desain OOP namun sekarang kami memiliki sistem OOP yang sangat kompleks! Pemikiran yang terfokus pada hal itu telah menghasilkan karya klasik di bidang seperti Mythical man-month oleh Brooks yang dalam banyak hal masih merupakan perspektif yang sangat valid, bahkan mungkin lebih relevan daripada saat ditulis.
paralelisme. ada pergeseran dalam perangkat keras menuju paralelisme yang lebih besar (misalnya multicore, dll) dan peningkatan kecepatan clock tidak lagi cukup untuk meningkatkan kinerja. Pergeseran ini terjadi sekitar pertengahan 2000-an dan memiliki pengaruh besar pada penelitian / desain bahasa. paralelisme selalu menjadi topik, tetapi memiliki keunggulan / urgensi terdepan, dan ada beberapa pemikiran / konsensus yang tersebar luas bahwa paralelisme terlalu rumit dan sulit dalam pemrograman dan mungkin pendekatan teoretis yang berbeda dapat meringankan sebagian dari ini. ref bagus tentang ini: The Landscape of Parallel Computing Research: A View from Berkeley
datamining / big data . ini mempengaruhi desain bahasa pemrograman. juga arah baru dalam arsitektur basis data adalah riak / dampak bahasa pemrograman.
superkomputer memiliki dampak signifikan pada desain bahasa dan juga tumpang tindih dengan paralelisme dan datamining / big data misalnya dengan bahasa baru seperti MapReduce .
pemrograman visual / dataflow . telah ada peningkatan dalam jenis "bahasa" (dalam arti pemrograman visual dalam banyak hal sebenarnya memisahkan pemrograman dari "bahasa"). juga penyerbukan silang yang kuat dengan paralelisme.
AI . ini lebih merupakan wildcard jangka panjang dan tidak begitu jelas sekarang bagaimana ini akan berdampak pada bahasa komputer dan pemrograman tetapi mungkin akan sangat substansial. di masa lalu [dalam bentuk yang berbeda] itu mengarah ke seluruh bahasa seperti prolog . indikasi awal tentang bagaimana itu dapat diterapkan dengan hasil yang mencolok adalah Algoritma Genetika / Pemrograman Genetik .
referensi yang mungkin memiliki beberapa ide bermanfaat di sepanjang garis "masa depan bahasa pemrograman", Beyond Java by Tate. Ia merenungkan (walaupun secara kontroversial) bahwa mungkin Jawa (bisa dibilang salah satu bahasa pemrograman paling canggih / komprehensif yang ada) mulai menunjukkan usianya dan ada tanda-tanda awal bahasa baru / pendekatan yang muncul untuk mengisi tempatnya dalam jangka panjang.
sumber