Inihayag ni Paul Graham ang isang bagong programming language na Bel

Ang wikang Bel ay nakasulat sa wikang Bel.

Inihayag ni Paul Graham ang isang bagong programming language na Bel
Noong 1960, inilarawan ni John McCarthy ang Lisp, isang bagong uri ng programming language. Sinasabi ko ang "bagong uri" dahil ang Lisp ay hindi lamang isang bagong wika, ngunit isang bagong paraan ng paglalarawan ng mga wika.

Upang tukuyin ang Lisp, nagsimula siya sa isang maliit na hanay ng mga pahayag, isang uri ng mga axiom, na pagkatapos ay ginamit niya upang magsulat ng isang interpreter para sa wika mismo.

Hindi nito itinakda na ilarawan ang isang programming language sa karaniwang kahulugan - isang wikang ginagamit upang sabihin sa isang computer kung ano ang gagawin. Sa kanyang trabaho noong 1960, ang Lisp ay naunawaan bilang isang pormal na modelo ng pagtutuos na katulad ng Turing Machine. Hindi naisip ni McCarthy ang paggamit nito sa mga computer hanggang sa iminungkahi ito ni Steve Russell, ang kanyang nagtapos na estudyante.

Ang Lisp noong 1960 ay walang mga tampok na karaniwan sa mga programming language. Halimbawa, walang mga numero, error o I/O. Kaya ang mga taong gumamit ng Lisp bilang batayan para sa mga wikang ginagamit sa pagprograma ng mga computer ay kailangang magdagdag ng mga tampok na ito sa kanilang sarili. At ginawa nila ito sa pamamagitan ng pag-abandona sa axiomatic approach.

Kaya, ang pag-unlad ng Lisp ay nagpatuloy sa dalawa - at tila medyo independyente - mga yugto: isang pormal na yugto, na ipinakilala sa isang 1960 na papel, at isang yugto ng pagpapatupad, kung saan ang wika ay inangkop at pinalawak upang tumakbo sa mga computer. Ang pangunahing gawain, kung sinusukat ng bilang ng mga ipinatupad na pagkakataon, ay naganap sa yugto ng pagpapatupad. Lisp mula 1960, isinalin sa Common Lisp, ay naglalaman lamang ng 53 linya. Ginagawa lamang nito kung ano ang kinakailangan upang bigyang-kahulugan ang mga expression. Lahat ng iba pa ay idinagdag sa yugto ng pagpapatupad.

Ang hypothesis ko ay, sa kabila ng mahirap na kasaysayan nito, nakinabang si Lisp sa katotohanan na ang pag-unlad nito ay naganap sa dalawang yugto; na ang orihinal na pagsasanay ng pagtukoy ng isang wika sa pamamagitan ng pagsulat ng interpreter nito ay nagbigay ng Lisp ng mga pinakamahusay na katangian nito. At kung gayon, bakit hindi pumunta pa?

Bel ay isang pagtatangka na sagutin ang tanong: paano kung, sa halip na lumipat mula sa pormal na yugto patungo sa yugto ng pagpapatupad sa isang maagang yugto, ang paglipat na ito ay ginawa nang huli hangga't maaari? Kung patuloy mong gagamitin ang axiomatic approach hanggang sa magkaroon ka ng isang bagay na malapit sa isang kumpletong programming language, anong mga axiom ang kakailanganin mo, at ano ang magiging hitsura ng resultang wika?

Gusto kong maging malinaw kung ano ang Bel at kung ano ito. Bagama't mayroon itong mas maraming mga tampok kaysa sa 1960 Lisp ng McCarthy, ang Bel ay isang produkto pa rin sa pormal na yugto nito. Tulad ng Lisp, na inilarawan sa isang 1960 na papel, ito ay hindi isang wika na magagamit mo sa programa. Pangunahin dahil, tulad ng McCarthy's Lisp, wala itong pakialam sa kahusayan. Kapag nagdagdag ako ng isang bagay kay Bel, inilalarawan ko ang kahulugan ng karagdagan nang hindi sinusubukang magbigay ng mahusay na pagpapatupad.

Para saan? Bakit pahabain ang pormal na yugto? Ang isang sagot ay upang makita kung saan tayo maaaring dalhin ng axiomatic approach, na isang kawili-wiling ehersisyo sa sarili nito. Kung ang mga computer ay kasing lakas ng gusto natin, ano ang hitsura ng mga wika?

Ngunit naniniwala din ako na posibleng magsulat ng mahusay na pagpapatupad na batay sa Bel sa pamamagitan ng pagdaragdag ng mga paghihigpit. Kung gusto mo ng wikang may nagpapahayag na kapangyarihan, kalinawan, at kahusayan, maaaring sulit na magsimula sa nagpapahayag na kapangyarihan at kalinawan, at pagkatapos ay magdagdag ng mga paghihigpit, sa halip na pumunta sa kabilang direksyon.

Kaya kung gusto mong subukang magsulat ng pagpapatupad batay kay Bel, sige. Ako ay magiging isa sa mga unang gumagamit.

Sa huli, nag-reproduce ako ng ilang bagay mula sa mga naunang dialect. Alinman sa kanilang mga taga-disenyo ay nakuha ito nang tama, o naimpluwensyahan ng mga dating ginamit na diyalekto, hindi ko makita ang tamang sagot - sasabihin ng oras. Sinubukan ko ring huwag masyadong lumayo sa Lisp convention. Ibig sabihin, kung makakita ka ng paglayo sa mga Lisp convention, maaaring may dahilan ito.

Ang patuloy na paglalarawan ng wika dito.

Salamat sa pagsasalin: Denis Mitropolsky

PS

Pinagmulan: www.habr.com

Magdagdag ng komento