Paul Graham Mengumumkan Bahasa Pemrograman Bel Baru

Bel ditulis dalam Bel.

gambar

Pada tahun 1960, John McCarthy menggambarkan Lisp, jenis bahasa pemrograman baru. Saya mengatakan "tipe baru" karena Lisp bukan hanya bahasa baru, tetapi cara baru untuk menggambarkan bahasa.

Untuk mendefinisikan Lisp, ia mulai dengan seperangkat operator kecil, semacam aksioma, yang kemudian ia gunakan untuk menulis penerjemah untuk bahasa itu sendiri.

Dia tidak bertujuan untuk menggambarkan bahasa pemrograman dalam pengertian yang biasa - bahasa yang digunakan untuk memberi tahu komputer apa yang harus dilakukan. Dalam karyanya tahun 1960, Lisp dipahami sebagai model perhitungan formal yang mirip dengan Mesin Thuring. McCarthy tidak berpikir untuk menggunakannya di komputer sampai diusulkan oleh Steve Russell, mahasiswa pascasarjana.

1960 Lisp tidak memiliki kemampuan umum untuk bahasa pemrograman. Misalnya, tidak ada angka, kesalahan, atau input / output. Oleh karena itu, orang yang menggunakan Lisp sebagai dasar untuk bahasa yang digunakan untuk memprogram komputer harus menambahkan fitur-fitur ini sendiri. Dan mereka melakukan ini dengan mengabaikan pendekatan aksiomatik.

Dengan demikian, pengembangan Lisp berjalan dalam dua - dan, tampaknya, cukup independen - tahap: tahap formal, disajikan pada tahun 1960, dan tahap implementasi, di mana bahasa diadaptasi dan diperluas untuk berjalan di komputer. Pekerjaan utama, jika diukur dengan jumlah peluang yang diimplementasikan, adalah pada tahap implementasi. 1960 Lisp, diterjemahkan ke Common Lisp, hanya berisi 53 baris. Dia hanya melakukan apa yang diperlukan untuk menafsirkan ekspresi. Yang lainnya ditambahkan pada tahap implementasi.

Hipotesis saya adalah, meskipun memiliki sejarah yang sulit, Lisp mendapatkan manfaat dari kenyataan bahwa perkembangannya berlangsung dalam dua fase; bahwa latihan awal mendefinisikan suatu bahasa dengan menulis penerjemahnya pada bahasa itu sendiri memberikan Lisp dengan kualitas terbaiknya. Dan jika demikian, mengapa tidak pindah?

Bel adalah upaya untuk menjawab pertanyaan: bagaimana jika, alih-alih pindah dari tahap formal ke tahap eksekusi pada tahap awal, buat transisi ini selambat mungkin? Jika Anda terus menggunakan pendekatan aksiomatik hingga Anda memiliki sesuatu yang dekat dengan bahasa pemrograman yang lengkap, aksioma apa yang Anda butuhkan, dan seperti apa bahasa yang dihasilkan?

Saya ingin mengklarifikasi apa Bel itu dan apa yang bukan. Meskipun memiliki lebih banyak fitur daripada 1960 Lisp McCarthy, Bel masih dalam fase formal. Seperti yang dijelaskan Lisp pada 1960, itu bukan bahasa yang bisa Anda gunakan untuk pemrograman. Terutama karena, seperti Lisp McCarthy, dia tidak peduli dengan efisiensi. Ketika saya menambahkan sesuatu ke Bel, saya menjelaskan arti dari penambahan ini tanpa mencoba memberikan implementasi yang efektif.

Untuk apa? Mengapa memperpanjang tahap formal? Satu jawaban adalah untuk melihat ke mana pendekatan aksiomatik dapat membawa kita, yang dengan sendirinya merupakan latihan yang menarik. Jika komputer sekuat yang kita inginkan, lalu seperti apa bahasa itu?

Tetapi saya juga percaya bahwa adalah mungkin untuk menulis implementasi yang efektif berdasarkan Bel, menambahkan batasan. Jika Anda membutuhkan bahasa yang memiliki kekuatan ekspresif, kejelasan, dan efisiensi, Anda mungkin ingin memulai dengan kekuatan ekspresif dan kejelasan, dan kemudian menambahkan batasan daripada bergerak ke arah yang berlawanan.

Jadi, jika Anda ingin mencoba menulis implementasi berbasis Bel, silakan. Saya akan menjadi salah satu pengguna pertama.

Pada akhirnya, saya mereproduksi beberapa hal dari dialek-dialek sebelumnya. Entah desainer mereka melakukan semuanya dengan benar, atau, dipengaruhi oleh dialek yang digunakan sebelumnya, saya tidak melihat jawaban yang tepat - waktu akan memberi tahu. Saya juga berusaha untuk tidak terlalu jauh dari konvensi yang diadopsi di Lisp. Yang berarti bahwa jika Anda melihat keberangkatan dari konvensi Lisp, mungkin ada alasannya.

Deskripsi lanjutan bahasa di sini .


Terima kasih atas terjemahannya: Denis Mitropolsky

PS


Source: https://habr.com/ru/post/id484328/


All Articles