LISP er vakkert

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.

1 ; Clojure version of alorithm discussed in blog post
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.

3 kommentarer til “LISP er vakkert”

  1. Johannes Brodwall Says:

    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/

  2. Ameth Says:

    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.»

  3. Torbjørn Says:

    Wow, Ameth, du er jo en orntlig poet jo! Det må jeg si!

Skriv en kommentar

Tillatte tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Torbjørn: La oss anta to ulike definisjoner av Template Method pattern - de to ytterpunkte...

Lars-Petter: Hei igjen. Siden du inviterer til å ta diskusjonen i bloggen, og har tatt deg t...

Torbjørn: Lars-Petter: Det er én måte å se det på. Det er absolutt fortsatt Template M...

Lars-Petter: Hei. Har du ikke i prinsippet her gått over fra Template Method (arv) til Strat...

Christian Abildsø: I alle fall i C#, så føles dette som kode som blir mer fleksibel men vanskelig...

Torbjørn: Hei Henrik, og takk for tilbudet. Ble oppmerksom på Rasberry Pi for under en uk...

Henrik Sandaker Palm: Ang. større hobby prosjekt. Du er som er en slik rakker på programmering har j...

Øivind Nilsen: Slutt å bruke mobilnummeret mitt som eksempel !...

Bjørn Einar Bjartnes: Jeg har også latt meg fascinere av Clojure, uten at jeg har kommet så veldig l...

Bjørn Einar Bjartnes: Sweet :) Jeg tror egentlig jeg liker det som det er, med musikk. Litt av utford...

Mulig relaterte linker

 Hold deg oppdatert

Søk i bloggen

Ferske innlegg

  • Template Method del 4: Multippel arv
  • Template Method Intermesso
  • Template Method del 3: Bare funksjoner
  • Template Method del 2: På vei mot funksjonell programmering
  • Kategorier

  • .net ninja (37)
  • Bøker (17)
  • Diverse prosjekter (35)
  • DSL (10)
  • Erlang (10)
  • F# (5)
  • Hardware (1)
  • Jobb (77)
  • Julekalender (51)
  • kjempekjekt.com (23)
  • LISP/Clojure (33)
  • NNUG / community (60)
  • O/RM & databaser (10)
  • Off topic (116)
  • OO-design/clean code (30)
  • Podcasts (14)
  • Polyglot (77)
  • Ruby (27)
  • Silverlight / RIA (3)
  • Software/verktøy (20)
  • Softwareutvikling (20)
  • Testing / TDD (30)
  • the contiki strip (13)
  • User experience (3)
  • WCF (3)
  • Webutvikling (32)
  • WPF (9)
  • WTF (12)
  • Last ned Wallpaper

    Programmeringsbloggens tøffe skrivebordsbakgrunn med snippets fra ulike språk laster du ned her!

    Abonner via epost

    Om du vil kan du få alle nye blogposter tilsendt til din epost. Abonner nå, det er kjempeenkelt!

    Meta