Uploaded avatar of ErikSchierboom

Es ist Appy August!

@ErikSchierboom
vor Etwa 3 jahre
Video

Einleitung

Hallo. Willkommen. Ich hoffe, euch geht es allen gut. Ich hoffe, ihr hattet Spaß beim Erkunden einiger alter und einflussreicher Sprachen im Jurasic July. Jetzt geht es weiter mit Monat 8 des Jahres 2023 und unserem 7. Themenmonat: Appy August.

Was meinen wir mit Apps?

Nun, das kann verschiedene Dinge bedeuten:

  • Webanwendungen, die heute für viele von uns zum täglichen Brot gehören
  • Native Apps wie die, die auf deinem Handy oder Tablet laufen
  • Desktop-Apps, die direkt auf deinem Windows-, Mac- oder Linux-Betriebssystem laufen
  • Domänenspezifische Anwendungen
  • Business-Anwendungen
  • Und vieles mehr!

Und welche Sprachen sind es?

Wir schauen uns satte 14 Sprachen an: ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift und TypeScript.

Die Abzeichen

Hol dir das Abzeichen, indem du diesen Monat 5 Übungen in einer dieser Sprachen löst. Und für das Jahresabzeichen musst du Folgendes abschließen:

  • Anagramm: Finde zu einem Wort und einer Liste möglicher Anagramme die passenden Anagramme
  • Telefonnummer: Bereinige eine Telefonnummer
  • Dreieck: Klassifiziere ein Dreieck
  • RNA-Transkription: Wandle eine DNA-Sequenz in ihr RNA-Komplement um
  • Scrabble-Punktzahl: Ermittle zu einem Wort seine Scrabble-Punktzahl

Überblicke

ABAP

  • Entwickelt von der SAP SE in den 1980er-Jahren. Das Designziel wird klar, wenn man sich ansieht, wofür das Akronym stand: Allgemeiner Berichts-Aufbereitungs-Prozessor, auf Englisch „general report preparation processor“. Später wurde ABAP allgemeiner einsetzbar, und das Akronym wurde passend dazu zu Advanced Business Application Programming geändert
  • Stark und statisch typisierte Sprache
  • Multiparadigmatisch: unterstützt imperative und objektorientierte Programmierung
  • Wird zu Bytecode kompiliert. Interessanterweise wird der Quellcode in der Datenbank gespeichert
  • Der gesamte Code läuft im Kontext eines SAP-Systems, das aus einer relationalen Datenbank und einem oder mehreren Anwendungsservern besteht
  • Proprietäre Technologie und Closed Source, obwohl einer unserer Maintainer eine fantastische Open-Source-Neuimplementierung gebaut hat
  • Wird für Business-Anwendungen eingesetzt, etwa in Finanzen, Materialwirtschaft, Rechnungswesen und Management. Hat Kunden auf der ganzen Welt, mit vielen großen Namen wie Apple, Amazon und Walmart

Warum sie großartig ist

  • Wird ständig weiterentwickelt, regelmäßig kommen neue Funktionen hinzu
  • Zuverlässig: stabile Funktionalität mit jahrzehntelanger Erfahrung dahinter
  • Große Standardbibliothek

Herausragende Merkmale

  • Nahtlose Integration in das SAP-System und die Datenbank, aber auch in viele andere Systeme
  • Das ABAP Dictionary enthält alle Metadaten zu den Daten im SAP-System, darunter Tabellen, Views und Strukturen. Die Typen in diesem Dictionary lassen sich nutzen, um Variablen statisch zu typisieren, selbst wenn der Typ eine Tabelle ist
  • Die ABAP Workbench ist Teil des ABAP-Systems und enthält eine Sammlung von Werkzeugen zum Bearbeiten von Programmen. Dazu gehört auch das Entwerfen von Bildschirmen

