Bahasa Bel ditulis dalam bahasa Bel.

Pada tahun 1960, John McCarthy menggambarkan Lisp, sejenis bahasa pengaturcaraan baharu. Saya menyebut "jenis baharu" kerana Lisp bukan sekadar bahasa baharu, tetapi cara baharu untuk menerangkan bahasa.
Untuk mentakrifkan Lisp, dia bermula dengan set kecil operator, sejenis aksiom, yang kemudiannya digunakan untuk menulis penterjemah untuk bahasa itu sendiri.
Dia tidak berhasrat untuk menerangkan bahasa pengaturcaraan dalam erti kata tradisional—bahasa yang digunakan untuk memberitahu komputer apa yang perlu dilakukan. Dalam kertas kerjanya pada tahun 1960, Lisp difahami sebagai model pengiraan formal yang serupa dengan Mesin Turing. McCarthy tidak mempertimbangkan penggunaannya pada komputer sehingga Steve Russell, pelajar siswazahnya, mencadangkannya.
Lisp tahun 1960 tidak mempunyai ciri-ciri biasa untuk bahasa pengaturcaraan. Contohnya, ia tidak mempunyai nombor, ralat atau input/output. Oleh itu, orang yang menggunakan Lisp sebagai asas untuk bahasa pengaturcaraan komputer terpaksa menambah ciri ini sendiri. Dan mereka melakukannya dengan meninggalkan pendekatan aksiomatik.
Oleh itu, pembangunan Lisp berjalan dalam dua-dan, nampaknya, agak bebas-fasa: fasa formal, dibentangkan dalam kertas 1960, dan fasa pelaksanaan, di mana bahasa itu disesuaikan dan diperluaskan untuk penggunaan komputer. Sebahagian besar kerja, diukur dari segi bilangan ciri yang dilaksanakan, berlaku semasa fasa pelaksanaan. Lisp 1960, diterjemahkan ke dalam Common Lisp, mengandungi hanya 53 baris kod. Ia hanya melakukan apa yang perlu untuk mentafsir ungkapan. Segala-galanya telah ditambah semasa fasa pelaksanaan.
Hipotesis saya ialah, walaupun sejarahnya yang sukar, Lisp mendapat manfaat daripada pembangunan dua fasanya; bahawa latihan awal untuk mentakrifkan bahasa dengan menulis penterjemahnya dalam Lisp sendiri menjiwainya dengan kualiti terbaiknya. Dan jika ya, mengapa tidak pergi lebih jauh?
Cantik — adalah percubaan untuk menjawab soalan: bagaimana jika, daripada beralih daripada peringkat formal ke peringkat pelaksanaan lebih awal, anda membuat peralihan ini selewat mungkin? Jika anda terus menggunakan pendekatan aksiomatik sehingga anda mempunyai sesuatu yang hampir dengan bahasa pengaturcaraan yang lengkap, aksiom apakah yang anda perlukan, dan apakah rupa bahasa yang terhasil?
Saya ingin jelas tentang Bel itu dan bukan. Walaupun ia mempunyai lebih banyak ciri daripada McCarthy's 1960 Lisp, Bel masih merupakan produk dalam fasa formal. Seperti Lisp yang diterangkan dalam kertas 1960, ia bukan bahasa yang boleh anda gunakan untuk pengaturcaraan. Ini terutamanya kerana, seperti McCarthy's Lisp, ia tidak mengambil berat tentang kecekapan. Apabila saya menambah sesuatu pada Bel, saya menerangkan maksud penambahan itu, tanpa cuba menyediakan pelaksanaan yang cekap.
kenapa? Mengapa memanjangkan peringkat formal? Satu jawapan adalah untuk melihat ke mana pendekatan aksiomatik mungkin membawa kita, yang merupakan latihan yang menarik itu sendiri. Jika komputer berkuasa seperti yang kita mahukan, apakah rupa bahasa?
Tetapi saya juga percaya adalah mungkin untuk menulis pelaksanaan yang cekap berdasarkan Bel dengan menambahkan kekangan. Jika anda mahukan bahasa dengan kuasa ekspresif, kejelasan dan kecekapan, mungkin lebih baik bermula dengan kuasa dan kejelasan ekspresif dan kemudian menambah kekangan daripada bergerak ke arah yang bertentangan.
Jadi, jika anda ingin mencuba menulis pelaksanaan berdasarkan Bel, teruskan. Saya akan menjadi salah seorang pengguna pertama.
Akhirnya, saya telah mencipta semula beberapa ciri daripada dialek sebelumnya. Sama ada pereka mereka memahaminya dengan betul, atau saya berada di bawah pengaruh dialek yang digunakan sebelum ini dan tidak melihat jawapan yang betul-masa akan menentukan. Saya juga telah cuba untuk tidak menyimpang terlalu jauh dari konvensyen Lisp. Ini bermakna jika anda melihat perlepasan dari konvensyen Lisp, mungkin ada sebab untuknya.
.
Terima kasih untuk terjemahan: Denis Mitropolsky
PS
Sumber: www.habr.com
