Wie Programmiert man ein Programm wenn man...

02/08/2010 16:11 suiluJ.#1
Wie programmiert man ein Programm zum Programmieren wenn man kein Programm zum Programmieren hat
02/08/2010 16:14 peperonitoni#2
Naja ich denk mal , mit " 10001101101100111" usw.. :D , ich denk mal , die haben einen auf Matrix gemacht :D

MfG


€: Wenn du Softwares meinst , dann ist das kein Coden :D , denn:

Die Unterscheidung von Programmierer zum Softwareentwickler ist fließend, teilweise werden die Begriffe auch synonym verwendet. Sofern eine Unterscheidung getroffen wird, bezieht sich diese in der Regel darauf, dass reine Programmierer nur kleine Programme oder Teile größerer Programme realisieren. Sie erfüllen dann keine oder nur geringe Planungs- und Managementaufgaben.

(Quelle : Wikipedia )
02/08/2010 16:15 ms​#3
Assembler
02/08/2010 16:25 flo8464#4
Assembler ist im Prinzip erst mal auch eine Sprache.
Aber ich sags mal so, es ist einer CPU egal ob sie Löcher in einer Lochkarte oder Assembler Mnemonics interpretiert.
02/08/2010 16:29 MrSm!th#5
Jo, aber wie haben die den ersten Assembler geschrieben frag ich mich immer :D
Den haben die wohl selbst in hex geschrieben, während sie die Opcodes entwickelt haben oder gibt es da ne andere möglichkeit?^^
02/08/2010 17:03 flo8464#6
Naja, OPcodes können problemlos als Schaltungen implementiert werden, dh. sie sind pysikalisch.

Aber lies doch mal hier: Opcode ? Wikipedia

Interessanter wird das ganze bei Prozessoren, die Bytecode wie zb Java interpretieren...
02/08/2010 17:45 MrSm!th#7
ja also mussten sie doch als sie die entwickelt haben, den ersten assembler selbst in hex schreiben oder nicht? ;)
02/08/2010 20:31 Akorn#8
Quote:
Originally Posted by MrSm!th View Post
ja also mussten sie doch als sie die entwickelt haben, den ersten assembler selbst in hex schreiben oder nicht? ;)
Ja die ersten computer pogramme wurden von hand in Maschinencode geschrieben.

Ich hab nochmal ne seite aus meinen Lesezeichen rausgesucht die ich vor ein paar jahren gefunden habe, leider scheint diese momentan ein paar probleme zu haben bzw ist vielleicht auch im umbau jedenfalls wird auf dieser und den dort verlinkten seiten gezeigt wie man ein kleine MS-DOS .com programme von hand in Maschienencode schreibt.
11/02/2010 18:56 MoepMeep#9
Digitaltechnik anyone? ;>
11/16/2010 18:46 Akorn#10
Quote:
Originally Posted by GM-Hjacker View Post
Assembler ist bin mir sehr sicher im BIOS des Computers eingebaut und das wurde hald ohne Computer gemacht dann gings weiter ;) habe mir auch mal die Frage gestelt ist alles BIOS!!
Assembler ist eine Maschinensprache und kein ding das man irgendwo einbauen kann.
11/17/2010 08:40 マルコ#11
lol, alles BIOS...und wie hat man das dann im Bios gemacht?^^
Leutz, der erste PC war n riesen Taschenrechner (sucht nach Konrad Zuse) der einfach mit Relais funktionierte. Das Programm war also nicht virtuell, sondern rein physikalisch vorhanden. Und dann hat man darauf basierend immer weiter gemacht. Desshalb gibt es heute das Binärsystem. Weil Relais können nur Strom oder kein Strom geben. ;)

