Dart - structured Web Language (neue Programmiersprache)

Simple Man

Lt. Commander
Registriert
Sep. 2003
Beiträge
1.420
Wollte mal fragen ob jemand Dart kennt und sich schon diese neue Programmiersprache bezüglich der Webentwicklung angeschaut hat? www.dartlang.org

Entwicklung seit Oktober 2011
(Plattform)Structured web language for str. web apps
class-based progr. language
Ziele: Einfach/bekannt, Effizient, Skalierbar
Optional types
MIMI type : <script type="application/dart">
runs on server and web browser. Dart compiles to JavaScript.
Hat eine VM für server und browser
Dart single-threaded. Steht der Thread, steht alles. Deswegen asynchrones Prinzip angewendet.
rennt im Browser als native Dart oder zu JavaScript kompiliert.
rennt am Server in VM.
Kommunikation zwischen Dart und JavaScript mit Postmessages
 
Verfolge die Entwicklung schon länger. Könnte ich auf einen Knopf drücken, welcher sofort Javascript mitsamt seiner Verbreitung durch Dart ersetzt (in einer ausgereiften Version versteht sich), dann würde ich es tun.

Da einzig und allein Google dahintersteckt, wird die Technologie aber wohl nie Anklang finden, sowas passt W3C und Co. nicht und eigentlich ist das ja auch gut so.
 
Es soll aber dann opensource werden und man kann jetzt schon "comitten".

Und ich glaube, solche signifikanten Änderungen im Web kann nicht eine kleine Gruppe von freiwilligen Entwicklern im aktuellen Umfeld umsetzen. Da braucht es Developer und Sprachentwickler die seit längerer Zeit sich mit der Thematik befassen, die monatlich Kohle von Google bekommen und sich 1-3 Jahre auf die Entwicklung dieser Sprache konzentrieren können.
 
Dart kann sich nicht durchsetzen, weil noch für viele Jahre keine ausreichende Menge an Browsern Dart unterstützen werden, und selbst wenn bleibt die "IE6"-Problematik, es wird also immer irgendwelche Browser geben, die es nicht können.
Dart könnte sich nur durchsetzen, wenn es einen Dart2JavaScript-Compiler geben würde. Da braucht es dann auch keinen extra Support für die Sprache in Browsern, man schaue sich z.B. CoffeeScript an.
 
Na ja, wenn du es heute als Final herausbringst kannst du es so in 10-12 Jahren nutzen.... genau wie CSS3 und HTML5.
 
ice-breaker schrieb:
Dart könnte sich nur durchsetzen, wenn es einen Dart2JavaScript-Compiler geben würde. Da braucht es dann auch keinen extra Support für die Sprache in Browsern, man schaue sich z.B. CoffeeScript an.

Das ist Google klar, den Compiler gibt es seit fast von Beginn an :)
Auf lange Sicht wäre das natürlich nicht das, was Google will (sondern ihre Dart-VM), aber eben als Penetrationsstrategie wie der BWLer sagen würde, geht sonst ja nicht anders.
 
Zuletzt bearbeitet:
Den Compiler gibt es ja schon. dart2js. Alles was du programmierst kannst auch gleich zu JavaScript compilieren.
 
Hmm was ist daran nun so toll?
Es ist endlich mal rein objekt orientiert, mit ein wenig tricksen kann JS das aber auch.
Der Editor stellt mir jetzt nichts zur verfügung was der chrome debugger nicht auch schon könnte und in Netbeans kann ich sogar für jQuery vorschläge zeigen lassen.

Und ich glaube gesucht wurde ein js2dart compiler.

Konnte auf die schnellenichts zur typisierung finden, wie ist die dort?
Mich nervt die schwache typisierung von JS schon ziemlich an, habe mich aber mittlerweile dran gewöhnt.

