Dab tsi ua rau Lisp tshwj xeeb

Β«Cov lus programming zoo tshaj plaws puas tau tsimΒ«
- Alan Kay, "on Lisp"

Dab tsi ua rau Lisp tshwj xeeb

Thaum McCarthy tsim Lisp nyob rau xyoo 1950s, nws txawv ntawm cov lus uas twb muaj lawm, qhov tseem ceeb tshaj plaws yog Fortran.

Lisp tau nthuav tawm cuaj lub tswv yim tshiab:

1. Cov xwm txheej. Cov ntsiab lus hais txog yog tias-tom qab ntawd-lwm cov kev tsim kho. Tam sim no peb muab lawv rau kev tso cai. Lawv yog invented McCarthy thaum lub sij hawm kev loj hlob ntawm Lisp. (Fortran thaum lub sij hawm tsuas yog muaj cov nqe lus goto, sib txuas ua ke rau ib ceg lus qhia ntawm cov khoom siv hauv qab.) McCarthy, thaum nyob hauv pawg neeg Algol, tau pab txhawb rau Algol, los ntawm qhov chaw uas lawv kis mus rau lwm yam lus.

2. Ib hom kev ua haujlwm. Hauv Lisp, kev ua haujlwm yog thawj cov khoom hauv chav kawm - lawv yog hom ntaub ntawv, ib yam li cov lej, cov hlua, thiab lwm yam, thiab muaj cov lus sawv cev, tuaj yeem khaws cia hauv qhov sib txawv, tuaj yeem dhau los ua kev sib cav, thiab lwm yam.

3. Rov ua dua. Recursion, tau kawg, muaj nyob raws li lub tswv yim lej ua ntej Lisp, tab sis Lisp yog thawj hom lus los txhawb nws. (Qhov no yog tej zaum implied nyob rau hauv tsim functions raws li thawj-chav kawm khoom.)

4. Lub tswv yim tshiab ntawm kev hloov pauv. Hauv Lisp, txhua qhov sib txawv yog qhov taw qhia zoo. Cov txiaj ntsig yog yam twg muaj, tsis yog qhov sib txawv, thiab muab lossis khi qhov sib txawv txhais tau tias luam cov ntawv taw qhia, tsis yog qhov lawv taw qhia.

5. Cov khib nyiab.

6. Cov kev zov me nyuam muaj cov lus qhia. Lisp cov kev pab cuam yog cov ntoo ntawm cov kab lus, txhua qhov uas rov qab muaj nuj nqis. (Qee Lisp kab lus tuaj yeem rov qab tau ntau yam txiaj ntsig.) Qhov no sib piv nrog Fortran thiab ntau lwm yam lus zoo uas paub qhov txawv ntawm "cov lus" thiab "cov lus hais."

Nws yog ib qho tseem ceeb kom muaj qhov sib txawv hauv Fortran vim hais tias cov lus yog kab-oriented (tsis xav tsis thoob rau ib hom lus uas nws cov tswv yim yog ib daim npav punched). Koj tsis tuaj yeem muaj cov ntsiab lus nested. Thiab tsuav yog koj xav tau kev qhia lej los ua haujlwm, tsis muaj qhov taw tes uas yuav muaj lwm yam rov qab los ntawm tus nqi vim tias tej zaum yuav tsis muaj dab tsi tos rov qab.

Cov kev txwv tau raug tshem tawm nrog qhov tshwm sim ntawm cov lus thaiv cov qauv, tab sis los ntawm qhov ntawd nws lig dhau lawm. Qhov sib txawv ntawm cov lus thiab cov nqe lus tau raug tsim. Nws dhau los ntawm Fortran mus rau Algol thiab ntxiv mus rau lawv cov xeeb ntxwv.

Thaum ib hom lus tau ua tag nrho ntawm cov kab lus, koj tuaj yeem sau cov kab lus txhua yam koj xav tau. Koj tuaj yeem sau ib qho (siv cov syntax Arc)

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

los yog

(= x (if foo 1 2))

7. Ib hom cim. Cov cwj pwm txawv ntawm cov hlua, qhov twg koj tuaj yeem tshawb xyuas qhov sib npaug los ntawm kev sib piv cov taw tes.

8. Ib tug sau rau code siv cov ntoo cim.

9. Tag nrho cov lus yeej ib txwm muaj. Tsis muaj qhov sib txawv ntawm lub sijhawm nyeem ntawv, sau lub sijhawm thiab lub sijhawm ua haujlwm. Koj tuaj yeem sau lossis khiav code thaum koj nyeem, lossis nyeem lossis khiav code thaum koj sau, lossis nyeem lossis sau cov lej thaum nws khiav.

Khiav code thaum nyeem ntawv tso cai rau cov neeg siv rov ua dua Lisp's syntax; khiav code ntawm compile lub sij hawm yog lub hauv paus rau macros; runtime compilation yog lub hauv paus rau kev siv Lisp ua ib tug extension lus nyob rau hauv cov kev pab cuam xws li Emacs; thiab thaum kawg, runtime nyeem ntawv tso cai rau cov kev pab cuam sib txuas lus siv s-expressions, ib lub tswv yim tsis ntev los no reinvented hauv XML.

xaus

Thaum Lisp tau tsim thawj zaug, cov tswv yim no yog qhov deb deb ntawm cov txheej txheem kev coj ua uas tau hais los ntawm cov khoom siv muaj nyob rau xyoo 1950s.

Sij hawm dhau mus, cov lus ua ntej, embodied los ntawm kev vam meej ntawm cov lus nrov, maj mam hloov mus rau Lisp. Cov ntsiab lus 1-5 tam sim no tau txais dav. Point 6 tab tom pib tshwm hauv lub ntsiab. Python muaj kab lus 7 nyob rau hauv qee daim ntawv, txawm hais tias tsis muaj qhov tsim nyog syntax. Yam 8, uas (nrog rau yam 9) ua rau macros ua tau nyob rau hauv Lisp, tseem tsuas yog nyob rau hauv Lisp, tej zaum vim hais tias (a) nws yuav tsum tau cov kab lus no los yog ib yam dab tsi zoo sib xws, thiab (b) yog hais tias koj ntxiv qhov tseeb nce nyob rau hauv lub hwj chim, koj muaj peev xwm. tsis tau thov kom tau tsim ib hom lus tshiab, tab sis tsuas yog kom tau tsim ib hom lus tshiab ntawm Lisp; -)

Txawm hais tias qhov no yog qhov muaj txiaj ntsig zoo rau cov programmers niaj hnub no, nws yog qhov txawv txav los piav txog Lisp hais txog nws qhov sib txawv ntawm cov txheej txheem random tau txais ua lwm yam lus. Qhov no yuav tsis yog qhov McCarthy tau xav. Lisp tsis tau tsim los kho Fortran qhov yuam kev; nws tshwm sim ntau raws li ib tug by-product ntawm sim axiomatize kev suav.

Tau qhov twg los: www.hab.com

Ntxiv ib saib