Unsa ang naghimo sa Lisp nga espesyal

«Ang pinakadako nga programming language nga nahimo sukad«
- Alan Kay, "sa Lisp"

Unsa ang naghimo sa Lisp nga espesyal

Sa dihang gipalambo ni McCarthy ang Lisp sa ulahing bahin sa 1950s, lahi kaayo kini sa kasamtangan nga mga pinulongan, ang labing importante niini mao ang Fortran.

Gipaila ni Lisp ang siyam ka bag-ong ideya:

1. Mga kondisyonal. Ang kondisyon nga mga pahayag kay kon-unya-lain nga mga konstruksyon. Karon atong gidawat sila alang sa gihatag. Sila mao naimbento McCarthy sa panahon sa pagpalambo sa Lisp. (Ang Fortran niadtong panahona aduna lang goto nga mga pahayag, suod nga gidugtong sa instruksiyon sa sanga bahin sa nagpahiping hardware.) Si McCarthy, samtang anaa sa komite sa Algol, miamot ug mga kondisyon sa Algol, diin sila mikaylap ngadto sa ubang mga pinulongan.

2. Usa ka matang sa function. Sa Lisp, ang mga gimbuhaton mao ang una nga klase nga mga butang - kini usa ka tipo sa datos, sama sa mga numero, mga kuwerdas, ug uban pa, ug adunay literal nga representasyon, mahimong tipigan sa mga variable, mahimong ipasa ingon mga argumento, ug uban pa.

3. Pagbalikbalik. Ang recursion, siyempre, naglungtad isip usa ka konsepto sa matematika sa wala pa ang Lisp, apan ang Lisp mao ang unang programming language nga nagsuporta niini. (Kini tingali gipasabot sa paghimo sa mga gimbuhaton isip mga butang nga una nga klase.)

4. Usa ka bag-ong konsepto sa mga variable. Sa Lisp, ang tanan nga mga variable epektibo nga mga punto. Ang mga kantidad kung unsa ang adunay mga tipo, dili mga variable, ug ang pag-assign o pagbugkos nga mga variable nagpasabut nga pagkopya sa mga punto, dili kung unsa ang ilang gipunting.

5. Pagkolekta sa basura.

6. Mga programa nga gilangkoban sa mga ekspresyon. Ang mga programa sa Lisp mga punoan sa mga ekspresyon, nga ang matag usa nagbalik sa usa ka kantidad. (Ang ubang Lisp nga mga ekspresyon mahimong makabalik og daghang mga kantidad.) Kini lahi sa Fortran ug sa daghang uban pang malampuson nga mga pinulongan nga nagpalahi tali sa "mga ekspresyon" ug "mga pahayag."

Natural lang nga makabaton niini nga kalainan sa Fortran tungod kay ang pinulongan kay line-oriented (dili ikatingala sa usa ka pinulongan kansang input format kay usa ka punched card). Wala kay nested nga mga pahayag. Ug basta kinahanglan nimo ang mga ekspresyon sa matematika aron molihok, wala’y kapuslanan nga adunay bisan unsang butang nga ibalik ang usa ka kantidad tungod kay wala’y bisan unsa nga naghulat nga ibalik.

Ang mga pagdili gitangtang sa pag-abut sa block-structured nga mga pinulongan, apan sa ulahi ulahi na kaayo. Ang kalainan tali sa mga ekspresyon ug mga pahayag naestablisar na. Miagi kini gikan sa Fortran ngadto sa Algol ug dugang pa ngadto sa ilang mga kaliwat.

Kung ang usa ka lengguwahe gihimo sa tibuuk nga mga ekspresyon, mahimo nimong isulat ang mga ekspresyon sa bisan unsang paagi nga gusto nimo. Mahimo nimong isulat ang bisan asa (gamit ang syntax Arc)

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

o

(= x (if foo 1 2))

7. Usa ka tipo sa simbolo. Ang mga karakter lahi sa mga kuwerdas, diin mahimo nimong susihon ang pagkaparehas pinaagi sa pagtandi sa mga punto.

8. Usa ka notasyon alang sa code gamit ang simbolo nga mga kahoy.

9. Ang tibuok pinulongan anaa kanunay. Wala’y klaro nga kalainan tali sa oras sa pagbasa, oras sa pag-compile ug oras sa pagdagan. Mahimo nimong i-compile o ipadagan ang code samtang nagbasa ka, o gibasa o gipadagan ang code samtang nag-compile ka, o gibasa o gi-compile ang code samtang nagdagan.

Ang pagpadagan sa code samtang nagbasa nagtugot sa mga tiggamit sa pag-reprogram sa syntax sa Lisp; Ang pagpadagan sa code sa oras sa pag-compile mao ang sukaranan sa mga macro; Ang runtime compilation mao ang basehan sa paggamit sa Lisp isip extension nga pinulongan sa mga programa sama sa Emacs; ug sa katapusan, ang pagbasa sa runtime nagtugot sa mga programa sa pagpakigsulti gamit ang s-expression, usa ka ideya nga bag-o lang gibag-o sa XML.

konklusyon

Sa unang pag-imbento sa Lisp, kini nga mga ideya layo kaayo sa naandan nga mga gawi sa pagprograma nga gidiktar sa hardware nga anaa sa ulahing bahin sa 1950s.

Sa paglabay sa panahon, ang default nga pinulongan, nga gilangkuban sa kalampusan sa popular nga mga pinulongan, anam-anam nga miuswag ngadto sa Lisp. Ang mga punto 1-5 kay gidawat na karon. Ang punto 6 nagsugod sa pagpakita sa mainstream. Sa Python, adunay usa ka clause 7 sa usa ka porma, bisan kung wala’y angay nga syntax. Ang aytem 8, nga (uban ang aytem 9) nagpaposible sa mga macro sa Lisp, naa ra sa Lisp, tingali tungod kay (a) nanginahanglan kini nga mga parentesis o usa ka butang nga parehas nga dili maayo, ug (b) kung imong idugang kini nga labing bag-o nga pagtaas sa gahum, mahimo nimo wala na mag-angkon nga nakaimbento ug bag-ong pinulongan, apan nakaugmad na lang ug bag-ong diyalekto sa Lisp; -)

Bisan tuod kini mapuslanon alang sa modernong mga programmer, talagsaon ang paghulagway sa Lisp sa mga termino sa kalainan niini gikan sa random nga mga teknik nga gisagop sa ubang mga pinulongan. Tingali dili kini ang gihunahuna ni McCarthy. Ang Lisp wala gidesinyo sa pagtul-id sa mga sayop ni Fortran; kini nagpakita nga labaw pa nga usa ka resulta sa pagsulay axiomatize kalkulasyon.

Source: www.habr.com

Idugang sa usa ka comment