"We are back" « oc.at

Wie funktionieren Programmiersprachen?

Erklärbär 14.02.2004 - 21:16 855 10
Posts

Erklärbär

Banned
Avatar
Registered: Sep 2003
Location: Back Home
Posts: 2042
Also das würd mich interessieren.
Wieso funktioniert Windows/Linux so wie es programmiert wurde.
Mussten/Müssen die einzelnen Programmiersprachen auch erst programmiert werden?

Oder hat Bill Gates damals das erste WIn auf gut Glück geschrieben?
SRY für die dumme Frage ;)

mfg

HaBa

Vereinsmitglied
Dr. Funkenstein
Avatar
Registered: Mar 2001
Location: St. Speidl / Gle..
Posts: 19769
Ca. so wie du gesagt hast => alles basiert auf Maschinensprache.

So wurde z.B "A" "erfunden" um darauf B zu programmieren.

Mit der Programmiersprache B war es dann möglich C zu programmieren, die Sprache in der dann Unix, WIndows, ... programmiert wurden (A, B, C = Bell Labs)

Und für verschiedene Plattformen müssen dann "nur" mehr die "Verbindungen" vom "Frontend" (wwi Visual Basic) zum eigentlichen Rechnersystem / zur eigentlichen Architektur erstellt werden.

Erklärbär

Banned
Avatar
Registered: Sep 2003
Location: Back Home
Posts: 2042
Ja aber wie haben die den Maschinen jetzt "beigebracht" das sie wenn ich die Sprache C Anwende die Sachen ausführen muss und wenn das dund das geschrieben wird sie das OS installiert usw.?

Grundsätzlich wie is die 1. Sprache entsanden zum Programmieren?
Dann versteh ichs ja wie es aufgebaut wurde.

HaBa

Vereinsmitglied
Dr. Funkenstein
Avatar
Registered: Mar 2001
Location: St. Speidl / Gle..
Posts: 19769
Eine "erste" Sprache gibts so wohl nicht => die untersten Befehle sind im Prozessor drin, und sogar der hat sowas wie ein "Betriebssystem" => ein einzelner Transistor weiß wohl nicht wirklich was er tun soll, deshalb werden sie "hart" zu Gattern etc. "verdrahtet", die dann wieder miteinander kombiniert ergeben dann mal die einfachen Assembler-Befehle.

Und die Programmiersprache bzw. der Compiler dazu erstellt dann aus einem "IF" oder wwi eine für die Maschine interpretierbare Abfolge von Assambler-Befehlen ...

Erklärbär

Banned
Avatar
Registered: Sep 2003
Location: Back Home
Posts: 2042
Also der 10 Strim-Nicht Strom Befehl.
Wenn dort und dort Strom fließt und dort keiner kommt jetzt der Befehl raus?
Versteh ich das so richtig?

BiOs

Here to stay
Avatar
Registered: Feb 2001
Location: 7400
Posts: 2920
nimm dir ne halbe stunde zeit und google ein bischen ...

hier mal zum anfangen/reinlesen:
http://www.bernd-leitenberger.de/en...ersprachen.html

edit:
noch einer, liegt aber leider nur im google cache -> klick mich

Zitat
Jeder der schon einmal in seinem Leben programmiert hat fragt sich doch, "Wie funktioniert eine solche Programmiersprache eigentlich?"
Diese Frage hört sich auf den ersten Blick sehr schwer an, aber die Antwort ist einfacher als man glauben mag. Dieses Kapitel beschreibt, wie eine Program-miersprache funktioniert und wie man sich seinen eigenen Compiler bauen kann, also quasi seine eigene Programmiersprache schreibt.
Bearbeitet von BiOs am 14.02.2004, 21:37

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
ein einfacher prozessor würde also zb so aussehen: ich habe eine handvoll von gattern (zb addieren, laden von werten, speichern von werten, subtrahieren, OR, XOR, AND, NOT, usw...) und ich habe register (R1, R2, R3... oder in der intel-welt zb AX, BX, CX, DX, ...) mit den zu bearbeitenden werten.