CoffeeScript

  • Die Sprache erhielt ihre ersten Commits im Jahr 2009 von Jeremy Ashkenas. Die erste Commit-Nachricht trug den Titel „initial commit of the mystery language.“
  • Dynamisch typisiert und multiparadigmatisch (objektorientiert, imperativ, funktional, prototypisch)
  • Kompiliert zu JavaScript (bekannt als Transpiling). Die goldene Regel von CoffeeScript lautet: „It's just JavaScript.“ Eine der ersten erfolgreichen Sprachen, die „nach JS transpilieren“
  • Wurde populär, weil CoffeeScript einige der Probleme nicht hatte, mit denen JS-Entwickler damals zu kämpfen hatten (etwa dass die „this“-Bindung anders funktionierte oder dass Klassen nicht unterstützt wurden). Ab Version 3.1 war es in Ruby on Rails enthalten.
  • 2017 erhielt die Sprache Version 2.0, die sie auf Augenhöhe mit dem damals aktuellen JavaScript-Standard bringen sollte. Die Sprache wird etwa einmal im Jahr aktualisiert.
  • Der Compiler der Sprache war ursprünglich in Ruby geschrieben, wurde aber 2010 durch einen selbsthostenden Compiler ersetzt, der in CoffeeScript geschrieben ist (der Compiler hängt nicht von NodeJS ab und kann direkt im Browser laufen)
  • CoffeeScript war einflussreich, weil es JavaScript dazu inspirierte, bestimmte Features zu übernehmen (die Lambda-Pfeilsyntax, Klassen)
  • Wurde früher von Dropbox und in Rails verwendet

Warum sie großartig ist

  • Klare, prägnante Syntax, inspiriert von Python, Ruby und Haskell. Weniger ausführlich als JavaScript, viele runde und geschweifte Klammern entfallen, teilweise wegen der bedeutungstragenden Einrückung (Leerzeichen sind wichtig)
  • Vereinfachte Semantik, z. B. keine Verwirrung um let, var, const, da es sie nicht gibt, == wird zu === (strikte Gleichheit) transpiliert, und Funktionsbindungen verhindern typische „this“-Fehler
  • Ausdrucksbasiert, das heißt, du kannst das Ergebnis eines if-Ausdrucks einer Variable zuweisen
  • Viel syntaktischer Zucker, z. B. @ statt this, yes/on statt true, // für die abrundende Division, @ statt this und vieles mehr

Herausragende Merkmale

  • Kompiliert zu sauberem, für Menschen lesbarem JavaScript, mit einer Eins-zu-eins-Entsprechung zwischen Quell- und generiertem Code.
  • Hervorragende Interoperabilität mit JavaScript: Du kannst aus CoffeeScript heraus problemlos in JS geschriebenen Code verwenden (und umgekehrt). Verwende jede beliebige JS-Bibliothek
  • Fügt Features hinzu, die in JavaScript fehlen oder fehlten: Listenkomprehensionen, String-Interpolation, den Existenzoperator (?), verkettete Vergleiche
  • Kleine Sprache, der Compiler ist etwa 500 KB groß (100 KB gezippt)

Dart

  • Entworfen von Lars Bak und Kasper Lund bei Google
  • Erste Veröffentlichung 2011
  • Ziel war es, eine schnelle, produktive Sprache zu schaffen, die sich besonders gut für den Bau von Benutzeroberflächen eignet
  • Statisch typisiert
  • Multiparadigmatisch: hauptsächlich objektorientiert, aber auch funktional und imperativ
  • Kann interpretiert und just-in-time kompiliert werden
  • Wird hauptsächlich zum Bauen von Apps verwendet, kann aber auch für Backends genutzt werden

Warum sie großartig ist

  • Leicht zu lernen dank vertrauter Syntax
  • Modernes Typsystem: Typinferenz, Pattern Matching, async/await
  • Ausgezeichnete Dokumentation
  • Sicherheit durch ein solides Null-Safety-System: keine Null-Pointer-Exceptions mehr
  • Gutes Tooling, Unterstützung in diversen IDEs. Optimiert für kurze Feedback-Schleifen, z. B. durch schnelles Hot Reload
  • Wachsendes Ökosystem mit vielen verfügbaren Bibliotheken

Herausragende Merkmale

  • Kann zu JS und nativem Code kompilieren, aber auch zu Swift und Kotlin, ideal für Mobile-Apps.
  • Mit der Flutter-Bibliothek lassen sich schnell Mobile-, Web-, Desktop- oder Embedded-Apps bauen. Einmal schreiben, auf verschiedenen Plattformen ausführen
  • Ausgezeichnete Nebenläufigkeitsunterstützung, mit async/await, Isolates (leichtgewichtigen Nebenläufigkeitskonstrukten), Futures und mehr

Delphi

  • Delphi wurde von Borland entwickelt und 1995 veröffentlicht.
  • Es ist eine Object-Pascal-Programmiersprache und wurde von Anders Hejlsberg entwickelt, einem der leitenden Architekten von C#
  • Stark und statisch typisiert
  • Kompiliert zu nativem Code
  • Multiparadigmatisch: überwiegend objektorientiert, aber auch imperativ, deklarativ und ereignisgesteuert
  • Wird in Business-Anwendungen, grafischen Oberflächen und Schulen eingesetzt (um Programmieren zu lehren)

