SIMD műveletek Dart-ban (avagy miért érdemes Dart-ban programozni)
Egy rövid prezentáció a Dart-ban bevezetett SIMD műveletekről. Azért érdemes belenézni, mert itt már kezd felsejleni, hogy mi az értelme a Dart-nak. Vannak olyan dolgok, amik a JavaScript alkalmazások teljesítményét nyelv szinten korlátozzák. Ilyen például az, hogy a JavaScript tipikusan típus nélküli nyelv, így számolni csak lebegőpontos számokkal tud. A Dart-ban viszont opcionálisan használhatunk típusokat, ami alapján a fordító jobb kódot tud generálni. Egész számokat például egész számokként kezel (nem lebegőpontosként, mint a JS), amivel sokkal gyorsabban lehet számolni, és kevésbé erőforrás igényes (mobil eszközök, aksi, fogyasztás ...). Hasonló kategória a SIMD műveletek (amiről a prezentáció szól), ahol egy műveletet több adaton hajtunk végre. Ez multimédiás alkalmazásoknál, 3D-s alkalmazásoknál, stb. gyakori dolog (ez a lényege pl. az MMX, 3DNow, SSE utasításkészleteknek x86-os procikon). Ezeket a jelenlegi JavaScript motorok is használják, de csak olyan szinten, hogy a fordító "megpróbálja kitalálni", hogy hol lehetne ilyesmit alkalmazni, ami nem olyan hatékony, mint ha explicit módon megadjuk ezt, és erre optimalizáljuk a kódot. Az ilyen feature-ök hosszú távon a Dart-ot a leghatékonyabb script nyelvvé tehetik, amivel olyan kód készíthető, aminek sebessége vetekszik a natív alkalmazásokéval. A Java teljesítményét talán már most is eléri (talán túl is szárnyalja) a Dart, de így a jövőben akár C, és natív alkalmazások helyett is érdemesebb lehet Dart-ot használni. Persze jelenleg ennek nincs túl sok értelme, mivel Dart kódot maximum a Chrome tud futtatni, és még ő sem alapértelmezetten, de ha elterjed, sok szempontból jobb választás lehet, mint a JS vagy akár a Java. Mondjuk nem tudhatjuk azt sem, hogy a JavaScript addigra hol fog tartani, esetleg nem-e emelnek át ilyen Dart-os feature-öket, mint amilyen az opcionális típusosság, ami megint a JavaScriptet teszi majd erősebbé ...
#blog
https://docs.google.com/presentation/d/1zfucLA3XNqRb7W56ldU_Biya-IrS00QmSuXNYwewlyg/edit?forcehl=1&hl=hu#slide=id.p19
Ha a gondolat meneted helyes - és nagyon úgy tűnik nekem, hogy a Dart-l komolyan kell majd számolni a későbbiekben -, akkor a böngészők miért nem támogatják már most? Elképzelhető, hogy úgy gondolják, hogy a Google-nak tudnak ártani, ha nem támogatják a Dart-t?
VálaszTörlésEgyelőre még Chrome-ban sincs alapértelmezett Dart, nem hogy más böngészőkben. Annak ellenére, hogy a Dart má most is komoly eszköz, még nagyon az életciklusa elején tart. Azért ez mégiscsak egy tök új dolog. Egyszer biztos be fog kerülni majd Chrome-ba, és szerintem más böngészők is támogatni fogják. Akik meg nem (pl. IE), azokhoz elérhető lesz plugin formájában. Valahová oda tudom elképzelni, ahol most a Flash van. Külön bigyó, de egyszer minden böngészőben elérhető lesz. Sőt, szerintem szerver oldalon is komolyan számolni kell vele. A JavaScript is nagy karriert futott be szerver oldalon a node.js nek köszönhetően (ami az ugyancsak Google féle V8-nak köszönheti a létét). A Dart tulajdonképpen az, ami a JavaScript lett volna, ha a Google találja fel. Ha elég kitartóak lesznek, és sikerül elég nagy tömeget megtéríteni, szerintem fontos komponens lehet a jövőben. Jelenleg én sem kezdenék el nagyobb projektet Dart-ban, mert még nincs kész, de talán csak idő kérdése, mikor az ember már majd szívesebben választja ezt, mint a JS-t. Amúgy Istvan Soos, neked mi a véleményed?
VálaszTörlésA nyelv nagy része mostanra már stabil, az alapkönyvtárak API-ja azonban folyamatosan változik. Most csak azoknak javaslom a Dart projekt elkezdését, akiknek van idejük a fejlesztés mellett ezeknek a követésére is, de néhány hónap múlva ez is stabilizálódni fog, a nyár végére esélyes, hogy ez már nem lesz negatív tényező.
VálaszTörlésEgy GWT-s kisebb alkalmazást átírtam Dart-ra (többféle JS-integrációval), nekem egyértelműen jobban bejön, de ez emberfüggő: van akinek nagyon nem tetszik a böngésző világa és a JS aszinkronitása, azoknak lehet a Dart sem fog nagyon tetszeni. A mérhető metrikák nagy részében jobban jártunk az átírással (a start time volt egyedül rosszabb, mert a JS script azonnal fut, a Dart meg késleltet(ett) mindent a dom loaded esemény utánra).
Bár sokminden történhet az elterjedés mértékében és módjában, a Dart2JS fordító mindig ott marad egy remek fallbacknek. Ismerve a készítők egy részét, én nagyobb összeggel fogadnék a Dart sikerére mint ellene (és igen, ebben erősen elfogult vagyok).
Én amúgy még nagyobb fantáziát látok a Dart szerver oldali alkalmazásában. Maga a nyelv, és a kialakított API is sok szempontból tetszetősebb, mint a Java, és úgy kb. fél úton van a NodeJS és a Java-s megoldások közt. Ebben az irányban szerintem még olyan nagy előre lépés nem történt, de szerintem ez a fajta alkalmazás később legalább olyan hangsúlyos lesz, mint a böngésző oldali.
VálaszTörlés