Paul Graham annonserte et nytt programmeringsspråk Bel

Bel-språket er skrevet på bel-språket.

Paul Graham annonserte et nytt programmeringsspråk Bel
I 1960 beskrev John McCarthy Lisp, en ny type programmeringsspråk. Jeg sier «ny type» fordi Lisp ikke bare var et nytt språk, men en ny måte å beskrive språk på.

For å definere Lisp startet han med et lite sett med utsagn, en slags aksiomer, som han så brukte til å skrive en tolk for selve språket.

Den hadde ikke som mål å beskrive et programmeringsspråk i vanlig forstand – et språk som brukes til å fortelle en datamaskin hva den skal gjøre. I sitt arbeid fra 1960 ble Lisp forstått som en formell beregningsmodell i likhet med Turing Machine. McCarthy tenkte ikke på å bruke det på datamaskiner før Steve Russell, hans doktorgradsstudent, foreslo det.

Lisp i 1960 hadde ikke funksjonene som er felles for programmeringsspråk. For eksempel var det ingen tall, feil eller I/O. Så folk som brukte Lisp som grunnlag for språkene som ble brukt til å programmere datamaskiner, måtte legge til disse funksjonene selv. Og de gjorde dette ved å forlate den aksiomatiske tilnærmingen.

Dermed fortsatte utviklingen av Lisp i to - og tilsynelatende ganske uavhengige - stadier: en formell fase, introdusert i en artikkel fra 1960, og en implementeringsfase, der språket ble tilpasset og utvidet til å kjøre på datamaskiner. Hovedarbeidet, hvis målt ved antall implementerte muligheter, fant sted på implementeringsstadiet. Lisp fra 1960, oversatt til Common Lisp, inneholder kun 53 linjer. Den gjør bare det som er nødvendig for å tolke uttrykkene. Alt annet ble lagt til på implementeringsstadiet.

Min hypotese er at Lisp til tross for sin vanskelige historie tjente på at utviklingen skjedde i to faser; at den opprinnelige øvelsen med å definere et språk ved å skrive dets tolk i det ga Lisp dets beste egenskaper. Og i så fall, hvorfor ikke gå videre?

Bel er et forsøk på å svare på spørsmålet: hva om, i stedet for å gå fra det formelle stadiet til utførelsesstadiet på et tidlig stadium, denne overgangen ble gjort så sent som mulig? Hvis du fortsetter å bruke den aksiomatiske tilnærmingen til du har noe i nærheten av et komplett programmeringsspråk, hvilke aksiomer trenger du, og hvordan vil det resulterende språket se ut?

Jeg vil være tydelig på hva Bel er og hva det ikke er. Selv om den har mange flere funksjoner enn McCarthys Lisp fra 1960, er Bel fortsatt et produkt i sin formelle fase. Som Lisp, beskrevet i en artikkel fra 1960, er det ikke et språk du kan bruke til å programmere. Hovedsakelig fordi den, som McCarthys Lisp, ikke bryr seg om effektivitet. Når jeg legger til noe til Bel, beskriver jeg betydningen av tillegget uten å forsøke å gi en effektiv implementering.

For hva? Hvorfor utvide den formelle fasen? Et svar er å se hvor den aksiomatiske tilnærmingen kan ta oss, noe som er en interessant øvelse i seg selv. Hvis datamaskiner var så kraftige som vi ønsker at de skal være, hvordan ville språk sett ut?

Men jeg tror også at det er mulig å skrive en effektiv Bel-basert implementering ved å legge til restriksjoner. Hvis du vil ha et språk som har uttrykkskraft, klarhet og effektivitet, kan det være verdt å starte med uttrykkskraft og klarhet, og deretter legge til begrensninger, i stedet for å gå i motsatt retning.

Så hvis du vil prøve å skrive en implementering basert på Bel, fortsett. Jeg vil være en av de første brukerne.

Til syvende og sist har jeg gjengitt noen ting fra tidligere dialekter. Enten har designerne deres rett, eller at de er påvirket av tidligere brukte dialekter, jeg ser ikke det rette svaret – tiden vil vise. Jeg prøvde også å ikke gå for langt unna Lisp-konvensjonene. Noe som betyr at hvis du ser en bevegelse bort fra Lisp-konvensjonene, kan det være en grunn til det.

Fortsatt beskrivelse av språket her.

Takk for oversettelsen: Denis Mitropolsky

PS

Kilde: www.habr.com

Legg til en kommentar