9 hochmoderne Programmiersprachen, die es wert sind, jetzt gelernt zu werden

Die großen Sprachen sind aus einem Grund beliebt: Sie bieten eine riesige Basis an Open Source-Code, Bibliotheken und Frameworks, die das Beenden der Arbeit erleichtern. Dies ist das Ergebnis jahrelanger Dynamik, in der sie immer wieder für neue Projekte ausgewählt werden und das Fachwissen in ihren Nuancen sich lohnt und reichlich wächst.

Manchmal reichen die enormen Ressourcen der gängigen Mainstream-Programmiersprachen nicht aus, um Ihr spezielles Problem zu lösen. Manchmal muss man über das Offensichtliche hinausschauen, um die richtige Sprache zu finden, bei der die richtige Struktur den Unterschied ausmacht und gleichzeitig diese zusätzliche Funktion bietet, mit der Ihr Code ohne endlose Optimierungen und Optimierungen erheblich schneller ausgeführt werden kann. Diese Sprache erzeugt einen wesentlich stabileren und genaueren Code, da Sie keinen schlampigen oder falschen Code programmieren können.

Die Welt ist voller tausender cleverer Sprachen, die nicht C #, Java oder JavaScript sind. Einige werden nur von wenigen geschätzt, aber viele haben blühende Gemeinschaften, die durch eine gemeinsame Liebe zur Fähigkeit der Sprache verbunden sind, bestimmte Probleme zu lösen. Es gibt vielleicht nicht zig Millionen Programmierer, die die Syntax kennen, aber manchmal ist es sinnvoll, Dinge ein wenig anders zu machen, da sich das Experimentieren mit einer neuen Sprache für zukünftige Projekte erheblich auszahlen kann.

Die folgenden neun Sprachen sollten auf dem Radar jedes Programmierers stehen. Sie sind möglicherweise nicht für jeden Job die besten - viele sind auf spezielle Aufgaben ausgerichtet. Aber sie alle bieten Vorteile, die es wert sind, untersucht und investiert zu werden. Es kann einen Tag geben, an dem sich herausstellt, dass eine dieser Sprachen genau das ist, was Ihr Projekt - oder Ihr Chef - benötigt.

Kotkin: Java überdacht 

Java ist eine großartige Sprache, die einige der beliebtesten Plattformen aller Zeiten unterstützt, aber sie wird etwas alt und die Schwachstellen werden etwas zu bekannt. Kotlin ist das Gehirnkind des JetBrains-Teams in Russland, das uns wundervolle IDEs wie IntelliJ gebracht hat. Kotlin soll schnell kompilieren, mit Java koexistieren und einige der schlimmsten Probleme beheben, die die Zeit der Java-Entwickler in Anspruch nehmen. 

Der beste Teil kann die Aufmerksamkeit sein, die nullbaren Werten geschenkt wird, dem Fluch aller objektorientierten Programmierer. Wenn Sie der Meinung sind, dass die Hälfte Ihres Codes nach Nullwerten sucht, haben die Kotlin-Entwickler Ihre Schreie gehört. Kotlin unternimmt einen großen Schritt zur Lösung dieses Problems, wenn auch nicht ein für allemal, dann zumindest die meiste Zeit, indem Entwickler gezwungen werden, die Variablen, die möglicherweise null sind, explizit aufzurufen. Dann wird automatisch nach den schlimmsten Fehlern gesucht, die wir mit ihnen machen können. 

Kotlin wurde für die Arbeit mit vorhandenem Java-Code entwickelt und ist daher eine gute Option für Teams, die eine Codebasis schrittweise verbessern möchten. Es wird auch bis zu JavaScript oder nativem Code kompiliert, wenn Sie dies benötigen. Google hat den Wert der Sprache erkannt und jetzt werden Android-Entwickler, die Kotlin verwenden möchten, gut unterstützt. 

Diese vorsichtige Strategie hat sich als beliebt erwiesen, da das Team die Sprache langsam übernehmen kann. Die Kotlin-Gruppe hat viele Fans in großen Entwicklungsteams bei großen Banken, Beratungsgruppen und App-Firmen gewonnen. 