jetzt definiert der cpu-hersteller daß zb die ziffer 1 addieren heißt, die ziffer 2 subtrahieren, usw... dann kommen meist noch die nummern der entsprechenden register.

ließt die cpu so einen befehl, aktiviert sie die entsprechenden gatter auf den entsprechenden registern -> schwups, ich kann zwei register addieren, subtrahieren, XORn oder sonstwas damit machen.

natürlich gibt es dann auch befehle um die register zu aus dem hauptspeicher bzw mit direktwerten zu füttern (oft 'laden' genannt) udn dorthin zu schreiben... und natürlich vieles mehr.

weil diese maschinencodes zwar zt. strukturiert sind, aber nicht sonderlich lesbar, und weil man dann händisch verfolgen muß, welchen wert man auf welche adresse geschrieben hat, entwickelte man assembler. diese sind eine symbolische darstellung des maschinencodes. zb statt binärfolgen schreibt man befehle wie "ADD", "MOV", "OR", "JMP"... dh: jede zeile assembler (bis auf die deklarativen befehle) ergibt so ziemlich genau einen maschinencode.

der assembler bietet schon eine gewisse erleichterung: zb kann man die adressen mit sprechenden namen versehen, register haben einheitliche namen, das ständige mitrechnen von adressen für sprungmarken enfällt... etc

anfänglich hat man tatsächlich maschien-code direkt in lochkarten gestampft, hat sich dann aber eben immer weitere erleichterungen geschaffen: hat man zb schon eine art von computer A mit einer höheren programmiersprache (nehmen wir an zb basic, die ja in den 70ern sehr populär war) und ich entwickle eine neue cpu B, dann kann ich in dem basic auf recher A einen assembler schreiben, der code für B ausspuckt. später werde ich in diesem assembler selbst einen assembler für B schreiben, oder ein basic, oder ein C...

ist das grundgerüst einmal geschaffen, brauch ich keinen cross-compiler mehr: zb ist gcc (wie die meisten gebräuchlichen C compiler) self-hosting: dh: ich kann gcc version n verwenden um gcc version n+1 zu kompilieren.

ein betriebsystem ist dann allerdings noch wesentlich mehr: ein OS bietet programmen funktionen an, um auf den rechner zuzugreifen, eine speicherverwaltung (damit sich programme nicht gegenseitig überschreiben), eine interprozesskommunikation, geregelten zugriff auf so ziemlich alle ressourcen (bildschirm, speichermedien, ausgabe, etc...), netzwerk...

FearEffect

Here to stay
Avatar
Registered: May 2003
Location: Oberösterreich
Posts: 6068
oder ein guter tipp: nicht immer alles in frage stellen, "des duat einfoch" :D

aba intressiert hats mich auch schon imma wie das angefangen hat

Erklärbär

Banned
Avatar
Registered: Sep 2003
Location: Back Home
Posts: 2042
Zitat von BiOs
nimm dir ne halbe stunde zeit und google ein bischen ...

hier mal zum anfangen/reinlesen:
http://www.bernd-leitenberger.de/en...ersprachen.html

edit:
noch einer, liegt aber leider nur im google cache -> klick mich

THX 4 Link.
War sehr hilfreich.
Versteh zwar noch nicht alles aber ich kenn mich jetzt wieder ein Stück besser aus.

Maekloev

linux addicted
Avatar
Registered: Oct 2002
Location: Absam
Posts: 920
Hm, wenn du dieses Rätsel lösen kannst, wirst du höchstwahrscheinlich auch die Antwort auf die Entstehung der Welt finden ;)

Imho ein nur schwer lösbares Rätsel. Wenn man sich vorstellt, wie weit man heute technisch bereits ist...

xdfk

pädagogisch wertvoll
Avatar
Registered: Sep 2000
Location: Graz
Posts: 6441
Zitat von Maekloev
Hm, wenn du dieses Rätsel lösen kannst, wirst du höchstwahrscheinlich auch die Antwort auf die Entstehung der Welt finden ;)

42 ist die antwort ;) :D
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz