← Zur Übersicht

TOP 10 Programmiersprachen für 2020

Ihr kennt bestimmt die alljährliche Aufzählung von den TOP x Programmiersprachen, die man im neuen Jahr unbedingt auf dem Schirm haben sollte. Oft verargumentiert der Autor dann seine Wahl und gibt vielleicht erste Einblicke in die ein oder andere Sprache. Nun, diesem Trend wollen wir uns natürlich auch bei 5Minds nicht verschließen und haben das Thema selbstverständlich ebenso aufgegriffen. Der Modus war aber so, dass die Mitarbeiter darum gebeten wurden eine oder mehrere Programmiersprache zu nennen, die sie entweder selbst gern lernen oder einem Kollegen empfehlen würden. Alles war erlaubt, auch die sogenannten esoterischen Programmiersprachen. Die Beteiligung war erstaunlich hoch und das Ergebnis sehr interessant.

Und hier 🎉 unsere TOP 10 der Programmiersprachen, die ihr unbedingt in 2020 auf dem Schirm haben solltet:

  1. Go
  2. Dart
  3. Rust
  4. Elixir
  5. F#
  6. Kotlin
  7. TypeScript
  8. Idris
  9. Nim
  10. Joy

Weitere Nennungen waren:

  • Assembler (ARM)
  • BrainFuck
  • Chef
  • Clojure
  • Erlang
  • Haskell
  • Java
  • Ook!
  • Python
  • Ruby
  • Shakespeare
  • TrumpScript
  • Visual Basic

Zugegeben, es gab die ein oder andere Nennung als Seitenhieb auf bestimmte Projektsituationen von Kollegen und auch die Ansammlung esoterischer Sprachen ist wohl eher als Fun-Faktor in diese Übersicht gerutscht. Als Resultat wollen wir unsere TOP 10 Programmiersprachen für 2020 extrahieren und näher beleuchten. Zusätzlich, als echter Exot außerhalb der Wertung, eine esoterische Sprache. Hier fiel die Wahl auf BrainFuck.

Doch zuerst wollen wir die Sprachen ein wenig charakterisieren und in die üblichen Paradigmen-Schubladen stecken. Manchmal gelingt die Einordnung nicht trennscharf, Mischformen gibt es immer häufiger. Hat eine Programmiersprache einen erkennbaren Schwerpunkt, so reichte das für die Kategorisierung in unserer Aufzählung. Alles andere wandert in den Topf Multiparadigmatische Sprachen.

Maschinennahe Sprachen

Mit den Sprachen der sog. zweiten Generation werden direkt die Prozessoren bzw. die jeweilige Prozessorarchitektur adressiert. Hier arbeitet man mit wenigen, kurzen Befehlen, Speicheradressen und Prozessorregistern. Näher will wahrscheinlich niemand an die Hardware ran. Zu empfehlen ist sie allen Entwicklern, die sich gerne mal tiefer mit den echten Grundlagen auseinandersetzen wollen.

Vertreter

  • Assembler (ARM)

Prozedurale Sprachen

Als ein Zweig der imperativen Programmiersprachen hat die prozedurale Programmierung Konzepte zur Strukturierung von Quelltexten eingeführt. Das sind im Wesentlichen Konzepte wie Modul, Prozedur und Funktion, die es ermöglichen, Quelltext besser zu strukturieren.

Vertreter

  • Visual Basic

Objektorientierte Sprachen

Ebenfalls als ein Zweig der imperativen Programmierung führt die objektorientierte Programmierung vor allem das Konzept der Abstraktion in Form von Klassen ein. Grundgedanke war dabei eine möglichst genaue Modellierung der Realität. Als Bestandteil einer Klasse finden sich alte Bekannte aus der prozeduralen Programmierung wie Prozedur und Funktion wieder. Oftmals - wenn nicht sogar immer - fasst man diese Konzepte hier zusammen und nennt sie Methode.
Als entscheidender Unterschied zu den prozeduralen Sprachen dient die Klasse dazu, zur Laufzeit Objekte - sogenannte Instanzen - zu erzeugen, die dann sowohl ihre individuellen Daten (Zustand), als auch ihre Funktionalitäten mit an Bord haben. Nette Features wie Kapselung, Vererbung, Polymorphie und die Hoffnung auf Wiederverwendung runden das Konzept ab.

Vertreter

  • Dart
  • Java
  • Kotlin
  • Ruby

Funktionale Sprachen

Im Zentrum dieses Paradigmas steht, erwartungsgemäß, die Funktion. Ein Programm einer funktionalen Sprache definiert ebensolche und führt diese aus. Die Verknüpfung mehrerer Funktionen ist dabei ebenso möglich wie die Nutzung einer Funktion als Parameter oder als Ergebnis anderer Funktionen. Eine herausragende Eigenschaft der funktionalen Programmierung ist die sogenannte Seiteneffektfreiheit.

Vertreter

  • Clojure
  • Elixir
  • Erlang
  • F#
  • Joy
  • Idris
  • Haskell

Esoterische Sprachen

Der Begriff esoterisch ist vielleicht etwas irreführend. Obskur wäre vielleicht deutlicher. Eine klare Motivation dieser Bewegung ist nicht auszumachen, aber sicherlich ist sie nicht, den Einsatz in realen Projekten zu propagieren. Oft geht es darum, neue Konzepte auszuprobieren oder bestehende auf ein Minimum zu reduzieren. Aber es existieren auch reine Spaßprojekte, darunter solche, die die Programmierung an sich möglichst erschweren oder nahezu unmöglich machen, ohne dabei die Turing-Vollständigkeit zu verletzen.

Vertreter

  • Brainfuck
  • Chef
  • Ook!
  • Shakespeare
  • TrumpScript

Multiparadigmatische Sprachen

Hier vereinen sich mehrere Paradigmen unter einer Haube. Ein echter Fokus ist nicht auszumachen und obliegt der Ausgestaltung durch den Entwickler.

Vertreter

  • Go
  • Nim
  • Python
  • Ruby
  • Rust
  • TypeScript

In den nachfolgenden Blogposts schauen wir uns die insgesamt elf Kandidaten mal genauer an.