aber ansonsten werde ich auch in absehbarerer zeit nicht wechseln.
- JS ist zu 90% verbreitet (an den haaren herbeigezogener wert)
- Viele starke libs im umlauf
- super große community
- einigermaßen ordentliche abwärtskompatibilität
- viel zu viele projekte mit weit mehr als 30.000 Zeilen JS werde ich sicher nicht anpassen
- bis (wenn) es sich dursetzt vergehen eh noch mindestens 10 jahre, selbst heute ist css3 und html5 weder fertig noch vollständig implementiert.
- die interpreter von js werden immer besser und performanter
 
Zuletzt bearbeitet:
Mercsen schrieb:
- JS ist zu 90% verbreitet (an den haaren herbeigezogener wert)
100% triffts eher, zumindest im Bereich von grafikbasierten Browsern. Sogar ein IE5.5 kann JS. Lediglich Text-Browser, Screenreader und Bots können grundsätzlich kein JS... die können dann aber ganz sicher auch kein Dart.
 
Naja, man kann ja gemütlich mit Knopfdruck von Dart in optimierten JavaScript code kompilieren.
Eines der Ziele von Dart ist ja eine bessere Geschwindigkeit. Snapshots und Treeshaking.

Für mich ist vor allem die Syntax und das Feeling der Sprache wichtig. Auf den ersten Blick sieht es doch recht nach C# und Java aus. Als ich vor paar Wochen mal einen älteren JavaScript code durchgegangen bin dachte ich mir ständig "WTF wird denn hier gerade gemacht".

Parallel zur Sprache wird auch gleich ein ordentlicher Editor entwickelt.
 
@Daaron: Ich habe mich mal auf 90% beschränkt um nicht gleich wieder die leute auf die barikkaden zu rufen.... "IIIIIIIIICH habe JS immer aus" "Js ist gefährlich sollte man aus haben", du kennst das ;)

@simple man
das problem ist dann trotzdem noch das du einmal deine ganze anwendung in dart neu schreiben dürftest, alleine bei meinem aktuellen projekt sind das über 10.000 Zeilen. Gib mir nen konverter der das in dart baut, dann gucke ichs mir an.

zu der syntax, ich kann dazu nur sagen das ich JS trotz seiner schwächen liebe. Kenne kaum eine sprache in der man sauberer (ok, ehr übersichtlicher) programmieren kann.
richtige OOP wäre wünschenswert, aber das kann ja nichtmal PHP vollständig.
Sauber coden geht in JS auch, man muss nur besser aufpassen ;)

gibt es denn benchmarks die mal eindrucksvoll zeigen das dart schneller ist als ein vergleichbares JS programm? Hatte mit der perfomance noch nie probleme.
 
Simple Man schrieb:
Für mich ist vor allem die Syntax und das Feeling der Sprache wichtig. Auf den ersten Blick sieht es doch recht nach C# und Java aus.
und der nächste kommt und argumentiert dann, dass Dart für ihn nichts ist, weil die Sprache nicht funktional wie Haskell oder Lisp ist.
Du siehst worauf ich hinauswill? ;)
Wenn es einen Dart2Js-Compiler gibt ist es doch ausreichend, wer es nutzen will, soll es nutzen, es gibt dann ja keine Hürde mehr, deswegen soll es aber nicht in Browser eingebunden werden.

Simple Man schrieb:
Als ich vor paar Wochen mal einen älteren JavaScript code durchgegangen bin dachte ich mir ständig "WTF wird denn hier gerade gemacht".
Eine der schönen Sachen ist vor allem, dass diese "WTFs" für manche für den anderen wunderbar kurzen Code erlauben. Ich ewähne nur mal:
Code:
var x = someObject.someAttribute || 0;

Simple Man schrieb:
Parallel zur Sprache wird auch gleich ein ordentlicher Editor entwickelt.
gibts für JavaScript schon, nennt sich WebStorm.

Mercsen schrieb:
richtige OOP wäre wünschenswert, aber das kann ja nichtmal PHP vollständig.
Irgendwie ist der Vergleich "sinnlos". Du kritisierst, dass JS kein OOP (deiner Meinung nach) hat, und suchst dann eine Sprache heraus, die auch "nichtmal vollständig" OOP kann. Wie definierst du vollständiges OOP? Denn imho würde auch Java oder C++ das nicht erfüllen, da es noch immer primitive Datentypen gibt.


