Wie viele Menschen auf dieser Welt beherrschen Maschinensprache?

6 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Es kommt da zunächst auf die Aufgabe an, dann auf den Unterschied zwischen "beherrschen" und "programmieren". Es gibt viele Aufgaben, wo man den Maschinencode kennen muss. Das sind schon mal die Leute, die solche Maschinen herstellen. Dort, wo die Prozessoren (Chips) entwickelt werden, beherrscht wohl jeder die Maschinensprache. Auch wer Compiler entwickelt, muss das können. Denn schließlich muss der Compiler Maschinencode erzeugen. In erster Linie sind das Randprobleme, wo das gebraucht wird. Anwenderprogramme werden grundsätzlich nicht in Maschinensprache programmiert, auch nicht von denen, die das könnten. Aber es gibt auch andere Aufgaben, z.B. Gerätetreiber. Da kann es schon vorkommen, dass man zumindest Teile davon direkt im Machinencode programmieren muss. Übrigens gibt es Maschinencode nicht nur bei Computern. Auch Werkzeugmaschinen und Fertigungsroboter werden programmiert und wenn Hilfsmittel dazu verwendet werden, müssen diese auch von jemandem hergestellt werden.

Ich selbst habe in den 60-ger Jahren Prüfprogramme entwickelt, die zum Testen und zur Fehlersuche der damaligen Computer benötigt wurden. Dazu habe ich mir selber einen Compiler für Maschincode gebaut. Denn auch bei der Programmierung in der Maschinensprache muss man sich die Adressen nicht zu Fuß ausrechnen. 

Es gibt auch heute noch einzelne Nischen, wo die Kenntnis von Maschinencode unumgänglich ist. Ich glaube aber nicht, dass irgendjemand diese Leute zählt und seriöse Angaben über einen Bestand machen könnte, noch dazu weltweit. Außerdem tangieren solche Arbeiten kaum die Öffentlichkeit. Ich selbst schätze die Zahlenvorstellung derer jedenfalls auf höher ein als allgemein angenommen wird.


ChetFaker97 
Beitragsersteller
 10.08.2016, 20:09

Vielen Dank, sehr aufschlussreich!

0

Früher habe ich mich sehr intensiv mit Assembler auseinander gesetzt, und dabei auch immer Disassemblate mit Hex-Gegenüberstellung gelesen.

Dabei habe ich mir dann irgendwann ganz automatisch viele Instruktionen in Hex-Form gemerkt.

Als mir das bewusst wurde, habe ich mal versucht, EXE-Dateien im Hex-Editor zu manipulieren, und zwar ohne jegliche weitere Software. Dabei ist mir aufgefallen, dass ich große Teile tatsächlich verstehen kann, und habe mir daraufhin das Disassemblat der Teile angeschaut, die ich noch nicht kannte.

Relativ schnell (binnen Tagen) ging das dann so gut, das ich tatsächlich auch kleinere Funktionen lesen konnte.

Das einzige große Problem ist allerdings die Addressierung, bei der man irre wird, wenn einem diese Aufgabe keine Software abnimmt. Aber wenn man mal von Sprüngen absieht, ist selbst x86 Maschinencode relativ gut lesbar. (Allerdings werden einige Intruktionen auf relativ komplizierte Art und Weise aus unterschiedlich langen Bit-Blöcken zusammen gesetzt, sodass man hier entweder viel auswendig lernen, oder ständig im Kopf die Bits nachzählen muss.)

Es genügt eigentlich, wenn du 0x74 gegen 0x75 austauschen kannst, und weißt, wie du damit Programmfunktionen negierst. Oder wenn du in einem JS-Snippet ganz viele 0x90 findest, und sofort weißt: "Aha! NOP-Slide!"

Mini-COM-Progrämmchen (aka Hello World) konnte ich auch aus dem Hut direkt im Hexeditor schreiben, aber sobald es um Sprünge geht, macht das keinen Spaß mehr. (Wie gesagt, wegen der Adressierung!)

