Paul Graham heeft een nieuwe programmeertaal Bel aangekondigd

De Bel-taal is geschreven in de Bel-taal.

Paul Graham heeft een nieuwe programmeertaal Bel aangekondigd
In 1960 beschreef John McCarthy Lisp, een nieuw type programmeertaal. Ik zeg "nieuw type" omdat Lisp niet alleen een nieuwe taal was, maar een nieuwe manier om talen te beschrijven.

Om Lisp te definiëren, begon hij met een kleine reeks uitspraken, een soort axioma's, die hij vervolgens gebruikte om een ​​tolk voor de taal zelf te schrijven.

Het was niet de bedoeling een programmeertaal in de gebruikelijke zin te beschrijven: een taal die wordt gebruikt om een ​​computer te vertellen wat hij moet doen. In zijn werk uit 1960 werd Lisp opgevat als een formeel rekenmodel, vergelijkbaar met de Turingmachine. McCarthy dacht er niet over na om het op computers te gebruiken totdat Steve Russell, zijn afgestudeerde student, het voorstelde.

Lisp had in 1960 niet de kenmerken die programmeertalen gemeen hebben. Er waren bijvoorbeeld geen cijfers, fouten of I/O. Dus mensen die Lisp als basis gebruikten voor de talen waarmee computers werden geprogrammeerd, moesten deze features zelf toevoegen. En ze deden dit door de axiomatische benadering achter zich te laten.

De ontwikkeling van Lisp verliep dus in twee – en schijnbaar volkomen onafhankelijke – fasen: een formele fase, geïntroduceerd in een artikel uit 1960, en een implementatiefase, waarin de taal werd aangepast en uitgebreid om op computers te kunnen draaien. Het belangrijkste werk, gemeten aan de hand van het aantal geïmplementeerde mogelijkheden, vond plaats in de implementatiefase. Lisp uit 1960, vertaald in Common Lisp, bevat slechts 53 regels. Het doet alleen wat nodig is om de uitdrukkingen te interpreteren. Al het andere werd toegevoegd in de implementatiefase.

Mijn hypothese is dat Lisp, ondanks zijn moeilijke geschiedenis, profiteerde van het feit dat zijn ontwikkeling in twee fasen plaatsvond; dat de oorspronkelijke oefening van het definiëren van een taal door er een tolk in te schrijven Lisp zijn beste eigenschappen gaf. En zo ja, waarom niet verder gaan?

Bel is een poging om de vraag te beantwoorden: wat als deze overgang, in plaats van in een vroeg stadium van de formele fase naar de uitvoeringsfase te gaan, zo laat mogelijk zou plaatsvinden? Als je de axiomatische benadering blijft gebruiken totdat je iets hebt dat in de buurt komt van een complete programmeertaal, welke axioma's heb je dan nodig, en hoe zal de resulterende taal eruitzien?

Ik wil duidelijk zijn over wat Bel is en wat het niet is. Hoewel het veel meer kenmerken heeft dan McCarthy's Lisp uit 1960, is Bel nog steeds een product in de formele fase. Net als Lisp, beschreven in een artikel uit 1960, is het geen taal waarmee je kunt programmeren. Vooral omdat het, net als McCarthy's Lisp, niets om efficiëntie geeft. Wanneer ik iets aan Bel toevoeg, beschrijf ik de betekenis van de toevoeging zonder te proberen een efficiënte implementatie te bieden.

Waarvoor? Waarom de formele fase verlengen? Eén antwoord is om te zien waar de axiomatische benadering ons kan brengen, wat op zichzelf een interessante oefening is. Als computers zo krachtig zouden zijn als we zouden willen, hoe zouden talen er dan uitzien?

Maar ik geloof ook dat het mogelijk is om een ​​efficiënte Bel-gebaseerde implementatie te schrijven door beperkingen toe te voegen. Als je een taal wilt die expressieve kracht, helderheid en efficiëntie heeft, kan het de moeite waard zijn om te beginnen met expressieve kracht en helderheid, en daar dan beperkingen aan toe te voegen, in plaats van de tegenovergestelde richting op te gaan.

Dus als je wilt proberen een implementatie te schrijven op basis van Bel, ga je gang. Ik zal een van de eerste gebruikers zijn.

Uiteindelijk heb ik een aantal dingen uit eerdere dialecten overgenomen. Of hun ontwerpers het bij het juiste eind hadden, of beïnvloed zijn door eerder gebruikte dialecten, ik zie niet het juiste antwoord - de tijd zal het leren. Ik probeerde ook niet te ver af te wijken van de Lisp-conventies. Dat betekent dat als je ziet dat je afwijkt van de Lisp-conventies, daar misschien een reden voor is.

Vervolgbeschrijving van de taal hier.

Bedankt voor de vertaling: Denis Mitropolsky

PS

Bron: www.habr.com

Voeg een reactie