Mercsen schrieb:
gibt es denn benchmarks die mal eindrucksvoll zeigen das dart schneller ist als ein vergleichbares JS programm? Hatte mit der perfomance noch nie probleme.
Nein, und ich bezweifle, dass Dart soviel schneller ist. Die Google V8 JavaScript-Engine ist schon verdammt stark optimiert und lässt viele Sprachen hinter sich. Selbst Googles Go ist langsamer als die V8 Engine, und Go ist statisch typisiert.
 
@ mercsen:

Zu deiner Frage von oben, du hast dynamische Typisierung. Somit ist folgendes möglich:

var number = 42;
var text = "bob";

int number = 42;
String text = "bob";

Aber eben optional. Zur Verfügung stehen int, double, String, boolean sowie List und Map. In jedem Falle sind 1 und "1" aber nicht das gleiche wie boolsches true.

Mein Eindruck und zur Frage, was Dart besser macht als JS: Wenn man mal von Geschmacksfragen absieht, dann macht Dart eigentlich alles besser. Klingt jetzt "biased", aber wenn man darüber reflektiert, dann ist das ja auch nicht verwunderlich bei einer Sprache, welche erst 2011 entwickelt wurde mit explizitem Abschauen bei Java, Javascript, C#.

Es ist relativ streng objekt-orientiert, alles beginnt in main() und nicht an beliebiger Stelle. Vergleichbare Funktionalitäten wie aus jQuery sind von Haus aus dabei und intuitiv bedienbar. Man hat viele nützliche Klassen wie einen fertigen StringBuilder (nur ein Beispiel von vielen), ohne umständlich Arrays joinen zu müssen wie in JS. Im Zusammenhang mit der optionalen Typisierung hat man echte Generics zur Verfügung. Man kann Operatoren überladen. Im Zusammenhang mit nebenläufigkeit hat man das relativ moderne Konzept der isolates zur Hand. Für getter und setter gibt es extra Keywords wie in C#. Einen Setter würde man also nicht mehr so aufrufen "obj.setValue(x)" sondern "obj.value = x". Programmierte Libraries werden explizit als solche markiert und können an anderer Stelle modular über ein Keyword eingebunden werden.

Desweiteren gibt es noch an allen Ecken und Enden kleine nützliche Sachen, die für sich alleine jetzt niemanden vom Hocker hauen, aber halt das ganze noch schön abrunden. Beispielsweise aus C# das auto escapen von Strings: String x = @"Das hier ist ein backslash -> \ <-, ohne dass man ihn escapen müsste".

Zur Geschwindigkeit: nein, da wird keine große Lücke zu JS sein, das ist kein Argument für Dart. Am Anfang war mal die Idee da, Dart-Code in einer Art Zwischencode (ala .NET CIL oder Java Bytecode) zum Client zu schicken, aber das wurde aus Sicherheitsgründen verworfen.
 
Zuletzt bearbeitet:
Simple Man schrieb:
Naja, man kann ja gemütlich mit Knopfdruck von Dart in optimierten JavaScript code kompilieren.
Was bringts dir, wenn du dafür da Rad permanent neu erfinden musst? Wenn es irgendwann in einigen Jahren für Dart Bibliotheken wie jQuery und Mootools gibt, die mir Arbeit abnehmen, dann wird die Sprache interessant.
Oder um es anders zu sagen: Ich werde dafür bezahlt, Probleme zu lösen. Kein Kunde bezahlt den Mehraufwand, den man mit Dart betreiben muss. Wenn ich in JS ein Akkordeon für Inhalte benötige, dann binde ich Mootools ein, erzeug ein Objekt der Klasse, wende es auf das passende DOM-Element an, fertig. Das sind keine 20 Zeilen Code. Dauert 10 Minuten.

