Paul Graham kundige in nije programmeartaal Bel oan

De Bel-taal is skreaun yn de Bel-taal.

Paul Graham kundige in nije programmeartaal Bel oan
Yn 1960 beskreau John McCarthy Lisp, in nij soarte fan programmeartaal. Ik sis "nij type" om't Lisp net allinnich in nije taal wie, mar in nije manier om talen te beskriuwen.

Om Lisp te definiearjen begûn er mei in lytse set útspraken, in soarte fan axioma's, dy't er doe brûkte om in tolk foar de taal sels te skriuwen.

It wie net bedoeld om in programmeartaal yn 'e gewoane sin te beskriuwen - in taal dy't brûkt wurdt om in kompjûter te fertellen wat te dwaan. Yn syn wurk fan 1960 waard Lisp begrepen as in formeel model fan berekkening besibbe oan de Turing Machine. McCarthy tocht der net oan om it op kompjûters te brûken oant Steve Russell, syn ôfstudearre studint, it suggerearre.

Lisp hie yn 1960 net de funksjes dy't mienskiplik binne foar programmeartalen. Bygelyks, der wiene gjin nûmers, flaters of I / O. Dat minsken dy't Lisp brûkten as basis foar de talen dy't brûkt waarden om kompjûters te programmearjen, moasten dizze funksjes sels tafoegje. En dat diene se troch de axiomatyske oanpak te ferlitten.

Sa gie de ûntjouwing fan Lisp yn twa - en blykber frij selsstannige - stadia: in formele etappe, yntrodusearre yn in krante út 1960, en in ymplemintaasjefaze, wêryn't de taal oanpast en útwreide waard om op kompjûters te draaien. It haadwurk, as mjitten troch it oantal ymplementearre kânsen, fûn plak yn 'e útfieringsstadium. Lisp út 1960, oerset yn Common Lisp, befettet mar 53 rigels. It docht allinich wat nedich is om de útdrukkingen te ynterpretearjen. Al it oare waard tafoege yn 'e útfieringsstadium.

Myn hypoteze is dat Lisp, nettsjinsteande syn drege skiednis, profitearre hat fan it feit dat syn ûntwikkeling yn twa fazen barde; dat de oarspronklike oefening fan it definiearjen fan in taal troch it skriuwen fan syn tolk yn Lisp joech Lisp syn bêste kwaliteiten. En sa ja, wêrom dan net fierder gean?

Bel is in besykjen om de fraach te beantwurdzjen: wat as dy oergong sa let mooglik makke waard yn stee fan yn in betiid stadium fan it formele stadium nei it útfieringsstadium te gean? As jo ​​​​trochgean mei it brûken fan 'e aksiomatyske oanpak oant jo wat hawwe tichtby in folsleine programmeartaal, hokker axioma's sille jo nedich wêze, en hoe sil de resultearjende taal der útsjen?

Ik wol dúdlik wêze oer wat Bel is en wat it net is. Hoewol't it hat folle mear funksjes as McCarthy syn 1960 Lisp, Bel is noch altyd in produkt yn syn formele faze. Lykas Lisp, beskreaun yn in papier út 1960, is it gjin taal dy't jo brûke kinne om te programmearjen. Benammen om't, lykas McCarthy's Lisp, it net skele oer effisjinsje. As ik wat tafoegje oan Bel, beskriuw ik de betsjutting fan 'e tafoeging sûnder te besykjen om in effisjinte ymplemintaasje te leverjen.

Foar wat? Wêrom ferlingje de formele poadium? Ien antwurd is om te sjen wêr't de axiomatyske oanpak ús kin nimme, wat op himsels in nijsgjirrige oefening is. As kompjûters sa machtich wiene as wy se wolle, hoe soene talen der dan útsjen?

Mar ik leau ek dat it mooglik is om te skriuwen in effisjinte Bel-basearre ymplemintaasje troch it tafoegjen fan beheiningen. As jo ​​in taal wolle dy't ekspressive krêft, dúdlikens en effisjinsje hat, kin it de muoite wurdich wêze om te begjinnen mei ekspressive krêft en dúdlikens, en dan beheiningen ta te foegjen, ynstee fan yn 'e tsjinoerstelde rjochting te gean.

Dus as jo wolle besykje in ymplemintaasje te skriuwen basearre op Bel, gean dan fierder. Ik sil ien fan 'e earste brûkers wêze.

Uteinlik haw ik wat dingen út eardere dialekten werjûn. Of har ûntwerpers hawwe it goed krigen, of wurde beynfloede troch earder brûkte dialekten, ik sjoch it goede antwurd net - de tiid sil it leare. Ik besocht ek net te fier fan Lisp-konvinsjes ôf te gean. Wat betsjut dat as jo sjogge in ferhuzing fuort fan Lisp konvinsjes, der kin in reden foar it.

Trochgean beskriuwing fan de taal hjir.

Tank foar de oersetting: Denis Mitropolsky

PS

Boarne: www.habr.com

Add a comment