In diesem Tutorial werde ich Ihnen die neue Web-Programmiersprache von Google, Dart, vorstellen und erläutern, warum es Ihnen gefallen sollte und was Sie darüber wissen sollten. Lernen Sie diese neue Sprache kennen und bilden Sie sich ein paar Meinungen dazu - ersetzt sie wirklich JavaScript?
Direkt aus dem mund des pferdes (das sich hier befindet):
Dart ist eine klassenbasierte, rein objektorientierte Programmiersprache mit einfacher Vererbung. Dart ist optional getippt ... und unterstützt reified generics und schnittstellen.
Dart-Programme können statisch überprüft werden. Der statische Checker wird Bericht erstatten
einige Verstöße gegen die Typregeln, aber solche Verstöße brechen die Kompilierung nicht ab
oder die Ausführung ausschließen.
Wenn das ein großartiger, dampfender Haufen Hokuspokus für Sie ist, erlauben Sie mir, das Obige umzurechnen.
Klassenbasiert: Dart erwartet, dass Sie Klassen verwenden. Während JavaScript irgendwie klassenbasiert ist, können Sie Dart nicht schreiben, ohne Klassen zu schreiben.
Einzelvererbung: Klassen können andere Klassen erweitern, jedoch jeweils nur eine. Dies ist eine übliche Struktur in der objektorientierten Programmierung. In seltenen Fällen wird die Mehrfachvererbung unterstützt, der allgemeine Konsens besteht jedoch darin, dass dies mehr Probleme verursacht, als es löst, weshalb sich die meisten OOP-Sprachen für die Einzelvererbung entscheiden.
Objektorientierte Programmiersprache: Diese Anweisung ist angesichts des "klassenbasierten" Bits von vorhin etwas redundant. Aber es ist bezeichnend: Dart ist durch und durch OOP. Tatsächlich erinnert es eher an Java (nicht an JavaScript; Java), das auch klassenbasiert ist.
Optional getippt: Die meisten Sprachen sind entweder geschrieben oder nicht. JavaScript zum Beispiel nicht. Wenn Sie eine Variable definieren, wird sie nicht typisiert. Sie können es auf ein setzen String
, dann zu einem Nummer
, und niemand wird sich beschweren (gut, ich werden). Außerdem können Sie anrufen Array
Methoden für diese Variable, und Sie werden keine Probleme haben, bis Sie diese Codezeile tatsächlich ausführen. Im Gegensatz dazu wird Java eingegeben. Jede Variable muss mit einem Typ deklariert werden, z String
oder int
. Wenn eine Variable eingegeben wird, können Sie keinen anderen Werttyp hinzufügen. Wenn Sie versucht haben, eine Methode aufzurufen, die auf diesem Typ nicht vorhanden ist, gibt der Compiler einen Fehler aus, der Sie über den Fehler informiert, bevor Sie den Code ausführen. C und seine Varianten sind andere typisierte Sprachen, während Ruby und Python andere nicht typisierte Sprachen sind.
Optional bedeutet Tipp, wie Sie jetzt vermuten, dass Sie die Option haben, einen Typ für Variablen zu deklarieren. So einfach ist das: Sie können den Typ deaktiviert lassen und der Compiler führt keine zusätzlichen Prüfungen durch. Wenn Sie einen Typ angeben, hilft Ihnen der Compiler bei Fehlern. ActionScript ist ein Beispiel für eine andere optional eingegebene Sprache.
Dies ist ein ziemlich kluger Schachzug, der wahrscheinlich die Akzeptanz beschleunigen soll. Dart-Programmierer werden höchstwahrscheinlich JavaScript-Programmierer sein, die den Sprung machen. Durch die Unterstützung einer nicht typisierten Sprache wird JavaScriptern eine leichtere Lernkurve geboten, während eine Funktion, auf die viele Programmierer bestehen, für eine ernsthafte Programmierung unerlässlich ist, die zu einem späteren Zeitpunkt abgerufen werden kann.
Verifizierte Generika: Generics sind eine Sprachfunktion, mit der Sie die Elemente einer Sammlung eingeben können. Zum Beispiel ein Array
In JavaScript kann nicht garantiert werden, dass es sich bei den darin enthaltenen Objekten um einen bestimmten Typ handelt (abgesehen davon, dass JavaScript keine typisierte Sprache ist). Generics ermöglichen es jedoch, dass Sie jedes Element in einem angeben Array
- oder einen anderen Sammeltyp - muss von einem bestimmten Typ sein, möglicherweise a String
. Wenn Sie also versuchen, eine Nummer
in die Array
, Sie können Warnungen bekommen. ReifiEd-Generics gehen einen zusätzlichen Schritt und geben dieser Art Sicherheit an dem Compiler vorbei. Die Typintegrität zur Laufzeit bleibt erhalten.
Schnittstellen: Eine Schnittstelle ist eine praktische objektorientierte Technik. Es definiert einen Typ ohne die Funktionalität zu definieren. Ihre Verwendung ist schwer in einem Satz oder in zehn Worten zusammenzufassen, es reicht aus, um zu sagen, dass sie für fortgeschrittene (und saubere) objektorientierte Programmiertechniken (nämlich Entwurfsmuster) unabdingbar sind. Wenn Sie sich erst einmal um Schnittstellen gekümmert haben, beklagen Sie das Fehlen dieser Schnittstellen in anderen Sprachen.
Statisch geprüft: Dies geht auf die Schreibsache zurück. Wenn der Typ verwendet wird, wird eine Variable mit einem Typ als "statisch typisiert" bezeichnet. Daher kann der Typ nicht mehr geändert werden, nachdem er deklariert wurde. Dadurch kann der Compiler (oder "statische Prüfung") Annahmen über Ihre Absichten in Ihrem Code treffen. Das heißt, wenn Sie eine Variable als deklarieren String
, dann solltest du nicht anrufen changeTimeZone
darauf Wenn ja, haben Sie vielleicht was eingegeben habe gedacht war diese Variable die Datum
object), kann der Compiler Sie auf den Fehler hinweisen, ohne den Code ausführen zu müssen.
Ja, ich musste die "offizielle" Erklärung von Dart liefern. Aber das kann Sie vielleicht nicht zufrieden stellen. Hier ist, was Dart für den typischen Webentwickler ist.
Dart ersetzt Google durch JavaScript. Es wurde im Oktober 2011 angekündigt, und die allgemeine Absicht besteht darin, dieselben Werkzeuge bereitzustellen, die JavaScript nur als Elektrowerkzeuge bietet. Wie im vorherigen Schritt erläutert, enthält es viele objektorientierte Funktionen, die der typische JavaScript-Programmierer nicht kennt. Die meisten Programmierer, die mit diesen Funktionen vertraut sind, werden sie jedoch als unverzichtbar für eine ernsthafte Entwicklung befürworten.
Kurz gesagt, Google ist der Ansicht, dass JavaScript nicht die Aufgabe hat, eine "echte" Programmiersprache zu sein, da es so schwer ist, seit das iPhone ein Loch in Flashs Zeppelin geschossen hat.
Googles Hoffnung ist, dass Dart langfristig von allen großen Browsern nativ unterstützt wird. Das ist offensichtlich nicht der Fall, da sich Dart selbst noch im frühen Release-Modus befindet und wir nicht erwarten können, dass Apple, Microsoft oder Mozilla noch an Bord sind. Was Dart jetzt jedoch lohnt, ist, dass Google einen Compiler für die Konvertierung von Dart-Code in normales JavaScript bereitgestellt hat.
Persönlich ist das etwas, nach dem ich mich seit Action zu Action-JavaScript gesehnt habe. Sagen Sie, was Sie über Flash wollen (und seien Sie versichert, ich habe es wahrscheinlich auch gesagt), aber ActionScript 3 ist eine gute Sprache. Der Übergang vom fortgeschrittenen AS3 zu JavaScript führt nachweislich zu einem Fluchen. Ich habe tatsächlich mit meinem eigenen JavaScript-Compiler gespielt (ich bin nicht sehr weit gekommen und bin sehr glücklich, das Projekt aufzugeben), und ich wollte etwas, das mich zumindest mit ein paar netten Sachen, wie echten Klassen, Schnittstellen und Typen, entwickeln könnte , auch wenn es zu nicht typisiertem, prototypischem JavaScript kompiliert wurde. Der Kompilierungsprozess kann einige Fehler abfangen, bevor Sie das Projekt ausführen, was eine erhebliche Zeitersparnis bedeutet.
Unabhängig davon, ob Google sich durchgesetzt hat oder nicht, es ist sicherlich möglich, heute Dart-Projekte für das Web zu schreiben, und genau das tun wir am Ende dieses Tutorials. Hoffentlich werde ich Sie auf dem Weg davon überzeugen, dass Dart wirklich vielversprechend ist.
Jetzt, da Sie alle über "JavaScript 2.0" begeistert sind, jetzt für die harte Wahrheit. Nur Google plant die Unterstützung für Dart in seinem Browser. Daran hat noch niemand Interesse gezeigt. In der Tat sind einige Aussagen gemacht worden gegen Dart oder zumindest die Idee, Dart nativ zu unterstützen, von den Browserherstellern selbst.
Und während sich Dart-Projekte in JavaScript kompilieren lassen, ist in diesem Prozess zwangsläufig ein gewisser Aufwand erforderlich. Der Dart-Compiler ist nicht ganz wie der CoffeeScript-Compiler, der eher ein Eins-zu-Eins-Prozess ist. Dart ist eine eigene Sprache mit Bibliotheken und solchen. Beim Kompilieren in JavaScript kompiliert er folglich zusätzlichen Bibliothekscode in das resultierende JavaScript. Dies wiegt derzeit mehr als eine Bibliothek wie jQuery. Dies wird sich zwangsläufig ändern, wenn das Dart-Team die Kompilierung verfeinert, aber im Grunde ist es eine jQuery-ish-Bibliothek, die zur Normalisierung der Browser-Unterschiede erforderlich ist, und zusätzlich ein wenig "Zucker", um JavaScript etwas dynamischer zu machen. Diese Art von Zusatzgewicht ist nicht so schlimm, aber wenn Sie ein einfaches UI-Widget für eine mobile Website erstellen, ist Dart möglicherweise nicht die beste Wahl. Größere Webanwendungen, die auf bedeutendes JavaScript angewiesen sind, werden dies mehr zur Geltung bringen.
Zuletzt befindet sich Dart derzeit in der Entwicklung. Das ist aufregend und mit Dart per se nichts "Falsches", aber wenn Sie jetzt mit der Entwicklung in Dart beginnen, besteht eine gewisse Chance, dass sich die API ändert oder dass die Dinge nicht vollständig oder richtig dokumentiert werden und wie viel Informationen im Web sind weniger als etwa die Menge, die Sie über jQuery finden können. Es blutet am Rand, und das ist möglicherweise nicht für Sie oder für ein bestimmtes Projekt.
Zur gleichen Zeit blutet der Rand und das ist großartig. Wenn Sie jetzt etwas Zeit investieren, um zu lernen, wie Dart sich an einem schönen Ort befindet, sobald Dart stabiler ist. Wenn Sie jetzt mitmachen, haben Sie sogar die Möglichkeit, die Sprache mitzugestalten. In der Dart-Mailingliste in Google Groups gibt es häufig Hin- und Herbewegungen zwischen Ideengebern und Google-Ingenieuren, die auf diese Idee reagieren. Häufig werden Ideen berücksichtigt, die von Benutzern eingebracht wurden, und es ist nicht ungewöhnlich, dass sie eingebunden werden.
Ich habe bereits die Vorteile einer typisierten, objektorientierten Sprache besprochen, und es versteht sich von selbst, dass diese Eigenschaften auch großartig sind.
Dart erinnert auch ziemlich an Java, und das sollte großartig sein, wenn Sie eher ein Java (oder C) -Programmierer sind, der in die Webentwicklung einsteigen möchte. Dart sollte einen besseren Übergang in diese Welt bieten als JavaScript.
Schließlich handelt es sich bei Dart nicht nur um einen JavaScript-Konkurrenten. Es ist eine völlig neue Sprache und ist bereit, überall hin zu laufen. Es wird auf der Serverseite, a la Node.js, verwendet und verspricht, ein weiteres weit verbreitetes Werkzeug wie Ruby oder Python zu sein.
Dies ist natürlich eine belastete Frage und ich würde eine kommentarbasierte Inquisition einladen, egal wie ich antworte. Aber ich werde antworten.
Sie interessieren sich wahrscheinlich schon oder nicht, je nachdem, wie sehr Sie von Darts Problemen gestört werden oder von Darts Vorteilen aufgeregt sind. Die vorherigen zwei Schritte geben Ihnen viele Informationen, die Sie zu Ihrem eigenen Ergebnis führen.
Wenn Sie der Typ von Person sind, der JavaScript programmieren möchte, um im Web nach jQuery-Plugins zu suchen und sie auf Ihrer HTML-Seite zu installieren, dann wird Dart Ihnen wahrscheinlich nicht viel Aufregung bieten. Fühlen Sie sich frei, sich nicht darum zu kümmern. Und ich möchte Ihnen eine Menge Zeit ersparen und offenbaren, dass ich den Rest dieses Tutorials auf die Annahme stütze, dass sich der Leser zumindest um sie kümmert.
Wenn Sie jedoch der Typ des Front-End-Entwicklers sind, der tatsächlich auf objektorientiertes JavaScript setzt, versucht, Fehler in Ihre Skripts zu integrieren, und tendenziell mehr JavaScript als HTML schreibt, dann ist dies möglicherweise der Fall ein Redneck Jemanden, der sich für eine gute Programmierung interessiert, unabhängig von der Sprache oder Plattform. In diesem Fall interessieren Sie sich vielleicht für Dart. Sie schulden es zumindest selbst, es auszuprobieren.
Meiner Meinung nach zeigt Dart viel Versprechen und hat einen Platz in der Webprogrammierung. Ich denke jedoch nicht, dass dies die Dominanz von JavaScript bei der Skripterstellung auf HTML-Seiten ersetzen oder sogar ganz ausgleichen wird. Ich denke, es wird einen Platz mit den ernsthafteren Webanwendungen finden, aber wenn die Browserhersteller (außer Google) nicht bereit sind, eine Dart-VM zu installieren - was ich nicht für wahrscheinlich halte -, ist das Schicksal von Dart für Chrome-Experimente und große Skalieren Sie Web-Apps. Einfache Skriptaufgaben, wie ein Schuss Interaktivität auf einer ansonsten statischen Seite, werden von Dart kaum profitieren.
Ich habe jedoch das Gefühl, es lohnt sich immer, Neues zu lernen. Sie können lernen, dass das Neue Ihre Zeit nicht wert ist, aber Sie sollten diese Meinung aus eigener Erfahrung durch Erfahrung formulieren. Wir werden in diesem Tutorial etwas Erfahrung vermitteln. Wenn Sie also abenteuerlustig sind, machen Sie sich bereit für Dart.
Diese kurze Diskussion über Dart hat hoffentlich Ihr Interesse an dieser neuen Sprache geweckt, die das Web vielleicht nicht erobern kann oder nicht. Wenn Sie es ausprobieren möchten, werfen Sie einen Blick auf mein Facebook-exklusives Tutorial, das Ihnen mit einem einfachen Dart-Projekt die Hände schmutzig machen wird.
(Wenn Sie nicht bei Facebook sind, machen Sie sich keine Sorgen. Das Tutorial wird irgendwann auf der Activetuts + -Seite erscheinen, und wir haben in der Zwischenzeit noch viel mehr Dart-Inhalte.
Danke fürs Lesen! Teilen Sie Ihre Meinung zu Dart in den Kommentaren mit.