Das war aber alles nur Sport und ich bin froh, einen vernünftigen Assembler oder Disassembler einsetzen zu können.

Meine persönliche Meinung: Ich glaube, viele Leute die ein starkes Interesse an Assembler-Programmierung haben, werden früher oder später auch mal direkt mit Maschinencode spielen. Allerdings auch nur sehr kurz, denn das ist so eine Sache, bei der man froh ist, wenn sie funktioniert, und man sie danach in der Schublade verschwinden lassen kann.

Heutzutage braucht man eigentlich - wenn überhaupt - nur noch zu wissen, wie NOP, die MOV-Befehle und die ganzen bedingten und unbedingten Sprungbefehle in Hexform aussehen, um "mal schnell" eine Software patchen zu können. Das sind (inkl. Kombinationen) vielleicht 50 verschiedene häufig auftretende Bytes. Die zu beherrschen ist keine Kunst, und es dürfte weltweit zich tausende von Leuten geben, die das drauf haben.

Aber rein in Maschinencode programmieren? Das machen vielleicht ein paar Freaks bei Wettbewerben aus Spaß an der Freude, aber für ernsthafte Anwendungen ist das heutzutage absolut ungeeignet.

Meiner Meinung nach gilt für Maschinencode fast das Selbe, wie für die Assembler-Programmierung: Auch wenn man damit nicht aktiv Software-Entwickelt, ist es - je nach Fachgebiet - oft sinnvoll, diese Dinge wenigstens halbwegs flüssig lesen zu können. :)

Eine Statistik zu dem Thema wirst du aber vermutlich nicht finden.

Viel Spaß noch! :)

PS: Es gibt Bausätze und Schulrechner, die werden in einfachem Maschinencode programmiert. Teilweise auch mit Papierstreifen oder ähnlichem. Kannst du bei Amazon für ein paar Euro kaufen!

Wenn du das gelten lassen willst, dann gibt es weltweit mit Sicherheit einige Zehntausend Menschen, die Maschinencode programmieren können.

Wenn du aber regulär verwendete alltägliche Computersysteme meinst, wird es eng werden. Trotzdem tippe ich hier ebenfalls auf einige Zehntausend Menschen! :)


ChetFaker97 
Beitragsersteller
 10.08.2016, 20:08

Vielen Dank für eine so ausgiebige Antwort! :-)

1

Sicher können das einige Leute. Ich habe damit in den 80-ern viele Programme geschrieben. Das war noch 8-Bit-Maschinensprache und überschaubar. Der Code (hatte ich fast alle im Kopf) wurde direkt mit einem Hilfsprogramm in den Speicher getippt. Das was waren noch Zeiten, da war das alles noch überschaubar.

Das kommt nun drauf an, wie man "Maschinensprache" definiert. Das direkte Eingeben von Maschinencode ist seit den 1970ern völlig außer Gebrauch gekommen (sagt Wikipedia). Machinencode direkt einzugeben ist eher unnützes Wissen. ;)

Wenn man allerdings jemandem mit Assembler-Kenntnissen die Dokumentation für den Befehlssatz des Prozessors und eine unverhältnismäßige Menge Zeit gibt, dann könnte diese Person theoretisch auch Maschinencode schreiben. Assembler-Programmierer gibt es noch so einige auf der Welt. Wenn man es mal an Github-Nutzern misst, dann sind es wohl knapp über 19000 Assembler-Programmierer.

https://www.openhub.net/languages/assembler

Neo kann die fließend (Hollywood Tatsache)

Ansonsten beherschen wohl kaum noch Leute Maschinensprache , vielleicht so 10 die noch wirklich Bits in kleine Prozessoren schieben müssen und keine andere Möglichkeit haben.

Der Rest beherscht Assembler , welches Quasi Lesbare Maschinensprachcodierung ist , aber es ist eben nicht mehr 0 und 1  .