Jawaban saya benar-benar hanya sebuah penjabaran dari Gilles, yang belum pernah saya baca sebelumnya. Mungkin ini sangat membantu.
Biarkan saya memulai upaya saya menjawab pertanyaan Anda dengan perbedaan antara dua dimensi pekerjaan bahasa pemrograman yang berhubungan sangat berbeda dengan teori bahasa pemrograman pada umumnya dan proses kalkulus pada khususnya.
Yang terakhir ini biasanya terjadi di industri dengan tujuan menyediakan bahasa pemrograman sebagai produk. Tim yang mengembangkan Java di Oracle dan C # di Microsoft adalah contoh. Sebaliknya, penelitian murni tidak terikat pada produk. Tujuannya adalah untuk memahami bahasa pemrograman sebagai objek yang menarik secara intrinsik dan untuk mengeksplorasi struktur matematika yang mendasari semua bahasa pemrograman.
Karena tujuan yang berbeda, Aspek yang berbeda dari teori bahasa pemrograman relevan dalam penelitian murni dan dalam R&D yang berfokus pada produk Gambar di bawah ini dapat memberikan indikasi apa yang penting di mana.
Orang mungkin bertanya pada titik ini mengapa kedua dimensi itu tampak sangat berbeda dan bagaimana mereka saling berhubungan.
Wawasan utama adalah bahwa penelitian dan pengembangan bahasa pemrograman memiliki beberapa dimensi: teknis, sosial dan ekonomi. Hampir secara definisi, industri tertarik pada hasil ekonomi dari bahasa pemrograman. Microsoft et al tidak mengembangkan bahasa karena kebaikan hati mereka tetapi karena mereka percaya bahasa pemrograman memberi mereka keuntungan ekonomis. Dan mereka telah menyelidiki secara mendalam mengapa beberapa bahasa pemrograman berhasil, dan yang lain, yang tampaknya mirip atau dengan fitur yang lebih maju, tidak. Dan mereka menemukan bahwa tidak ada satu alasan pun. Memprogram bahasa dan lingkungannya rumit, dan demikian pula alasan untuk mengadopsi atau mengabaikan bahasa tertentu. Tetapi satu-satunya faktor terbesar untuk keberhasilan suatu bahasa pemrograman adalah perlekatan preferensi programmer ke bahasa yang sudah banyak digunakan: semakin banyak orang menggunakan bahasa, semakin banyak perpustakaan, peralatan, bahan ajar yang tersedia, dan semakin produktif seorang programmer bisa menggunakan bahasa itu. Ini juga disebut efek jaringan. Alasan lain adalah tingginya biaya alih bahasa untuk perorangan dan organisasi: menguasai bahasa, terutama untuk programmer yang tidak berpengalaman, dan ketika jarak semantik ke bahasa yang umum adalah besar, merupakan upaya serius dan menghabiskan waktu. Mengingat fakta-fakta ini, orang mungkin bertanya mengapa bahasa baru mendapatkan daya tarik sama sekali? Mengapa perusahaan mengembangkan bahasa baru? Kenapa kita tidak tinggal dengan Java atau Cobol saja? Saya pikir ada beberapa alasan utama mengapa sebuah bahasa berhasil,
Domain pemrograman baru terbuka yang tidak memiliki kewajiban untuk dipindahkan. Contoh utama adalah web dengan kebangkitan Javascript yang bersamaan.
Lengket bahasa. Maksud saya ini adalah tingginya harga bahasa yang berubah-ubah. Tetapi kadang-kadang programmer pindah ke bidang yang berbeda, mengambil bahasa pemrograman dengan mereka, dan menjadi sukses dengan bahasa lama di bidang baru.
Sebuah bahasa didorong oleh sebuah perusahaan besar dengan kekuatan finansial yang serius. Dukungan ini mengurangi risiko adopsi, karena pengguna awal dapat yakin bahwa bahasa tersebut masih akan didukung dalam beberapa tahun. Contoh yang baik dari ini adalah C #.
Suatu bahasa mungkin datang dengan alat yang menarik dan ekosistem. Di sini juga C # dan itu. Net dan Visual Studio eco-system dapat disebutkan sebagai contoh.
Bahasa lama mengambil fitur baru. Java muncul di benak, yang, dalam setiap iterasi, mengambil lebih banyak ide bagus dari tradisi pemrograman fungsional.
Akhirnya, bahasa baru mungkin memiliki keunggulan teknis intrinsik, misalnya lebih ekspresif, sintaksis lebih bagus, sistem pengetikan yang menangkap lebih banyak kesalahan, dll.
Mengingat latar belakang ini, seharusnya tidak mengherankan bahwa ada sedikit keterputusan antara penelitian bahasa pemrograman murni, dan pengembangan bahasa pemrograman komersial. Sementara keduanya bertujuan untuk membuat pembangunan dan evolusi perangkat lunak lebih efisien, terutama untuk perangkat lunak skala besar, pekerjaan bahasa pemrograman industri harus lebih tertarik dalam memfasilitasi adopsi cepat untuk mencapai massa kritis dan mendapatkan efek jaringan. Ini mengarah pada fokus penelitian pada hal-hal yang dipedulikan oleh programmer yang bekerja. Dan itu cenderung menjadi hal-hal seperti ketersediaan perpustakaan, kecepatan kompiler, kualitas kode yang dikompilasi, portabilitas dan sebagainya. Proses kalkulus seperti yang kita praktikkan hari ini tidak banyak berguna bagi pemrogram yang mengerjakan proyek-proyek utama (walaupun saya percaya itu akan berubah di masa depan).
Penelitian bahasa pemrograman murni sangat berbeda. Ia bekerja dengan model bahasa pemrograman yang disederhanakan: -calculus adalah penyederhanaan besar pemrograman fungsional. Dengan cara yang sama, kalkulus adalah penyederhanaan besar dari pemrograman konkuren. Penyederhanaan besar-besaran ini adalah kunci untuk penelitian yang sukses. Mereka memungkinkan kita untuk fokus pada mekanisme komputasi inti (misalnyaλπβ-pengurangan untuk pemrograman fungsional, resolusi / unifikasi untuk pemrograman logika, passing-nama untuk perhitungan bersamaan). Untuk memahami jika bahasa seperti Scala dapat memiliki inferensi tipe penuh yang layak, kita tidak perlu khawatir tentang JVM. Memang berpikir tentang JVM akan mengurangi pemahaman yang lebih baik tentang tipe-inferensi. Itu sebabnya abstraksi perhitungan menjadi batu inti kecil sangat penting dan kuat.
Jadi Anda dapat menganggap penelitian bahasa pemrograman sebagai kotak pasir besar di mana orang bermain dengan mainan, dan jika mereka menemukan sesuatu yang menarik ketika bermain dengan mainan tertentu, dan telah menyelidiki mainan itu dengan saksama, maka mainan yang menarik itu memulai perjalanan panjang menuju penerimaan industri arus utama. . Saya katakan long march karena fitur bahasa yang pertama kali ditemukan oleh peneliti bahasa pemrograman cenderung memakan waktu puluhan tahun sebelum diterima secara luas. Misalnya pengumpulan sampah dikandung pada 1950-an dan menjadi tersedia secara luas dengan Jawa pada 1990-an. Pencocokan pola berasal dari tahun 1970 dan hanya digunakan secara luas sejak Scala.
Kalkulus proses adalah mainan yang sangat menarik. Tetapi terlalu baru untuk diselidiki secara menyeluruh. Itu akan membutuhkan satu dekade penelitian murni. Apa yang saat ini terjadi dalam penelitian teori proses adalah untuk mengambil kisah sukses tunggal terbesar dari penelitian bahasa pemrograman, teori jenis (berurutan) dan mengembangkan teori jenis untuk concurrency lewat pesan. Sistem pengetikan ekspresivitas moderat untuk pemrograman berurutan, kata Hindley-Milner, sekarang dipahami dengan baik, ada di mana-mana, dan diterima oleh para programmer yang bekerja. Kami ingin memiliki tipe yang cukup ekspresif untuk pemrograman bersamaan. Penelitian mengenai hal ini dimulai pada 1980-an oleh para pelopor seperti Milner, Sangiorgi, Turner, Kobayashi, Honda, dan lainnya, sering kali didasarkan, secara eksplisit atau implisit, pada gagasan linearitas yang berasal dari logika linier. Beberapa tahun terakhir telah melihat peningkatan besar dalam aktivitas dan saya berharap lintasan ke atas ini akan berlanjut untuk masa mendatang. Saya juga berharap pekerjaan ini mulai bocor ke R&D yang berfokus pada produk, sebagian karena alasan pragmatis bahwa peneliti muda yang telah dilatih dalam kalkulus proses akan pergi dan bekerja di laboratorium R&D industri, tetapi juga karena evolusi CPU dan arsitektur komputer jauh dari bentuk komputasi berurutan.
Singkatnya, saya tidak akan khawatir bahwa Anda tidak menemukan teori bahasa pemrograman terdepan seperti kalkulus proses berguna dalam pekerjaan Anda sendiri membangun bahasa. Itu hanya karena teori mutakhir tidak membahas masalah bahasa pemrograman saat ini. Ini tentang bahasa masa depan. Butuh waktu beberapa saat untuk 'dunia nyata' untuk mengejar ketinggalan. Pengetahuan yang Anda gunakan untuk membangun bahasa untuk hari ini adalah teori bahasa pemrograman di masa lalu. Saya mendorong Anda untuk mempelajari lebih lanjut tentang kalkulus proses karena ini adalah salah satu bidang yang paling menarik dari semua ilmu komputer teoretis.