Erlang: Funktionale Programmierung für Echtzeitsysteme

Erlang begann tief in den gruseligen Bereichen der Telefonschalter bei Ericsson, dem schwedischen Telekommunikationsunternehmen. Als die Programmierer von Ericsson damit begannen, mit ihrer Leistung von neun Neunern zu prahlen, indem sie 99,9999999 Prozent der Daten mit Erlang lieferten, wurden die Entwickler außerhalb von Ericsson aufmerksam.

Erlangs Geheimnis ist das funktionale Paradigma. Der größte Teil des Codes muss in einer eigenen kleinen Welt arbeiten, in der der Rest des Systems nicht durch Nebenwirkungen beschädigt werden kann. Die Funktionen erledigen ihre gesamte Arbeit intern und laufen in kleinen „Prozessen“ ab, die sich wie Sandkästen verhalten und nur über E-Mail-Nachrichten miteinander kommunizieren. Sie können nicht einfach einen Zeiger greifen und den Status an einer beliebigen Stelle im Stapel schnell ändern. Sie müssen innerhalb der Anrufhierarchie bleiben. Es kann etwas mehr Nachdenken erfordern, aber es ist weniger wahrscheinlich, dass sich Fehler verbreiten.

Das Modell macht es auch für Laufzeitcode einfacher, zu bestimmen, was gleichzeitig ausgeführt werden kann. Da die Parallelität so einfach zu erkennen ist, kann der Laufzeitplaner den sehr geringen Aufwand beim Einrichten und Herunterfahren eines Prozesses nutzen. Erlang-Fans geben gerne damit an, 20 Millionen „Prozesse“ gleichzeitig auf einem Webserver auszuführen.

Wenn Sie ein Echtzeitsystem ohne Platz für gelöschte Daten erstellen, z. B. ein Abrechnungssystem für einen Mobiltelefonschalter, sollten Sie Erlang ausprobieren.

Go: Einfach und dynamisch

Google war nicht die erste Organisation, die die Sammlung von Sprachen untersuchte, nur um festzustellen, dass sie überladen, komplex und oft langsam sind. Im Jahr 2009 veröffentlichte das Unternehmen seine Lösung: eine statisch typisierte Sprache, die wie C aussieht, aber Hintergrundinformationen enthält, um Programmierern zu ersparen, Typen anzugeben und Malloc-Aufrufe zu jonglieren. Mit Go können Programmierer die Knappheit und Struktur von kompiliertem C sowie die einfache Verwendung einer dynamischen Skriptsprache nutzen.

Während Sun und Apple bei der Erstellung von Java bzw. Swift einen ähnlichen Weg eingeschlagen haben, hat Google mit Go eine deutlich andere Entscheidung getroffen: Die Entwickler der Sprache wollten Go "einfach genug halten, um es im Kopf eines Programmierers zu halten". Rob Pike, einer der Schöpfer von Go, sagte gegenüber Ars Technica: "Manchmal kann man auf lange Sicht mehr erreichen, wenn man Dinge wegnimmt." Daher gibt es nur wenige flippige Extras wie Generika, Typvererbung oder Zusicherungen, nur saubere, einfache Blöcke von Wenn-Dann-Sonst-Code, der Zeichenfolgen, Arrays und Hash-Tabellen manipuliert.

Die Sprache ist Berichten zufolge in Googles riesigem Imperium gut etabliert und gewinnt an anderen Orten Akzeptanz, an denen Liebhaber dynamischer Sprachen von Python und Ruby dazu gebracht werden können, einen Teil der Strenge zu akzeptieren, die von einer kompilierten Sprache herrührt.

Wenn Sie als Startup versuchen, die Aufmerksamkeit von Google auf sich zu ziehen, und eine serverseitige Geschäftslogik erstellen müssen, ist Go ein guter Ausgangspunkt.

OCaml: Komplexer Datenhierarchie-Jongleur

Einige Programmierer möchten die Typen ihrer Variablen nicht angeben, und für sie haben wir die dynamischen Sprachen erstellt. Andere genießen die Gewissheit, anzugeben, ob eine Variable eine Ganzzahl, eine Zeichenfolge oder möglicherweise ein Objekt enthält. Für sie bieten viele der kompilierten Sprachen die Unterstützung, die sie wollen.