Warum sie großartig ist

  • Leicht zu lernen. Object Pascal verbindet die Einfachheit und Klarheit von Pascal mit objektorientierten Features und macht das Schreiben und Pflegen von Code einfacher
  • Integrierte Entwicklungsumgebung (IDE): Die Delphi-IDE bietet eine benutzerfreundliche und funktionsreiche Umgebung, die den Entwicklungsprozess strafft. Sie bietet Codenavigation, Debugging-Werkzeuge, Codevervollständigung und weitere Produktivitätsfunktionen, die die Entwicklung effizienter machen.
  • Stabilität: Seit Anfang der 1990er-Jahre dabei, mit einer Geschichte als zuverlässiges und stabiles Entwicklungs-Tool und Sprache, einschließlich starker Abwärtskompatibilität. Code, der in früheren Delphi-Versionen geschrieben wurde, lässt sich mit minimalen Anpassungen auch in neueren Versionen kompilieren und ausführen.
  • Plattformübergreifende Unterstützung: Delphi hat seine Möglichkeiten über Windows hinaus erweitert und bietet plattformübergreifende Entwicklung, sodass Entwickler mehrere Betriebssysteme wie macOS, iOS, Android und mehr ansteuern können. So lassen sich Anwendungen für ein breiteres Publikum erstellen, und Projekte erreichen mehr Menschen.
  • Starke Community und Unterstützung: Delphi hat eine engagierte und aktive Entwickler-Community, die Bibliotheken, Tools und Ressourcen zum Ökosystem beiträgt.

Herausragende Merkmale

  • Hochperformante ausführbare Dateien: Delphi-Anwendungen sind für ihre Geschwindigkeit und Leistung bekannt. Der Delphi-Compiler erzeugt hoch optimierte native ausführbare Dateien, was für bestimmte Anwendungstypen entscheidend sein kann, etwa solche mit Echtzeitverarbeitung oder rechenintensiven Aufgaben.
  • Rapid Application Development (RAD) Umgebung: Visuelle Drag-and-Drop-Designwerkzeuge ermöglichen es Entwicklern, Benutzeroberflächen zu erstellen und sie mit minimalem Aufwand mit Funktionalität zu verbinden, was den Entwicklungsprozess beschleunigt.
  • Komponentenbasierte Architektur: Baut auf einer komponentenbasierten Architektur auf, bei der wiederverwendbare Komponenten zum Bauen von Anwendungen verwendet werden. Das erleichtert die Wiederverwendung von Code und verkürzt die Entwicklungszeit.
  • Ereignisbehandlung: Delphi nutzt ein eingebautes Ereignismodell, mit dem Entwickler einfach auf Nutzeraktionen und andere Ereignisse reagieren können. Die Ereignisbehandlung vereinfacht es, Nutzereingaben oder Systemereignisse zu erfassen und passend darauf zu reagieren.
  • Datenbankanbindung: Delphi bietet native Komponenten für den Datenbankzugriff, die eine nahtlose Integration in verschiedene Datenbanksysteme ermöglichen. Diese eingebaute Unterstützung vereinfacht die Entwicklung datenbankgestützter Anwendungen.

Elm

  • Die Sprache wurde von Evan Czaplicki für seine Abschlussarbeit geschaffen und 2012 veröffentlicht
  • Behandelte zunächst das Thema funktionale reaktive Programmierung (FRP) für Benutzeroberflächen (FRP mit Signalen), aber 2017 wurde FRP zugunsten von TEA (The Elm Architecture) verworfen
  • Statisch und stark typisierte, funktionale Sprache
  • Syntax inspiriert von Haskell
  • Open-Source-Sprache, aber sehr meinungsstark. Der Entwicklungsstil beinhaltet lange Phasen intensiver Arbeit von Evan, bevor er Dinge öffentlich macht. PRs werden daher manchmal sehr lange nicht gemergt, und das Projekt mag veraltet wirken, doch das ist einfach Evans Arbeitsstil.
  • Wird auf Websites eingesetzt, z. B. bei NoRedInk, Vendr, Rakuten, Brilliant

