Es gibt viele Möglichkeiten, Programmiersprachen zu unterscheiden. Zunächst fallen sie in verschiedene Paradigmen: funktional, objektorientiert und mehr.

Sie können eine Programmiersprache auch nach ihrer Übersetzungsmethode klassifizieren, was einen großen Einfluss auf die Leistung einer Sprache hat. Kompilierte Programmiersprachen sind normalerweise schneller als interpretierte. In Situationen wie der Spieleentwicklung, die Geschwindigkeit erfordern, neigen Entwickler daher dazu, kompilierte Sprachen zu verwenden.

Was ist Übersetzung?

Der Übersetzungsprozess wandelt von einem Programmierer geschriebenen Code in Maschinencode um, den ein Computer ausführen kann. Maschinencode ist eine Art Low-Level-Sprache, die Einsen und Nullen hat. Der Übersetzer wandelt also den High-Level-Code, den Sie in einer Programmiersprache erstellen, in Maschinencode um.

Ohne Übersetzer müssten Sie in Maschinensprache programmieren. Jede Ihnen bekannte höhere Programmiersprache verwendet eine von drei Übersetzungsmethoden: einen Compiler, einen Interpreter oder eine Mischung aus beiden.

instagram viewer

Was ist ein Compiler?

Ein Compiler ist eine Software, die in einer Hochsprache geschriebenen Quellcode zur Ausführung in Low-Level-Code umwandelt.

Das obige Diagramm stellt einen Compiler in seiner einfachsten Form dar. Der Compiler hat mehrere Phasen. Jede Phase transformiert den Code von einem Zustand in einen anderen. Das Ziel jeder Compilerphase besteht darin, eine Ausgabe zu erstellen, die für die nachfolgende Phase leichter zu manipulieren ist. Die allgemeine Struktur eines Compilers ist wie folgt:

  • Scanner: Diese Phase nimmt einen Strom von Zeichen und gruppiert sie in Token, die Bezeichner, Zeichenfolgenliterale usw. darstellen.
  • Parser: Diese Phase gruppiert die Token basierend auf der Grammatik der Quellprogrammiersprache. Es erstellt einen abstrakten Syntaxbaum, der eine Sammlung von Ausdrücken ist, aus denen das Programm besteht.
  • Semantik: In dieser Phase wird eine semantische Analyse des abstrakten Syntaxbaums (AST) durchgeführt. Es verwendet die Regeln der Quellsprache, um Bedeutung hinzuzufügen, indem es den AST-Ausdrücken Typen zuweist und ihre Gültigkeit überprüft. Der AST wird dann zu einer Zwischendarstellung.
  • Intermediate Representation (IR): In dieser Phase wird der Quellcode des ursprünglichen Programms in Maschinencode umgewandelt. Es erzeugt eine vereinfachte Version des Assemblercodes. Die IR verwendet einen oder mehrere Optimierer, um den IR-Code zu verbessern und Informationen für die Maschine zu sammeln, auf der sie läuft. Ein Optimierer kann ein Programm effizienter, schneller oder sogar kleiner machen.
  • Codegenerator: Diese Phase verbraucht den optimierten IR-Code und wandelt ihn in Maschinencode um.

Welche Programmiersprachen verwenden Compiler?

Einige beliebte kompilierte Programmiersprachen sind:

  • C
  • C++
  • gehen
  • Ada
  • Fortran
  • COBOL
  • Lispeln
  • Ziel c
  • Schnell

Ein Vorteil bei der Verwendung einer kompilierten Sprache besteht darin, dass Fehler während der Kompilierung identifiziert werden. Auf diese Weise können Sie solche Fehler beheben und dann versuchen, das Programm erneut zu kompilieren. Kompilierte Sprachen schlagen mit geringerer Wahrscheinlichkeit fehl, sobald sie mit der Ausführung beginnen. Diese Sprachen generieren nicht einmal ein Programm, das ausgeführt werden kann, wenn der Quellcode Syntaxfehler aufweist. Aber semantische Fehler und andere Formen von Laufzeitfehlern werden daran vorbeikommen.

Kompilierte Sprachen werden auch sehr schnell ausgeführt, nachdem sie kompiliert wurden.

Was ist ein Dolmetscher?

