Чӣ Лиспро махсус сохт

«Бузургтарин забони барномасозӣ, ки ҳамеша офарида шудааст«
- Алан Кей, "дар Лисп"

Чӣ Лиспро махсус сохт

Вақте ки МакКарти дар охири солҳои 1950-ум Лиспро таҳия кард, он аз забонҳои мавҷуда ба куллӣ фарқ мекард, ки муҳимтарини онҳо ин буд. Фортран.

Лисп нӯҳ идеяи навро пешниҳод кард:

1. Шартҳо. Изҳороти шартӣ конструксияҳои агар - пас дигар мебошанд. Ҳоло мо онҳоро ҳамчун як чизи муқаррарӣ қабул мекунем. Онҳо ҳастанд ихтироъ кардааст Маккарти дар давраи инкишофи Лисп. (Фортран дар он вақт танҳо изҳороти goto дошт, ки бо дастури филиал дар бораи сахтафзори асосӣ зич алоқаманд буд.) МакКарти, ҳангоми дар кумитаи Алгол буданаш, ба Алгол шартҳо гузоштааст ва аз он ҷо онҳо ба забонҳои дигар паҳн шудаанд.

2. Навъи функсия. Дар Lisp, функсияҳо объектҳои дараҷаи аввал мебошанд - онҳо як навъи додаҳо мебошанд, ба монанди рақамҳо, сатрҳо ва ғайра ва тасвири аслӣ доранд, метавонанд дар тағирёбандаҳо нигоҳ дошта шаванд, ҳамчун аргумент интиқол дода шаванд ва ғайра.

3. Рекурсия. Албатта, рекурсия ҳамчун консепсияи математикӣ пеш аз Lisp вуҷуд дошт, аммо Lisp аввалин забони барномасозӣ буд, ки онро дастгирӣ мекунад. (Ин шояд ҳангоми сохтани функсияҳо ҳамчун объектҳои дараҷаи аввал дар назар дошта шавад.)

4. Консепсияи нави тағирёбанда. Дар Lisp, ҳама тағирёбандаҳо нишондиҳандаҳои муассир мебошанд. Арзишҳо он навъҳо мебошанд, на тағирёбандаҳо ва таъин ё ҳатмӣ тағирёбандаҳо маънои нусхабардории нишондодҳоро доранд, на он чизе ки онҳо ба он ишора мекунанд.

5. Ҷамъоварии партовҳо.

6. Барномаҳое, ки аз ифодаҳо иборатанд. Барномаҳои Lisp дарахтони ифодаҳо мебошанд, ки ҳар кадоми онҳо арзишро бармегардонанд. (Баъзе ифодаҳои Lisp метавонанд арзишҳои сершумор баргардонанд.) Ин бо Fortran ва бисёр забонҳои муваффақ, ки байни "ифодаҳо" ва "изҳорот" фарқ мекунанд, муқоиса мекунад.

Табиист, ки ин тафовут дар Фортран вуҷуд дошт, зеро забон ба хат нигаронида шудааст (барои забоне, ки формати вурудаш перфокарта буд, тааҷҷубовар нест). Шумо наметавонед изҳороти лона дошта бошед. Ва то он даме, ки ба шумо барои кор ифодаҳои математикӣ лозим буд, маънои баргардонидани ягон чизи дигар вуҷуд надошт, зеро шояд чизе интизори баргардонидан вуҷуд надошта бошад.

Маҳдудиятҳо бо пайдоиши забонҳои блоки сохторӣ бардошта шуданд, аммо он вақт дер шуда буд. Фарқи байни ибораҳо ва изҳорот аллакай муқаррар карда шудааст. Он аз Фортран ба Алгол ва минбаъд ба авлоди онҳо гузашт.

Вақте ки забон комилан аз ибораҳо иборат аст, шумо метавонед ибораҳоро ба ҳар тарзе, ки мехоҳед, эҷод кунед. Шумо метавонед ё (бо истифода аз синтаксис Arc)

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

ё

(= x (if foo 1 2))

7. Навъи рамз. Аломатҳо аз сатрҳо фарқ мекунанд, дар ин ҳолат шумо метавонед баробариро бо муқоисаи нишонаҳо тафтиш кунед.

8. Нишон барои код бо истифода аз дарахтони рамзӣ.

9. Тамоми забон ҳамеша дастрас аст. Байни вақти хондан, вақти тартиб додан ва вақти иҷро фарқияти возеҳ вуҷуд надорад. Шумо метавонед ҳангоми хондан код тартиб диҳед ё иҷро кунед, ё ҳангоми хондан код хонед ё иҷро кунед, ё ҳангоми иҷро кардани код хондан ё тартиб додан.

Иҷрои код ҳангоми хондан ба корбарон имкон медиҳад, ки синтаксиси Lisp-ро аз нав барномарезӣ кунанд; Рамзи иҷрошаванда дар вақти компиляция асоси макросҳо мебошад; тартиб додани вақти корӣ асос барои истифодаи Lisp ҳамчун забони васеъ дар барномаҳо ба монанди Emacs мебошад; ва ниҳоят, хондани вақти корӣ ба барномаҳо имкон медиҳад, ки бо истифода аз ифодаҳои s, идеяе, ки ба наздикӣ дар XML дубора ихтироъ шуд, муошират кунанд.

хулоса

Вақте ки Lisp бори аввал ихтироъ карда шуд, ин ғояҳо аз таҷрибаҳои муқаррарии барномасозӣ, ки аз ҷониби сахтафзоре, ки дар охири солҳои 1950 дастрас буданд, хеле дур буданд.

Бо гузашти вақт, забони пешфарз, ки бо муваффақияти забонҳои маъмул таҷассум ёфтааст, тадриҷан ба Lisp табдил ёфт. Нуқтаҳои 1-5 ҳоло ба таври васеъ қабул карда мешаванд. Нуқтаи 6 дар ҷараёни асосӣ пайдо шуданро оғоз мекунад. Дар Python, банди 7 дар баъзе шакл мавҷуд аст, гарчанде ки синтаксиси мувофиқ вуҷуд надорад. Банди 8, ки (бо банди 9) макросҳоро дар Lisp имконпазир месозад, то ҳол танҳо дар Lisp мавҷуд аст, эҳтимол аз он сабаб (a) он қавсҳоро талаб мекунад ё чизи ба ҳамон андоза бад ва (б) агар шумо ин афзоиши охирини қудратро илова кунед, шумо метавонед дигар иддао намекунад, ки забони наве ихтироъ кардааст, балки танҳо барои таҳияи лаҳҷаи нави Лисп; -)

Гарчанде ки ин барои барномасозони муосир муфид аст, аммо тавсиф кардани Lisp аз нуқтаи назари фарқияти он аз усулҳои тасодуфии дар забонҳои дигар қабулшуда аҷиб аст. Шояд ин чизе нест, ки МакКарти фикр мекард. Lisp барои ислоҳи хатогиҳои Фортран пешбинӣ нашудааст; он бештар хамчун махсули иловагии кушиш пайдо шуд аксиоматизатсияи ҳисобҳо.

Манбаъ: will.com

Илова Эзоҳ