Google Dart another Fart:)

Google izbacio svoj novi jezik, zamjenu za Javascript koliko sam shvatio zvućnog imena Dart:)

Meni se čini da to ide s u skladu sa nekim mojim razmišljanjem da je Googe odlučio od HTML 5 napraviti svoj Flash Player iliti Silverlight.

Koliko sam pratio stvari na webu Google i Apple su najviše gurali HTML 5 i mislim da ovim to neće pasti ali Google je jasno da znak da se on misli malo jače angažirati kako bi trebao web sutrašnjice izgledati ili bolje reći opet smo napravili jedan korak unutrag.
Od zelene livade prekrivene standardima, javascriptom i cvijećem idemo opet prema razdvajanju u web razvoju.
Ovog puta od Google, oće li to biti još jedan njihov “Fart”:wokmen: pitanje je koje ostaje jer Google niže promašaje “around the clock”.

Sjećam se nedavno su mi neki web developeri pokazivali gdje je HTML 5 i JS, i iskreno iznenadio sam se. No nisam ulazio u rasprave jer sam shvatio da ipak treba isprobati HTML 5 a i da primjeri koji oni pokazuju su godinama iza Flasha a developeri koji su napravili primjere su bili prekaljeni flasheri koji su vjerovatno portali neke librarije izvađene iz naftalina.

No kada sam isprobao to čudo od HTML 5 svatio sam (što bi shvatio bilo koji RIA SL ili FP developer) da javascript kao jezik nije baš nešto u čem bi mogli razviti na 100 tisuća linija koda i naći lako developere koji bi mogli stime raditi. Puno je veća krivulja učenja, razvoja a i na kraju teže je primjeniti desing patterne.

No Google je okrenuo priču na drugu stranu da je javascript kao jezik zaostao. Možda i jest, Adobe je prije 5 godina napustio koncept sadašnjeg javascripta, sa razlogom, mogao si je to priuštiti i ne čudim se što su Googlovi inžinjeri zakljućili isto.

No nebi jezik nazvao Googleovim Javascriptom već Actionscriptom. Nisam previše istražio jezik ali ono što vidim actionscript sa drugačijom sintaksom:kuc:

A neznam da ce biti puno drugačije raditi sa njim nego sa ostalim…
A iskreno me zanima kakve su mu mogućnosti i mane…

ma neće ništa zamjeniti JS! :slight_smile:

[quote=“Popic”]A neznam da ce biti puno drugačije raditi sa njim nego sa ostalim…
A iskreno me zanima kakve su mu mogućnosti i mane…[/quote]

Mislim da je najveća mogučnost ta što će se konačno moći krenuti sa razvojem klijent sučelja bez upotrebe trećih frameworka, moći će se lagano pisati svoje library koji će se moći djeliti.
Najveća mana je to što ako Microsoft ne prihvati ovu viziju najverovatnije ćemo dobiti još jedan plugin za broswere (novi Flash Player:D) ili će se jezik morati kompajlirati u JS.

Javascript je ustvari odavno zamjenjen javascript frameworcima.
No ne radi se o tome da je framework arihiktetura, filozofija, library za razvoj već o tome da se u frameworcima postoje i zamjena za jezik.
Javascript je stari bradati djedica na vrhu brda kojeg svi poznaju ali nikad ga nitko nije vidio:)
Ti u biti danas možeš raditi kompleksna sučelja a da tvoj kod u većini slučajeva nema nikakve veze sa javascriptom kao jezikom već se radi o librarija koji su izmjenii i najosnovnije JS funkcije.
Zamisli da radiš u PHP frameworku u kojem ne koristiš foreach već koristiš neku metodu frameoworka koja obavlja foreach, to je događa u JS.

Link na instaliacija darta na Ubuntu 11.04

http://dartwatch.com/index.php/2011/10/setting-up-a-dart-build-environment-on-xubuntu-11-04/

Tutorial je za xbuntu ali radi i na ubuntu.
Tako da ja ću se malo poigrati sa jezikom jer moguće je da dođe i nekakva podrška za andorid:)

I da nadodam razlika između AS3 i darta u tome je što dart nema abstraktne klase i protected vidjivost (te naravno sintkasa koja je skraćena u Dartu i što ulazak u aplikaciju je preko main funkcije a ne main klase).
Stime da Dart može raditi i bez OOP.
Orginalno za ne? A mislim da te stvari jezik nebi niti smio imati prema ECMA 3 specifikaciji.

Par primjedbi o Dartu: Why Google Dart Will Miss Its Target

Vjerojatno će biti kao sa Googleovim formatom za slike koji je bolji od JPEG-a, ali ga nitko ne koristi. :ehm:

gorrc, riječ je o premočnom jeziku koji je dugo trpio zbog svojih implementacija, ali to se mijenja iz verzije u verziju browsera, da ne spominjem da se širi njegova upotreba i van browsera.

