Lyonin vaihto on päättynyt, mutta blogi jatkuu aina vaan.

keskiviikko 13. tammikuuta 2010

Lisp on kuollut, eläköön Lisp!

Tietokoneaiheinen artikkeli. Jos aristaa, jätä väliin.

Aina välillä sitä törmää sellaisiin asioihin, joiden luulee jotka pitkän aikaa takaperin ekspiroituneen ja poistuneen tästä maailmasta. Yksi näistä on Mel Culbertson joka luojan kiitos on vielä maailmassa (ja tulee muuten huomenna taas töihin) ja toinen on Lisp- ohjelmointikieli. Lisp on julkaistu 1958 eli samana vuonna kuin Mitro Repo ja Michael Jackson- samana vuonna kun Kekkonen piti ensimmäisen uudenvuoden puheensa televisiossa, Nikita Hrutsevista tuli Neuvostoliiton pääsihteeri ja säännöllinen lentomatkailu Atlantin yli aloitettiin. Reikäkorteista oli jo luovuttu 8 -tuumaisten levykkeiden hyväski. Niinsanotut lerput eli 5.25 tuuman levykkeet muuten tulivat vasta 1974. Tietokoneiden näyttöinä käytettiin kiviä heitteleviä pikkukiinalaisia. Että näin vanha kieli on Lisp.

Lisp on siis ohjelmointikielien Emacs. Lisp ei oikeastaan ole yhtään mitään- se on symbolinen ohjelmakieli joka käyttäjän täytyy ensin itse kirjoittaa ennen kuin sitä voi käyttää- ja käytettävyydeltän Lispin kääntäjän jälkeen Brainfuck tuntuu html- koodin kirjoittamiselta. Perimätiedon mukaan Jumala kirjoitti maailman Lispillä.

No, jostain syystä BSTN-kurssilla tuhatkaunon oli taas korvannut lihava setä joka tällä kertaa opetti lispin käyttöä. Itselle ohjelmointi on ehkä niukin naukin tuttua- saatan hätätilanteesssa kirjoittaa jokusen simppelin unix-scriptin tai todellisessa tarpeessa PHP:tä. Tiedän suunnilleen miten ohjelmointikielet toimii. Paitsi Lisp.

Lispissä ei ole mitään nykyisten ohjelmointikielten turhuuksia (kuten if-then-else- rakenteita tai järkevä syntaksia (no syntaksia ylipäätään(ei varmasti löydy (sen sijaan sulkeita on tarpeeksi, (ja syntaksin voi kirjoittaa itse))))) ja se käsittelee dataa pelkästään listoina joita verrataan toisiinsa. Siis pelkästään. Listoina. Joita verrataan. Toisiinsa. Ihan tajutonta.

Setä oli tosiaan kirjoittanut Lispinsä itse- ja kaikki funktiot oli tietysti ranskaksi. Lispin sisäänrakennetut funktiot on jo itsessään informatiivisesti nimettyjä (', car, cdr, caddr, cddr, cons jne jne.) ja kun tähän lisätään ranskalaiset terminologiat niin oli sellainen bstn- tunti että asiasta, josta minun olisi pitänyt tietää vähän tavallista enemmän (tietokoneohjlemointi) ei tullut yhtään mitään tolkkua. Anekdoottina muuten- lispin komentotulkista ei tule muuta vastausta kuin sinne kirjoitettuja funktiotuloksia tai T tai NIL. T on siis TRUE ja NIL on siis false. Mitään muuta dataa ei vehkeestä taida ilman mustaa tiedettä ja vuohien uhraamista saada irti.

Ilmeisesti Lispiä käytetään tulevaisuudessa murskaamaan numeroita. Lisp on kuulemma tosi hyvä boolen algoritmien jäystämisessä. Voinee olla. Itseasiassa sen olisi parempi olla, koska mitään järkeä siinä ei kyllä noin ohjelmointikielen ominaisuudessa ollut. Vähän jännittää mihin setä oikein aikoo mennä tämän Lisp- hulluttelun kanssa. Jotenkin olettaisin että se liittyy musiikiin ja toivoisin että se olisi kovin, kovin lyhytaikaista.

5 kommenttia:

  1. Jos ohjelmointi kiinnostaa vähänkään syvällisemmin, niin Lisp on kyllä asia, joka kuuluu yleissivistykseen. Eikä siis sillä tavalla sivistykseen että tietää mikä se on, vaan sillä tavalla, että tietää miksi Lisp on hieno ja tärkeä juttu.

    En tietenkään sano, että ohjelmoinnista pitäisi olla kiinnostunut syvällisemmin.

    VastaaPoista
  2. Öö... sulkeiden takia? Joo, ymmärrän kyllä että Lisp on tärkeä. Se on tärkeää samalla tavalla kuin koulumatematiikka tai maantieto- tiedän että se on tärkeää ja hienoa ja minulle hyödyllistä, mutta siitä huolimatta en tajua siitä mitään ja se vituttaa. Mutta ehkä ensi viikolla olen taas hitusen viisaampi.

    En muuten tiennyt että lisp on portattu OS X:llekin.

    VastaaPoista
  3. Sen takia, että Lisp-koodi itsessään on tietorakenne, jota voidaan manipuloida siinä missä normaalejakin tietorakenteita. Sen takia siinä onkin niin erikoinen syntaksi.

    VastaaPoista
  4. Tässä lyhyt oppimäärä ja pieni sovellus Lispillä:

    http://www.gigamonkeys.com/book/practical-a-simple-database.html

    C/C++/Javalla saisi veivata pitkään ja hartaasti että saa tehtyä saman yhtä näppärästi :) Lisp on siis muutakin kuin vain sulkeita.

    VastaaPoista