Dann gibt es diejenigen, die von ausgefeilten Typhierarchien träumen und sogar davon sprechen, „Algebren“ von Typen zu erzeugen. Sie stellen sich Listen und Tabellen heterogener Typen vor, die zusammengeführt werden, um komplexe, mehrstufige Datenextravaganzen auszudrücken. Sie sprechen von Polymorphismus, Musteranpassungsprimitiven und Datenkapselung. Dies ist nur der Anfang der komplexen, stark strukturierten Welt der Typen, Metatypen und Metametatypen, die sie sich wünschen.

Für sie gibt es OCaml, eine ernsthafte Anstrengung der Programmiersprachen-Community, viele der oben genannten Ideen bekannt zu machen. Es gibt Objektunterstützung, automatische Speicherverwaltung und Geräteportabilität. Es gibt sogar OCaml-Apps im App Store von Apple.

Ein ideales Projekt für OCaml könnte darin bestehen, eine symbolische Mathematik-Website zum Unterrichten von Algebra zu erstellen.

TypeScript: JavaScript, das Ihnen gefällt

Jeder kann JavaScript verwenden, aber niemand scheint es zu mögen, darin zu programmieren. Zumindest scheint es so, weil heute jeder seinen bevorzugten Vorprozessor oder Superprozessor hat, der die Sprache erweitert und verbessert. TypeScript ist der aktuelle Favorit, da es allen Variablen Typen hinzufügt, wodurch sich die Java-Programmierer etwas sicherer fühlen.

Der Hauptgrund, warum sich jetzt mehr Entwickler für TypeScript interessieren, ist Angular, ein großartiges Framework zum Erstellen von Webanwendungen, das zufällig in TypeScript geschrieben ist. Die interessante Falte ist, dass Sie TypeScript nicht verwenden müssen, um Angular zu verwenden. Sie können die Qualität des Codes genießen und ihn mit Ihrem alten JavaScript zusammenführen. Sie müssen nicht wählen.

Der Grund ist, dass TypeScript eine Obermenge von JavaScript ist. Die Entwickler fügten die Eingabe auf eine Weise hinzu, die gut mit altmodischem JavaScript funktioniert. Dies ist sehr nützlich, wenn es Leute im Büro gibt, die die Idee von Typen nicht mögen oder dogmatische Meinungen darüber haben, wie Typen ihren Stil einschränken. Die Typen sind effektiv optional und die Personen, die Zeit für die Angabe der Typen investieren, können die Belohnungen ernten. 

Starkes Tippen hat viele Vorteile, wie das frühzeitige Erkennen einiger Fehler und das Verbessern der allgemeinen Qualität von Werkzeugen. Durch das Hinzufügen von Typen können die intelligenten Editoren Sie bei der Erstellung Ihres Meisterwerks mit intelligenten Vorschlägen unterstützen. Die Code-Vervollständigung ist viel schneller und genauer, wenn die Code-Vervollständigungsroutinen etwas über die Funktionen und Argumente wissen. Das bedeutet weniger Bewegung der Finger auf der Tastatur. Die TypeScript-Liebhaber sind sich sicher, dass solche Vorteile jeden anlocken werden, der sich für die Macht einer stark entschlossenen Sprache interessiert. 

Rust: Sichere und verwendbare Systemsprache

Die Front-End-Programmierer sind nicht die einzigen, die Spaß haben. Rust ist wie eine überholte Version von C mit viel polymorpher Typisierung unter der Haube. Es hat in den letzten zwei Jahren in Folge die „beliebteste Programmiersprache“ der Stack Overflow-Wähler gewonnen, eine Ehre, die sich auch im Index der Sprachpopularität von Stack Overflow widerspiegelt. Noch vor wenigen Jahren schwebte Rust auf der Liste um die 50, und dieses Jahr stieg er auf 18. 

