Það sem gerði Lisp sérstakan

«Mesta forritunarmál sem hefur verið búið til«
- Alan Kay, "á Lisp"

Það sem gerði Lisp sérstakan

Þegar McCarthy þróaði Lisp seint á fimmta áratugnum var það gjörólíkt núverandi tungumálum, það mikilvægasta var Fortran.

Lisp kynnti níu nýjar hugmyndir:

1. Skilyrði. Skilyrt yfirlýsingar eru ef-þá-annar byggingar. Nú tökum við þeim sem sjálfsögðum hlut. Þau voru fundið upp McCarthy við þróun Lisp. (Fortran hafði á þeim tíma aðeins goto yfirlýsingar, nátengdar leiðbeiningum útibús um undirliggjandi vélbúnað.) McCarthy, meðan hann var í Algol nefndinni, lagði skilyrt til Algol, þaðan sem þau dreifðust til annarra tungumála.

2. Gerð aðgerða. Í Lisp eru föll fyrsta flokks hlutir - þau eru gagnategund, rétt eins og tölur, strengir o.s.frv., og hafa bókstaflega framsetningu, hægt að geyma þær í breytum, hægt að senda þær sem rök o.s.frv.

3. Endurkoma. Endurkoma var auðvitað til sem stærðfræðilegt hugtak á undan Lisp, en Lisp var fyrsta forritunarmálið til að styðja það. (Þetta er kannski gefið í skyn við að búa til aðgerðir sem fyrsta flokks hluti.)

4. Ný hugmynd um breytur. Í Lisp eru allar breytur áhrifaríkar vísbendingar. Gildi eru það sem tegundir hafa, ekki breytur, og að úthluta eða binda breytur þýðir að afrita ábendingar, ekki það sem þeir benda á.

5. Sorphirða.

6. Forrit samsett úr tjáningum. Lisp forrit eru tjáningartré, sem hvert um sig skilar gildi. (Sumar Lisp tjáningar geta skilað mörgum gildum.) Þetta er andstætt Fortran og mörgum öðrum vel heppnuðum tungumálum sem gera greinarmun á „tjáningu“ og „yfirlýsingum“.

Það var eðlilegt að hafa þennan aðgreining í Fortran vegna þess að tungumálið var línumiðað (ekki á óvart fyrir tungumál þar sem innsláttarsniðið var gatakort). Þú gætir ekki haft hreiðra staðhæfingar. Og svo lengi sem þú þurftir stærðfræðilegar tjáningar til að virka, þá var ekkert mál að láta eitthvað annað skila gildi því það gæti ekki verið neitt sem bíður eftir að vera skilað.

Takmörkunum var aflétt með tilkomu blokkuppbyggðra tungumála, en þá var það of seint. Það er þegar búið að gera greinarmun á tjáningum og fullyrðingum. Það fór frá Fortran til Algol og lengra til afkomenda þeirra.

Þegar tungumál er eingöngu gert úr tjáningum geturðu samið orðasambönd eins og þú vilt. Þú getur skrifað annað hvort (með því að nota setningafræðina Arc)

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

eða

(= x (if foo 1 2))

7. Tákntegund. Stafir eru frábrugðnar strengjum, en þá er hægt að athuga hvort það sé jafnræði með því að bera saman ábendingar.

8. Merking fyrir kóða með því að nota tákntré.

9. Allt tungumálið er alltaf til staðar. Það er enginn augljós munur á lestíma, samantektartíma og keyrslutíma. Þú getur safnað saman eða keyrt kóða á meðan þú lest, eða lesið eða keyrt kóða meðan þú safnar saman, eða lesið eða safnað saman kóða á meðan hann keyrir.

Að keyra kóða við lestur gerir notendum kleift að endurforrita setningafræði Lisp; keyrandi kóði á samsetningartíma er grunnurinn fyrir fjölvi; runtime samantekt er grunnurinn að því að nota Lisp sem viðbót tungumál í forritum eins og Emacs; og að lokum, keyrslulestur gerir forritum kleift að hafa samskipti með s-tjáningu, hugmynd sem nýlega var fundin upp í XML.

Ályktun

Þegar Lisp var fyrst fundið upp voru þessar hugmyndir langt frá hefðbundnum forritunaraðferðum sem réðust af vélbúnaði sem var til staðar seint á fimmta áratugnum.

Með tímanum þróaðist sjálfgefið tungumál, sem felst í velgengni vinsælla tungumála, smám saman í átt að Lisp. Punktar 1-5 eru nú almennt samþykktir. 6. liður er farinn að birtast í meginstraumnum. Python hefur ákvæði 7 í einhverri mynd, þó að það sé engin hentug setningafræði. Liður 8, sem (með lið 9) gerir fjölvi mögulega í Lisp, er enn aðeins í Lisp, líklega vegna þess að (a) það krefst þessara sviga eða eitthvað jafn slæmt, og (b) ef þú bætir við þessari nýjustu aukningu í krafti, geturðu segist ekki lengur hafa fundið upp nýtt tungumál, heldur aðeins að hafa þróað nýja mállýsku af Lisp; -)

Þó að þetta sé gagnlegt fyrir nútíma forritara er undarlegt að lýsa Lisp með tilliti til munar hennar frá handahófskenndri tækni sem notuð er á öðrum tungumálum. Þetta var kannski ekki það sem McCarthy var að hugsa. Lisp var ekki hannað til að leiðrétta villur Fortran; það virtist meira sem aukaafurð af því að reyna axiomatize útreikninga.

Heimild: www.habr.com

Bæta við athugasemd