Hello Dart: Einführung in die Programmierung (Deutsch)

Hintergrundinfos

Auf dieser Seite erkläre ich, weshalb ich so begeistert bin von Dart und ich diese Programmiersprache für Programmieranfänger wie auch für professionelle Programmierer empfehle.

Hello Dart bietet eine Einführung in die Programmierung mit Dart. Detaillierte technische Informationen finden Sie auf der Seite von Hello Dart auf GitHub.

Weshalb Dart?

Seit langem bin ich auf der Suche nach Programmiersprachen und Programmiertools, die folgende fünf Punkte erfüllen:

Anforderungen an die "optimale" Programmiersprache

  1. Macht Programmieranfänger glücklich
  2. Macht professionelle Programmierer glücklich und produktiv
  3. Läuft auf mobilen Plattformen: Android, iOS, Windows Phone
  4. Läuft auf dem Desktop: Windows, Mac OS, Linux
  5. Hat breite Einsatzmöglichkeiten: Interaktive Spiele, Animationen, Business-Applikationen, Client-Server-Applikationen, etc.

Natürlich gibt es nie die “perfekte” Programmiersprache für alle Anwendungsfälle. Aber eine Sprache, die die oben genannten Anforderungen zufriedenstellend erfüllt, wäre eine sehr gute Sprache für sehr viele Anwendungen.

Diesen Mix an Anforderungen kann meiner Meinung nach im Moment nur Dart erfüllen! Im folgenden Abschnitt versuche ich darzulegen, weshalb praktisch alle anderen Programmiersprachen an mindestens einem dieser fünf Punkte scheitern.

Mobile Applikationen

Sprachen: Java (Android), Swift/Objective-C (iOS), C# (Windows Phone)

Android, iOS und Windows sind die gängisten Plattformen für mobile Anwendungen. Jede der drei Plattformen hat ihre eigene Programmiersprache und Programmierumgebung. Schon das Entwickeln für eine der drei Plattformen ist anspruchsvoll. Aber wenn eine Applikation für zwei oder sogar drei dieser Plattformen programmiert werden soll, wird es für Anfänger viel zu komplex und auch für professionelle Entwickler sehr aufwändig und teuer.

Eine Native Mobile App läuft schliesslich auch nur auf Mobiltelefonen oder Tablets, aber nicht auf dem Desktop.

Desktop Applikationen

Sprachen: C#, Java, Python, Visual Basic, Pascal usw.

Diese etablierten und bewährten Programmiersprachen bieten alle recht gute Möglichkeiten, um graphische Benutzeroberflächen für den Desktop zu programmieren. Aber diese bleiben dann meistens auch auf dem Desktop und können kaum oder nur über komplexe Umwege auf mobile Plattformen gebracht werden. Ausserdem benötigen Desktopapplikationen oft eine umständliche Installation, bis sie verwendet werden können.

Daher wurden herkömmliche Desktopapplikationen in den letzten Jahren von den mobilen und webbasierten Applikationen immer mehr verdrängt.

Webbasierte Applikationen

Webbasierte Applikationen haben den Vorteil, dass sie sowohl auf Desktopbrowsern (Internet Explorer, Firefox, Chrome, Safari) als auch auf mobilen Browsern laufen. Damit wären also unsere Anforderungen Nr. 3 und 4 beide erfüllt.

Es gibt zwei grobe Kategorien von Sprachen für die Webentwicklung: serverseitige und clientseitige.

Serverseitige Webapplikationen

Sprachen: PHP, Ruby, Python, Java, C#, Visual Basic usw.

Bei diesen Programmiersprachen werden auf dem Webserver HTML-Seiten generiert, welche dann im Browser angezeigt werden können. Dies bedeutet, dass bei jeder Interaktion des Benutzers eine neue Anfrage an den Server geschickt werden muss, damit dieser wieder eine neue HTML-Seite generieren kann. Damit sind interaktive Spiele und Animationen mit serverseitigen Sprachen nicht möglich (Nr. 5).

Viele der serverseitigen Sprachen wurden ursprünglich nicht für die Webprogrammierung entwickelt. Erst später wurden diese Möglichkeiten hinzugefügt. Über die Jahre sind diese Sprache so stark gewachsen, dass sie immer komplexer wurden. Das heisst, es ist schwierig für Programmieranfänger (Nr. 1) und macht oft auch wenig Spass für professionelle Programmierer (Nr. 2).

Clientseitige Webapplikationen

Sprachen: JavaScript, TypeScript, CoffeeScript usw.

Clientseitige Webapplikationen sind der klare Trend. JavaScript ist die einzige Programmiersprache, welche von allen gängigen Browsern unterstützt wird. Es ist mit JavaScript möglich, ganze Webanwendungen zu schreiben, welche direkt in mobilen Browsern (Nr. 3) und Desktopbrowsern (Nr. 4) laufen können.

Leider ist JavaScript eine Programmiersprache mit schwierigen Konzepten und vielen Ausnahmefällen. Diese Hindernisse sind für Anfänger (Nr. 1) und für professionelle Programmierer (Nr. 2) sehr frustrierend.

Aus diesem Grund gibt es immer mehr Sprachen (z.B. TypeScript und CoffeeScript) und Tools (z.B. jQuery, AngularJS, Ember.js), die versuchen, die Probleme von JavaScript zu korrigieren.

Auch JavaScript selber wird weiterentwickelt (siehe ECMAScript 6). Viele Fehler der Vergangenheit werden aber nicht korrigiert werden können, da sonst die existierenden Webapplikationen nicht mehr laufen würden. Das heisst es kommt meist einfach mehr Funktionalität hinzu. Dies macht es für Programmieranfänger (Nr. 1) und Profis (Nr. 2) immer komplexer.

Dart

Dart ist für das Web gemacht und lässt sich direkt in JavaScript übersetzen. Somit laufen Dart-Anwendungen ohne zusätzliche Installation in allen modernen Desktopbrowsern (Nr. 4) und mobilen Browsern (Nr. 3).

Neben clientseitigen Webapplikationen (z.B. interaktive Spiele und dymanische Business-Apps) können auch Server-Applikationen mit Dart geschrieben werden. Somit sind die Einsatzmöglichkeiten enorm breit (Nr. 5).

Dart ist stark an die bekanntesten Programmiersprachen wie Java und C# angelehnt, ist aber konsistenter und eleganter. Das macht die Sprache einfach zu lernen für Umsteiger (Nr. 2) und viel einfacher für Programmieranfänger (Nr. 1).

Fast genauso wichtig wie die Programmiersprache selbst ist das, was rund um die Sprache zur Verfügung steht. Auch hier ist Dart enorm durchdacht und kaum eine andere Sprache bietet so einfache Programmiertools: Komfortable aber einfache Entwicklungsumgebung, keine komplizierte Installation, viele nützliche Bibliotheken, die nach bedarf automatisch vom Server heruntergeladen werden, etc.

Ganz einfach: Ich bin begeistert von Dart und ich denke, dass Dart noch viele Programmieranfänger und erfahrene Programmierer glücklich machen wird!

Fazit

Mobile Apps Desktop Apps Serverseitige Web-Apps Clientseitige Web-Apps Dart
Glückliche Anfänger (1)
Glückliche Profis (2)
Läuft auf Mobile (3)
Läuft auf Desktop (4)
Breite Einsatz­möglichkeiten (5)