Пол Грем анонсував нову мову програмування Bel

Мова Bel написана мовою Bel.

Пол Грем анонсував нову мову програмування Bel
1960 року Джон МкКарті описав Lisp — новий тип мови програмування. Я говорю «новий тип» тому що Lisp являв собою не просто нову мову, але новий спосіб опису мов.

Щоб визначити Lisp, він почав з малого набору операторів, свого роду аксіом, який потім використовував для написання інтерпретатора для самої мови.

Він не ставив за мету описати мову програмування у звичайному сенсі — мову, яка використовується, щоб вказувати комп'ютеру, що йому робити. У його роботі 1960 року Lisp розумівся як формальна модель обчислення схожа на Машину Тюрінга. МакКарті не думав про її використання на комп'ютерах, поки це не запропонував Стів Рассел, його дипломник.

У Lisp 1960 року не було можливостей, звичайних мов програмування. Наприклад, там не було чисел, помилок або вводу/виводу. Тому людям, які використовували Lisp як основу мов, що використовуються програмування комп'ютерів, доводилося додавати ці можливості самим. І вони робили це за рахунок відмови від аксіоматичного підходу.

Таким чином, розвиток Lisp йшов у два – і, схоже, досить незалежні – етапи: формальний етап, представлений у роботі 1960 року, та етап реалізації, в якому мова була адаптована та розширена для запуску на комп'ютерах. p align="justify"> Основна робота, якщо міряти кількістю реалізованих можливостей, йшла на етапі реалізації. Lisp 1960, трансльований в Common Lisp містить всього 53 рядки. Він робить тільки те, що необхідно, щоб інтерпретувати вирази. Решта було додано на етапі реалізації.

Моя гіпотеза така, що, незважаючи на важку історію, Lisp пішло на користь те, що його розвиток відбувався у дві фази; що початкова вправа з визначення мови через написання його інтерпретатора на ньому самому наділила Lisp її найкращими якостями. І якщо так, то чому не піти далі?

Бел — це спроба відповіді питання: що, якщо замість переходу від формального етапу до етапу виконання на ранньому етапі, здійснити цей перехід якомога пізніше? Якщо ви продовжуватимете використовувати аксіоматичний підхід до тих пір, поки у вас не виявиться щось близьке до завершеної мови програмування, які аксіоми вам знадобляться, і як виглядатиме мова, що вийшла?

Я хочу внести ясність щодо того, що є Bel і чим він не є. Хоча він набагато більше можливостей, ніж у Lisp МакКарті 1960 року, Bel все ще продукт у формальній фазі. Як і Lisp, описаний у роботі 1960 року, це не мова, яку ви можете використовувати для програмування. Головним чином, тому, що подібно до Lisp МакКарті, він не піклується про ефективність. Коли я додаю щось у Bel, я описую сенс цього додавання, не намагаючись надати ефективну реалізацію.

Для чого? Навіщо продовжувати формальний етап? Одна з відповідей — щоб побачити, куди нас може завести аксіоматичний підхід, що саме собою цікава вправа. Якби комп'ютери були настільки потужними, як би нам хотілося — як би тоді виглядали мови?

Але я також вірю, що можна написати ефективну реалізацію, засновану на Bel, додаючи обмеження. Якщо вам потрібна мова, що має виразну силу, ясність і ефективність, можливо, варто почати з виразної потужності і ясності, а потім додати обмеження, ніж рухатися в протилежному напрямку.

Отже, якщо хочете спробувати написати реалізацію, засновану на Bel — будь ласка. Я буду одним із перших користувачів.

Зрештою, я відтворив деякі речі з попередніх діалектів. Або їх дизайнери все зробили правильно, або, перебуваючи під впливом діалектів, що раніше використовуються, я не бачу правильної відповіді — час покаже. Я також намагався не відходити надто далеко від угод, прийнятих у Lisp. Що означає, що якщо ви побачите відхід від угод Lisp, можливо, на те були свої причини.

Продовження опису мови тут.

За переклад спасибі: Denis Mitropolsky

PS

Джерело: habr.com

Додати коментар або відгук