(Die Relais wurden übrigens irgendwann durch Transistoren ersetzt. Und was haben wir heute noch in unseren übertriebenen Abakussen? ;P )
11/18/2010 04:00 JaMaL#12
Jeder Prozessortyp hat einen bestimmten Befehlssatz, grundsätzlich können diese Befehlssätze recht unterschiedlich ausfallen. Grundsätzlich unterscheidet man da zwischen RISC (Reduced Instruction Set Computer) und CISC (Complex Instruction Set Computer) Prozessoren. Die einen haben einen kleinen Befehlssatz, aus dem man komplexere Befehlsketten erst zusammenbauen muss, die CISC Prozessoren haben hingegen einen größeren Befehlssatz mit teils komplexen Befehlen, die direkt in Hardware implementiert sind, beispielweise sowas wie sinus(x).

Assembler ist quasi eine äquivalente Sprache zu Maschinencode und unterscheidet sich dadurch auch wieder zwischen den Prozessortypen. Maschinencode selbst ist letztendlich natürlich binär und dadurch scheiße zu programmieren, genau deshalb hat man eine besser lesbare, äquivalente Sprache in Form von Assembler erschaffen. Immer noch zu umständlich -> Hochsprachen, die weitere Abstraktionsebenen von der Hardware bereitstellen.

Und daraus folgt, dass ich beim kompilieren von einem C Programm für x86 und für ARM unterschiedliche Ergebnisse rausbekomme, da der Compiler meine abstrakte Programmiersprache eben in die jeweils vorhandenen Befehlssätze kompiliert.

Der Prozessor holt sich dann über den Datenbus in Verbindung mit dem Adressbus seine Daten, wobei ein Befehl an den Prozessor dabei wiederum ein Datum darstellt. Der Prozessor holt sich also ein Datum von Adresse xy und das könnte ein Befehl sein oder auch nur ein einfacher Zahlenwert. Ich hoffe es ist verständlich, was damit gemeint ist. Das nennt man Von-Neumann-Architektur, es gibt keine unterschiedlichen Speicher für Daten und Programmcode.

Und damit kommen wir zur eigentlichen Frage vom TE: wenn ich den in Hardware implementierten Befehlssatz vom Prozessor kenne, dann kann ich natürlich auch Programme realisieren. Darauf aufbauend werden Betriebssysteme realisiert, die zwischen Hardware und restlicher Software abstrahieren. Auch heutzutage sind Betriebssystemkernel größtenteils in Assembler und der nächsten Abstraktionsebene "C" realisiert.

Kurz gesagt: wenn ich weiß, was wie sich der Prozessor verhält, wenn er eine bestimmte Folge von Binärcode (0/1) geschickt bekommt, kann ich anfangen Software zu realisieren. Wenn man ganz tief in die Hardware schaut, dann sind die Nullen und Einsen kleine Spannungsunterschiede, die als Null oder Eins interpretiert werden.

Es waren einige lustige Antworten dabei. Mit dem BIOS hat das nichts zu tun und in Hexadezimal schreiben, naja das ist einfach nur ein anderes Zahlensystem. Wenn ich einfach nur die Zahlenfolge "10" habe, dann wäre das als Dezimalzahl interpretiert die 10, als Dualzahl entsprechend die 2 und als Hexadezimalzahl die 16. Maschinencode ist stehts binär.

Ich hoffe ich hab mich halbwegs verständlich ausdrücken können und nicht irgendwas verrafft, denn es ist schon spät.
11/18/2010 12:05 MrSm!th#13
Hex ist eben leichter zu lesen :p
Naja, ich meinte es eben so, dass man das erste Programm von Hand in Form von Opcodes geschrieben haben muss, es gab ja noch keinen Assembler oder Texteditor.
11/18/2010 12:25 Bot_interesierter#14
Dafür gab es Lochkartenstanzer und wenn man sich vertippt hat durfte man neu Anfangen.
Oder man hat direkt am Terminal Befehle eingegeben, je nachdem wie der Computer eben Eingaben verarbeiten konnte.
11/18/2010 12:28 nkkk#15
Quote:
Originally Posted by Bot_interesierter View Post
Dafür gab es Lochkartenstanzer
wir haben noch so ein teil im keller xD.