Warum? Vielleicht, weil Rust viele der knorrigen Probleme mit C beseitigt, ohne zu viel Handarbeit zu leisten oder darauf zu bestehen, dass die Entwickler virtuelle Zwangsjacken anziehen. Systemprogrammierer verlassen sich gerne nicht auf die Speicherbereinigung, ein großartiger Service, bis er genau zum unangemessensten Zeitpunkt einsetzt. Mit Rust fühlen Sie sich verantwortlich für das, was mit der Nummer im Speicher passiert, und warten nicht darauf, dass ein Dienst die Arbeit für Sie erledigt.

Das Typisierungssystem ist allgemein und flexibel und bietet die Art von Polymorphismus, die zumindest abstrakt von Haskell inspiriert ist. Wenn es implementiert ist, passt der Compiler die Struktur für jeden Typ an, was die Entwickler gerne als "Monomorphismus" bezeichnen. Die Sprache fügt ein paar andere Grenzen hinzu, um Entwickler davon abzuhalten, von den Schienen zu geraten. Jeder Wert ist beispielsweise "im Besitz" - was wirklich bedeutet, dass er nur einmal konsumiert werden kann, wodurch ein Wirrwarr von Referenzen aus anderen Teilen des Programms verhindert wird, die so tun, als hätten sie die volle Kontrolle über einen Wert.   

All diese Funktionen und ein paar weitere - wie z. B. rennbedingtes Threading - bedeuten, dass der neue Programmierer mit dem Schreiben von Systemcode beginnen kann, ohne auf einige der schlimmsten Anti-Patterns zu stoßen, die C-Programmierer seit langem belästigt haben. Mit einem Compiler, der viele der schlimmsten Fehler abfängt, bevor der Code überhaupt ausgeführt wird, erhalten Sie den ganzen Hardcore-Spaß beim Schreiben von C. 

Scala: Funktionale Programmierung auf der JVM

Wenn Sie die Code-Einfachheit objektorientierter Hierarchien für Ihr Projekt benötigen, aber das funktionale Paradigma lieben, haben Sie mehrere Möglichkeiten. Wenn Java Ihr Reich ist, ist Scala die Wahl für Sie.

Scala läuft auf der JVM und bringt alle klaren Designbeschränkungen der funktionalen Programmierung in die Java-Welt, indem Code bereitgestellt wird, der den Java-Klassenspezifikationen entspricht und mit anderen JAR-Dateien verknüpft ist. Wenn diese anderen JAR-Dateien Nebenwirkungen und andere zwingende böse Kopfschmerzen haben, dann sei es so. Ihr Code wird sauber sein.

Der Typmechanismus ist stark statisch und der Compiler erledigt die gesamte Arbeit, um Typen abzuleiten. Es gibt keinen Unterschied zwischen primitiven Typen und Objekttypen, da Scala möchte, dass alles von einem Ur-Objekt-Aufruf Any abstammt. Die Syntax ist viel einfacher und übersichtlicher als in Java. Scala-Leute nennen es "niedrige Zeremonie". Sie können Ihre absatzlangen CamelCase-Variablennamen in Java Land belassen.  

Scala bietet viele der Funktionen, die von funktionalen Sprachen erwartet werden, wie z. B. verzögerte Auswertung, Schwanzrekursion und unveränderliche Variablen, wurde jedoch für die Arbeit mit der JVM geändert. Die grundlegenden Metatypen oder Sammlungsvariablen wie verknüpfte Listen oder Hash-Tabellen können entweder veränderlich oder unveränderlich sein. Die Schwanzrekursion funktioniert mit einfacheren Beispielen, jedoch nicht mit aufwändigen, sich gegenseitig rekursiven Beispielen. Die Ideen sind alle da, auch wenn die Implementierung durch die JVM eingeschränkt sein kann. Andererseits bietet es auch die Allgegenwart der Java-Plattform und die umfassende Sammlung des vorhandenen Java-Codes, der von der Open Source-Community geschrieben wurde. Das ist kein schlechter Kompromiss für viele praktische Probleme.

Wenn Sie die Daten in einem Cluster mit tausend Prozessoren unter einen Hut bringen müssen und über einen Stapel alten Java-Codes verfügen müssen, ist Scala eine großartige Lösung.