12. heinäkuu 2011, 14:56

Kielikatsastelu

Olisikohan se nyt sellaisen omien ajatuksien valottaminen paikallaan. Mistä on mihinkin, ja miten edetä. Komentorivi antaa omat haasteensa ja niin edespäin.

Schemet ja lispit

Uusi “aluevaltaukseni” on Scheme, ja tarkalleen ottaen Chicken Scheme -niminen murre Skeemaa. Monelle schemelle on ominaista tarjota hyvä C-kielinen FFI ja Chicken Scheme osui minun näppiini lähinnä sen tähden, että tämä oli ainut scheme, jolle näkyi olleen valmis MPD-kirjasto. En ehkä olisi muuten valinnut juuri tätä schemeä kymmenien joukosta.

Ja miksi Scheme ylipäätään? Minne se Clojure jäi? Olen sen sanonut moneen kertaan: Clojure on upea, likimain täydellinen ja riittävän nopea moneen hommaan. Missä se ei ole niin upea, on hidas käynnistyminen. Clojure-ohjelman pitää laukaista JVM tulille, ja ohjelman käynnistymiseen menee vajaa sekunti, joka näkyy ja tuntuu CLI-käytössä kovasti. Näin ollen ajattelin, että nopeaksi natiivikoodiksi kääntävä Scheme auttaa tekemään pieniä sovelmia komentoriville. Pikkuhiljaa taidot karttuvat, ja Scheme-osaaminen alkaa jäädä päähän, kunhan vain jaksan jatkaa puuhastelemistani sen kanssa. Kenties Python kakkosshell-kielenä tulee väistymään nopean schemen edeltä. Nopeata on myös tulkkaaminenkin!

Clojure on kuitenkin lispeistä se numero ykkönen. VimClojure on enemmän kuin upea ympäristö, enempää en voisi vaatia. Sen sijaan muita lispejä varten paras alusta on Vimille tuo Emacsin SLIME-ympäristöä matkiva Slimv. Se on suunnattu ensisijaisesti Common Lisp -koodaukseen, mutta onneksi sain Chicken Schemen toimimaan jotenkuten sen kanssa. Integraatio on kuitenkin epätäydellinen.

Common Lisp — älä puhukaan siitä. Se on yksinkertaisesti ruma. Risuaitojen käyttäminen joka paikassa ja isolla kirjoitetut symbolit (CL ei ota kantaa kirjainkokoon, joten se käyttää aina isoja kirjaimia tulosteissaan: hyi) vievät kyllä silmät päästä. Schemen eri murteet ovat jo siedettävämpiä, ja Clojure on esteettinen 2000-luvun kieli, jossa on lainattu silmää miellyttäviä rakenteita Pythonista ja Rubystä ja mistä sitten onkaan.

Kompastuskiveni Schemen kanssa on Slimv:n kanssa taistelu, mutta se alkaa olla jo voiton puolella. Pian koittaa jo valo, ja teen tehokasta koodia niin VimClojuren kuin Slimv:n kanssa.

Python elää

Pythonin taika on mielessäni kovasti rupsahtanut. Olihan se vanhaan aikaan hienoa, kun vertailukohteetkin olivat Java ja C++. Lispeille Python ei mahda mitään, ja kieli pystyy kilpailemaan notkeampiaan vastaan olemalla dynaaminen ja että sille on joitain GUI-rakentelujuttuja olemassa. Nopeastihan sitä wxGladea käyttämällä kyhää karkean käyttöliittymän ja siihen on helpohkoa kirjoittaa liha päälle. Kuitenkin olen jo erästä projektiani yhteen aikaan harkinnut kääntäväni Clojurelle ja Seesawille (Seesaw on Swing-wrapperi Clojurelle) mutta aika paljon työtä sellaisessa. Seuraava GUI-projekti tulee melko luultavasti olemaan kuitenkin Clojurelle.

Python elää, mutta sen aika alkaa olla kohta lopuillaan. Pari isompaa GUI-projektia ja muutama komentorivisovellus on Pythonilla. Scheme ja Clojure ottavat vallan, ainakin toivottavasti.

Muita kieliä?

Bash, AWK, sed, ex… nämä kaikki ovat kieliä, joita aion vaalia komentorivikäytössäni. Jos olisi enemmän aikaa ja jaksaisin nähdä vaivaa, niin Perl olisi sellainen kieli, jonka haluaisin opetella paremmin. Unix is my IDE.

Nämä perinteisemmät kielet; C, C++, Java. Niille en halua nähdä käyttöä ainakaan lähiaikoina. Mutta kuka sitä tietää, milloin niihin joutuu tarttumaan. Yksi keskeneräinen projekti on Javalla menossa, mutta taitaa olla mukavampi aloittaa sekin uudestaan Clojuren kanssa.

Tageja:

---
---

---

Aiheen vierestä