Warum gibt es so viele Programmiersprachen?

Computerprogrammierung

Es gibt über 250 Programmiersprachen. Einige sind in der Geschäftswelt weit verbreitet, wie C++, Java, JavaScript, Ruby und Python. Andere sind in erster Linie akademisch, wie Lisp. Wieder andere sind obskur und esoterisch. Sie fragen sich vielleicht: “Warum gibt es so viele Programmiersprachen?”

Das ist ungefähr so, als würde man fragen: „Warum gibt es so viele Bereiche der Mathematik? Wir haben Algebra. Warum brauchen wir Geometrie, Analysis und Strömungsmechanik?“ Jede Programmiersprache zielt darauf ab, ein bestimmtes Problem zu lösen. Mehr als eine Sprache kann möglicherweise dasselbe Problem lösen, aber jede wird es anders angehen.

Hier sind einige der wichtigsten Unterschiede in Programmiersprachen.

Lesbarkeit und Wartbarkeit

Einige Sprachen sind für einen Menschen einfacher zu lesen, was es für einen Programmierer einfacher macht, am Code eines anderen Programmierers mitzuarbeiten. Python zum Beispiel hat den Ruf, einfach zu lesen zu sein. Es erzwingt eine strikte Einrückung von Zeilen, um seine Codeblöcke zu definieren, was es einfach macht, einen Blick auf ein Programm zu werfen und seine Struktur herauszufinden. Andere Sprachen erlauben ebenfalls Einrückungen, aber als stilistische Wahl, nicht als Voraussetzung.

Im Gegensatz dazu ist Perl eine Sprache, die es dem Programmierer ermöglicht, dasselbe Programm auf viele verschiedene Arten zu schreiben. Dennoch ist der Zweck des Programms einem anderen Leser möglicherweise nicht sofort klar. Ein solches Programm mag bequem zu schreiben sein, aber für jemand anderen schwer zu verstehen und zu bearbeiten.

Leistung

Einige Sprachen werden interpretiert, andere kompiliert. Ein kompiliertes Programm muss von einem Präprozessor, Compiler und Linker verarbeitet werden, bevor es vom Computer ausgeführt werden kann. Diese spezialisierte Zwischensoftware führt eine lexikalische Analyse durch und übersetzt das Programm in Maschinensprache. Es kann auch die resultierenden Anweisungen optimieren und nach cleveren Wegen suchen, um das Programm schneller laufen zu lassen.

Kompilierte Programme funktionieren normalerweise besser als interpretierte Programme. Zum Beispiel sind C, C++ und Objective-C Sprachen, die zu sehr schnellem Maschinencode kompiliert werden. Videospiele und Systemsoftware werden oft in diesen Sprachen geschrieben, um die Leistung der CPU voll auszuschöpfen.

Auf der anderen Seite werden interpretierte Sprachprogramme von einer Software namens Interpreter ausgeführt, die die Anweisungen des Programms ausführt, ohne sie zuerst in Maschinencode zu kompilieren. Obwohl der Interpreter das Programm manchmal in eine Zwischensprache parst, was zu einer gewissen Optimierung führt, ist die Leistung nie so schnell wie bei kompiliertem Maschinencode.

Ein großer Vorteil interpretierter Sprachen ist ihr Potenzial für interaktive Entwicklung. Da nicht das gesamte Programm kompiliert werden muss, bevor es ausgeführt werden kann, kann der Code interaktiv ausgeführt werden. Sie kennen das, wenn Sie jemals die Befehlszeile Ihres Betriebssystems verwendet haben: Sie geben einen Befehl ein und sehen das Ergebnis. Eine solche Schnittstelle wird REPL oder “Read-Eval-Print-Loop” genannt. Eine REPL ermöglicht es Ihnen, Befehle (oder Befehlsblöcke) einzeln auszuführen und die Ergebnisse anzuzeigen. Lisp, Perl, Python, NodeJS, Ruby und JavaScript sind Beispiele für interpretierte Sprachen, die in einer REPL ausgeführt werden können.

Interaktive Befehlsschnittstellen wie die Windows-Eingabeaufforderung und Bash gelten ebenfalls als interpretierte Sprachen. Programme in diesen “Sprachen” werden Batch-Dateien oder Shell-Skripte genannt.

Spezifische Anwendungsfälle

Oft sind Sprachen besonders gut darin, bestimmte Arten von Programmen zu schreiben. Beispielsweise ist NodeJS darauf ausgelegt, Single-Thread-Anwendungen für das Web zu schreiben. Die nicht blockierende Datei-E/A ermöglicht es Programmen, weiter zu arbeiten (“nicht blockiert zu werden”), während sie auf die Ãœbertragung erforderlicher Daten warten.

Ein weiteres Beispiel ist die auf statistische Analysen spezialisierte Programmiersprache R. In R geschriebene Programme profitieren von integrierten analytischen Tests und Modellen sowie Tools zur effizienten Bearbeitung großer Datenmengen.

Einfaches Prototyping

