Forum: PC-Programmierung Wie „arbeitet“ Software?


von Matze (Gast)


Lesenswert?

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.

von Paule (Gast)


Lesenswert?

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

von der mechatroniker (Gast)


Lesenswert?

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.

von Pronto (Gast)


Lesenswert?

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.

von zwieblum (Gast)


Lesenswert?

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.

von Mark B. (markbrandis)


Lesenswert?

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...

von P. S. (Gast)


Lesenswert?

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?

von Sven P. (Gast)


Lesenswert?

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'
- ...

von zwieblum (Gast)


Lesenswert?

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

von FHler und das ist gut so (Gast)


Lesenswert?

@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.

von Mark B. (markbrandis)


Lesenswert?

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)

von Horst (Gast)


Lesenswert?

> (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.

von Mark B. (markbrandis)


Lesenswert?

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 :-(

von peterguy (Gast)


Lesenswert?

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.

von Martin V. (oldmax)


Lesenswert?

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
Noch kein Account? Hier anmelden.