Ein Interpreter ist ein Programm, das jeweils eine einzelne Codezeile übersetzt und ausführt. Dieser Vorgang wiederholt sich, bis der Interpreter bei der letzten Codezeile im gegebenen Programm oder Skript ankommt.

Wie Sie dem obigen Diagramm entnehmen können, benötigt ein Interpreter zwei Eingaben. Zunächst wird der gesamte Quellcode (Programm) benötigt. Dann liest es die erste Zeile des Programms (als Eingabe), übersetzt es und führt es aus. Wenn diese Zeile korrekt ausgeführt wird, geht sie zur nächsten Zeile im Programm oder Skript über.

Anders als ein Compiler übersetzt ein Interpreter nicht ein ganzes Programm in Maschinencode. Stattdessen parst und analysiert es eine bestimmte Codezeile, bevor es ausgeführt wird. Ein Interpreter sollte mit der Ausführung eines Programms – insbesondere eines größeren – beginnen, bevor ein Compiler überhaupt mit der Übersetzung fertig ist.

Welche Programmiersprachen verwenden Interpreter?

Einige beliebte interpretierte Programmiersprachen sind:

  • Python
  • JavaScript
  • Perl
  • MATLAB
  • BASIC

Obwohl ein Interpreter schneller mit der Ausführung von Code beginnt, schlägt er dennoch fehl, wenn er auf einen Fehler stößt. Als Programmierer müssten Sie einen solchen Fehler beheben und das Programm neu starten. Dieses Ereignis tritt jedes Mal auf, wenn der Interpreter auf einen neuen Fehler stößt. Einige Fehler können schlummern, wenn sie sich auf eine seltene Reihe von Umständen beziehen. In solchen Fällen, Tests sind wichtiger denn je.

Interpreter sind normalerweise einfacher zu entwickeln als Compiler, und ihre Programme sind von Natur aus besser portierbar.

Was ist Hybridübersetzung?

Die hybride Übersetzung verwendet einen Compiler und einen Interpreter. Die hybride Übersetzung kompiliert Quellcode auf hoher Ebene in eine Form auf niedrigerer Ebene, z. B. Bytecode. Es verwendet dann einen Interpreter, um diesen Bytecode auszuführen.

Die Hybridübersetzung kann sich von einer Programmiersprache zur anderen unterscheiden, verwendet jedoch diese allgemeine Struktur. Eine der beliebtesten Programmiersprachen, die hybride Übersetzungen verwenden, ist Java. Der Java-Compiler übersetzt seinen Quellcode in Java Virtual Machine (JVM)-Bytecode. Der Interpreter übersetzt dann den JVM-Bytecode in Maschinencode.

Welche Programmiersprachen verwenden Hybridübersetzung?

Einige beliebte hybride Programmiersprachen sind:

  • Java
  • C#
  • VisualBasic
  • Erlang
  • F#

Mit hybrider Übersetzung erhalten Sie das Beste aus beiden Welten. Wenn Sie zuerst den Code kompilieren, können Sie Fehler so früh wie möglich beheben. Der Bytecode, den Hybrid-Compiler erstellen, ist einfacher zu interpretieren als ein High-Level-Programmquellcode.

Der Wert der Kenntnis der verschiedenen Übersetzungsmethoden

Sie sollten die spezifische Übersetzungsmethode verstehen, die eine Sprache verwendet, insbesondere wenn Sie sie für ein neues Projekt verwenden. Eine Sprachübersetzungsmethode ist ein wichtiger Teil der Identität einer Programmiersprache. Es kann sich darauf auswirken, wie Sie Ihr Programm verteilen und wie Benutzer es ausführen.

Jeder Übersetzungsansatz hat seine eigenen Vorzüge. Top-Programmiersprachen wie C++, Python und Java verwenden alle unterschiedliche Übersetzungsmethoden. Neben dem Paradigma einer Sprache ist ihre Übersetzungsmethode eine der wichtigsten Eigenschaften, die Sie kennen sollten.

Es gibt mehrere Paradigmen, die eine Programmiersprache verwenden kann. Die meisten der Top-Programmiersprachen sind Multi-Paradigmen-Sprachen; Sie unterstützen die Verwendung von zwei oder mehr unterschiedlichen Paradigmen. Drei der beliebtesten Paradigmen sind imperative, objektorientierte und funktionale Programmierung.