Paul Graham teatas uuest programmeerimiskeelest Bel

Beli keel on kirjutatud beli keeles.

Paul Graham teatas uuest programmeerimiskeelest Bel
1960. aastal kirjeldas John McCarthy uut tüüpi programmeerimiskeelt Lisp. Ma ütlen "uus tüüp", sest Lisp polnud lihtsalt uus keel, vaid uus viis keelte kirjeldamiseks.

Lispi defineerimiseks alustas ta väikese väitekogumiga, omamoodi aksioomidega, mida ta seejärel kasutas keele enda tõlgi kirjutamiseks.

Selle eesmärk ei olnud kirjeldada programmeerimiskeelt selle tavapärases tähenduses – keelt, mida kasutatakse arvutile, mida teha. Tema 1960. aasta töös mõisteti Lispit kui Turingi masinaga sarnast arvutusmudelit. McCarthy ei mõelnud seda arvutites kasutada enne, kui tema magistrant Steve Russell seda soovitas.

Lispil 1960. aastal ei olnud programmeerimiskeeltele ühiseid funktsioone. Näiteks ei olnud numbreid, vigu ega I/O-d. Nii et inimesed, kes kasutasid Lispi arvutite programmeerimiseks kasutatavate keelte aluseks, pidid need funktsioonid ise lisama. Ja nad tegid seda, loobudes aksiomaatilisest lähenemisviisist.

Seega toimus Lispi arendus kahes – ja pealtnäha üsna iseseisvas – etapis: formaalne etapp, mida tutvustati 1960. aasta referaadis, ja juurutamise etapp, mille käigus keelt kohandati ja laiendati arvutites töötamiseks. Põhitöö, kui seda mõõdetakse rakendatud võimaluste arvuga, toimus juurutamisetapis. Lisp aastast 1960, tõlgitud keelde Common Lisp, sisaldab ainult 53 rida. Ta teeb ainult seda, mis on vajalik väljendite tõlgendamiseks. Kõik muu lisati juurutamisetapis.

Minu hüpotees on, et hoolimata oma raskest ajaloost sai Lisp kasuks asjaolu, et selle areng toimus kahes faasis; et algne keele määratlemise harjutus selle tõlgi sissekirjutamise teel andis Lispile tema parimad omadused. Ja kui nii, siis miks mitte minna kaugemale?

Ilus on katse vastata küsimusele: mis siis, kui selle asemel, et varakult formaalsest etapist elluviimise staadiumisse liikuda, tehtaks see üleminek võimalikult hilja? Kui jätkate aksiomaatilise lähenemise kasutamist, kuni teil on midagi täielikule programmeerimiskeelele lähedast, siis milliseid aksioome vajate ja milline näeb välja saadud keel?

Ma tahan selgeks teha, mis on Bel ja mis mitte. Kuigi sellel on palju rohkem funktsioone kui McCarthy 1960. aasta Lispil, on Bel siiski ametlikus faasis toode. Nagu Lisp, mida kirjeldati 1960. aasta artiklis, ei ole see keel, mida saate programmeerimiseks kasutada. Peamiselt seetõttu, et nagu McCarthy Lisp, ei hooli see efektiivsusest. Kui lisan midagi Belile, kirjeldan lisamise tähendust, püüdmata pakkuda tõhusat rakendamist.

Milleks? Miks pikendada ametlikku etappi? Üks vastus on näha, kuhu aksiomaatiline lähenemine meid viia võib, mis on omaette huvitav harjutus. Kui arvutid oleksid nii võimsad, nagu me tahaksime, siis millised näeksid keeled välja?

Kuid usun ka, et piiranguid lisades on võimalik kirjutada tõhus Bel-põhine teostus. Kui soovite keelt, millel on väljendusjõud, selgus ja tõhusus, tasub alustada väljendusjõu ja selgusega ning seejärel lisada piiranguid, mitte minna vastupidises suunas.

Nii et kui soovite proovida Beli põhjal teostust kirjutada, siis laske edasi. Olen üks esimesi kasutajaid.

Lõppkokkuvõttes reprodutseerisin mõned asjad eelmistest murretest. Kas said õigesti aru nende kujundajad või olles varem kasutatud murretest mõjutatud, ei näe ma õiget vastust – aeg näitab. Püüdsin ka Lispi tavadest mitte liiga kaugele kalduda. Mis tähendab, et kui näete Lispi konventsioonidest eemaldumist, võib sellel olla põhjus.

Keelekirjelduse jätkamine siin.

Täname tõlke eest: Denis Mitropolsky

PS

Allikas: www.habr.com

Lisa kommentaar