Unterschied Maschinensprache, Programmiersprache, Hochsprache(bzw. höhere Programmiersprache)?
Was sind die wichtigsten Unterschiede?
2 Antworten
Maschinensprache ist eine Folge von Nullen und Einsen - ein s.g. Binärcode. Da Menschen sich diese langen binären Folgen schlecht merken können wurden Assembler entwickelt die im Grunde nichts weiter tun als leichter merkbare Abkürzungen (die Mnemonics) in Maschinencode umzuwandeln.
Maschinensprache wird daher umgangssprachlich auch gern für diverse Assembler-Dialekte verwendet.
So steht zB inc eax (inkrementiere den Inhalt des Registers EAX) für den OpCode 0x40 (hex) bzw. 1000000 (binär).
Du siehst also weder 0x40 noch 1000000 wären wirklich einprägsam und ein Programm aus zig Zeilen solcher Codes wäre sehr schwer lesbar...
Hochsprachen sind eine Weiterentwicklung der Assembler-Sprachen. In Assembler programmiert man jeden Prozessorbefehl aus. Das kann bei komplexen Programmen zu einer Unmenge an Code führen. Hierzu ein Beispiel:
Hallo Welt in nasm für Linux:
section data
hello db "Hallo Welt!", 0xa
len equ $-hello
section text
global _start
_start:
; Print text with a system-call
mov eax, 4
mov ebx, 1
mov ecx, hello
mov edx, len
int 80h
; Exit programm
mov eax, 1
mov ebx, 0
int 80h
Hallo Welt in C++:
#include <iostream>
int main(){
std::cout << "Hallo, du schöne Welt!" << std::endl;
return 0;
}
Hallo Welt in Python:
print("Hallo Welt")
... du siehst also, dass Hochsprachen wie C++ oder Python quasi mehrere Maschinenbefehle zu einem Befehl zusammenfassen. Das hat zwei Vorteile:
- Man ist schneller und benötigt weniger Code
- Das gleiche Programm kann ohne Anpassung auf verschiedenen Prozessoren kompiliert werden, was mit der prozessorspezifischen Maschinensprache nicht geht (zumindest nicht außerhalb einer Prozessorfamilie)!
Programmiersprachen ist der Überbegriff für alles womit man Programme schreibt.
Maschinensprache ist der Code, den ein Rechner versteht, Programmiersprachen gibt es viele, z.B. Assembler, die am nächsten an der Maschinensprache ist und einen geringen Abstraktionslevel hat. Hochsprachen haben einen hohen Abstraktionslevel, d.h. sind weit von dem entfernt, was die Maschinensprache ist.
Sind Maschinensprachen und Hochsprachen gleichzeitig Programmiersprachen?