hwechtla-tl:
Nettipäiväkirja 27.02.2015
Tänään osuin moneen mielenkiintoiseen blogikirjoitukseen. En ole tehnyt
www-kehitystä nyt pariin vuoteen (koska työtehtävät eivät ole sattuneet
juuri siihen) ja halusin ottaa selvää erityisesti siitä, miten nykyään
kannattaa tehdä mahdollisimman yksinkertainen www-sovellus (eli mitä on
tarjolla esim. CGI-rajapinnan ja mod_python-rajapinnan tilalle).
Tällainen etsintä toi esiin Node.js:n, CherryPy:n jne. kaltaisia
teknologioita. Yritin siis väistellä megalomaanisia "full stack"
-www-kehitys-ympäristöjä, koska minua ei tällä erää kiinnostanut, millä
tavalla hoidetaan tietokantayhteydet, www-sivujen generointi aihioista
jne. Etsintä toi vastaan mm. seuraavia artikkeleita:
Tästä saa tällaisen yleisvaikutelman:
- Node.js:n popularisoima "asynkroninen tyyli" eli callback-funktioiden
käyttäminen joka paikassa, joka käytännössä pakottaa muotoilemaan
koodin CPS:ksi
(http://en.wikipedia.org/wiki/Continuation-passing_style) on syystä
tai toisesta tullut supersuosituksi. Koska saman saa aikaan aidoilla
jatkeilla ilman, että tarvitsee käyttää hiukan kömpelöä
callback-syntaksia, ihmettelen, miksi tämä on popularisoitunut juuri
tässä muodossa.
- Koska callback-syntaksi on suuressa suosiossa, perinteiset
skriptikielet (Perl, Python) kärsivät siitä, että niiden
lambda-lausekkeet ovat niin vammaisia. Rubyn blockit ovat tarpeeksi
käteviä.
- Javascriptiä käytetään nykyään yhä enenevässä määrin samalla tavalla
kuin Luaa tai Schemeä, eli käytetään sen yleisluontoisimpia osia
(olioita ja funktioita) kaikkeen, kuten kapseloinnin toteuttamiseen,
kontrollilogiikkaan jne.
- Javascriptille on nyt sitten olemassa toteutus, joka oikeasti haastaa
muita skriptikieliä nopeudessa. Tämä on aika hämmentävää, koska
Javascript on semmoinen "voisikohan tämän tehdä vielä jotenkin
dynaamisemmaksi ja introspektiivisemmäksi" -kieli, jonka toteutuksen
optimointi ei ensi ajattelemalta tunnu edes järkevältä
harjoitukselta. Mutta nykynäkökulmasta Javascript on siis
eräänlainen Scheme, jossa on vieläpä sisäänrakennetut hajautukset,
syntaktista sokeria niille ja valtava käyttäjäyhteisö.
- Kukaan ei oikeastaan piittaa siitä, mitä kaikkea rumaa kussakin
kielessä on, koska niitä ominaisuuksia voi olla käyttämättä.
- Metaohjelmointi dekoraattoreiden/"annotaatioiden" yms. muodossa on
tullut suosioon. Voisi olla tarkistamisen arvoista, tarjoavatko ne
jotain näppärämpää kuin perinteiset Lisp-makrot, hygieniset tai
ei-hygieniset.
- Standardit www-sovellusten container-rajapinnat (kuten Node.js, WSGI,
PSGI) ovat tarjonneet hyvän kasvualustan niitä tarjoaville
pilvipalveluille, kuten Heroku, Google App jne.
- Twisted on oikeastaan laajempi ja paremmin ylläpidetty toteutus kauan
sitten kirjoittamastani Pythonin Selecting-paketista
(http://sange.fi/~atehwa/selecting/).
kommentoi
(viimeksi muutettu 27.02.2015 16:27)