Paul Graham julkisti uuden ohjelmointikielen Bel

Bel-kieli on kirjoitettu Bel-kielellä.

Paul Graham julkisti uuden ohjelmointikielen Bel
Vuonna 1960 John McCarthy kuvasi Lispin, uudenlaisen ohjelmointikielen. Sanon "uusi tyyppi", koska Lisp ei ollut vain uusi kieli, vaan uusi tapa kuvata kieliä.

Lispin määrittelemiseksi hän aloitti pienellä lausejoukolla, eräänlaisilla aksioomilla, joita hän sitten käytti kirjoittaakseen tulkin itse kielelle.

Sen tarkoituksena ei ollut kuvata ohjelmointikieltä tavallisessa merkityksessä - kieltä, jota käytetään kertomaan tietokoneelle, mitä tehdä. Hänen vuoden 1960 työssään Lisp ymmärrettiin muodollisena laskentamallina, joka muistuttaa Turingin konetta. McCarthy ei ajatellut käyttää sitä tietokoneissa, ennen kuin hänen jatko-opiskelijansa Steve Russell ehdotti sitä.

Lispissä vuonna 1960 ei ollut ohjelmointikielille yhteisiä ominaisuuksia. Esimerkiksi ei ollut numeroita, virheitä tai I/O:ta. Joten ihmisten, jotka käyttivät Lispia tietokoneiden ohjelmointikielten perustana, oli lisättävä nämä ominaisuudet itse. Ja he tekivät tämän luopumalla aksiomaattisesta lähestymistavasta.

Siten Lispin kehitys eteni kahdessa - ja näennäisesti melko itsenäisessä - vaiheessa: muodollinen vaihe, joka esiteltiin 1960-julkaisussa, ja toteutusvaihe, jossa kieli mukautettiin ja laajennettiin toimimaan tietokoneilla. Pääasiallinen työ toteutuneiden mahdollisuuksien määrällä mitattuna tapahtui toteutusvaiheessa. Lisp vuodelta 1960, käännetty Common Lisp -kieleksi, sisältää vain 53 riviä. Se tekee vain sen, mikä on välttämätöntä ilmausten tulkitsemiseksi. Kaikki muu lisättiin toteutusvaiheessa.

Hypoteesini on, että vaikeasta historiastaan ​​huolimatta Lisp hyötyi siitä, että sen kehitys tapahtui kahdessa vaiheessa; että alkuperäinen kielen määrittely kirjoittamalla sen tulkki antoi Lispille sen parhaat ominaisuudet. Ja jos on, miksi ei mennä pidemmälle?

Kaunis on yritys vastata kysymykseen: entä jos muodollisesta vaiheesta toteutusvaiheeseen siirtymisen sijaan varhaisessa vaiheessa tämä siirtyminen tapahtuisi mahdollisimman myöhään? Jos jatkat aksiomaattisen lähestymistavan käyttöä, kunnes sinulla on jotain lähellä täydellistä ohjelmointikieltä, mitä aksioomia tarvitset ja miltä tuloksena oleva kieli näyttää?

Haluan tehdä selväksi, mikä Bel on ja mikä se ei ole. Vaikka siinä on paljon enemmän ominaisuuksia kuin McCarthyn 1960 Lispissä, Bel on edelleen tuote muodollisessa vaiheessa. Kuten Lisp, joka on kuvattu vuoden 1960 paperissa, se ei ole kieli, jota voit käyttää ohjelmointiin. Lähinnä siksi, että McCarthyn Lispin tavoin se ei välitä tehokkuudesta. Kun lisään jotain Beliin, kuvailen lisäyksen merkitystä yrittämättä tarjota tehokasta toteutusta.

Minkä vuoksi? Miksi muodollista vaihetta pidentää? Yksi vastaus on nähdä, mihin aksiomaattinen lähestymistapa voi viedä meidät, mikä on sinänsä mielenkiintoinen harjoitus. Jos tietokoneet olisivat yhtä tehokkaita kuin haluaisimme niiden olevan, miltä kielet näyttäisivät?

Mutta uskon myös, että on mahdollista kirjoittaa tehokas Bel-pohjainen toteutus lisäämällä rajoituksia. Jos haluat kielen, jolla on ilmaisuvoimaa, selkeyttä ja tehokkuutta, kannattaa ehkä aloittaa ilmaisuvoimasta ja selkeydestä ja lisätä sitten rajoituksia päinvastaisen suunnan sijaan.

Joten jos haluat yrittää kirjoittaa Beliin perustuvan toteutuksen, mene eteenpäin. Olen yksi ensimmäisistä käyttäjistä.

Lopulta toistin joitain asioita aikaisemmista murteista. Joko heidän suunnittelijansa ymmärsivät sen oikein, tai aiemmin käytettyjen murteiden vaikutuksesta en näe oikeaa vastausta - aika näyttää. Yritin myös olla eksymättä liian kauas Lisp-konventioneista. Mikä tarkoittaa, että jos huomaat siirtyvän pois Lisp-konventeista, siihen voi olla syy.

Jatkuu kielen kuvaus täällä.

Kiitos käännöksestä: Denis Mitropolsky

PS.

Lähde: will.com

Lisää kommentti