Keel Bel on kirjutatud keeles Bel.

1960. aastal kirjeldas John McCarthy Lisp'i â uut tĂŒĂŒpi programmeerimiskeelt. Ma ĂŒtlen "uus tĂŒĂŒp", kuna Lisp ei olnud mitte lihtsalt uus keel, vaid uus viis keelte kirjeldamiseks.
Lisp'i mÀÀratlemiseks alustas ta vÀhese operaatorite kogumiga, omamoodi aksioomidega, mida ta seejÀrel kasutas, et kirjutada tÔlgendaja keele enda jaoks.
Ta ei pĂŒĂŒdnud kirjeldada programmeerimiskeelt tavapĂ€rases mĂ”ttes â keelt, mida kasutatakse, et anda arvutile korraldusi. Tema 1960. aasta töös mĂ”isteti Lisp formaalse arvutusmudelina, mis sarnanes Turingi masinaga. McCarthy ei kaalunud selle kasutamist arvutites, kuni Steve Russell, tema lĂ”petaja, seda ette pani.
1960. aasta Lisp'is ei olnud funktsioone, mis olid tavalised programmeerimiskeeltes. NÀiteks puudusid seal numbrid, vead vÔi sisend/vÀljund. SeetÔttu pidid inimesed, kes kasutasid Lisp'i aluseks programmeerimiskeeltes, need funktsioonid ise lisama. Ja nad tegid seda loobudes aksioomilisest lÀhenemisest.
Seega arenes Lisp kahel â ja nĂ€iliselt ĂŒsna sĂ”ltumatul â etapil: formaalne etapp, mille esitas 1960. aasta töö, ja rakendusetapp, kus keel kohandati ja laiendati arvutites kĂ€itamiseks. Peamine töö, kui mÔÔta realiseeritud vĂ”imaluste arvu, kĂ€idi rakendusetapis. 1960. aasta Lisp, mis tĂ”lgiti Common Lispi, sisaldab vaid 53 rida. See teeb ainult seda, mis on vajalik vĂ€ljendite tĂ”lgendamiseks. KĂ”ik muu lisati rakendusetapis.
Minu hĂŒpotees on, et hoolimata raskest ajaloost kasutas Lisp seda, et selle areng toimus kahes faasis; esialgne harjutus keele mÀÀratlemiseks selle tĂ”lgendaja kirjutamise kaudu andis Lispile parimad omadused. Ja kui see nii on, miks mitte edasi liikuda?
Bel â see on katse vastata kĂŒsimusele: mida, kui asemel formaalsest etapist teostamise etapile ĂŒlemineku varases faasis, teha seda ĂŒleminekut vĂ”imalikult hilja? Kui jĂ€tkate aksioomide lĂ€henemise kasutamist, kuni teil on midagi, mis lĂ€heneb lĂ”petatud programmeerimiskeelele, milliseid aksioome te vajate ja kuidas nĂ€eb see lĂ”pptulemus vĂ€lja?
Soovin selgitada, mis on Bel ja mida ta ei ole. Kuigi tal on palju rohkem vĂ”imalusi kui 1960. aasta McCarthy Lispil, on Bel siiski toode formaalses faasis. Nagu ka 1960. aasta töös kirjeldatud Lisp, ei ole see keel, mida saab kasutada programmeerimiseks. Peamine pĂ”hjus on see, et nagu McCarthy Lisp, ei hooli see efektiivsusest. Kui ma lisan midagi Beli, kirjeldan ma selle lisamise tĂ€hendust, pĂŒĂŒdmata pakkuda efektiivset teostust.
Mille vĂ”rdlemiseks? Miks pikendada formaalset etappi? Ăks vastus on see, et nĂ€ha, kuhu vĂ”ib aksioomiline lĂ€henemine meid viia, mis on iseenesest huvitav harjutus. Kui arvutid oleksid sama vĂ”imsad kui me sooviksime â millised oleksid keeled siis?
Kuid ma usun ka, et on vÔimalik kirjutada efektiivne rakendus, mis pÔhineb Bel'ist, lisades piiranguid. Kui teil on vajalik keel, millel on vÀljenduslik jÔud, selgus ja efektiivsus, vÔib-olla tuleks alustada vÀljenduslikust jÔust ja selgusest ning seejÀrel lisada piiranguid, mitte liikuda vastupidises suunas.
Nii et kui soovite proovida kirjutada Bel'ist lĂ€htuvat rakendust â palun. Olen ĂŒks esimesi kasutajaid.
LĂ”ppkokkuvĂ”ttes olen kopeerinud mĂ”ned asjad eelmistest dialektidest. Kas nende disainerid tegid kĂ”ik Ă”igesti vĂ”i, olles mĂ”jutatud varasemalt kasutatud dialektidest, ei nĂ€e ma Ă”iget vastust â aeg nĂ€itab. Olen samuti pĂŒĂŒdnud mitte liiga kaugele liikuda Lispis vastuvĂ”etud kokkulepetest. Mis tĂ€hendab, et kui nĂ€ete hĂ€lvet Lispist, oli selleks ilmselt oma pĂ”hjus.
.
TÔlke eest tÀnu: Denis Mitropolsky
P.S.
Allikas: habr.com
