Վերադառնալ
Racket-ին ընկերական ծանոթություն. Lisp ընտանիքի ժամանակակից լեզուն
SiTech AI Team3 წთ. საკითხავი

Racket-ին ընկերական ծանոթություն. Lisp ընտանիքի ժամանակակից լեզուն

geometridae.bearblog.dev բլոգում հրապարակվել է Racket-ի ընկերական ուղեցույցը՝ լեզվի, որը շարունակում է 1958-ի Lisp ավանդույթը և թույլ է տալիս ընթերցողին գրել իր սեփական շարահյուսությունը։

Ծրագրավորման ամենահին ու ամենայուրահատուկ ընտանիքներից մեկի՝ Lisp-ի ժամանակակից ներկայացուցիչ Racket-ին նվիրված ընկերական ուղեցույց է հրապարակվել geometridae.bearblog.dev բլոգում։ Հեղինակի խոստումը պարզ է. տեքստի վերջում ընթերցողն արդեն գրում է իր սեփական շարահյուսությունը։

Lisp-ից Scheme և Racket

Lisp-ը 1958 թվականին ստեղծել է Ջոն Մաքարթին MIT-ում։ Սա երկրորդ ամենահին բարձր մակարդակի լեզուն է, որը դեռ օգտագործվում է. նրան մեկ տարով առաջ է անցնում միայն Fortran-ը (1957)։ Python-ը հայտնվել է 1991-ին, JavaScript-ը՝ 1995-ին։

Հենց Lisp-ում ծնվեցին այն գաղափարները, որոնք այսօր ժամանակակից են անվանում՝ աղբահավաքում, առաջին կարգի ֆունկցիաներ, REPL ցիկլը, արժեք վերադարձնող պայմանական արտահայտություններ 1970–80-ականներին Lisp-ը աշխատում էր նաև անմիջապես ապարատային մակարդակում՝ Symbolics-ի և LMI-ի Lisp-մեքենաներում։ «Արհեստական բանականության ձմեռից» հետո ֆինանսավորումը չորացավ, և լեզուն կորցրեց աստղային կարգավիճակը։

1975 թվականին Ջերալդ Սասմանն ու Գայ Սթիլը ստեղծեցին Scheme-ը՝ մինիմալիստական, գրեթե մաթեմատիկական Lisp, որի վրա գրված է դասական SICP գիրքը։ 1995-ին Մաթիաս Ֆելայզենի խումբը ստեղծեց PLT Scheme-ը, որը 2010 թվականին վերանվանվեց Racket։ Այսօր այն շատ ավելին է, քան Scheme-ը. սա լեզու է լեզուներ կառուցելու համար, իսկ նրա ոչ պաշտոնական կարգախոսը լեզվակենտրոն ծրագրավորումն է։

Ովքեր են այսօր օգտագործում Lisp-ը

Ավելի շատ մարդ, քան թվում է։ Clojure-ն աշխատում է բանկերում, ավիաընկերություններում և ստարտափներում. Լատինական Ամերիկայի ամենամեծ թվային բանկը՝ Nubank-ը, կառուցված է դրա վրա։ Common Lisp-ը (SBCL կոմպիլյատորով) դեռ կենդանի է փորձագիտական համակարգերում, թռիչքների պլանավորման մեջ (ITA Software, որը գնել է Google-ը և որի վրա հիմնված է Google Flights-ը)։

Միլիոնավոր մարդիկ ամեն օր օգտագործում են Lisp՝ առանց դա նկատելու. նրանց խմբագիր Emacs-ը Lisp-ինտերպրետատոր է։ GNU Guix-ը ամբողջ Linux տարածում է, որն ամբողջությամբ կարգավորված է Scheme-ով։ Racket-ն ունի ամենամյա RacketCon կոնֆերանսը և օգտագործվում է լեզուների ուսումնասիրության, ֆորմալ ստուգման (Rosette), տիպոգրաֆիայի ու հրատարակչության (Pollen) մեջ։

Ինչպիսի՞ն է կոդը

Տեղադրումը տևում է հինգ րոպե. ինստալյատոր racket-lang.org-ից և DrRacket միջավայրը՝ վերևում սահմանումների դաշտով, ներքևում՝ REPL-ով։ Ֆայլի առաջին տողը #lang racket է. այն ընտրում է լեզուն, որովհետև Racket-ը լեզուների գործարան է։

Lisp-ի կանոնը տեղավորվում է մեկ տողում. ամեն ինչ (օպերատոր արգումենտ1 արգումենտ2…) ձևի է,։ (+ 1 2)-ը վերադարձնում է 3, (* 3 (+ 2 2))-ը՝ 12, (string-append "hello " "world")-ը՝ «hello world»։ Չկան օպերատորների առաջնահերթություններ կամ հատուկ շարահյուսություն. define-ը ստեղծում է հաստատուն կամ ֆունկցիա, lambda՝ անանուն ֆունկցիա։

Lisp նշանակում է ցուցակների մշակում. (first '(1 2 3))-ը վերադարձնում է 1, (rest '(1 2 3))-ը՝ (2 3), (cons 0 '(1 2 3))-ը՝ (0 1 2 3)։ map-ը, filter-ը և foldl-ը ցուցակային խնդիրների մեծ մասը լուծում են առանց մեկ for ցիկլ գրելու։ Ռեկուրսիան բնական ոճն է. ֆակտորիալը գրվում է այնպես, որ հիմքի դեպքը և դրա ուղղությամբ քայլը երևան։

Եզրափակիչը մակրոներն են. ' նշանը կոդը վերածում է տվյալների, իսկ eval-ը տվյալները կրկին կատարում է որպես կոդ։ define-syntax-rule-ի շնորհիվ ուղեցույցը լեզվին ավելացնում է նույնիսկ while ցիկլ, որը դրանում չկա։ Ալան Քեյը Lisp-ը կոչել է «ծրագրային ապահովման Մաքսվելի հավասարումներ»՝ փոքրիկ միջուկ, որից դուրս է գալիս մնացած ամեն ինչ։

SSiTech

SiTech — AI-ով հզորացված վեբ մշակում

Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։