Paul Graham oznámil nový programovací jazyk Bel

Bel jazyk je psán v jazyce Bel.

Paul Graham oznámil nový programovací jazyk Bel
V roce 1960 John McCarthy popsal Lisp, nový typ programovacího jazyka. Říkám „nový typ“, protože Lisp nebyl jen nový jazyk, ale nový způsob popisu jazyků.

Aby definoval Lisp, začal s malou sadou výroků, jakési axiomy, které pak použil k sepsání tlumočníka pro samotný jazyk.

Jeho cílem nebylo popsat programovací jazyk v obvyklém smyslu - jazyk, který se používá k tomu, aby počítač řekl, co má dělat. Ve své práci z roku 1960 byl Lisp chápán jako formální model výpočtu podobný Turingovu stroji. McCarthy nepřemýšlel o jeho použití na počítačích, dokud to nenavrhl Steve Russell, jeho postgraduální student.

Lisp v roce 1960 neměl vlastnosti běžné pro programovací jazyky. Například tam nebyla žádná čísla, chyby nebo I/O. Takže lidé, kteří používali Lisp jako základ pro jazyky používané k programování počítačů, museli tyto funkce přidat sami. A udělali to tím, že opustili axiomatický přístup.

Vývoj Lispu tedy probíhal ve dvou – a zdánlivě zcela nezávislých – fázích: formální fázi, představené v dokumentu z roku 1960, a fázi implementace, ve které byl jazyk přizpůsoben a rozšířen pro běh na počítačích. Hlavní práce, měřená počtem realizovaných příležitostí, probíhala ve fázi implementace. Lisp z roku 1960, přeložený do Common Lisp, obsahuje pouze 53 řádků. Dělá jen to, co je nezbytné k interpretaci výrazů. Vše ostatní bylo přidáno ve fázi realizace.

Moje hypotéza je, že navzdory své obtížné historii Lisp těžil ze skutečnosti, že jeho vývoj probíhal ve dvou fázích; že původní cvičení definování jazyka napsáním jeho interpreta v něm dalo Lispovi jeho nejlepší vlastnosti. A pokud ano, proč nejít dále?

Bel je pokusem o odpověď na otázku: co kdyby se namísto přechodu z formální fáze do fáze provádění v rané fázi tento přechod uskutečnil co nejpozději? Pokud budete pokračovat v používání axiomatického přístupu, dokud nebudete mít něco blízkého úplnému programovacímu jazyku, jaké axiomy budete potřebovat a jak bude výsledný jazyk vypadat?

Chci mít jasno v tom, co Bel je a co není. Ačkoli má mnohem více funkcí než McCarthyho Lisp z roku 1960, Bel je stále produktem ve své formální fázi. Stejně jako Lisp, popsaný v článku z roku 1960, to není jazyk, který můžete použít k programování. Především proto, že stejně jako McCarthyho Lisp nedbá na efektivitu. Když něco přidám k Belovi, popisuji význam tohoto dodatku, aniž bych se pokoušel poskytnout účinnou implementaci.

Proč? Proč prodlužovat formální fázi? Jednou z odpovědí je zjistit, kam nás může axiomatický přístup zavést, což je samo o sobě zajímavé cvičení. Kdyby byly počítače tak výkonné, jak bychom je chtěli mít, jak by jazyky vypadaly?

Ale také věřím, že je možné napsat účinnou implementaci založenou na Bel přidáním omezení. Pokud chcete jazyk, který má vyjadřovací sílu, jasnost a účinnost, možná by stálo za to začít s vyjadřovací silou a jasností a pak přidat omezení, spíše než jít opačným směrem.

Takže pokud chcete zkusit napsat implementaci založenou na Bel, pokračujte. Budu jedním z prvních uživatelů.

Nakonec jsem některé věci reprodukoval z předchozích dialektů. Buď to jejich konstruktéři vystihli správně, nebo ovlivnění dříve používanými dialekty, nevidím správnou odpověď – čas ukáže. Také jsem se snažil neodchýlit se příliš od konvencí Lisp. Což znamená, že pokud vidíte odklon od Lispových konvencí, může to mít svůj důvod.

Pokračující popis jazyka zde.

Díky za překlad: Denis Mitropolsky

PS

Zdroj: www.habr.com

Přidat komentář