Maxaa ka dhigay Lisp mid gaar ah

«Luuqadda barnaamijka ugu weyn ee abid la abuuray«
- Alan Kay, "on Lisp"

Maxaa ka dhigay Lisp mid gaar ah

Markii McCarthy uu sameeyay Lisp dabayaaqadii 1950-meeyadii, aad ayuu uga duwanaa luqadaha jiray, kuwaas oo ay ugu muhiimsanaayeen. Fortran.

Lisp wuxuu soo bandhigay sagaal fikradood oo cusub:

1. Shuruudaha. Odhaaho shuruudi waa haddii-ka dibna-kale dhismo. Hadda waxaynu u qaadanaynaa wax iska fudud. Ay ahaayeen hindisay McCarthy inta lagu guda jiro horumarinta Lisp. (Fortran waagaas kaliya waxay lahayd bayaanno goto ah, oo si dhow ula socday tilmaamaha laanta qalabka hoose.) McCarthy, intii uu ku jiray guddiga Algol, wuxuu ku darsaday shuruudo Algol, halkaasoo ay ku faafeen luqado kale.

2. Nooca shaqada. Gudaha Lisp, shaqadu waa shay heerka koowaad ah - waa nooca xogta, sida lambarada, xargaha, iwm., waxayna leeyihiin matalaad dhab ah, waxaa lagu kaydin karaa doorsoomayaal, waxaa loo gudbin karaa dood ahaan, iwm.

3. Soo noqnoqoshada. Dib-u-soo-noqoshada, dabcan, waxay u jirtay fikrad xisaabeed ka hor Lisp, laakiin Lisp waxay ahayd luqadda barnaamijka ugu horreysa ee taageerta. (Tani waxa laga yaabaa inay ka dhigan tahay abuurista hawlo sida walxaha heerka koowaad.)

4. Fikrad cusub oo doorsoomayaal ah. Lisp, dhammaan doorsoomayaashu waa tilmaame wax ku ool ah. Qiimuhu waa noocyada ay leeyihiin, ma aha doorsoomayaasha, iyo u-dejinta ama xidhidhiyaha doorsoomayaasha macnaheedu waa koobiyaynta tilmaamayaasha, ma aha waxa ay tilmaamayaan.

5. Ururinta qashinka.

6. Barnaamijyo ka kooban tibaaxo. Barnaamijyada lisp waa geedo tibaaxo, mid kasta oo ka mid ah wuxuu soo celiyaa qiime. (Qaar ka mid ah tibaaxaha Lisp waxay soo celin karaan qiyam kala duwan.) Tani waxay ka soo horjeedaa Fortran iyo luqado kale oo badan oo guuleysta kuwaas oo kala sooca "hadalada" iyo "odhaahyada."

Waxay ahayd wax dabiici ah in farqigan lagu yeesho Fortran sababtoo ah luqaddu waxay ahayd mid ku jihaysan khad (la yaab maaha luqadda qaabka wax gelinta ay tahay kaarka feeray). Ma aadan lahaan karin hadallo buul ah. Iyo inta aad u baahan tahay tibaaxo xisaabeed si aad u shaqeyso, ma jirto wax macno ah in wax kale ay soo celiyaan qiimaha sababtoo ah waxaa laga yaabaa inaysan jirin wax sugi doona in lagu soo celiyo.

Xayiraadaha ayaa la qaaday markii ay soo baxeen luuqado qaabaysan, laakiin wakhtigaas aad ayay u daahday. Farqiga u dhexeeya tibaaxaha iyo odhaahyada ayaa hore loo aasaasay. Waxay ka soo gudubtay Fortran ilaa Algol iyo in ka sii badan farcankoodii.

Marka luqad laga sameeyo tibaaxo, waxaad samayn kartaa tibaaxaha sidaad doonto. Midkoodna waad qori kartaa ( addoo isticmaalaya syntax arc)

(if foo (= x 1) (= x 2))

ama

(= x (if foo 1 2))

7. Nooca astaanta. Calaamaduhu way ka duwan yihiin xargaha, markaas waxaad hubin kartaa sinnaanta adigoo barbar dhigaya tilmaamayaasha.

8. Qoraal loogu talagalay koodka iyadoo la isticmaalayo geedo calaamad ah.

9. Luqada oo dhan mar walba waa la heli karaa. Ma jiro farqi muuqda oo u dhexeeya wakhtiga wax akhrinta, wakhtiga la ururiyo iyo wakhtiga socodsiinta. Waxaad ururin kartaa ama socodsiin kartaa koodka markaad akhrinayso, ama akhrin karto ama socodsiin karto code inta aad ururinayso, ama akhrinayso ama ururin karto code inta uu socdo.

Koodhka socodsiinta marka ay wax akhrinayaan waxay u ogolaataa isticmaalayaasha inay dib u habeeyaan qoraalka Lisp; koodhka socodsiinta wakhtiga la ururinayo waa saldhigga macros; Isku-dubarid runtime waa saldhigga isticmaalka Lisp luqadda fidinta barnaamijyada sida Emacs; iyo ugu dambeyntii, akhrinta runtime waxay u ogolaataa barnaamijyadu inay ku wada xiriiraan iyagoo isticmaalaya s-expressions, fikrad dhawaan dib loo soo celiyay XML.

gunaanad

Markii ugu horeysay ee Lisp la ikhtiraacay, fikradahani waxay ahaayeen kuwo aad uga fog dhaqamada barnaamijyada caadiga ah ee ay ku dhaqmaan qalabka la heli karo dabayaaqadii 1950-yadii.

Muddo ka dib, luqadda caadiga ah, oo ay ka mid tahay guusha afafka caanka ah, ayaa si tartiib tartiib ah u kobcay dhanka Lisp. Qodobbada 1-5 hadda waa la aqbalay. Barta 6 waxa ay bilaabeysaa in ay ka soo muuqato guud ahaan. Python dhexdeeda, waxa ku jira faqrad 7 qaab ahaan, in kasta oo aanu jirin hab ku habboon. Shayga 8, kaas oo (oo wata shayga 9) ka dhigaya macros suurto gal ah gudaha Lisp, ayaa wali ku jira Lisp oo keliya, malaha sababta oo ah (a) waxay u baahan tahay khaanadahaas ama shay la mid ah oo xun, iyo (b) haddii aad ku darto kororkan ugu dambeeyay ee awoodda, waad awoodaa. mar dambe ma sheegan inay abuureen luqad cusub, laakiin kaliya inay sameeyeen lahjad cusub oo Lisp ah; -)

Inkasta oo tani ay faa'iido u leedahay barnaamijyada casriga ah, waa wax la yaab leh in lagu qeexo Lisp marka la eego farqiga u ah farsamooyinka aan tooska ahayn ee lagu qaato luqadaha kale. Tani ma noqon karto waxa McCarthy uu ka fikirayay. Lisp looma qorshayn in lagu saxo khaladaadka Fortran; waxay u muuqatay wax badan oo ka soo baxay iskudayga axiomatize xisaabinta.

Source: www.habr.com

Add a comment