
Racket'e Dostça Bir Giriş: Lisp Ailesinin Modern Dili
geometridae.bearblog.dev blogunda Racket için dostça bir giriş yazısı yayımlandı: 1958'de doğan Lisp geleneğini sürdüren ve sonunda okuyucuya kendi sözdizimini yazdıran bir dil.
Programlamanın en eski ve en sıra dışı ailelerinden birinin — Lisp'in — modern temsilcisi Racket için hazırlanan dostça bir giriş yazısı geometridae.bearblog.dev blogunda yayımlandı. Yazarın vaadi basit: eğitimin sonunda okuyucu kendi sözdizimini yazmış olacak.
Lisp'ten Scheme'e ve Racket'e
Lisp 1958'de MIT'te John McCarthy tarafından yaratıldı. Hâlâ kullanılan en eski ikinci üst düzey dil; onu yalnızca Fortran (1957) bir yıl geçiyor. Python 1991'de, JavaScript ise 1995'te geldi.
Bugün modern saydığımız pek çok fikir Lisp'te doğdu: çöp toplama, birinci sınıf fonksiyonlar, REPL döngüsü, değer döndüren koşullu ifadeler ve homoikonisite — yani kodun kendisinin dilin bir veri yapısı olması. 1970'lerde ve 80'lerde Lisp doğrudan donanımda da çalışıyordu: Symbolics ve LMI'nin yaptığı Lisp makineleri. “Yapay zekâ kışı”ndan sonra finansman kurudu ve dil yıldız statüsünü kaybetti.
1975'te Gerald Sussman ve Guy Steele Scheme'i yarattı: minimalist, neredeyse matematiksel bir Lisp; klasik SICP kitabı onun üzerine yazıldı. 1995'te Matthias Felleisen'in grubu PLT Scheme'i geliştirdi; 2010'da adı Racket oldu. Bugün Racket bir Scheme'den çok daha fazlası: dil inşa etmek için bir dil ve resmî olmayan sloganı dil odaklı programlama.
Bugün Lisp'i kimler kullanıyor
Sanılandan çok daha fazla kişi. Clojure bankalarda, havayollarında ve girişimlerde üretimde çalışıyor; Latin Amerika'nın en büyük dijital bankası Nubank onun üzerine kurulu. SBCL derleyicisine sahip Common Lisp uzman sistemlerde, uçuş planlamasında (Google'ın satın aldığı ve Google Flights'ın temelini oluşturan ITA Software) hâlâ yaşıyor.
Milyonlarca insan her gün Lisp çalıştırıyor ve bunu fark etmiyor: editörleri Emacs bir Lisp yorumlayıcısı. GNU Guix, tamamen Scheme ile yapılandırılmış bir Linux dağıtımı. Racket'in yıllık konferansı RacketCon var; dil araştırmalarında, biçimsel doğrulamada (Rosette), tipografi ve yayıncılıkta (Pollen) kullanılıyor.
Kod nasıl görünüyor
Kurulum beş dakika sürüyor: racket-lang.org'dan bir kurulum dosyası ve beraberinde gelen DrRacket ortamı; üstte tanımlar, altta REPL. Dosyanın ilk satırı #lang racket — hangi dili kullanacağınızı seçer, çünkü Racket bir dil fabrikasıdır.
Lisp'in kuralı tek satıra sığar: her şey (operatör argüman1 argüman2…) biçimindedir, istisnasız. (+ 1 2) 3 döner, (* 3 (+ 2 2)) 12, (string-append "hello " "world") "hello world". Operatör önceliği ya da özel sözdizimi yok; define bir sabit ya da fonksiyon tanımlar, lambda ise isimsiz bir fonksiyon.
Lisp, “liste işleme” anlamına gelir: (first '(1 2 3)) 1 döner, (rest '(1 2 3)) (2 3), (cons 0 '(1 2 3)) (0 1 2 3). map, filter ve foldl ile liste problemlerinin çoğu tek bir for döngüsü yazmadan çözülür. Yineleme doğal üsluptur — faktöriyel, taban durumu ve ona doğru atılan adım görünecek biçimde yazılır — ve 2htdp/image kütüphanesiyle birkaç satır Sierpinski üçgeni çizmeye yeter.
Zirve makrolar: ' işareti kodu veriye çevirir, eval ise veriyi yeniden kod olarak çalıştırır. define-syntax-rule sayesinde eğitim, dilde olmayan bir while döngüsünü bile ekliyor. Alan Kay, Lisp'i “yazılımın Maxwell denklemleri” olarak adlandırdı: geri kalan her şeyin türetilebildiği küçük bir çekirdek.
SiTech — AI destekli web geliştirme
Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.