computer language high and low level, wieso gehört Python zu den high level?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ob eine Sprache jetzt kompiliert wird oder interpretiert, sagt nicht viel darüber aus, ob die high oder low level ist. Zwar hat Interpretation gegenüber Ausführen von kompiliertem Code einen Geschwindigkeitsnachteil, dies ist allerdings nicht der Sprache selbst geschuldet, sondern wie diese übersetzt wird.

Für manche Sprachen bestehen sowohl Interpreter als auch Compiler.

Mehr maßgebend für die Entscheidung, ob eine Sprache high- oder low level ist, ist der Grad der Abstraktion innerhalb der damit geschriebenen Programme. Beziehen sich Anweisungen in der Sprache eher auf Konzepte innerhalb der Funktionsweise des Computers, oder wird von der Sprache eher versucht, diese zu verstecken und stattdessen Begrifflichkeiten zu introduzieren, die keine direkte Entsprechung im Computer haben. Zum Beispiel: "Objekt Orientierung" - diese Konzept findet sich nicht in den CPUs der Prozessoren, sondern wird aufbauend auf deren Möglichkeiten von der Sprache hinzugefügt. So würde man bei OO fähigen Sprachen darum auch eher von Hochsprachen sprechen.

Andere Sprachen wiederum spiegeln die Möglichkeiten der unterliegenden Prozessoren relativ direkt innerhalb deren Instruktionsumfang wieder. Solche Sprachen würden eher den low level Sprachen zugeordnet. Mit letzteren müsste der Coder tendenziell erst noch die Möglichkeiten der ersteren dieser Sprachen schreiben, hinzufügen, da diese noch nicht (unbedingt) von Haus aus mitgeliefert werden.

Aber auch low level Sprachen können interpretiert werden, genauso wie high level Sprachen kompiliert werden können.

Danke schön für Sternchen!

0

Python ist eine interpretierte Sprache. Das heißt, es wird beim Ausführen on the fly ""kompiliert"". Kompilierte Sprachen eben nicht.

Das kann man sich dann so vorstellen, wie wenn jemand mit dir redet. Das Gespräch verläuft deutlich flüssiger, wenn eine Sprache gesprochen wird, die du beherrschst, als wenn eine Sprache gesprochen wird, die du erst übersetzen musst.

Und außerdem ist Python auch aus anderen Gründen nicht unbedingt als schnelle Sprache bekannt ;)

Woher ich das weiß:Eigene Erfahrung – Ich hab das! Also hier... in meinem Haus!!!

naja ist auch nicht wirklich compiliert sondern

Python-Code-Byte ist in eine Zwischenform wie Java kompiliert .

0
Das heißt, es wird beim Ausführen on the fly ""kompiliert"".

Das würde eher auf Python mit JIT zutreffen. Normales Python wird ohne JIT eigentlich wirklich interpretiert, also die Commands werden einfach gelesen und dann von einem Programm so ausgeführt. Das Python wird lediglich in einen Bytecode umgewandelt welcher eben der Ausgang des Lexers ist.

Bei Python JIT wird dann eben dieser Bytecode während der Ausführung in Maschinencode kompiliert, bei normalen Python eben nicht.

0

Das wollte ich zwar nicht wissen, hätte gedacht, dass es keine Höhere Programmier Sprache ist weil sie Interpretiert wird und nicht Compiliert.

.

Man kann Python aber über Umwege in eine EXE umwandeln so dass es Kompiliert weird.

0
@alexthenr14

Nein, auch nicht ganz. Bloss weil eine Übersetzung in ein ausführbares Programm resultiert, bedeutet es noch nicht, dass das Programm kompiliert ist. Das Executable kann kann genauso ein Zwischencodeinterpreter sein, mit dem Programm als Zwischencode angehängt. Also beim Ausführen wird ein Interpreter gestartet, der das Programm ... interpretiert.

Bytecode wäre z.B. solch eine Art Zwischencode, also eine Darstellung, in der das Programm nicht mehr nur als ursprünglicher Quellcode besteht.

1
@alexthenr14

Vielleicht möchtest du noch einen weiteren Begriff für Unterscheidung zwischen interpretierten und kompilierten Programmen hinzufügen: "native code" - also Kompilation nach nativem Code. Das ist eine Übersetzung hin zu Code, welcher direkt vom Prozessor abgearbeitet wird, wobei das Resultat der Übersetzung analog zum Quellcode ist. Das ist was man auch "richtige" oder "echte" Kompilierung nennen könnte - und in etwa das, wovon ich vermute, dass du das mit "EXE, also kompiliert" eigentlich meinst.

Weil bloß einen Executable zu haben, erfordert nicht zwangsläufig "native code"

0
@alexthenr14

Ich hab hier versucht, dir mittels einer Demo zu zeigen, dass Kompilieren oder Interpretieren keinerlei Einfluß auf die Bestimmung der Sprache als high oder low level hat. Nämlich, ich hab das gleiche "Programm", drei mal in derselben Sprache, an verschiedene Interpreter und Compiler gegeben. Unten rechts ist anhand der Farbe zu sehen, was ich eingegeben habe (nämlich das in grün): Einfach eine Schleife, die Sterne ausgibt. Danach rufe ich das übersetzte Programm "sterne" auf, und du siehtst, dass das Programm auch überall das gleiche macht. Kein Wunder, die Sprache ist ja in allen drei Fenstern identisch. Nur die Übersetzer dafür sind anders. Und mit dem "see" Befehl lasse ich das Ergebnis der übersetzung sehen: Im Fall links ist das nativer code für x86, also auf einem PC laufend. Rechts oben ist das nativer code für ARM, auf einem ARM Microcontroller laufend, und unten rechts ist was ganz anderes: nämlich eine Übersetzung hin zu code eines shell scripts - der bei Ausführung von der shell interpretiert wird. Also nicht nur "interpretiert", sondern "übersetzt nach Code, der von einem Interpreter interpretiert wird ..."

Aber klar sollte sein, dass die Bestimmung der Sprache dahinter, ob low- oder high level, davon absolut nicht betroffen ist, denn lediglich die Resultate der Übersetzung sind in diesen drei Fällen unterschiedlich, aber weder Programm noch Funktion noch Sprache selbst - die Sprache ist darum in einem Fall nicht higher oder lower als in jedem anderen:

http://snap.scarydevilmonastery.net/1659042298073915036d.png

0

low level geht gegen hardware nähe , ergo brauchst du kein unterbau . high level benötigen einen low level unterbau der wirken kann .

ergo ohne sonstige umgebung läuft python gar nicht erst .

Es geht um den Abstraktionsgrad, nicht darum ob ein Interpreter oder ein Compiler verwendet wird.

Diesbezüglich ist C eine deutlich maschinennähere („lower level“) Sprache als Python.

Was möchtest Du wissen?