Grundlagenfragen zu (System)Programmierung


  • Mod

    anneXus schrieb:

    Könnt ihr für den Einstieg in dieses Thema ein bestimmtes Buch empfehlen?

    Literatur, wie ein Computer funktioniert? Die Frage ist zu unklar, um konkrete Empfehlungen zu geben.



  • SeppJ schrieb:

    Literatur, wie ein Computer funktioniert? Die Frage ist zu unklar, um konkrete Empfehlungen zu geben.

    Nein. Grundsätzlich geht es mir um Programmierung. Daher formuliere ich mal die Frage anders. Was für Vorkenntnisse wären hilfreich und interessant beim Einstieg in die Programmierung (evntl. Mathematik etc.)? Wissen über die Funktionsweise eines Computers ist vorhanden - das ist nicht der Punkt.


  • Mod

    anneXus schrieb:

    Was für Vorkenntnisse wären hilfreich und interessant beim Einstieg in die Programmierung (evntl. Mathematik etc.)?

    Eigentlich gar nichts, außer Grundfertigkeiten beim Bedienen eines Computers und hilfreicherweise auch über die grundlegende Funktion (nicht zwingend notwendig, aber nützlich). Gerade die Dinge, nach denen du hier im Thread gefragt hast, dürften ungefähr 0 Relevanz beim Programmieren haben, außer, du entscheidest dich irgendwann in ferner Zukunft mal, mit an einem Betriebssystemkernel zu programmieren.

    Mathematik ist natürlich immer überall nützlich.



  • hustbaer schrieb:

    Mechanics schrieb:

    Es gibt z.B. den IPC Bus, und den kann man enumerieren.

    Was issn das? Nie gehört. Haste nen Link dazu?

    Ja ja, ich meinte natürlich PCI. Aber ich denke von "IPC" im Sinne von Interprocess Communication hast du schon was gehört? Man kann in jede diese Abkürzungen viel reininterpretieren.

    anneXus schrieb:

    Nein. Grundsätzlich geht es mir um Programmierung. Daher formuliere ich mal die Frage anders. Was für Vorkenntnisse wären hilfreich und interessant beim Einstieg in die Programmierung (evntl. Mathematik etc.)? Wissen über die Funktionsweise eines Computers ist vorhanden - das ist nicht der Punkt.

    Versteh ich nicht ganz. Du sagst, das wär dein Beruf. Was genau, Hardware oder Programmierung? Wenn Programmierung, dann solltest du doch wissen, was man da für Vorkenntnisse braucht? Oder meinst du "Systemprogrammierung" (ein sehr schwammiger Begriff) im Speziellen? Dafür braucht man sicher keine Mathematik und muss auch nicht mal besonders viel programmieren können, eher robust programmieren. Du brauchst hauptsächlich C und Assembler.
    Wahnsinnig viele Vorkenntnisse braucht man nicht. Ich musste in einem Projekt was in ein spezielles BIOS einbauen, war jetzt auch überhaupt nicht mein Schwerpunkt damals. Das ist alles sehr plattformspezifisch, man muss die fetten Dokus vom Mainboard und Prozessorhersteller durchwühlen und sich die Infos zusammensuchen, die man braucht. Ist natürlich ein tolles Gefühl, wenn es dann mal funktioniert, ist aber nichts, was ich unbedingt öfters machen wollen würde. Weil die Kenntnisse kaum wiederverwendbar sind. Bei der nächsten Plattform sind die Register, Adressen und Werte wieder komplett anders und das was du über die eine Plattform weißt (wenn du es nicht sofort wieder verdrängt hast), hilft bei der nächsten Plattform kaum weiter.



  • anneXus schrieb:

    Was für Vorkenntnisse wären hilfreich und interessant beim Einstieg in die Programmierung (evntl. Mathematik etc.)? Wissen über die Funktionsweise eines Computers ist vorhanden - das ist nicht der Punkt.

    Wie beim Auto ("Was für Vorkenntnisse wären hilfreich und interessant beim Einstieg in das Autofahren"): Einsteigen und losfahren, das Weitere gibt sich.

    Wenn Du "alte" Technik erschmökern willst, rate ich zu PC-Intern von Michael Tischer (3. Aufl.):

    http://www.amazon.de/PC-Intern-3-0-Michael-Tischer/dp/3890115918/ref=sr_1_2?s=books&ie=UTF8&qid=1386105043&sr=1-2

    Die späteren Auflagen beschäftigen sich mehr mit Windows-Programmierung, nicht ganz uninteressant, aber da gibt es mittlerweile bessere/ausführlichere Lektüre. Wenn Du es schaffst, eine MSDOS-Umgebung auf Deinen Computer zu bringen (was möglich ist) und die alten Programme (Turbo Pascal, Turbo Assembler) auftreiben kannst, kannst Du das Buch auch direkt als Lehrbuch verwenden. An den Prinzipien hat sich im Großen und Ganzen nichts geändert.

    viele grüße
    ralph



  • Mechanics schrieb:

    hustbaer schrieb:

    Mechanics schrieb:

    Es gibt z.B. den IPC Bus, und den kann man enumerieren.

    Was issn das? Nie gehört. Haste nen Link dazu?

    Ja ja, ich meinte natürlich PCI.

    Oki, dann klar mir die Sache ist.

    Aber ich denke von "IPC" im Sinne von Interprocess Communication hast du schon was gehört? Man kann in jede diese Abkürzungen viel reininterpretieren.

    Hihi, ja, sicher. Aber "IPC Bus" macht in dem Zusammenhang auch mit IPC=Interprocess Communication keinen Sinn 😉



  • Wissen über die Funktionsweise eines Computers ist vorhanden

    Anscheinend weniger als durch deinen "Beruf" erwartet. Einstiegspunkt ist der Bootsektor. Anfang ist: Schreiben eines kleinen Programmes, dass beim Start durch eine Bootdiskette ausgefuehrt wird und eine Nachricht am Bildschirm ausgibt, bsp. Hallo Welt.



  • rkhb schrieb:

    Wenn Du "alte" Technik erschmökern willst, rate ich zu PC-Intern von Michael Tischer (3. Aufl.):

    Vielen Dank für den Tipp.

    knivil schrieb:

    Wissen über die Funktionsweise eines Computers ist vorhanden

    Anscheinend weniger als durch deinen "Beruf" erwartet. Einstiegspunkt ist der Bootsektor. Anfang ist: Schreiben eines kleinen Programmes, dass beim Start durch eine Bootdiskette ausgefuehrt wird und eine Nachricht am Bildschirm ausgibt, bsp. Hallo Welt.

    Dass der Bootsektor als erstes für den Start gelesen wird, ist mir natürlich bewusst. Aber danke für deinen Tipp.

    Gruss
    annexus



  • Alles wichtige ist, was passiert dann ...



  • Suchst du etwas wie Write Great Code von Randall Hyde (No Starch Press)?



  • Lade dir Bochs als virtuelle Maschine runter, lern x86 Assembler und mach deine ersten Versuche im Bootsektor (512byte) der virtuellen Diskette von Bochs.

    Der Code im Bootsektor ist der erste Teil, der von dir stammt, alles davor erledigt die Firmware des Computers.
    Die macht aber auch nichts anderes, als dass sie die 512 byte von der Diskette in den RAM kopiert und dann diesen Code ausführt.



  • lalalalal schrieb:

    Der Code im Bootsektor ist der erste Teil, der von dir stammt, alles davor erledigt die Firmware des Computers.

    Muss nicht sein, ich hab auch schon mal am BIOS vom Bochs rumgebastelt.



  • Mechanics schrieb:

    lalalalal schrieb:

    Der Code im Bootsektor ist der erste Teil, der von dir stammt, alles davor erledigt die Firmware des Computers.

    Muss nicht sein, ich hab auch schon mal am BIOS vom Bochs rumgebastelt.

    aha, kling interessant.
    was hast du da gemacht?



  • Hab ja schon geschrieben, dass ich für ein Projekt was am BIOS von so einem Spezialboard umbauen musste. Mit Bochs habe ich dann vor allem die hardwareunabhängigen Sachen getestet, z.B. wie sich Grub verhält, wenn ich das Verhalten von paar Standardinterrupts anpasse.



  • Mechanics schrieb:

    Hab ja schon geschrieben, dass ich für ein Projekt was am BIOS von so einem Spezialboard umbauen musste. Mit Bochs habe ich dann vor allem die hardwareunabhängigen Sachen getestet, z.B. wie sich Grub verhält, wenn ich das Verhalten von paar Standardinterrupts anpasse.

    ah ok - habs erst jetzt gesehen.



  • [quote="SeppJ" Wenn du noch Grundlegenderes lernen willst: Was denn? Das Wesentliche habe ich gerade erklärt, so spannend ist das nicht.[/quote]Da hat wohl einer den Schuss nicht gehoert. Es geht hier um OS-Development, das ist eine Koenigsdisziplin der Informatik. Ich empfehle dir mal, dich mit dem Thema Informatik auseinander zu setzen.



  • @OSDEVELLEVEL
    Da hat wohl einer keine Ahnung von dem was er schreibt 🙂
    (Und damit meine ich nicht SeppJ, hihi.)


Anmelden zum Antworten