Íme egy tömör összefoglaló a Google új webes programozási nyelvéről a Dart-ról, a langspec alapján. A weblapon vannak fenn interaktívan szerkeszthető példák, amik egyelőre úgy futnak, hogy először Javascript-re fordulnak. De a távlati cél hogy bájtkódra forduljanak, gyorsan induljon az alkalmazás, stb.
Csapjunk a lecsóba.
A Dart osztályokat, egyszeres öröklődést, egyszálú programvégrehajtást támogató, objektum-orientált, opcionálisan típusos, (statikus típusannotációk) programozási nyelv. Támogatja a generikus szerkezeteket és az interfészeket. A kód statikus analízissel ellenőrizhető. Kétféle futtatási mód létezik: production és checked. Forrásként töltődik le a kliensre (böngészőre), a fordítás időpontja nem meghatározott, de akár JIT compiling is elképzelhető.
Checked módban való futtatásnál az értékadások dinamikusan ellenőrződnek és kivételek (exception) keletkezhetnek. Production módban a statikus típusannotációk nincsenek figyelembe véve.
Modularizáció
Lexikai szkóp van, a belső elemek elfedik a külső azonos nevű elemeket. Egy deklaráció privát, ha aláhúzásjellel kezdődik a név, különben public. A privát deklarációk csak az adott library-ben látszanak, amik a Dart programok moduláris elemei és a forrásfájlok elején import direktívákkal tölthetők be URI alapján. (Itt a privát tagok inkább szoftverfejlesztési, mint security megfontolásokat hivatottak támogatni.) Include-ra is lehetőség van.
A program futása isolate-ekre bontható. Minden isolate külön saját tárterülettel rendelkezik és üzenetekkel tud kommunikálni a többi isolate-tel. Az Isolate egyben egy osztály is, aminek a spawn() metódusával lehet egy újat nyitni. Az üzenetküldés és -fogadás módja még nincs közelebbről meghatározva.
Változók
A nem deklarált változók alapértéke null. Létezik a final kulcsszó, ami csak egyszeri értékadást engedélyez. A változókat nem muszáj objektumba vagy osztályba foglalni. Minden top-level változó static (nem kell kiírni) és final, tehát kötelező neki értéket adni. Ha nincs explicit típus deklarálva, az alapértelmezett típus a Dynamic.
Függvények
Függvények fajtái: függvénydeklarációk (top-level fv-ek), getterek, setterek, metódusok, konstruktorok és függvényliterálok. A függvény szignatúrája a formális paraméterlistát, és opcionálisan a nevét (tehát névtelen fv-ek és closure-ök léteznek) valamint a visszatérési értékét (default: Dynamic) tartalmazza. A paraméterlista végén opcionális paraméterek is megadhatóak. A függvénytörzset göndör zárójelek fogják közre, de a =>e (függvényliterál) egyenértékű a { return e;}-vel. Ha a return el van hagyva, return null; alapértelmezett. typedef-fel funkciótípus alias-okat lehet megadni, így függvény-változók is létrehozhatóak, függvények átadhatóak paraméterként vagy visszaadhatók return utasításban. A program végrehajtása a globális main() függvénnyel kezdődik.
Osztályok
Egy ősük van (extends), akármennyi interfészt kiterjeszthetnek (implements), vannak absztrakt (abstract) osztályok, lehetnek példány és statikus (static) tagjaik, inicializáló blokkjaik. A gyökér az Object nevű osztály. A statikus tagok nem override-olhatóak. Támogatott az inline azonnali interfész implementáció és az objektumok egymásba ágyazása. Objektumok létrehozhatóak konstruktorok (new kulccszó) vagy factory metódusok segítségével. Az utóbbiak factory kulcszóval ellátott metódusok. Az osztálypéldányra a this kulcsszóval kell hivatkozni, az ősre a super-rel, a tagokat pedig a ponttal (obj.property) lehet elérni. Konstant konstruktorokkal fordítási idejű konstansok hozhatóak létre. Ezeket a const kulccszóval kell jelölni. A generikus szerkezetekhez tartozó típusparaméterek az osztálydeklarációnál adhatóak meg.
Konstansok
A szokásos szöveges és szám literálok mellett a fordítási időben kiértékelhető kifejezések is konstansnak számítanak, valamint létezik List, és Map beépített típus, ami -ha const kulcsszóval van ellátva, fordítási időben értékelődik ki, és -hogy-hogy nem- a JSON formátumra hajaz. Létezik string interpoláció, ami azt takarja, hogy: "s1${e}s2" == "s1" + e.toString() + "s2".
Operátorok és vezérlési szerkezetek
Nagyjából megvan a C++, Java, C# világban szokásos elemkészlet, beleértve a try/catch/finally-t, a label-eket. Van assert feltétel, aminek csak checked módban van hatása.
Hát ennyi. Az alapkönyvtár még elég szegényes, de majd biztos jönnek a hasznosabb kiegészítések is. Meglátjuk.
Google Dart
2011.10.11. 20:48 tvk
Szólj hozzá! · 1 trackback
A bejegyzés trackback címe:
https://kodzaj.blog.hu/api/trackback/id/tr233295956
Trackbackek, pingbackek:
Trackback: Hivatalosan is ECMA szabvány lett a Google Dart programozási nyelve 2014.07.03. 11:23:33
Ezzel ebben a vonatkozásban egy szintre került a JavaScripttel, amit szintén ECMA specifikáció rögzít
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
Nincsenek hozzászólások.