Warum sie großartig ist

  • Es ist eine sehr kleine Sprache, eine der am leichtesten zu lernenden aus der ML-Familie der statisch typisierten funktionalen Sprachen. Das macht sie fast ideal, um funktionale Programmierung zu lehren.
  • Die Compilerfehler sind die schönsten und hilfreichsten, die es gibt.
  • Stabile Sprache: Die letzte Veröffentlichung ist von 2019
  • Die Pakete im Ökosystem sind wenige, aber von hoher Qualität.
  • Ein mächtiges Linting-Ökosystem mit elm-review (treibt den Analyzer des Exercism-Elm-Tracks an).

Herausragende Merkmale

  • Die Elm Architecture (TEA) liegt allen Elm-Apps zugrunde, daher ist es sehr einfach, unbekannte Elm-Anwendungen zu überprüfen.
  • Keine Laufzeitausnahmen! Bis auf ein paar wenige Dinge.
  • Nichts bricht, wenn du Abhängigkeiten aktualisierst, semantische Versionierung wird vom Compiler erzwungen.
  • Wenn es kompiliert, funktioniert es (bis auf Logikfehler). Und wenn du dich daran gewöhnt hast, ist es sehr schwer, zu anderen Sprachen zurückzugehen.
    • Matthew Griffiths „elm-ui“ macht „wenn es kompiliert, funktioniert es“ auch für Stil und Layout möglich, du brauchst kein CSS.
  • Full-Stack-Web-Apps: Lamdera ist ein Spin-off, das Elm für Full-Stack-Web-Apps ohne jeglichen Kleber zwischen Frontend und Backend nutzt.

Java

  • Entwickelt von James Gosling bei Sun Microsystems und 1995 veröffentlicht.
  • Fünf ursprüngliche Ziele:
    • Einfach, objektorientiert und vertraut.
    • Robust und sicher.
    • Architekturneutral und portabel.
    • Hohe Leistung.
    • Interpretiert, nebenläufig und dynamisch.
  • Stark und statisch typisiert
  • Wird zu Bytecode kompiliert (an nativem Code wird gearbeitet)
  • Multiparadigmatisch: imperativ, objektorientiert und funktional
  • Sprache und virtuelle Maschine haben offizielle Spezifikationen und damit auch mehrere Implementierungen (z. B. die OpenJDK-JVM und Oracles Hotspot-VM)
  • Wird in unzähligen Softwareprojekten verwendet, von Websites bis zu eingebetteten Systemen und von Apps bis zu Datenbanken

Warum sie großartig ist

  • Läuft (fast) überall (wie dich der Java-Updater freudig erinnern wird ;))
  • Allzweck: Kann für fast jede Art von Aufgabe verwendet werden, einschließlich Apps, Websites und eingebetteter Systeme
  • Interoperabilität mit anderen JVM-Sprachen wie Kotlin, Groovy, Scala und Clojure
  • Ausgezeichnetes Tooling, sowohl für IDEs als auch für andere Werkzeuge wie Build-Systeme

Herausragende Merkmale

  • Die JVM ist eine ausgereifte, stabile und hochperformante virtuelle Maschine, die laufend verbessert wird
  • Riesiges Ökosystem mit einer enormen Zahl verfügbarer Bibliotheken. Diese Bibliotheken sind, wie Java, ausgereift, stabil und funktionsreich
  • In Entwicklung: Sprache und Laufzeit entwickeln sich weiter, mit regelmäßigen Updates der Sprache, um sie moderner zu machen und Kritikpunkte aufzugreifen (etwa die Reduzierung von Boilerplate und Ausführlichkeit). Für die Laufzeit werden regelmäßig neue Projekte gestartet, um sie weiterzuentwickeln (z. B. Project Loom für leichtgewichtige Nebenläufigkeitskonstrukte und native Kompilierung über GraalVM)

JavaScript

  • Brendan Eich wurde 1995 von Netscape eingestellt, um eine Sprache zu liefern, mit der sich Webseiten dynamisch machen lassen. Der erste Prototyp entstand bekanntlich in 10 Tagen
  • 1997 als ECMAScript standardisiert
  • Dynamisch und schwach typisiert
  • Wurde früher ausschließlich interpretiert, heute aber oft just-in-time kompiliert
  • Multiparadigmatisch: prototypisch (ziemlich selten), aber auch objektorientiert, imperativ und funktional
  • Extrem einflussreich darin, das Web zu dem Erfolg zu machen, der es heute ist. AJAX war zum Beispiel sehr hilfreich, um Interaktivität hinzuzufügen. Der De-facto-Standard für Webentwicklung, da es die einzige Programmiersprache mit eingebauter Browserunterstützung ist
  • Heute wahrscheinlich die am meisten verwendete Sprache
  • Wird für Backends, Frontend, Skripte und Kommandozeilen-Tools verwendet