Da to stoji najviše su krive pogrešne implementacije, i mislim da ga Google malo pretjeruje kad tvrdi da je Javascript tehnološki zastario.

No možda je javascript malo prefleksibilan i onda su otvaraju veći troškovi i to je argumet koji uvijek može proći.
Koliko ljudi sa znanjem JS mogu stvarno danas nešto napraviti bez uporabe frameworka.
Koliko developera može napraviti kvalitetan widget u nekom JS frameworku.
I na kraju koliko developera uopće može koristiti taj jezik na server strani.
Ako se uzmu gornji kriteriji javascript gubi veliki broj developera.

Evo nedavno proučavo YUI 3 app engine za izradu nečeg što bi trebalo ličiti RIA aplikacija.
Treba prvo znati JS, zatim YUI3 i unutar toga treba znati još jedan microframework.
To je zbog takvog stanja kakvo postoji u webu sa javascriptom ali to više ne spada u kucanje JS već to su malo kompliciranije stvari od stavljanja 10 JQuery widgeta na stranicu i obrada njihovih podatka na serveru.
A te stvari su puno jednostavnije izvdene u RIA alatima tipa Flash ili Silverlight.

gorccc kruva ti, al’ ga ti uvijek zakompliciraš.

[quote=“gorrc”]Da to stoji najviše su krive pogrešne implementacije, i mislim da ga Google malo pretjeruje kad tvrdi da je Javascript tehnološki zastario.[/QOUTE]
Ništa i nitko neće spriječiti pogrešne implementacije, i da Google uvijek pretjeruje.

Po ćemu je javascript prefleksibilan i kakvi se to troškovi otvaraju, argument za što?

Sve, ukoliko poznaješ i znaš JS, nije ti potreban framework, a i sami frameworci su JS sami po sebi, stvar je u tome da mi je lakše napisati [HTML]$("#neki_div").slide();[/HTML] nego ovo [HTML]var SLIDETIMER = 3;
var SLIDESPEED = 3;
var SCROLLTIMER = 3;
var SCROLLSPEED = 3;
var STARTINGOPACITY = 40;

// handles section to section scrolling of the content //
function slideContent(id,prefix,timer) {
var div = document.getElementById(id);
var slider = div.parentNode;
clearInterval(slider.timer);
slider.section = parseInt(id.replace(/\D/g,’’));
slider.target = div.offsetTop;
slider.style.top = slider.style.top || ‘0px’;
slider.current = slider.style.top.replace(‘px’,’’);
slider.direction = (Math.abs(slider.current) > slider.target) ? 1 : -1;
slider.style.opacity = STARTINGOPACITY * .01;
slider.style.filter = ‘alpha(opacity=’ + STARTINGOPACITY + ‘)’;
slider.timer = setInterval( function() { slideAnimate(slider,prefix,timer) }, SLIDETIMER);
}

function slideAnimate(slider,prefix,timer) {
var curr = Math.abs(slider.current);
var tar = Math.abs(slider.target);
var dir = slider.direction;
if((tar - curr <= SLIDESPEED && dir == -1) || (curr - tar <= SLIDESPEED && dir == 1)) {
slider.style.top = (slider.target * -1) + ‘px’;
slider.style.opacity = 1;
slider.style.filter = ‘alpha(opacity=100)’;
clearInterval(slider.timer);
if(slider.autoscroll) {
setTimeout( function() { autoScroll(slider.id,prefix,timer) }, timer * 1000);
}
} else {
var pos = (dir == 1) ? parseInt(slider.current) + SLIDESPEED : slider.current - SLIDESPEED;
slider.current = pos;
slider.style.top = pos + ‘px’;
}
}

// handles manual scrolling of the content //
function scrollContent(id,dir) {
var div = document.getElementById(id);
clearInterval(div.timer);
var sections = div.getElementsByTagName(‘div’);
var length = sections.length;
var limit;
if(dir == -1) {
limit = 0;
} else {
if(length > 1) {
limit = sections[length-1].offsetTop;
} else {
limit = sections[length-1].offsetHeight - div.parentNode.offsetHeight + 20;
}
}
div.style.opacity = STARTINGOPACITY * .01;
div.style.filter = ‘alpha(opacity=’ + STARTINGOPACITY + ‘)’;
div.timer = setInterval( function() { scrollAnimate(div,dir,limit) }, SCROLLTIMER);
}

function scrollAnimate(div,dir,limit) {
div.style.top = div.style.top || ‘0px’;
var top = div.style.top.replace(‘px’,’’);
if(dir == 1) {
if(limit - Math.abs(top) <= SCROLLSPEED) {
cancelScroll(div.id);
div.style.top = ‘-’ + limit + ‘px’;
} else {
div.style.top = top - SCROLLSPEED + ‘px’;
}
} else {
if(Math.abs(top) - limit <= SCROLLSPEED) {
cancelScroll(div.id);
div.style.top = limit + ‘px’;
} else {
div.style.top = parseInt(top) + SCROLLSPEED + ‘px’;
}
}
}

