Bahasa dewasa dapat digunakan oleh sedikit orang. Tapi itu tetap menjadi bagian dari basis kode saya.
Sebagai pengguna lama (dan pendukung kuat) Scheme / Common Lisp / Racket, saya terkadang ditanya mengapa saya lebih suka mereka. Untungnya, saya selalu memimpin organisasi teknik saya sendiri, jadi saya tidak pernah harus membenarkan hal ini kepada manajemen. Namun, ada audiens yang lebih penting - rekan teknisi saya yang tidak pernah senang menggunakan bahasa-bahasa ini. Meskipun mereka tidak membutuhkan alasan, mereka masih bertanya karena keingintahuan intelektual, dan terkadang karena terkejut, mengapa saya tidak tergila-gila dengan fitur keren berikutnya yang akan ditambahkan bulan ini ke Python atau Scala, atau apa pun. Adalah tipenya. .
Lisp (Scheme, Common Lisp, Racket, Lisp-for-Erlang), : , S-, , , λ-.
BASIC ZX Spectrum+, () Fortran. , - . , . (Turbo Pascal DOS), , C Unix (Santa Cruz Operation Xenix!). , .
, ( IISc!) ( Haskell), . . , , , .
, . Standard-ML. . . , ( ).
( « » / « »). Scheme Lisp. , . 25 .
, . , ? ? ? . , , .
. :
, S-, , , λ-.
- .
, λ-
- . . , , . , («»), , λ-.
, "" . . -, : (, ). - , . "" .
- . , , ( , sqr). , λ- , , .
, , . , . , . , . ( ), . , , .
, λ-, « » . λ- , , .
- , , , , . Scheme ( , Racket - CS, , ). , λ-, - , . λ-, .
, , , - . , , , « », . Scheme ( Racket) , . , Scheme.
, ( TCO - tail call optimization), . , . JVM, , JVM . JVM TCO, , , , JVM, , TCO. , JVM. Clojure.
. Scheme/Racket - , λ-. , " " . , , , . , Scheme , , , , . , , , .
(Call-By-Value)
, λ-, , , . : Miranda, ( Haskell). , , . , λ-. , , .
, , « » . ( ), , , , , .
, - , . - , , , . , , . , , - , - .
, . , . , . , , ( ) - .
, , , , , "λ- ", .
Scheme thunk- , , call-by-need, . .
- . : , . , .
-, . , . . . , - , , , , (spurious) , .
, - , , . , , , ( ) .
, Scheme , « , » ( , ), .
, , . , , . Eugenio Moggi. , , , . .
, . , , . ( ): « ».
- , , . , «», , , , . , , , , . .
, . (« »), , . , .
, , , .
. TypeScript JavaScript. Python JavaScript . . , -, .
. « » C, C++, Java, Fortran, . , - . , , "".
, -, : . , . , , , . "".
: - , . - , . , . ( , ), -, ( ).
, , . . . , ( ). - . , - , ( ).
. . , , . , , ( ), . , , . , , .
. , , , , - . . , , , . , , , .
, . , , . , ( ) , , . .
( ) . , - . . ( ) , . . , , . , , .
, . , , , . , , - - - . , , - array[float]. , . array[float]?
, , . , , .
, , . , , , array[byte], , . Scheme/Lisp/Racket - , . Scheme , Racket Typed Racket, . Common Lisp , , , .
, , Scheme/Lisp/Racket , , . .
S-
, , , Lisp. , S-, . . - , (), , . «(…)», , , «()». .
, , , , else, . , , «(a + b)», «(+ a b)», , «(+ a b c)». «+» - , , .
«keywords», , . , S- .
. , , , .
: (spurious) . . . , , .
. , . ( , , , .. Racketeers) . , , .
, , , -, . , Scheme , . , . , ( ) .
, S-, , , λ-.
Scheme/Racket/Lisp , , . ? , . . . , - , -, , , ( Ruby, , , : ).
, . 15 SDK C/C ++, Lisp. Java , JVM Scheme/Lisp/Racket. .
, API (Java, Ruby, Python, JavaScript, - Go Rust), Scheme/Lisp/Racket, , C/C++. , API, , , . Racket ( ) , , , , . , , Clojure , .
, , . , , Lisp Lisp, .
, , . -, : . , . , C C++, , . production-quality , , , , .
Saya akui bahwa mempelajari Scheme / Lisp / Racket sedikit lebih sulit daripada belajar Python (tetapi jauh lebih mudah daripada belajar Java / JavaScript). Namun, jika Anda melakukan ini, Anda akan menjadi pemrogram yang jauh lebih baik dan belajar menghargai keindahan bahasa-bahasa ini dengan cara yang tidak cukup.
Anurag Mendhekar (Pengusaha Teknologi dan Seniman Perangkat Lunak)