Warum sie großartig ist

  • Allzweck: Kann für viele Aufgaben verwendet werden: Backend, Frontend, Skripte, Kommandozeilen-Tools. Viele Tools, die für das Web verwendet werden, sind in JavaScript geschrieben (und laufen auf nodejs)
  • Laufzeitumgebungen (wie V8) sind stark optimiert und können sehr performant sein, obwohl die Sprache hochdynamisch ist
  • Relativ kleine Sprache, was sie relativ leicht zu lernen macht. Dass du sie im Browser ausführen kannst, macht sie besonders großartig, denn so bekommst du beim Lernen visuelles Feedback
  • Die Spezifikation wird häufig aktualisiert, um neue Features einzuführen, etwa async/await oder String-Interpolation. Auch rund um das Tooling gibt es viel Innovation, mit neueren Tools wie deno, esbuild und bun.js, die die Arbeit mit JavaScript-Codebasen erleichtern
  • Die JSON-Unterstützung ist erstklassig, was schon daran deutlich wird, dass JSON für JavaScript Object Notation steht
  • Wurde für ereignisgesteuerten, nicht blockierenden Code entworfen

Herausragende Merkmale

  • Riesiges Ökosystem. Eine enorme Zahl an Bibliotheken ist verfügbar (2,1 Millionen Pakete im September 2022), aber auch viele andere Sprachen, die auf JavaScript abzielen
  • Läuft auf den meisten Plattformen und Geräten, von Windows bis Apple, von Raspberry Pis bis Handys, von Webservern bis Serverless-Plattformen. Webbrowser haben native Unterstützung eingebaut, du musst also keine Laufzeitumgebung installieren.
  • Ideal für Webentwicklung, mit vielen Frameworks zur Auswahl (React, Vue, Angular) sowie vielen Tools, die beim Bauen von Webanwendungen helfen (z. B. eslint, parcel)
  • Kann isomorph verwendet werden, das heißt, dieselbe Sprache (und Codebasis) lässt sich sowohl für das Backend als auch für das Frontend nutzen. Das erleichtert die Pflege und ermöglicht Code-Wiederverwendung zwischen Frontend und Backend
  • Große Beliebtheit bedeutet: viele Ressourcen zum Lernen (Videos, Blogs, Kurse) und eine riesige Community zum Austausch

Kotlin

  • 2010 von JetBrains entwickelt, bekannt für seine IDEs (z. B. IntelliJ, CLion, GoLand und Rider)
  • Die meisten Produkte von JetBrains waren in Java geschrieben, aber sie wollten eine JVM-Sprache, die Boilerplate-Code reduziert, die Entwicklung beschleunigt und einige fehlende Features unterstützt. Scala hatte diese Features, erwies sich aber als zu langsam beim Kompilieren. So wurde das Projekt Kotlin gestartet.
  • Stark und statisch typisiert
  • Multiparadigmatisch: imperativ, objektorientiert, funktional, deklarativ
  • Kompiliert standardmäßig zu JVM-Bytecode, kann aber auch zu JS und nativem Code kompilieren (nützlich für Plattformen, auf denen virtuelle Maschinen nicht möglich oder nicht erwünscht sind, etwa iOS-Geräte)
  • Wurde 2019 von Google zur bevorzugten Sprache für Android-Apps erklärt
  • Wird zum Bauen von Websites, Apps (meist Android) und sogar ganzen IDEs verwendet (den bereits genannten IDEs)

Warum sie großartig ist

  • Allzweck: Kann für fast jede Aufgabe verwendet werden, einschließlich Apps und Websites. Google erklärte Kotlin 2019 zur bevorzugten Sprache für die Entwicklung von Android-Apps
  • Da sie auf der JVM läuft, gelten alle deren Vorteile: eine ausgereifte, hochperformante VM und eine riesige Zahl verfügbarer Bibliotheken
  • Entschärft viele der Probleme, die man mit Java haben könnte, etwa geprüfte Ausnahmen, Null-Sicherheit und Ausführlichkeit
  • Moderne Sprache: fortgeschrittene Typinferenz, ausdrucksbasiert, Unveränderlichkeit, Pattern Matching, Coroutinen, Channels
  • Ausgezeichnetes Tooling (was zu erwarten ist, wenn die IDE selbst in der Sprache geschrieben ist :)

