(toiminnot)

hwechtla-tl: Nettipäiväkirja 27.02.2015

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


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:

  1. 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.
  2. 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ä.
  3. 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.
  4. 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ö.
  5. Kukaan ei oikeastaan piittaa siitä, mitä kaikkea rumaa kussakin kielessä on, koska niitä ominaisuuksia voi olla käyttämättä.
  6. 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.
  7. Standardit www-sovellusten container-rajapinnat (kuten Node.js, WSGI, PSGI) ovat tarjonneet hyvän kasvualustan niitä tarjoaville pilvipalveluille, kuten Heroku, Google App jne.
  8. 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)