Paul Graham ogłosił nowy język programowania Bel

Język Bel jest napisany w języku Bel.

Paul Graham ogłosił nowy język programowania Bel
W 1960 roku John McCarthy opisał Lisp, nowy typ języka programowania. Mówię „nowy typ”, ponieważ Lisp był nie tylko nowym językiem, ale nowym sposobem opisywania języków.

Aby zdefiniować Lisp, zaczął od małego zestawu stwierdzeń, czegoś w rodzaju aksjomatów, których następnie użył do napisania interpretera samego języka.

Nie miał on na celu opisu języka programowania w zwykłym tego słowa znaczeniu – języka używanego do mówienia komputerowi, co ma robić. W swojej pracy z 1960 roku Lisp był rozumiany jako formalny model obliczeniowy podobny do Maszyny Turinga. McCarthy nie myślał o używaniu go na komputerach, dopóki Steve Russell, jego student, nie zasugerował tego.

Lisp w 1960 roku nie miał cech wspólnych dla języków programowania. Na przykład nie było żadnych liczb, błędów ani wejść/wyjść. Zatem ludzie, którzy używali Lispa jako podstawy języków używanych do programowania komputerów, musieli sami dodać te funkcje. Dokonali tego poprzez porzucenie podejścia aksjomatycznego.

Zatem rozwój Lispa przebiegał w dwóch - i pozornie całkiem niezależnych - etapach: etapie formalnym, wprowadzonym w artykule z 1960 roku, oraz etapie wdrażania, w którym język został zaadaptowany i rozszerzony do pracy na komputerach. Główna praca, jeśli mierzyć liczbą wdrożonych możliwości, miała miejsce na etapie wdrażania. Lisp z 1960 roku, przetłumaczony na Common Lisp, zawiera tylko 53 linie. Robi tylko to, co jest konieczne do interpretacji wyrażeń. Cała reszta została dodana na etapie wdrożenia.

Moja hipoteza jest taka, że ​​pomimo swojej trudnej historii Lisp skorzystał na tym, że jego rozwój przebiegał w dwóch fazach; że pierwotne ćwiczenie definiowania języka poprzez zapisanie w nim jego interpretatora dało Lispowi jego najlepsze cechy. A jeśli tak, to dlaczego nie pójść dalej?

Dzwonek jest próbą odpowiedzi na pytanie: co by było, gdyby zamiast przejść od etapu formalnego do etapu wykonawczego już na wczesnym etapie, przejścia tego dokonano możliwie późno? Jeśli będziesz nadal stosować podejście aksjomatyczne, dopóki nie uzyskasz czegoś bliskiego kompletnego języka programowania, jakich aksjomatów będziesz potrzebować i jak będzie wyglądał powstały język?

Chcę mieć jasność co do tego, czym Bel jest, a czym nie jest. Chociaż ma o wiele więcej funkcji niż Lisp McCarthy'ego z 1960 r., Bel jest nadal produktem w fazie formalnej. Podobnie jak Lisp, opisany w artykule z 1960 roku, nie jest to język, którego można używać do programowania. Głównie dlatego, że podobnie jak Lisp McCarthy’ego nie dba o wydajność. Kiedy dodaję coś do Bela, opisuję znaczenie tego dodatku, nie próbując zapewnić skutecznej implementacji.

Po co? Po co przedłużać etap formalny? Jedną z odpowiedzi jest sprawdzenie, dokąd może nas zaprowadzić podejście aksjomatyczne, co samo w sobie jest interesującym ćwiczeniem. Gdyby komputery były tak potężne, jak byśmy tego chcieli, jak wyglądałyby języki?

Wierzę jednak również, że możliwe jest napisanie wydajnej implementacji opartej na Belie poprzez dodanie ograniczeń. Jeśli potrzebujesz języka o mocy ekspresji, przejrzystości i wydajności, warto zacząć od siły ekspresji i przejrzystości, a następnie dodać ograniczenia, zamiast iść w przeciwnym kierunku.

Jeśli więc chcesz spróbować napisać implementację opartą na Bel, śmiało. Będę jednym z pierwszych użytkowników.

Ostatecznie odtworzyłem pewne rzeczy z poprzednich dialektów. Albo ich projektanci dobrze trafili, albo pod wpływem wcześniej używanych dialektów, nie widzę właściwej odpowiedzi – czas pokaże. Starałem się także nie odbiegać zbytnio od konwencji Lispa. Co oznacza, że ​​jeśli zauważysz odejście od konwencji Lispa, może to być powód.

Dalszy opis języka tutaj.

Dziękuję za tłumaczenie: Denis Mitropolsky

PS

Źródło: www.habr.com

Dodaj komentarz