Herausragende Merkmale

  • Produktiv: Kotlin übernimmt die besten Teile anderer Sprachen und formt sie zu einer konsistenten, produktiven Sprache, in manchen Fällen sogar mit Verbesserungen gegenüber dem Original (z. B. durch lokale Erweiterungsmethoden)
  • Coroutinen: Während async/await in vielen Sprachen fest in die Sprache eingebaut ist, ist es in Kotlin als Bibliothek umgesetzt, die auf dem Coroutinen-Feature der Sprache aufbaut. Coroutinen sind ein Weg, mit suspendierenden Funktionen umzugehen, die eine sicherere und weniger fehleranfällige Abstraktion für asynchrone Operationen bieten als Futures und Promises.
  • Großartige Nebenläufigkeit: async/await, Channels und Unveränderlichkeit tragen alle zu ausgezeichneter Nebenläufigkeit bei
  • Compose Multiplatform ermöglicht den Bau gemeinsamer Benutzeroberflächen aus derselben Codebasis mit einer deklarativen Syntax

Objective-C

  • Ursprünglich von Brad Cox und Tom Love in den frühen 1980er-Jahren entwickelt, wurde es von NeXT für dessen Betriebssystem NeXTSTEP ausgewählt. Da Apples macOS direkt von NeXTSTEP abstammt, wurde es zur bevorzugten Sprache für Apple-Software
  • Wurde entworfen, um SmallTalks objektorientierte Ideen mit C zu verbinden, wobei Message Passing das zentrale objektorientierte Konstrukt ist
  • Obermenge von C, jeder C-Code ist also gültiger Objective-C-Code, und beides lässt sich in derselben Codebasis kombinieren
  • Statische und dynamische Typisierung
  • Kompiliert
  • Die Standardsprache für macOS- und iOS-Anwendungen bis zum Erscheinen von Swift 2014
  • Wird für macOS- und iOS-Apps verwendet

Warum sie großartig ist

  • Die Mischung aus C und objektorientierten Features kann wirklich mächtig sein
  • Schlanke Laufzeitumgebung, was sie ressourceneffizient macht
  • Leichtgewichtige Klassensyntax
  • Schnelle Enumeration ermöglicht einfachere for-Schleifen als in C
  • Starke Abwärtskompatibilität

Herausragende Merkmale

  • Unterstützt Automatic Reference Counting (ARC), wodurch Speicher automatisch freigegeben wird, wenn ein Objekt nicht mehr referenziert wird, was die Speicherverwaltung erleichtert
  • Die dynamische Laufzeitumgebung ermöglicht Method Swizzling (das dynamische Ändern des Verhaltens eines Selektors, ähnlich wie Monkey Patching), Reflexion und Message Forwarding (ideal für das Observer- oder Proxy-Muster)
  • Protokolle und Interfaces bringen Interface-Features nach C, wobei Kategorie-Interfaces sogar das Erweitern bestehender Typen erlauben

PHP

  • 1993 von Rasmus Lerdorf entwickelt und implementiert, 1995 erstmals veröffentlicht
  • Der Name ist ein rekursives Akronym: PHP: Hypertext Preprocessor
  • Dynamisch und schwach typisiert, mit der Möglichkeit, schrittweise starke Typprüfungen zur Laufzeit hinzuzufügen
  • Multiparadigmatisch: imperativ, funktional, objektorientiert, prozedural, reflektierend
  • Interpretiert oder just-in-time kompiliert
  • Die ursprüngliche Plattform für serverseitiges Rendering
  • Wird für Websites (Facebook, Wikipedia und viele mehr) und auch für viele Content-Management-Systeme verwendet (Wordpress, JOOMLA).

Warum sie großartig ist

  • Sie ist allgegenwärtig: PHP läuft auf 77,4 % aller Websites^1, unabhängig von bestimmten Plattformen
  • Einfache Syntax, ähnlich wie andere etablierte Programmiersprachen: Java, JavaScript, C, was das Lernen leicht macht
  • Allzweck. Für viele Einsatzzwecke nutzbar, vom Erstellen kleiner Webskripte bis zu großen serverseitigen Anwendungen, die Unternehmen betreiben.
  • Sehr etabliert und weit verbreitet. Es gibt viele Lernressourcen, Frameworks und Bibliotheken.
  • Starke Datenbankunterstützung
  • Wird weiterhin aktiv entwickelt und bringt moderne Features heraus
  • Plattformübergreifend. Läuft auf allem: Windows, Mac, Linux, Unix
  • Open Source und kostenlos