Mercsen schrieb:
@Daaron: Ich habe mich mal auf 90% beschränkt um nicht gleich wieder die leute auf die barikkaden zu rufen.... "IIIIIIIIICH habe JS immer aus" "Js ist gefährlich sollte man aus haben", du kennst das ;)
Klar kenn ich das. Aber Dummheit und Paranoia kann man in solchen Sachen getrost außen vor lassen. Die technischen Voraussetzungen sind vorhanden, darum gehts.

zu der syntax, ich kann dazu nur sagen das ich JS trotz seiner schwächen liebe. Kenne kaum eine sprache in der man sauberer (ok, ehr übersichtlicher) programmieren kann.
richtige OOP wäre wünschenswert, aber das kann ja nichtmal PHP vollständig.
Sauber coden geht in JS auch, man muss nur besser aufpassen ;)
Du willst nicht wirklich vollkommenes und erzwungenes OOP. Das sieht einfach nur eigenartig aus. Sowas ist total unhandlich.

gibt es denn benchmarks die mal eindrucksvoll zeigen das dart schneller ist als ein vergleichbares JS programm? Hatte mit der perfomance noch nie probleme.
Selbst wenn ein Dart-Programm 20% schneller als dasselbe in JS wäre: Was bringt es dir?
Wie oft hast du in JS bereits Anwendungen geschrieben, die dein Ziel-Gerät schlichtweg überfordert haben? Wie oft hat dein Dropdown-Menü geruckelt? Wie oft hast du beim Drag&Drop n Lag gehabt?
Ist ja immer wieder herzallerliebst, wenn z.B. ein neuer Chrome ein Script 1-2ms schneller als n IE9 ausführt... aber wen kratzt das?
 
die benchmarks würden mir keinen praktischen nutzen bringen, besonders nicht wenn es rein synthetische sind, aber ich mag statistiken ;)

Da ich als java entwickler angefangen habe stört mich hartes OOP nicht, musste auch mal Small Talk machen, da ist der rest ein witz gegen :D

nochmal zur typisierug:
Ich kann einer variablen also eien typ zu ordnen und den dann ohne cast einfach ändern? Aber das ja schon mal bissl war. Gibts sonst sowas wie typ hints? Polymorphie? bla bla egal, ich lese mich mal ein, ganz falsch klingt es nicht, ich habe mir aer mittlerweile so viele tools in JS selber geschrieben - die eben bekannte helfer aus java nachbauen - das ich da nicht mehr weg will.

Trotzdem danke, werde das mal weiter verfolgen und vlt. demnächst mal nen test starten :)

P.S.
sobald dart oder JS oder was ganz neues in der lage ist direkt mit php zu kommunizieren wechsel ich sofort! :D
 
Zuletzt bearbeitet:
Gibts doch nennt sich Ajax oder JsonRPC, was anderes wird es nicht geben, wofür auch. Mit RPC hast du schon PHP und JavaScript verbunden ohne dass du beim Programmieren noch einen Unterschied siehst. Oder Backbone.js mit seiner REST-Speicherung.
 
PHP ist nun einmal eine Sprache primär für Webserver, die stur auf Request-Response setzt. JS ist hingegen PRIMÄR clientseitig und eventgesteuert. Mehr als eine REST-ful API kriegt man da kaum hin, braucht man aber auch nicht.

Wenn man mal richtig coole Client-Server - Kommunikation über JS erleben will, dann muss man sich einen NodeJS-Server aufsetzen. Eventgesteuerte asynchrone Webserver sind interessant.
 
Dart kann man sowohl im clientbrowser als auch auf dem Server laufen lassen. Die Benchmarks würde ich die nächsten paar Monate nicht beachten, denn die Sprache ist ja noch im tech. preview. Es soll erst die Funktionalität vorhanden sein, dann wird optimiert. Das Wissen von der V8 Entwicklung wird da sicher nicht schaden.

Erfahrene und fähige JavaScript Entwickler wird man nicht hinter dem Offen locken können, aber C# oder Java Entwickler werden das cool finden.
 
Zurück
Oben