2012-01-03

Lomaopinnot: Google Dart ohjelmointikieli

(Kopio eri taustaisille kollegoille lähetetystä sähköpostista.)

Hei, katselin loman aikana moniaita teknologioita, joista yksi oli Google Dart ohjelmointikieli.

Googlen strategia webbityökalujen suhteen on investoida siihen, että webissä pystytään tekemään mahdollisimman hyviä ja monipuolisia sovelluksia, koska he näkevät mainosbisneksensä markkinaosuuden, -position ja kannattavuuden olevan tämän globaalin capabilityn funktio.

Heillä on useita työkaluja tällä alalla, joista tunnetuin on Google Chrome verkkoselain, ja heille on kertynyt infrastruktuurikokemusta myös webin tämän hetken laajimman sovellusten toimitustavan, JavaScriptin osalta, V8 virtuaalikoneen ja Google Web Toolkit käännösympäristön mukana.

Googlen positio webin perusteknologioiden suhteen on 2012 se, ettei JavaScript itsessään vastaa riittävän hyvin huutoon, eikä sitä pysty inkrementaalisesti parantamaan riittävällä tavalla. Google Dart on heidän vastauksensa tähän ongelmaan. Se on mennyt konseptina hyvin läpi selainmarkkinoilla, ainoa vastustaja on Microsoft, jonka markkinaosuus on pudonnut jo alle 50%:n, ja jonka selainstrategian motivaationa on ollut heidän käyttöjärjestelmäbisneksensä, jonka nykymallista he ovat nyt aktiivisesti pyrkimässä ulos.

Dart vastaa kahteen ongelmaan: JavaScript ei ad-hoc kielenä tue edes keskisuurten projektien vaatimaa kehittäjien välistä viestintää, eikä sen ajamista ole sen ad-hoc ominaisuuksien vuoksi mahdollista optimoida tiettyä pistettä pitemmälle.

Dart-kieliset ohjelmat käännetään tällä hetkellä legacya varten mahdollisimman optimoitavaksi JavaScript-subsetiksi, sekä potentiaalisesti selaimiin kuten Chrome ja Firefox voi jatkossa tulla dedikoidut Dart-virtuaalikoneet.

Kieli tukee eri ominaisuuksin primääristi kahta eri käyttötapausta: normaaleja web-sovelluksia, sekä kirjastoja tai laajoja sovelluksia.

Pienet sovellukset kirjoitetaan hyvin pitkälle samaan tyyliin kuin tällä hetkellä JavaScript-sovellukset. Tyypitys on vapaaehtoista, ja skoopitus ja paketointi on huomattavasti intuitiivisempaa kuin JS:sa. Kielen peruskirjasto sisältää paljon juttuja, joiden puuttumista JS-väki usein kiroaa.

Kirjastot ja laajat sovellukset on tarkoitettu kirjoitettavaksi tyypitystiedon kanssa. Tällöin esim. muuttujat deklaroidaan tyyppitiedon kanssa, eli se mikä pienessä sovelluksessa kirjoitettaisiin val foo = "bar"; sanotaankin String foo = "bar";. Tällöin IDE osaa varoittaa, jos sovelluksesta yritetään käyttää kirjastoa väärin, ja työkalut osaavat mm. näyttää dokumentaation ja vaihtoehdot kuten C# ja Java-IDE:t tällä hetkellä.

Tyyppitieto on kuitenkin vain koristeinformaatiota, eli vaikka sanot Integer foo = "bar";, sovellus toimii edelleen odotetulla tavalla, vaikka IDE ja kääntäjä antavat varoituksia.

Mielenkiintoisia konsepteja, joilla on potentiaali tuoda merkittävästi enemmän ennustettavuutta selainsovelluksiin, jotka ovat toistaiseksi paras tapa toimittaa tuotteita mahdollisimman laajalle yleisölle.

Kannattaa tutustua. http://www.dartlang.org/ voi ladata Eclipse-pohjaisen IDE:n, joka sisältää kaiken tarvittavan.

0 comments:

Post a Comment