Herausragende Merkmale

  • Einfach auszuführen und auszurollen. Keine Build-Kette. Keine Compiler.
  • Graduelles Typsystem. Füge Typen dort hinzu, wo du sie brauchst, und nutze dynamische Typisierung, um Teile deiner Entwicklung zu vereinfachen.
  • Schnelles Prototyping. Erstelle eine Webseite, um deine Idee zu testen, und führe sie auf deinem eigenen Rechner aus.

PureScript

  • Entworfen von Phil Freeman, erste Version 2013 veröffentlicht
  • Er begann mit der Arbeit an PureScript, weil ihn andere Versuche, Haskell nach JavaScript zu transpilieren, nicht überzeugten
  • Stark und statisch typisiert
  • Kompiliert zu JS
  • Rein funktionale Sprache
  • Syntax und Features inspiriert von Haskell
  • Wird zum Bauen von Webanwendungen verwendet, kann aber auch serverseitige Apps oder Desktop-Anwendungen über Electron bauen

Warum sie großartig ist

  • Teilt viel von dem, was Haskell großartig macht:
    • Starkes und mächtiges Typsystem: algebraische Datentypen, Typklassen, Typen höherer Art
    • Ausdrucksstark: Pattern Matching, Typinferenz
    • Sicherheit: keine Nulls, unveränderliche Typen
    • Rein funktional: Seiteneffekte werden im Typsystem kodiert
  • Einfaches, typsicheres Dekodieren/Kodieren von JSON zu Typen
  • Kompiliert zu für Menschen lesbarem JavaScript
  • Gutes Tooling

Herausragende Merkmale

  • Der funktionale Kern ist perfekt für typsichere Webanwendungen ohne Laufzeitfehler
  • Ausgezeichnete JS-Interoperabilität
  • Kompiliert zu effizientem JS

ReasonML

  • Von Jordan Walke bei Facebook geschaffen, erste Version 2016 veröffentlicht
  • Basiert auf OCaml, aber mit entfernten Eigenheiten und für JS-Interoperabilität ausgelegt
  • Statisch typisierte und funktionale Sprache
  • Kompiliert
  • Wird zum Bauen von Websites verwendet (z. B. bei Facebook)

Warum sie großartig ist

  • All das Gute von OCaml, aber in einer Webumgebung:
    • Mächtiges Typsystem: Alle Werte werden mit einfacheren Typen typisiert (etwa Records, Varianten und Optionen), die komplexen Typen vorgezogen werden. Keine Undefined-Fehler mehr, was die Zuverlässigkeit erhöht
    • Ausdrucksstark: Pattern Matching, Typinferenz, Destrukturierung
    • Sicherheit: keine Nulls, Unveränderlichkeit als Standard
  • Kompiliert zu für Menschen lesbarem JavaScript
  • Kann zu OCaml kompiliert werden (und umgekehrt), was bedeutet, dass es das gesamte OCaml-Ökosystem nutzen kann (z. B. um zu einer nativen Binärdatei zu kompilieren)

Herausragende Merkmale

  • Die Kompilierzeiten von ReasonML sind super schnell, was schnelle Iterationszyklen bedeutet.
  • Ausgezeichnete JS-Interoperabilität, sowohl um JS aus ReasonML-Code zu verwenden als auch um ReasonML nach JS zu exportieren. Es kann sogar TS-Typen generieren. Kann auch mit C interoperieren. Unterstützt sogar JSX-ähnliche Syntax

Swift

  • Die Entwicklung von Swift begann 2010 durch Chris Lattner und wurde 2014 auf der WWDC-Veranstaltung weltweit angekündigt.
  • Ziel war es, Apples alte Programmiersprache Objective-C, die seit den frühen 80ern keine größeren Änderungen mehr erhalten hatte, durch eine neue, moderne Sprache zu ersetzen. Sie wurde so entworfen, dass sie mit großen Teilen von Objective-C interoperiert.
  • Stark und statisch typisiert
  • Kompiliert, wobei LLVM die Kompilierung zu Maschinencode übernimmt (wie z. B. bei Rust)
  • Multiparadigmatisch: funktional, objektorientiert, imperativ, deklarativ
  • Ursprünglich proprietäre Software, 2015 aber als Open Source freigegeben
  • Wird hauptsächlich für Mobile- und Desktop-Apps verwendet, aber auch für Backends und in Serverless-Szenarien

Warum sie großartig ist

  • Moderne Sprache: Typinferenz, Pattern Matching, algebraische Datentypen, Unicode-Strings
  • Produktiv: Swift übernimmt die besten Teile anderer Sprachen (wie Rust, Python, C# und Ruby) und formt sie zu einer konsistenten, produktiven Sprache
  • Sicher: Zeiger werden nicht offengelegt, ein Optional-Typ verhindert Null-Pointer-Exceptions, explizite Fehlerbehandlung und automatische Speicherverwaltung über ARC (Automatic Reference Counting)
  • Wird regelmäßig aktualisiert. Anfangs scheute Apple sich nicht, Breaking Changes für Dinge einzuführen, die sich als nicht gut erwiesen hatten. So sammelt sich kein „Ballast“ an. Meist wird ein Werkzeug bereitgestellt, das bei der Migration von Code hilft. Seit Swift 5 ist die Application Binary Interface (ABI) stabil
  • Anders als Objective-C läuft Swift auf allen wichtigen Plattformen: macOS, Windows und Linux

Herausragende Merkmale

  • Schnell. Kompiliert zu effizientem Maschinencode und läuft dadurch schnell
  • Nahtlose Interoperabilität mit Objective-C, aber auch gute Interoperabilität mit C und C++
  • Große Community mit vielen ausgezeichneten Ressourcen

TypeScript

  • Bei Microsoft aus Frustration über die Entwicklung großer Anwendungen in JS entstanden. Einer der Designer war Anders Hejlsberg, der leitende Architekt von C# und Schöpfer von Delphi und Turbo Pascal
  • Die erste Version wurde 2012 veröffentlicht
  • Multiparadigmatisch: funktional, prototypisch, imperativ, objektorientiert und generisch
  • Nutzt graduelles und Duck-Typing
  • Kompiliert (zu JS)
  • Wird für Websites verwendet, sowohl Frontend als auch Backend, außerdem für Skripte und Kommandozeilen-Tools

Warum sie großartig ist

  • Mächtiges und flexibles Typsystem: Union-Typen, Literal-Typen, Tupel. Grundsätzlich lässt sich jedes Muster, das in JS-Code verwendet werden kann, in TS typsicher beschreiben. Das Typsystem ist so mächtig, dass es sogar Turing-vollständig ist
  • Als Obermenge von JS lässt es sich schrittweise in eine JS-Codebasis einführen
  • Verbindet das Beste aus beiden Welten: dynamische und statische Typisierung
  • Wächst schnell an Beliebtheit, viele Tools bieten TypeScript-Typen an oder werden zu TypeScript konvertiert. Viele Ressourcen verfügbar
  • Die Sprache wird regelmäßig aktualisiert und übernimmt kommende ECMAScript-Features früh

Herausragende Merkmale

  • Verbesserte Sicherheit und Korrektheit: Statische Typisierung kann viele Fehlerklassen beseitigen, die man mit JS typischerweise macht
  • Nahtlose Interoperabilität mit JS. Es lassen sich eigene Typdefinitionen hinzufügen, um typsicher mit JS-Code zu arbeiten. Für eine große Zahl gibt es eigene Typdefinitionen
  • Großartiges Tooling und IDE-Unterstützung. Typannotationen, Codevervollständigung und sogar sicheres Refactoring im großen Stil sind in vielen IDEs verfügbar
  • Profitiere von allen Vorteilen des JS-Ökosystems: eine riesige Zahl an Paketen, viel Tooling, eine große Community usw.

Welche solltest du ausprobieren?

  1. Wenn du native Apps bauen möchtest, sind Dart, Delphi, Java, Kotlin und Swift großartige Wahlmöglichkeiten. Allerdings lassen sich auch alle anderen Sprachen, die zu JS kompilieren, zum Bauen nativer Apps nutzen. Erwähnenswert ist, dass die offizielle Sprache für iOS-/macOS-Apps Swift ist und für Android-Apps Kotlin
  2. Wenn du Web-Apps bauen möchtest, sind CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML und TypeScript großartig
  3. Wenn du dich für funktionale Programmierung interessierst, sind Elm, PureScript und ReasonML naheliegende Wahlmöglichkeiten, wobei CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift und TypeScript ebenfalls funktionale Programmierung unterstützen
  4. Für objektorientierte Programmierung sind ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP und Swift logische Kandidaten, wobei CoffeeScript, JavaScript und TypeScript dieses Paradigma ebenfalls unterstützen
  5. Wenn du daran interessiert bist, Business-Anwendungen zu schreiben, sind ABAP und Delphi perfekt dafür
1. August 2023 · Fandest du ihn hilfreich?