Einige Sprachen ermöglichen ein schnelles Prototyping: Der Programmierer kann “mit dem Schreiben beginnen” und Komponente für Komponente aufbauen, bis das Programm vollständig erstellt ist.

Beispielsweise wurde die Website Reddit ursprünglich in Lisp geschrieben. Nach dem Start von Reddit wurde die gesamte Website aus vielen Gründen, sowohl aus technischen als auch aus logistischen Gründen, in Python umgeschrieben. Obwohl das Umgestalten des gesamten Codes ein großes Unterfangen war, drückten die Eigentümer der Website kein Bedauern aus. In einem Blogbeitrag aus dem Jahr 2005 bemerkten sie, dass Lisp es ihnen erlaubte, etwas zu erschaffen, ohne genau zu wissen, was daraus werden würde.

Verfügbare Bibliotheken

Wenn Sie ein neues Programmierprojekt starten, möchten Sie normalerweise das Rad nicht neu erfinden. Das heißt, Sie möchten keine Funktionen für allgemeine Aufgaben wie das Berechnen einer Quadratwurzel oder das Suchen des ersten Vorkommens eines Zeichens in einer Zeichenfolge schreiben. Aus diesem Grund bietet fast jede Programmiersprache eine Reihe von Standardbibliotheken mit gemeinsamen Funktionen. Programmierer bevorzugen möglicherweise eine Sprache aufgrund der Bibliotheken, die sie bereitstellt.

Beispielsweise bieten die C-Standardbibliotheken hochleistungsfähige Funktionen für viele Low-Level-Systemoperationen. Perl bietet viele robuste Bibliotheken und auch das CPAN-Repository mit Modulen, die Sie herunterladen und in Ihrem Programm verwenden können. Python bietet eine große Auswahl an integrierten Funktionen und Modulen für fast alles unter der Sonne. Clojure, eine Lisp-ähnliche Sprache, die auf der JVM läuft, profitiert von ihrer Fähigkeit, Code aus den umfangreichen vorhandenen Bibliotheken von Java-Objekten und -Methoden auszuführen.

Sicherheit

Nicht alle Sprachen eignen sich zum Schreiben von sicherem Code. Die Programmiersprache C zum Beispiel ist berüchtigt dafür, Funktionen (oder deren Fehlen) zu haben, die zu verheerenden Schwachstellen wie der Dereferenzierung von Nullzeigern führen. Andere Sprachen versuchen, diesen Bedenken mit strengeren Regeln zu begegnen.

Einige Sprachen beschränken beispielsweise, welche Operationen mit verschiedenen Datentypen durchgeführt werden können. Die strengsten dieser Sprachen werden manchmal als „stark typisiert“ bezeichnet und können Programmierern, die Sicherheit und Stabilität bei der Softwareentwicklung priorisieren, Sicherheit bieten. Beispiele für stark typisierte Sprachen sind Rust, Nim, Ocaml und Haskell.

Sprachen können auch der „Veränderlichkeit“ Grenzen setzen, der Fähigkeit eines Datenobjekts, den Zustand zu ändern. Anstelle von Objekten, deren Werte überschrieben werden, bevorzugen diese Sprachen “unveränderliche” Objekte: Werte im Speicher, die nicht ohne ausdrückliche Ausnahme geändert werden können. Unveränderliche Objekte haben Interesse geweckt, da Mehrkern-CPUs aufgrund ihrer Tendenz, “Thread-Sicherheit” zu fördern, weit verbreitet wurden. In einem Thread-sicheren Programm kann mehr als ein Prozessor mit einem stark reduzierten Fehlerrisiko an einem Datensatz arbeiten. Zu den Sprachen, die unveränderliche Objekte priorisieren, gehören Rust und Clojure.

Gemeinschaftliche Unterstützung

Beim Programmieren in einer neuen Sprache hilft es, auf eine aktive, leidenschaftliche Community von Entwicklern zuzugreifen, die die Arbeit der anderen aktiv nutzen und dazu beitragen. Informieren Sie sich vor der Auswahl einer Programmiersprache über die Community dieser Sprache. Einige Sprachen haben eine aufregende, dynamische, lebendige Benutzerbasis, zu der Sie vielleicht gehören möchten, und andere Sprachen haben möglicherweise wenig oder keine Community.

Ausdruckskraft

Beim Schreiben eines Programms „sprechen“ die Gedanken und Problemlösungsfähigkeiten des Programmierers durch diese Sprache. Programmierer neigen daher dazu, Sprachen zu bevorzugen, in denen sie sich bequem ausdrücken können. Was eine Sprache und einen Programmierer gut zusammenarbeiten lässt, ist jedoch schwer zu definieren. Letztendlich können Sie nur wissen, mit welcher Sprache Sie sich wohlfühlen, indem Sie verschiedene Sprachen für verschiedene Projekte verwenden und sie selbst vergleichen.

Neueste Artikel
Vielleicht möchten Sie lesen

LEAVE A REPLY

Please enter your comment!
Please enter your name here