Autor Zpráva
Kry5
Profil
Zdravím,
zajímalo by mě jaký máte názor na zbrusu nový jazyk Dart od googlu. Podle mě je přímo nádherný a pokud by opravdu nahradil javascript vedlo by to rozhodně ke zlepšení úrovně kódu na straně klienta!
Nikdy jsem neprozkoumal OOP v javascriptu, ale to co nabízí Dart mi přijde jako ta "lepší" varianta. Je to daleko podobnější ostatním jazykům a přidává perfektní práci s HTML elementy.

Jaký na něj máte názor vy?
Medvídek
Profil
Kry5:
Pochybuju, že by to kdykoliv nahradilo JS.
Kry5
Profil
Ale minimálně se to může uchytit podobně jako jQuery - na bázi JavaScriptu.
Witiko
Profil
Kry5:
Nikdy jsem neprozkoumal OOP v javascriptu, ale to co nabízí Dart mi přijde jako ta "lepší" varianta
Jak Ti může přijít něco lepší než něco jiného, když to něco jiného jsi vlastními slovy nikdy neprozkoumal? :-/

Javascript nabízí velmi flexibilní systém tzv. prototypů, který je ve své podstatě velice jednoduchý - každý objekt na sobě může mít připojený tzv. prototyp, do něhož je nahlédnuto, pokud se daná položka nenachází v objektu samotném. Pokud má objekt, který připojený pomocí prototypu, také svůj prototyp, vzniká tzv. prototypový řetězec, který umožňuje hlubší dědičnost. Flexibilita se nachází v možnosti použít "instanci třídy" (objekt s prototypem) jako rodiče (prototyp) jiné instance. Zní to krkolomně, ale to je tím, že se snažím aplikovat názvosloví ze tříd na prototypy.

Systém tříd používaný "klasickými" OOP jazyky je konstrukt vzniklý z nutnosti a pomocí intuice, ne na základě matematiky - postrádá vědecké základy. Naopak systém prototypů je považován za způsob, jakým si vytváří logické struktury dat lidský mozek. Pro více informací o prototypech a přístupu k OOP všeobecně doporučuji těm obratnějším v angličtině tento článek, inspirativní čtivo. :-)

Každopádně i třídní dědičnost lze (až na vícenásobnou dědičnost) v javascriptu velmi jednoduše simulovat. Do uvedení ECMA5 byla v javascriptu manipulace s dědičností omezena na volání funkce s operátorem new, tzn. implementace byla od počátku zatížena směrem k simulaci třídní dědičnosti. ECMA5 přináší metodu Object.create, která umožňuje velmi volnou manipulaci s prototypem (metoda je pro ECMA3 zpětně dodefinovatelná), ačkoliv osobně bych dal přednost rozšíření syntaxe umožňující přímou možnost změny prototypu objektu po vzoru nestandardní vlastnosti __proto__, šly by s tím dělat zajímavé věci. Napadá mě kupříkladu:

var a = {0: "A", 1: "h", 2: "o", 3: "j", length: 4};
a.__proto__ = Array.prototype;
alert(a.join(""));

nebo třeba:
var objekt = {
  jméno: "Nevyplněno",
  příjmení: "Nevyplněno"
}; vyhodnoť({
  jméno: "Pepa"
});

function vyhodnoť(o) {
  o.__proto__ = objekt;
  alert("Jméno: " + o.jméno + "\nPříjmení: " + o.příjmení);
}

Už zase píšu moc dlouho, že? :-) Asi sdílím kletbu s Petrem ZZZ. Ale dědičnost je tak rozsáhlé téma, že bych o něm mohl mluvit velmi dlouho. Článek, na který odkazuju výše, ostatně pokrývá ve své úplnosti kolem ~37 normostran.

Jaký na něj máte názor vy?
Zajímavý pokus, který by pro větší projekty nemusel být při větší podpoře v budoucnu špatnou volbou. Pro menší věci preferuji scriptovací jazyk jako javascript, tohle vypadá spíš jako těžkotonážní potomek C# a Javy.

