Dart allgemein


... [ Seminar Programmiersprachen und Sprachsysteme ] ... [ Google's Dart ] ... [ Inhaltsverzeichnis >> ] ...

Übersicht: Dart allgemein


Warum entwickelt Google Dart?

Die Web Apps werden heute immer größer und Komplexer, wodurch es immer schwerer wird Performante Apps zu erstellen. Ohne guter Abstraktion und Semantik entsteht Komplexer und unübersichtlicher Quellcode, dass immer schlimmer wird, wenn das Projekt wächst. Die erste Version von JavaScript entstand 1995, als man gar nicht auf die Idee kam damit Komplexe Webanwendungen zu machen. Man hat JavaScript dazu benutzt um Popup Fenster zu erscheinen oder den Inhalt eines Input-Tags auszuwerten. Für große Ideen war die Leistung der meisten Rechner einfach zu schwach. Alleine GMail hatte 2010 schon 443.000 Lines Of Code und zusätzlich dazu 535.000 Zeilen Kommentar.. Google hat schon viele Web Anwendungen mit JavaScript erstellt, wie Google -Gmail, -Maps, -Drive, -Docs, -Books, -Calender, usw.
Und der Aufwand das alles mit JavaScript zu machen ist einfach viel zu groß.
[ nach oben ]



Probleme mit JavaScript

keine Namenräume

In JavaScript gibt es keine Import Anweisungen mit denen man sein Quellcode modularisieren bzw. organisieren kann. Einen anderen JavaScript Quellcode in sein eigenes einzubinden geht also nicht von der Sprache aus ohne zu tricksen (z.B. mithilfe von AJAX, JQuery oder mehreren Script-Tags in HTML). Sein Quellcode zu modularisieren wird besonders wichtig, wenn das Programm immer größer wird. Wenn man eine Funktion in JavaScript erstellt und irgendwo eine andere Funktion mit den gleichen Namen, dann wird die zuletzt interpretierte Funktion genommen und die andere ignoriert.

Dart löst das Problem mithilfe von Libraries und Namensraumen. Man kann Bibliotheken erstellen und sie Importieren. Man kann auch Namensraume definieren für den fall das ein Quellcode eingebunden wird der die gleichen Namen (z.B. für Klassen, Funktionen, usw.) beinhalten. Viele Bibliotheken in JavaScript umgehen dieses Problem z.B. im dem sie alle verfügbaren Funktionen nur über ein Objekt erreichbar sind. Z.B. in der JQuery-Library über "JQuery".

keine Sichtbarkeits Kontrolle

Eine weiteres wichtiges Konzept aus den Objektorientierten Sprachen ist die Sichtbarkeits Kontrolle die besonders bei großen Programmen wichtig ist. In Sprachen wie C++ und Java kann man Membar-Variablen und Methoden also Public, Private oder Protected definieren. So kann man steuern welche Elemente der Benutzer z.B. einer Klasse benutzen darf und welche nicht bzw. welche Elemente für die Unterklassen Sichtbar sind und welche nicht. In JavaScript ist auch das nur durch unübersichtliches tricksen möglich z.B. mithilfe von inner Funktions.

Dart löst das Problem in dem es einfach die Sichtbarkeits Kontrolle einführt. In Dart gibt es Public und Private.

kein Typsystem

In JavaScript ist alles dynamisch. Man kann also z.B. aus einen Funktionskopf nicht erkennen von welchen Typ die Parameter sind bzw. sein sollen. Viele mögen die dynamische Freiheit und viele wiederum nicht. Wenn jedoch der Quellcode immer und immer großer wird und man in die Interfaces der anderen Leute schaut, dann kann es schwer sein, wenn man nicht auf Anhieb erkennt was z.B. eine Funktion an Variablen/Objekten erwartet. Google hat mit JavaScript schon sehr große Projekte umgesetzt. Um Fehler zu vermeiden haben sie Programmierrechtlinien erstellt wo man z.B. bei einer Funktion im Kommentar notieren muss zum welchen Typen die Parameter gehören und welchen Rückgabewert die Funktion liefert.

Auch das Problem hat Google gelöst in dem es ein Typ System einer etwas besonderen Art eingeführt. So wird wird aus der Signatur einer Methode schneller klar was sie macht.
[ nach oben ]



Was Google mit Dart erreichen will

Google möchte das Internet besser machen, indem sie eine Plattform für die Webentwickler erstellen die das Entwickeln von Websites vereinfacht. Da Google selber sehr viel Erfahrung mit Webentwicklung und JavaScript hat, wissen sie wo sie anknüpfen müssen. Google will, dass die Web Entwicklung praktischer ist und leichter zu erlernen, weil JavaScript leider ein Problem für neue Entwickler darstellt. Vieles was JavaScript macht geschickt im Hintergrund und um viele anderen Sachen zu erreichen muss man viele tricks anwenden, da die Sprache sehr vieles nicht direkt kann. Die Apps sollen auch schnell laden. Bei jedem (neu)laden einer Seite wird der ganze JavaScript Code immer neu geparst. Das ständige parsen und Kompilieren des Codes kostet Zeit und Leistung.

Google hat also Dart entwickelt um die vielen schwächen die JavaScript hat zu beseitigen. Dart konzentriert sich auf Zwei Hauptpunkte: bessere Performance, da eine strukturierte Sprache besser zu optimieren ist und bessere Produktivität mithilfe von Bibliotheken, Typen die die API verständlicher machen und einfacher zu benutzen ist, sowie viele Tools die bei der Entwicklung helfen z.B. mit Debuggen. Das Allgemeine Ziel von Google ist also: Web Entwicklern zu helfen Komplexe und sehr Performance Client Apps zu erstellen für das Moderne Internet.
Google zieht also hier eine Grenze und beschränkt sich nur auf die modernen Techniken. Alte Browser z.B. werden nicht mehr unterstützt.
[ nach oben ]



Das Dart Team

Eins der Besonderheiten an Dart sind unteranderem die Entwickler die am Dart arbeiten. Viele der Entwickler von der JavaScript-Engine V8 arbeiten jetzt am Dart Projekt.
Die wichtigsten Zwei Persönlichkeiten sind:

Lars Bak

Lars Bak ist ein Virtual Maschine Entwickler. Er Leitete das Hotspot Team und entwickelte eine sehr leistungsfähige Java Virtual Maschine. Er war auch der Hauptentwickelter der Open Source V8 JavaScript Virtuelle Maschine das für den Google Chrome Browser entwickelt würde. Außerdem besitzt Lars Bak 18 US-Patente im Bereich der Virtual Maschines. Lars Bak ist also ein erfahrener VM Entwickler der für Google arbeitet und seine Erfahrung wird dem Dart Projekt sicherlich gewisse Vorteile bringen.

Gilad Bracha

Gilad Bracha ist ein "Computational Theology", was so viel bedeutet wie, dass er an den Spezifikationen von der Java Programmiersprache und an der Java Virtuelle Maschine gearbeitet hat. Er hat also Java populär gemacht. Seine Interessen sind Objektorientierte sprachen und Typsysteme was in Dart am besten zum Vorschein kommt.
[ nach oben ]


... [ Seminar Programmiersprachen und Sprachsysteme ] ... [ Google's Dart ] ... [ Inhaltsverzeichnis >> ] ...