Paulas Grahamas paskelbė apie naują programavimo kalbą Bel

Bel kalba parašyta Bel kalba.

Paulas Grahamas paskelbė apie naują programavimo kalbą Bel
1960 m. John McCarthy aprašė Lisp – naujo tipo programavimo kalbą. Sakau „naujas tipas“, nes Lisp buvo ne tik nauja kalba, bet ir naujas kalbų apibūdinimo būdas.

Norėdamas apibrėžti Lispą, jis pradėjo nuo nedidelio teiginių rinkinio, savotiškų aksiomų, kurias vėliau panaudojo rašydamas pačios kalbos vertėją.

Jame nebuvo siekiama apibūdinti programavimo kalbos įprasta prasme – kalba, kuria kompiuteriui nurodoma, ką daryti. Savo 1960 m. darbe Lispas buvo suprantamas kaip formalus skaičiavimo modelis, panašus į Tiuringo mašiną. McCarthy negalvojo apie jo naudojimą kompiuteriuose, kol jo absolventas Steve'as Russellas to nepasiūlė.

Lisp 1960 metais neturėjo programavimo kalboms būdingų savybių. Pavyzdžiui, nebuvo skaičių, klaidų ar įvesties / išvesties. Taigi žmonės, kurie naudojo Lisp kaip kompiuterių programavimo kalbų pagrindą, turėjo patys pridėti šias funkcijas. Ir jie tai padarė atsisakę aksiominio požiūrio.

Taigi „Lisp“ kūrimas vyko dviem ir, atrodo, gana nepriklausomais, etapais: formaliuoju etapu, pristatytu 1960 m. dokumente, ir įgyvendinimo etapu, kai kalba buvo pritaikyta ir išplėsta, kad ji veiktų kompiuteriuose. Pagrindinis darbas, matuojant įgyvendintų galimybių skaičiumi, vyko įgyvendinimo etape. Lisp nuo 1960 m., išverstas į Common Lisp, yra tik 53 eilutės. Ji daro tik tai, kas būtina posakiams interpretuoti. Visa kita buvo pridėta įgyvendinimo etape.

Mano hipotezė yra ta, kad, nepaisant sudėtingos istorijos, Lispas turėjo naudos iš to, kad jo vystymasis vyko dviem etapais; kad originalus kalbos apibrėžimo pratimas rašant jos vertėją suteikė Lispui geriausių savybių. Ir jei taip, kodėl gi ne toliau?

Belas yra bandymas atsakyti į klausimą: kas būtų, jei užuot perėjus iš formalios stadijos į vykdymo stadiją ankstyvoje stadijoje, šis perėjimas būtų atliktas kuo vėliau? Jei ir toliau naudosite aksiomatinį metodą, kol turėsite kažką panašaus į visą programavimo kalbą, kokių aksiomų jums reikės ir kaip atrodys gauta kalba?

Noriu aiškiai suprasti, kas yra Belas ir kas ne. Nors jis turi daug daugiau funkcijų nei McCarthy's 1960 Lisp, „Bel“ vis dar yra formalaus etapo produktas. Kaip ir Lisp, aprašyta 1960 m. straipsnyje, tai nėra kalba, kuria galite programuoti. Daugiausia todėl, kad, kaip ir McCarthy's Lisp, jai nerūpi efektyvumas. Kai ką nors pridedu prie Bel, apibūdinu papildymo prasmę, nesistengdamas pateikti efektyvaus įgyvendinimo.

Kam? Kam pratęsti formalų etapą? Vienas atsakymas – pamatyti, kur mus gali nuvesti aksiominis požiūris, o tai savaime yra įdomus pratimas. Jei kompiuteriai būtų tokie galingi, kokių norėtume, kaip atrodytų kalbos?

Tačiau aš taip pat tikiu, kad pridedant apribojimus galima parašyti efektyvų Bel pagrindu pagrįstą įgyvendinimą. Jei norite kalbos, turinčios išraiškingą galią, aiškumą ir efektyvumą, vertėtų pradėti nuo išraiškos galios ir aiškumo, o tada pridėti apribojimų, o ne eiti priešinga kryptimi.

Taigi, jei norite pabandyti parašyti įgyvendinimą pagal Bel, pirmyn. Būsiu vienas pirmųjų vartotojų.

Galiausiai kai kuriuos dalykus atgaminau iš ankstesnių tarmių. Arba jų dizaineriai teisingai suprato, arba veikiamas anksčiau vartotų tarmių, nematau teisingo atsakymo – laikas parodys. Taip pat stengiausi nenutolti nuo Lisp konvencijų. O tai reiškia, kad jei matote tolimą nuo Lisp konvencijų, tai gali būti priežastis.

Kalbos aprašymo tęsinys čia.

Ačiū už vertimą: Denis Mitropolsky

PS

Šaltinis: www.habr.com

Добавить комментарий