podobně jako jQuery
Divil bych se. jQuery je nadstavbová knihovna, která z dynamického programovacího jazyka dělá lego. Dart naopak nevypadá příliš uživatelsky přítulně. Spíš si dovolím tvrdit, že je zaměřený na zkušenější vývojáře, kteří už došli k problémům s udržovatelností javascriptu u větších projektů a hledají místo něj něco silně typového a třídně objektového, interfaceového a vůbec tak nějak JavoC#OOPového. (Během psaní předchozí věty nebyl zraněn žádný neologismus.)
Chamurappi
Profil
Reaguji na Kry5:
vedlo by to rozhodně ke zlepšení úrovně kódu na straně klienta!
Hm, přežvýkaná marketingová fráze. Co ti vadí na úrovni JS kódu?

Je to daleko podobnější ostatním jazykům
V práci s literály řetězců je to podobné PHP, tedy té menšině jazyků, která deformuje představy začátečníků. Pak plavou v prakticky kterémkoliv jiném jazyce, zamotávají se v uvozovkách, diví se, že název proměnné uvnitř uvozovek je jen název proměnné uvnitř uvozovek. Osobně mi to přijde nepřehledné a ošklivé.

přidává perfektní práci s HTML elementy
Jakou? Co jsem koukal, viděl jsem jen klasický DOM.

se to může uchytit podobně jako jQuery - na bázi JavaScriptu
Právě z důvodů, kvůli nimž se uchytilo jQuery, nemá Dart moc šancí.

Jaký na něj máte názor vy?
Google si zkouší vypěstovat vlastní náboženství. Motivy pro vznik Dartu jsou značně rozmazané, přichází docela pozdě, komunita JS vývojářů je dost velká… pokud Dart najde dostatečně velkou hrstku příznivců, za pár let se budou vývojáři stovky hodin hádat o tom, jestli jim Dart ušetří pár minut práce či zda (a kde) zrychlí běh o pár milisekund. V globálu si lze těžko představit, že by nový jazyk něco zásadního změnil. Rozhodně nevzniká proto, aby zlepšil World Wide Web. Je to jen nový model bombardéru ve válce prohlížečů.
Witiko
Profil
Chamurappi:
Ale když dáme stranou ideologické pohnutky Google, bude zajímavé sledovat, jak se nový jazyk (ne)uchytí. Vždycky mě trochu mrzelo, že VBScript umřel u Internet Exploreru. Teď je otázkou, jestli vícero možností je to, co web potřebuje. Atributy type u tagů <script> a <style> jsou důkazem toho, že se s více jazyky od začátku počítalo, ale dokážete si představit, že by dnes někdo začal tvořit alternativu pro CSS? :-)
Gappa
Profil
Četl jsem celkem zajímavý názor - proč ne ActionScript 3.0? :)

http://blog.gusc.lv/2011/10/dear-web-browser-vendors/
__construct
Profil
Taktiež pridám jednu zaujímavosť :-)
Chamurappi
Profil
Reaguji na Witika:
Atributy type u tagů <script> a <style> jsou důkazem toho, že se s více jazyky od začátku počítalo
U skriptů je důkazem spíš atribut language.

Vždycky mě trochu mrzelo, že VBScript umřel u Internet Exploreru.
Microsoft měl architekturu skriptovacích jazyků docela promyšlenou (nepochybně později inspirovala .NET CLR). Stejný skriptovací engine běží v Internet Exploreru, Windows Scripting Hostu i v IIS (případně i jinde, tuším, že ho využívá např. PSPad). V základu podporuje JScript a VBScript, ale díky volně dostupnému SDK (které momentálně nemůžu najít) může kdokoliv doprogramovat jakýkoliv další jazyk. Tuším, že existuje hotový Python a Tcl. Teoreticky by tedy šlo dodělat i nativní Dart pro Internet Explorer (+ také pro WSH a pro staré ASP :-)). Ale do toho se Google asi nepustí.


Reaguji na Gappu:
Protože přeci Adobe je zlé a Google je hodný :-)
Proč ne C#?
Před pár lety rozvíjeli lidé z W3C týmu úvahu, že JavaScript je hrozba a že by ho měla nahradit Java + nějaký zbrusu nový jazyk vzniklý pod patronátem konsorcia.
Joker
Profil
Chamurappi:
Google si zkouší vypěstovat vlastní náboženství.
Ne, jen prosazuje své vlastní technologie, stejně jako všichni ostatní. Například Microsoft má „vlastní kopie“ snad všech technologií co se na webu rozšířily.
Adobe chce na webu víc Flashe, Microsoft víc SilverLightu, SUN víc Javy (i když to už asi vzdal), W3C míň všeho předchozího ve prospěch HTML, CSS a skriptování.

