Warum gibt es so viele Programmiersprachen?

Es gibt über 250 Programmiersprachen. Einige davon sind in der Geschäftswelt weit verbreitet, wie C ++, Java, JavaScript, Ruby und Python. Andere sind hauptsächlich akademisch, wie beispielsweise Lisp. Noch sind andere dunkel und esoterisch. Sie fragen sich vielleicht: "Warum gibt es so viele Programmiersprachen?"

Das ist viel wie die Frage: "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. Es kann sein, dass mehr als eine Sprache dasselbe Problem lösen kann, aber jede wird anders vorgehen.

Hier sind einige der wichtigsten Unterschiede in den Programmiersprachen.

Lesbarkeit und Wartbarkeit

Einige Sprachen sind für einen Menschen leichter zu lesen, was es einem Programmierer erleichtert, mit dem Code eines anderen Programmierers zusammenzuarbeiten. Python zum Beispiel hat den Ruf, gut lesbar zu sein. Es erzwingt die strikte Einrückung von Zeilen, um die Codeblöcke zu definieren, wodurch der Blick auf ein Programm und dessen Struktur erleichtert wird. Andere Sprachen erlauben ebenfalls die Einrückung, jedoch als stilistische Wahl, nicht als Anforderung.

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

Performance

Einige Sprachen werden interpretiert und andere übersetzt. 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 intelligenten Wegen suchen, um das Programm schneller laufen zu lassen.

Kompilierte Programme arbeiten normalerweise besser als interpretierte Programme. Beispielsweise sind C, C ++ und Objective-C Sprachen, die typischerweise zu sehr schnellem Maschinencode kompilieren. Videospiele und Systemsoftware werden häufig in diesen Sprachen geschrieben, um die CPU-Leistung zu optimieren.

Andererseits werden Programme in interpretierter Sprache von einer Software ausgeführt, die als Interpreter bezeichnet wird und die Anweisungen des Programms ausführt, ohne sie zuerst in Maschinencode zu übersetzen. Obwohl der Interpreter das Programm manchmal in eine Zwischensprache parst, was zu einigen Optimierungen führt, ist die Leistung niemals so schnell wie kompilierter Maschinencode.

Ein Hauptvorteil von interpretierten Sprachen ist ihr Potenzial für die interaktive Entwicklung. Da das gesamte Programm nicht kompiliert werden muss, bevor es ausgeführt werden kann, kann der Code interaktiv ausgeführt werden. Sie sind damit vertraut, wenn Sie jemals die Befehlszeile Ihres Betriebssystems verwendet haben: Sie geben einen Befehl ein und sehen die Ergebnisse. Eine solche Schnittstelle wird als REPL oder "Read-Eval-Print-Loop" bezeichnet. Mit einem REPL können Sie Befehle (oder Befehlsblöcke) einzeln ausführen und die Ergebnisse anzeigen. 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 z. B. die Windows-Eingabeaufforderung und die Bash, gelten auch als interpretierte Sprachen. Programme in diesen "Sprachen" werden Batch-Dateien oder Shell-Skripts genannt.

Spezifische Anwendungsfälle

Oft sind Sprachen besonders gut geeignet, um bestimmte Arten von Programmen zu schreiben. Zum Beispiel ist NodeJS dafür konzipiert, Single-Threaded-Anwendungen für das Web zu schreiben. Seine nicht blockierende Datei-E / A ermöglicht es den Programmen, weiter zu arbeiten ("nicht blockiert"), während sie auf die Übertragung der erforderlichen Daten warten.

Ein anderes Beispiel ist die Programmiersprache R, die auf statistische Analysen spezialisiert ist. In R erstellte Programme profitieren von integrierten analytischen Tests und Modellen sowie Tools, mit denen riesige Datenmengen effizient bearbeitet werden können.

Einfaches Prototyping

Einige Sprachen ermöglichen ein schnelles Prototyping: Der Programmierer kann "einfach mit dem Schreiben beginnen" und Komponenten auf Komponenten aufbauen, bis das Programm vollständig erstellt ist.

Zum Beispiel wurde die Website Reddit ursprünglich in Lisp geschrieben. Nach dem Start von Reddit wurde die gesamte Site in Python aus verschiedenen Gründen neu geschrieben, sowohl aus technischen als auch aus logistischen Gründen. Obwohl die Umgestaltung des gesamten Codes ein großes Unterfangen war, äußerten die Eigentümer der Website kein Bedauern. In einem 2005 veröffentlichten Blogbeitrag stellten sie fest, dass Lisp ihnen erlaubte, etwas zu erstellen, ohne genau zu wissen, was daraus werden würde.

Verfügbare Bibliotheken

Wenn Sie ein neues Programmierprojekt starten, möchten Sie das Rad normalerweise nicht neu erfinden. Das heißt, Sie möchten keine Funktionen für häufige Aufgaben schreiben, z. B. die Quadratwurzel berechnen oder das erste Vorkommen eines Zeichens in einer Zeichenfolge ermitteln. Aus diesem Grund bietet nahezu jede Programmiersprache eine Reihe von Standardbibliotheken mit allgemeinen Funktionen. Programmierer bevorzugen möglicherweise eine Sprache aufgrund der von ihnen bereitgestellten Bibliotheken.

Zum Beispiel bieten die C-Standardbibliotheken hochleistungsfähige Funktionen für viele Systemoperationen auf niedriger Ebene. Perl bietet viele robuste Bibliotheken sowie das CPAN-Repository mit Modulen, die heruntergeladen und in Ihrem Programm verwendet werden sollen. Python bietet eine breite Palette an integrierten Funktionen und Modulen für fast alles unter der Sonne. Clojure, eine Lisp-ähnliche Sprache, die in der JVM ausgeführt wird, profitiert von der Möglichkeit, Code aus den umfangreichen vorhandenen Bibliotheken von Java-Objekten und -Methoden auszuführen.

Sicherheit

Nicht alle Sprachen eignen sich für das Schreiben von sicherem Code. Die Programmiersprache C ist beispielsweise dafür bekannt, über Features (oder deren Fehlen) zu verfügen, die zu verheerenden Sicherheitsanfälligkeiten führen können, wie zum Beispiel der Deferenzierung von Null-Zeigern. Andere Sprachen versuchen, diese Bedenken mit strengeren Regeln anzugehen.

In einigen Sprachen werden beispielsweise Einschränkungen festgelegt, welche Operationen für verschiedene Datentypen ausgeführt werden können. Die strengsten dieser Sprachen werden manchmal als "stark typisiert" bezeichnet und können Programmierern, die Sicherheit und Stabilität in der Softwareentwicklung bevorzugen, Ruhe bieten. Beispiele für stark typisierte Sprachen sind Rust, Nim, Ocaml und Haskell.

Sprachen können auch der "Mutabilität", der Fähigkeit eines Datenobjekts, den Status zu ändern, Grenzen setzen. Anstelle von Objekten, deren Werte überschrieben werden, bevorzugen diese Sprachen "unveränderliche" Objekte: Werte im Speicher, die nicht ohne explizite Ausnahme geändert werden können. Unveränderliche Objekte stießen auf Interesse, da sich Multi-Core-CPUs aufgrund ihrer Tendenz, die "Thread-Sicherheit" zu fördern, weit verbreitet haben. In einem Thread-sicheren Programm kann mehr als ein Prozessor einen Datensatz mit einem stark reduzierten Fehlerrisiko bearbeiten. Sprachen, die unveränderliche Objekte priorisieren, sind Rust und Clojure.

Gemeinschaftliche Unterstützung

Wenn Sie ein Programm in einer neuen Sprache schreiben, ist es hilfreich, auf eine aktive, leidenschaftliche Gemeinschaft von Entwicklern zuzugreifen, die die Arbeit des jeweils anderen aktiv nutzen und dazu beitragen. Informieren Sie sich vor der Auswahl einer Programmiersprache über die Community dieser Sprache. Einige Sprachen verfügen über eine aufregende, dynamische und dynamische Benutzerbasis, zu der Sie möglicherweise gehören möchten, und andere Sprachen verfügen möglicherweise nur über eine geringe oder keine Community.

Ausdruckskraft

Beim Schreiben eines Programms "sprechen" die Gedanken und Problemlösungsfähigkeiten des Programmierers durch diese Sprache. Infolgedessen bevorzugen Programmierer Sprachen, in denen sie sich gerne ausdrücken. Was eine Sprache und einen Programmierer gut zusammenarbeiten lässt, ist jedoch schwer zu definieren. Die einzige Möglichkeit zu wissen, mit welcher Sprache Sie sich auskennen, besteht darin, verschiedene Sprachen für verschiedene Projekte zu verwenden und diese für sich selbst zu vergleichen.