
Racket-ə dostyana giriş: Lisp ailəsinin müasir dili
geometridae.bearblog.dev bloqunda Racket üçün dostyana təlimat dərc olunub: 1958-ci ildə yaranan Lisp ənənəsini davam etdirən və oxucuya öz sintaksisini yazmağa imkan verən dil.
Proqramlaşdırmanın ən qədim və ən özünəməxsus ailələrindən birinin — Lisp-in — müasir təmsilçisi Racket üçün hazırlanmış dostyana giriş məqaləsi geometridae.bearblog.dev bloqunda dərc olunub. Müəllifin vədi sadədir: mətnin sonunda oxucu artıq öz sintaksisini yazır.
Lisp-dən Scheme və Racket-ə
Lisp 1958-ci ildə MIT-də Con Makkarti tərəfindən yaradılıb. Bu, hələ də istifadə olunan ən qədim ikinci yüksək səviyyəli dildir; onu cəmi bir il qabaqlayan Fortran (1957) var. Python 1991-ci ildə, JavaScript isə 1995-ci ildə meydana çıxdı.
Bu gün müasir saydığımız bir çox ideya məhz Lisp-də doğuldu: zibil toplayıcı, birinci dərəcəli funksiyalar, REPL dövrü, dəyər qaytaran şərti ifadələr və homoykoniklik — kodun özünün dilin məlumat strukturu olması. 1970–80-ci illərdə Lisp birbaşa aparat üzərində də işləyirdi: Symbolics və LMI-nin Lisp maşınları. “Süni intellekt qışı”ndan sonra maliyyələşdirmə qurudu və dil ulduz statusunu itirdi.
1975-ci ildə Cerald Sassman və Qay Stil Scheme-i yaratdılar: minimalist, demək olar riyazi Lisp; klassik SICP kitabı da onun üzərində yazılıb. 1995-ci ildə Mattias Felleysenin qrupu PLT Scheme-i yaratdı və 2010-cu ildə onun adı Racket oldu. Bu gün Racket Scheme-dən qat-qat çoxdur: dil qurmaq üçün dildir və qeyri-rəsmi şüarı dilə yönəlmiş proqramlaşdırmadır.
Bu gün Lisp-i kimlər istifadə edir
Clojure banklarda, aviaşirkətlərdə və startaplarda istehsalatda işləyir; Latın Amerikasının ən böyük rəqəmsal bankı Nubank onun üzərində qurulub. SBCL kompilyatoru olan Common Lisp hələ də ekspert sistemlərində, uçuş planlamasında (Google-ın aldığı və Google Flights-ın əsasını təşkil edən ITA Software) yaşayır.
Milyonlarla insan hər gün Lisp işlədir və bunu hiss etmir: onların redaktoru Emacs bir Lisp interpretatorudur. GNU Guix tamamilə Scheme ilə konfiqurasiya edilmiş Linux distributividir. Racket-in hər il keçirilən RacketCon konfransı var; dil dil araşdırmalarında, formal verifikasiyada (Rosette), tipoqrafiya və nəşriyyatda (Pollen) istifadə olunur.
Kod necə görünür
Quraşdırma beş dəqiqə çəkir: racket-lang.org-dan quraşdırıcı və DrRacket mühiti — yuxarıda təyinatlar, aşağıda REPL. Faylın ilk sətri #lang racket-dir: hansı dildən istifadə edəcəyinizi seçir, çünki Racket bir dil fabrikasıdır.
Lisp-in qaydası bir sətrə sığır: hər şey (operator arqument1 arqument2…) formasındadır, istisnasız. (+ 1 2) 3 qaytarır, (* 3 (+ 2 2)) 12, (string-append "hello " "world") isə "hello world". Operator prioriteti və xüsusi sintaksis yoxdur; define sabit və ya funksiya yaradır, lambda isə adsız funksiya.
Lisp “siyahıların emalı” deməkdir: (first '(1 2 3)) 1 qaytarır, (rest '(1 2 3)) (2 3), (cons 0 '(1 2 3)) (0 1 2 3). map, filter və foldl ilə siyahı məsələlərinin çoxu bir dənə for dövrü yazmadan həll olunur. Rekursiya təbii üslubdur — faktorial elə yazılır ki, baza halı və ona doğru addım görünsün.
Zirvə makrolardır: ' işarəsi kodu məlumata çevirir, eval isə məlumatı yenidən kod kimi icra edir. define-syntax-rule sayəsində təlimat dilə olmayan bir while dövrünü belə əlavə edir. Alan Key Lisp-i “proqram təminatının Maksvell tənlikləri” adlandırıb: qalan hər şeyin çıxarıldığı kiçik bir nüvə.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.