// cancel the scrolling on mouseout //
function cancelScroll(id) {
var div = document.getElementById(id);
div.style.opacity = 1;
div.style.filter = ‘alpha(opacity=100)’;
clearTimeout(div.timer);
}

// initiate auto scrolling //
function autoScroll(id,prefix,timer,restart) {
var div = document.getElementById(id);
div.autoscroll = (!div.autoscroll && !restart) ? false : true;
if(div.autoscroll) {
var sections = div.getElementsByTagName(‘div’);
var length = sections.length;
div.section = (div.section && div.section < length) ? div.section + 1 : 1;
slideContent(prefix + ‘-’ + div.section,prefix,timer);
}
}

// cancel automatic scrolling //
function cancelAutoScroll(id) {
var div = document.getElementById(id);
div.autoscroll = false;
}[/HTML]
JS framework nije ništa drug nego bilo koji drugi framework za bilo koji drugi skriptni, programski jezik ili štogod.

[quote=“gorrc”]Koliko developera može napraviti kvalitetan widget u nekom JS frameworku.[/quote]Mislim da dosta velik broj, ali kao što rekoh framework ubrazav i pojednostavljuje stvari, pa ćemu pisati nešto što je već netko napisao.

[quote=“gorrc”]I na kraju koliko developera uopće može koristiti taj jezik na server strani.[/quote] Svaki koji ima resurse za to, pa danas imaš min. 2,3 serverside Javascrip enginea.

[quote=“gorrc”]Ako se uzmu gornji kriteriji javascript gubi veliki broj developera.[/quote] Zašto? Pa onaj kome to treba, koga to interesira, on će zapeti, naučiti i znati.

[quote=“gorrc”]Evo nedavno proučavo YUI 3 app engine za izradu nečeg što bi trebalo ličiti RIA aplikacija.
Treba prvo znati JS, zatim YUI3 i unutar toga treba znati još jedan microframework.[/quote]
I u čemu leži problem, pa ako ti treba naučit ćeš kao i sve ostalo.

[quote=“gorrc”]To je zbog takvog stanja kakvo postoji u webu sa javascriptom ali to više ne spada u kucanje JS već to su malo kompliciranije stvari od stavljanja 10 JQuery widgeta na stranicu i obrada njihovih podatka na serveru.
A te stvari su puno jednostavnije izvdene u RIA alatima tipa Flash ili Silverlight.[/quote][/quote]
Dam se okladiti da će jednu kvalitetnu RIA jednako dobro napraviti i u JS, ali pod uvjetom da znaš JS, a to je isti uvijet koji ti treba i za izradu kvalitetne RIA i u Flash ili Silverlight tehnologiji.

Pa zato je prefleksiban jer je na developeru velika mogučnost izbora implementacije što na kraju dovodi do pogrešaka, loših primjene prakse, težeg održavanja, i težeg obrazovanja.
Mislim, u js se može stvarno vidjeti svaša, dovoljno je otvoriti tri različita framewoka, iako iza svega uvijek stoji ista filozofija, i mogli bi reći jednostavna, razlika je u primjeni.

Eto jedan mali primjer na kojem sam naletio na jednom projektu. Developeri su koristili javascript prototyping za namespace.
To je bilo super i fine, dok je taj kod radio sam za sebe, no kad je trebalo taj kod negdje drugde iskoristiti i s trećim librarijem onda se je odbacila cijelokupna praksa rada sa JS i copy paste kod i zaljepiti ga negdje sa strane da baš ne mora biti na stranici.
To je što? Sadašnje stanje i razina JS kodiranja, a takvih primjera mislim ima jako puno a to je i jedna od stvari koje bi ovakvi jezici trebali maknuti sa scene.

Primjer sa slide, nije dobar jer se radi o widgetu, više sam mislio na to da je moguće većinu svog rada u nekom JS raditi isključivo u frameworku. Jezik ti uopće netreba.
Za primjer mislim da mogu cijelu tvoju funkciju slideContent() napisati u YUI 3 koristeći isključivo YUI 3. Apsolutna skoro svaka linija koda u toj funkciji će biti dignuta na razinu frameworka. Jedino što ću koristiti od JS je riječ function a mislim da se i to može izbjeći.

HTML 5/JS je u rame uz rame ostalim RIA tehnolgijama no ako za jedan RIA start up treba tri različita open source frameworka umjesto jedno zatvorenu tehnologiiju iza koja stoji korporacija onda se tu gomilaju troškovi da bi se dostigla ista razina kvalitete.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja