
Einführung
Kompilierte Sprachen des interpretierten Typs sind jene Programmiersprachen, die zu einer Art Zwischendarstellung kompiliert werden (manchmal als " Bytecode " bezeichnet). Das auffälligste Beispiel ist die JVM (Java Virtual Machine).
Dieser Artikel beschreibt meine Gedanken zum Konzept einer virtuellen Maschine für Programmiersprachen in der aktuellen Realität. In der Realität, in der die meisten Dienste im Internet funktionieren und Desktop-Programme schrittweise auslaufen.
Ursachen des Auftretens
Zu der Zeit, als das World Wide Web geboren wurde, erschien die Java-Technologie, die zuerst die Verwendung einer virtuellen Maschine als Laufzeitumgebung für Programmiersprachen auf hoher Ebene populär machte.
Sun Microsystems hat versucht, die Zuverlässigkeit und hohe Geschwindigkeit kompilierter Sprachen mit der Portabilität und Benutzerfreundlichkeit interpretierter Sprachen zu kombinieren. Bis zu einem gewissen Grad wurde die Idee verwirklicht, da Java immer noch die häufigste Technologie beim Aufbau hoch ausgelasteter Server war.
Unter anderem wurde eine der Hauptanforderungen der Plattform gestellt, die später zum Slogan wurde: "Einmal kompilieren, überall laufen!" . Dies bedeutete, dass der Programmierer den Quellcode nur einmal in den sogenannten Bytecode kompilieren sollte, der auf jedem System ausgeführt werden kann, auf dem die JVM installiert ist.
Dies ist zur treibenden Kraft hinter der Technologie geworden und wirft viele Sprachen in den Hintergrund. Dies war eine Art Revolution in der Welt des Digital Computing, denn zuvor konnte niemand ein ähnliches plattformübergreifendes Niveau erreichen. Jetzt können Benutzer dieselbe Version des Programms auf vielen Betriebssystemen und Prozessorarchitekturen herunterladen und sicherstellen, dass es genau so funktioniert, wie es die Entwickler beabsichtigt haben.
Aber die Zeiten ändern sich und die Technologie mit ihnen. Das World Wide Web wird immer beliebter und verdrängt einige Dinge, die uns vertraut sind.
Die Ära der Ferndienste
"Warum Programme an Benutzer liefern, wenn Sie nur eine Website erstellen können?" - Diese Frage wurde von Großunternehmern gestellt, was später zu einer großflächigen Abwanderung von Diensten ins World Wide Web führte. Standard-Desktop-Programme verlieren allmählich an Popularität, da es viel einfacher und effizienter ist, eine einfache (oder nicht so) Website zu erstellen.
Infolgedessen ist die Notwendigkeit, Programme so oft aus dem Internet herunterzuladen, verschwunden. Öffnen Sie eine Site und führen Sie die erforderlichen Maßnahmen viel schneller aus als beim Herunterladen von Megabyte Binärdaten.
In der Zwischenzeit hat Java beim Erstellen dieser Websites an Popularität gewonnen, da es zu diesem Zeitpunkt (bis heute) nichts Bequemeres gab. Die Quelldateien wurden nur für eine bestimmte Serverarchitektur kompiliert, daher das Prinzip "Einmal kompilieren , überall ausführen!" hörte auf, seine frühere Bedeutung zu haben . Benutzer haben das Herunterladen von Programmen eingestellt, und Entwickler haben begonnen, nur für eine bestimmte Architektur zu kompilieren.
Sprachentwicklung
Zuvor hatten kompilierte Programmiersprachen eine eher schlechte Funktionalität der Standardbibliothek, weshalb es notwendig war, viele plattformabhängige Funktionen zu verwenden, selbst für eine einfache Anwendung, die nichts Übernatürliches tut.
Auch die Programmiersprachen standen nicht still, und Sprachen wie Rust und Golang , die beide kompiliert wurden, kamen ans Licht. Beide verfügen über einen Standard und viele Bibliotheken von Drittanbietern, die Funktionen unabhängig von Architektur und Betriebssystem bereitstellen. Darüber hinaus stand auch das C / C ++ - Ökosystem nicht still.
Als Ergebnis stellte sich heraus, dass moderne Standardbibliotheken und virtuelle Maschinen dieselbe Rolle spielen - sie übersetzen plattformübergreifenden Code in plattformabhängige Funktionen.
Der Rest von
Einige könnten argumentieren, dass es immer noch eine Nachfrage nach Desktop-Programmen gibt. Grundsätzlich handelt es sich hierbei um geschlossene Programme für den internen Gebrauch in Unternehmen sowie um eine kleine Anzahl öffentlich zugänglicher Anwendungen.
In beiden Fällen ist das Kompilieren für Hunderte verschiedener Plattformen nicht sinnvoll, da in den allermeisten Fällen nur drei bekannte Betriebssysteme ( GNU / Linux , Microsoft Windows und Mac OS ) und eine Familie von Prozessorarchitekturen ( x86 ) verwendet werden.
Fazit
Insgesamt haben wir virtuelle Maschinen, die ihre Arbeit verlangsamen (als Bytecode-Laufzeiten), die ihre Hauptvorteile aufgrund der beiden oben genannten Faktoren verloren haben:
- Die Notwendigkeit, das Programm auf Hunderten verschiedener Architekturen auszuführen, ist nicht sinnvoll, da die meisten Programme auf Servern funktionieren und es nicht so viele Benutzerarchitekturen und Betriebssysteme gibt.
- Kompilierte Sprachen standen nicht still und ihre Standardbibliotheken erwarben die notwendigen Grundfunktionen für plattformübergreifenden Code.
Diskussionen in den Kommentaren sind willkommen. Ich hoffe, dass der Artikel Sie zu einigen Überlegungen über die Auswahl der richtigen Sprache für Ihre Aufgaben veranlasst hat.
Ergänzungen
Wie in den Kommentaren erwähnt, bietet verwalteter Code einige Vorteile, die dem kompilierten Code nicht zur Verfügung stehen, einschließlich Reflexion und Anmerkungen.