LISP er vakkert
- Friday, June 18th, 2010
- Skriv en kommentar
Jeg skulle egentlig lært meg F# for tiden, men språket Clojure distraherer meg. I går satte jeg meg ned og lærte meg det grunnleggende, og nå er det umulig å få sove!
Dermed skriver jeg denne lille “rant” for å forsøke å tømme hodet og komme meg til sengs igjen.
Clojure er en LISP. Lisp var et av de aller første programmeringsspråkene, spesifisert allerede i 1958, og er fortsatt i bruk i dag selv om det har endret seg endel opp gjennom årene.
Lisp var inspirert av Alonzo Church’s lambda calculus, og er dermed det språket alle de funksjonelle programmeringsspråkene (som for eksempel Haskell, OCaml/F# og Erlang) stammer fra. Det var også Lisp som innførte dynamisk typing, og alle de dynamiske språkene stammer således også fra Lisp.
Common Lisp og Scheme er de to mest populære Lisp-dialektene, mens Clojure er den nyeste. Clojure kjører på Java-plattformen, og en .Net-implementasjon er i en tidlig beta.
Så hva er det som er så distraherende med Clojure/Lisp?
For det første er det veldig anderledes enn alle andre språk jeg har vært borti. Det har helt klart paralleller til Erlang og F#, som jeg har jobbet litt med i år, men det er likevel svært ulikt dem også. Lisp-kode er data, en liste med instruksjoner og verdier, og denne listen kan manipuleres av programmet selv. Lisp er egentlig veldig enkelt – det har begrenset kompleksitet – men ut fra de enkle byggestenene kan man få til de mest utrolige ting.
Etterhvert som man klarer å flytte blikket bort fra alle parantesene, og begynner å skjønne hva som foregår, ser man hvor elegant Lisp er. Og man (dvs. nerds som meg) begynner å omtale det som estetisk og vakkert.
2 ; http://blog.kjempekjekt.com/2010/05/04/parallellisering-av-en-algoritme-i-erlang/
3 ;
4 (defn sum
5 “Sums multiples of 3 or 5 up to a limit”
6 [limit]
7 (def dividable-by
8 (fn [x n] (= (rem n x) 0)))
9 (def the-sum
10 (apply + (filter
11 (fn [n] (or
12 (dividable-by 3 n)
13 (dividable-by 5 n)))
14 (range 0 limit))))
15 (println “The sum up to” limit “is” the-sum))
16
17 ; Call the sum function
18 (sum 1000)
19 (sum 2000)
Jeg knytter forresten følelser til alle programmeringsspråk. Og assosierer dem med farger, musikk og andre ting knyttet til sinnsstemninger. Lisp/Clojure forbinder jeg nå med flytende, munter klassisk musikk. Lisp er noe strømlinjeformet og smidig, som en sportsbil med myke former. Lisp er rolig, avslappet, og har et smil på lur.
Time-out, time-out!!! Hva er det han holder på med nå da? Hvor kommer alt dette klissete new-age, flower-power tullet fra?
Slapp av, det har ikke rablet for meg. Men det er som sagt midt på natten, jeg skulle ha sovet, og da får jeg gjerne noen litt uvanlige perspektiver på ting. Jeg vet ikke hvor dette med følelser knyttet til programmeringsspråk kommer fra, eller hva som styrer det, men jeg vet at det påvirker meg. Det styrer hva jeg ønsker å jobbe med og studere nærmere, og hva jeg ikke vil drive med.
Kanskje påvirker det også humøret mitt mer enn jeg er klar over. Burde vi i større grad la følelsene knyttet til våre primære verktøy styre hvilke verktøy vi bruker.., kan det være instinktet vårt forsøker å fortelle oss noe som vi enda ikke klarer å artikulere?
Er det noen andre som har slike tanker?
Kategorier: Polyglot.
RSS feed for kommentarene.
Tilbaketråkk.



June 18th, 2010 at 8:53 am
Jeg vet nøyaktig hva du snakker om. Det er flere som har hatt slike søvnløse netter. Og Lisp er blått: http://xkcd.com/224/
June 19th, 2010 at 12:45 am
Jeg skrev en Scheme-implementasjon i Haskell en gang til langt på natt, og morgenen etter, i halvsøvne, hadde jeg denne hallusinasjonen: (Rablet ned få minutter etterpå.)
«And I imagined my soon-to-be-written scheme implementation as a great combine harvester in an ocean of impurity, and as I asked for my meal I could feel the effects of Haskell’s static typing cleansing their bodies away from me as the harvester ran over them, and in a flurry of parentheses, blood, bone, and abstract passion, only I, the functionally pure, as a linked list of monadic bodily and spiritual functions soon to be iterated and executed in parallel, the single great data structure of the world, would be impervious to the sharp blades of compile-time cleansing, and I would finally be left alone to study whatever abstract mathematical problem that crossed my path, in peace.»
June 19th, 2010 at 9:23 am
Wow, Ameth, du er jo en orntlig poet jo! Det må jeg si!