Hallo. Ich bin seit 2 Jahren mit meinem Studium (Mechatronik, FH) fertig und arbeite seit dem als Softwareentwickler bei einem mittelständischen Unternehmen. Ich entwickle komplexe Prüfsoftware und bearbeite teilweise hardwarenahe Aufgabenstellungen (z.B. Hardwaretreiber, etc..), alles hauptsächlich unter C. Die Programmiersprache C habe ich denk ich soweit im Griff um die an mich gestellten Aufgabenstellungen gut und möglichst schnell lösen zu können. Was mir aber noch fehlt ist irgendwo eine Art Hintergrund, was die vom mir geschriebenen C-Programme „intern“ bewirken, wie sie also mit dem Betriebssystem zusammen spielen, mit der PC-Hardware (z.B. Speicher, CPU) zusammenarbeiten usw… Hat hier jemand von euch einen Tipp für ein gutes Buch oder sonst etwas wie ich mir hier weiterbilden bzw. einarbeiten könnte? Danke euch schon mal im vorraus.
hmm, also irgendwie verstehe ich die Frage jetzt nicht so richtig: deine Aussagen sind widersprüchlich! Zum einen schreibst du, dass du seit 2 Jahren komplexe Software implementierst und zum anderen Fragst du, wie die Programme funktionieren (die du schreibst). Ich frage mich, wie maan das machst (programmieren) ohne eine Vorstellung davon zu haben, was man da überhaupt macht? Was lernt man eigentlich im Studium heutzutage? Paule
Dem Verständnis zuträglich ist normalerweise die Beschäftigung mit Digitaltechnik (wie arbeitet der Rechner?), ein wenig hardwarenahe Programmierung, ein wenig Assemblerprogrammierung. Nur durch Lesen kriegt man das "Gespür" meiner Erfahrung nach weniger, aber das kann bei anderen anders aussehen. Assemblerprogrammierung auf Z80, mal auf einen nackten DOS-Rechner (in C) die Grafikkarte direkt (ohne Betriebssystem und Treiber dazwischen) ansprechen, Mikrocontroller programmieren, das hat mir damals am meisten gebracht.
ich kann deiner Frage nicht ganz folgen, ich glaube aber das du wissen willst dein Programm mit dem Betriebsystem zusammenarbeitet. Dafür sollte man wissen auf welchem System deine Programme laufen, Windows, Linux oder meinst du sogar AVR ? Beim letzteren sollte die Frage nicht bestehen.
auch wenn' jetzt polemisch klingt: das ist eben der unterschied zwischen uni und fh. besorg' die ein einführungsbuch über microcontroller, das steht's drinnen.
Ich denke mal, dass folgende Vorlesungen in einem Studium im Zusammenhang das Gewünschte ergeben: -Digitaltechnik -Rechnerarchitektur -Betriebssysteme -Software Engineering Wenn man die nicht oder nicht alle gehabt hat, dann kann man sich ja die entsprecchenden Bücher von Autoren wie Tanenbaum etc. vornehmen. zwieblum schrieb: > auch wenn' jetzt polemisch klingt: das ist eben der unterschied zwischen > uni und fh. Er hat Mechatronik studiert, da war der Anteil an Informatik womöglich nicht allzu groß. Erst denken, dann posten...
zwieblum schrieb: > auch wenn' jetzt polemisch klingt: das ist eben der unterschied zwischen > uni und fh. Das ist nicht Polemik, es ist Bloedsinn. Gerade in der FH sollte sowas vermittelt werden - und an einer guten wird es das auch. Aber vieleicht ist Mechatronik das falsche Studium dafuer?
Als erstes würde ich dir ans Herz legen, irgendeinen Assembler zu lernen. Muss nicht Pentium sein, AVR/PIC reichen da völlig. Ansonsten kann man nur ankratzen: Matze schrieb: > Was mir aber noch fehlt ist irgendwo eine Art Hintergrund, was > die vom mir geschriebenen C-Programme „intern“ bewirken, Ich weiß nicht, wie tief du eintauchen willst: Mach dir klar, dass C auch 'nur' ein abstrakter Assembler ist. Deine Anweisungen in C werden unmittelbar in Assemblercode übersetzt. > wie sie also > mit dem Betriebssystem zusammen spielen, mit der PC-Hardware (z.B. > Speicher, CPU) zusammenarbeiten usw… Interaktion mit der restlichen Hardware erfolgt über entsprechende Assembler-Instruktionen und/oder Register mit besonderen Funktionen ('SFR'). Interaktion mit dem Betriebssystem kann auf vielerlei Weise geschehen: - direkt mit 'syscalls' - indirekt über 'iocontrol' - ...
für alle motzer: bitte lesen, auf der uni wird das thema behandelt. http://www.mechatronik.uni-linz.ac.at/studinfo/aktuelles/Studienplan_Master_Mechatronik_010409.pdf
@Zwiebelchen Bei uns an der FH (EIT) gehörten die internen Funktionen im Rechner natürlich mit dazu. Microcontrollertechnik, Assembler, Rechnerarchitekturen. Wie Peter Stegemann schon richtig bemerkte - es kommt wohl nicht darauf an Uni vs. FH (hatten wir schon zu genüge), es kommt vielmehr auf den Studiengang an.
zwieblum schrieb:
>bitte lesen, auf der uni wird das thema behandelt.
Und an der FH auch. Aber nicht in jedem Studiengang (an der Uni
sicherlich auch nicht).
Dafür gibt es an der Uni so interssante und sinnvolle Pflichtfächer wie
Geschlechterforschung :-) (siehe PDF)
> (siehe PDF)
du meinst im Kapitel Wahlfächer?
;-)
Das Problem ist eher, das an allen Einrichtungen immer wieder mal eher
abstrakte Erklärungen gegeben werden oder man zu dem Zeitpunkt nicht das
nötige Hintergrundwissen hat, um manche Erklärungen zu verstehen.
Horst schrieb: >> (siehe PDF) > > du meinst im Kapitel Wahlfächer? > ;-) Nö, steht auf Seite 6 in Tabelle 2: Pflichtfächer. Ist vielleicht eine Arbeitsbeschaffungsmaßnahme für eine habilitierende Geisteswissenschaftlerin an der Uni dort ;-) Mann, das Forum-Layout ist wirklich bescheiden bei so langen Wörtern :-(
Um mal zum eigentlichen Thema zurückzukommen: Wenn du die Abläufe in der Hardware bzw. in den unteren Schichten des Betriebssystems verstehen möchtest, wäre die Entwicklung eines Messgerätes empfehlenswert. Das muss für den Anfang nichts großes sein, z.B. ein Digital I/O USB Messgerät. Einsehr interdiszoplinäres Projekt, daß alle interessanten Themen abdeckt: - Schaltplan/Layout/Digitaltechnik - Microcontrollerprogrammierung - Treiberprogrammierung Die grundsätzliche Funktionsweise von USB, PCI oder Ethernet Messgeräten ist ziemlich gleich, nur ist für USB das Interesse in Foren größer und du bekommst folglich mehr Unterstützung/Literatur.
hi Eigentlich hat sich an der Verarbeitung der Software nicht viel geändert... Nach wie vor adressiert die CPU Speicher, holt aus den Zellen die Befehle oder Daten und legt die Daten nach Manipulation wieder ab. Die Aussage, C wird in Assembler übersetzt ist nicht richtig, denn auch Assembler versteht keine CPU. Allerdings ist Assembler äußerst hardwarenah. Auch ist der Befehlsumfang nicht so immens wie in einer Hochsprache. Alle Compiler erzeugen letztlich für das Programm eine Liste mit binären Signalen. Diese Codes (und nur diese) kann die CPU erkennen und bearbeiten. Im einfachsten Fall gibt es eine Liste , die immer wieder abgearbeitet wird. Wir kennen es unter Programmschleife. Interrupts sind spezielle Programmteile, die auf Ereignise reagieren, so z. B. auf das Ereignis der Tastatursignale oder der Maus. Ereignis kommt, Hauptschleife verlassen und in ein Unterprogramm springen, Ereignis bearbeiten und wieder zum Hauptprogramm. Diese Technologie ist soweit ausgereift, das man in den heutigen Sprachen z.B. Delphi, VB oder C++ nur noch Elemente auf ein Formular zieht und ein paar Zeilen Code dazu. (gut, auch da können's ein paar tausend werden...) Im Kern läuft nun ein Prozeß, der sich im Kreise dreht, den Bildschirm aktualisiert und auf Signale von "außen" hört. Kommt etwas, dan schaut er in einer Tabelle nach, was zu tun ist. Wenn du also Programme schreibst, in welcher Sprache auch immer, ist es nichts anderes als eine Liste von Befehlen, die du abgearbeitet haben möchtest, immer und immer wieder. Gruß oldmax
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.