Paul Graham mengumumkan bahasa pengaturcaraan baharu Bel

Bahasa Bel ditulis dalam bahasa Bel.

Paul Graham mengumumkan bahasa pengaturcaraan baharu 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 satu set pernyataan kecil, sejenis aksiom, yang kemudiannya digunakan untuk menulis penterjemah bagi bahasa itu sendiri.

Ia tidak bermaksud untuk menerangkan bahasa pengaturcaraan dalam erti kata biasa - bahasa yang digunakan untuk memberitahu komputer apa yang perlu dilakukan. Dalam karyanya pada tahun 1960, Lisp difahami sebagai model pengiraan formal yang serupa dengan Mesin Turing. McCarthy tidak terfikir untuk menggunakannya pada komputer sehingga Steve Russell, pelajar siswazahnya, mencadangkannya.

Lisp pada tahun 1960 tidak mempunyai ciri yang sama dengan bahasa pengaturcaraan. Contohnya, tiada nombor, ralat atau I/O. Jadi orang yang menggunakan Lisp sebagai asas untuk bahasa yang digunakan untuk memprogram komputer terpaksa menambah ciri ini sendiri. Dan mereka melakukan ini dengan meninggalkan pendekatan aksiomatik.

Oleh itu, pembangunan Lisp berjalan dalam dua - dan nampaknya agak bebas - peringkat: peringkat formal, yang diperkenalkan dalam kertas tahun 1960, dan peringkat pelaksanaan, di mana bahasa itu disesuaikan dan diperluaskan untuk dijalankan pada komputer. Kerja utama, jika diukur dengan bilangan peluang yang dilaksanakan, berlaku pada peringkat pelaksanaan. Lisp dari 1960, diterjemahkan ke dalam Common Lisp, mengandungi hanya 53 baris. Ia hanya melakukan apa yang perlu untuk mentafsir ungkapan. Segala-galanya telah ditambah pada peringkat pelaksanaan.

Hipotesis saya ialah, walaupun sejarahnya yang sukar, Lisp mendapat manfaat daripada fakta bahawa perkembangannya berlaku dalam dua fasa; bahawa latihan asal untuk mentakrifkan bahasa dengan menulis penterjemahnya di dalamnya memberikan Lisp kualiti terbaiknya. Dan jika ya, mengapa tidak pergi lebih jauh?

Cantik adalah percubaan untuk menjawab soalan: bagaimana jika, daripada beralih dari peringkat formal ke peringkat pelaksanaan pada peringkat awal, peralihan ini dibuat selewat-lewatnya? 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 apa itu Bel dan apa itu bukan. Walaupun ia mempunyai lebih banyak ciri daripada McCarthy's 1960 Lisp, Bel masih merupakan produk dalam fasa formalnya. Seperti Lisp, yang diterangkan dalam kertas tahun 1960, ia bukan bahasa yang boleh anda gunakan untuk memprogramkan. 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 memberikan pelaksanaan yang cekap.

Untuk apa? Mengapa memanjangkan peringkat formal? Satu jawapan adalah untuk melihat di mana pendekatan aksiomatik boleh membawa kita, yang merupakan latihan yang menarik itu sendiri. Jika komputer berkuasa seperti yang kita mahukan, apakah rupa bahasa?

Tetapi saya juga percaya bahawa adalah mungkin untuk menulis pelaksanaan berasaskan Bel yang cekap dengan menambahkan sekatan. Jika anda mahukan bahasa yang mempunyai kuasa ekspresif, kejelasan dan kecekapan, ia mungkin berbaloi untuk bermula dengan kuasa dan kejelasan ekspresif, dan kemudian menambah sekatan, dan bukannya pergi ke arah yang bertentangan.

Jadi jika anda ingin mencuba menulis pelaksanaan berdasarkan Bel, teruskan. Saya akan menjadi salah seorang pengguna pertama.

Akhirnya, saya mengeluarkan semula beberapa perkara daripada dialek sebelumnya. Sama ada pereka mereka memahaminya dengan betul, atau dipengaruhi oleh dialek yang digunakan sebelum ini, saya tidak nampak jawapan yang betul - masa akan menentukan. Saya juga cuba untuk tidak menyimpang terlalu jauh dari konvensyen Lisp. Ini bermakna jika anda melihat perpindahan daripada konvensyen Lisp, mungkin ada sebab untuknya.

Penerangan lanjut tentang bahasa di sini.

Terima kasih untuk terjemahan: Denis Mitropolsky

PS

Sumber: www.habr.com

Tambah komen