Microsoft měl architekturu skriptovacích jazyků docela promyšlenou
Něco jako .Net CLR je hezká vychytávka, i když těm jazykům rodiny VB jsem nikdy na chuť nepřišel.
Nox
Profil
Tady je ještě názor http://blogs.perl.org/users/rafael_garcia-suarez/2011/10/why-dart-is-not-the-language-of-the-future.html
- že si z obou světů - statických a dynamických jazyků - bere spíš jejich nevýhody

Ono JS je prý nejnepochopenější jazyk...no, na youtube se objevil hezký playlist http://www.youtube.com/playlist?list=PL7664379246A246CB Crockford ho tam velmi kvalitně a podrobně vysvětluje ... a i způsobem že člověk si pak říká jestli to není nejlepší jazyk vůbec :) až teda na pár kiksů

Tak mě napadá že nevim pro koho ten Dart je... začátečníkům se víc hodí dynamičtější jazyk a pokročilý se prostě to JS může naučit.... tak možná pro líné programátory.

No ale... předvídat je těžký, třeba to nakonec JS vytlačí
Chamurappi
Profil
Reaguji na Jokera:
Ne, jen prosazuje své vlastní technologie, stejně jako všichni ostatní.
To se nevylučuje. I ti ostatní si pěstují vlastní náboženství, protože lidi si utvářejí k informačním technologiím nerozumně silnou citovou vazbu. To by asi bylo na rozsáhlejší úvahu.

Například Microsoft má ‚vlastní kopie‘ snad všech technologií co se na webu rozšířily.
Silverlight a… dál? Vlastně ještě ten VBScript, ten byl míněný jako konkurence JavaScriptu.
Kolem Silverlightu je také omotaná nemalá hrstka fanoušků/fanatiků, kteří jsou nyní velmi smutní, když marketing Microsoftu rituálně tančí okolo HTML 5. Kdyby teď MS vyrukoval s převodníkem ze Silverlightu do JavaScriptu, udělal by svým ovečkám radost… a byla by to přímá konkurence pro Dart. Podobnou úvahu musí už pár let nosit v hlavě také Adobe, jinak jeho kultu hrozí vyhynutí (či alespoň zhoubný strach z vyhynutí). To, co chybí všem těm chytřejším technologiím, je provozuschopný fallback. V tuto chvíli chybí i Dartu, jeho JS nefunguje v Exploreru.
Witiko
Profil
Nox:
třeba to nakonec JS vytlačí
Vytlačí? Co já vím, tak Dart se následně do JS konvertuje, tzn. javascript se nemusí o svůj osud obávat. Google už něco takového zkoušel dřív. Co vím, tak velká část jeho služeb má klientský kód prve psaný v javě a následně přechroustaný do javascriptu. Osobně to považuju za lenost, vanilla javascript osobně nepovažuji za TAK nepoužitelný pro větší projekty.
Joker
Profil
Chamurappi:
Silverlight a… dál?
Tak co se dál rozmohlo na webu? Na HTML a CSS se podílí i Microsoft (jako člen W3C). Jinak má MS „svůj JavaScript“ (JScript), „svou Javu“ (C#), „svůj Flash“ (SilverLight), ostatně i „svoje PHP“ (ASP).

MS obecně zdá se inklinuje k tomu vytvořit svou vlastní verzi dané technologie a pak ji prosadit skrze dominantní postavení Windows mezi operačními systémy.
(což je dáno zázemím a historií, ze stejných důvodů Google sází na otevřenost a image „hodné“ firmy)

Kolem Silverlightu je také omotaná nemalá hrstka fanoušků/fanatiků
Tak ono kolem čeho není, že ano.
Nox
Profil
Witiko: Myslel jsem jen to, že vynášet nějaké definitivní výroky ohledně budoucnosti je dost ošidné, samotnýho mě Dart nezaujal a taky nemyslim že by se ujal

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0