Seit ich vor fünf Jahren die Programmierung entdeckt habe, habe ich viele Dinge getan. Ich habe zahlreiche Programmiersprachen und -technologien gelernt und viele interessante Dinge ausprobiert. Ich habe Spiele geschrieben, sowohl Konsolen- als auch Grafik-, Konsolen- und Fensteranwendungen, die auf dem Desktop ausgeführt werden, CRUD-Webanwendungen, meine eigene (beschissene) PHP-XML-basierte Flatfile-Datenbank. Zusätzlich zu Web und Desktop habe ich die mobile Entwicklung mit Android ausprobiert, aber es hat mir nicht gefallen, also habe ich damit aufgehört. Ich habe kürzlich ein Webprojekt von mir abgeschlossen und lerne gerade funktionale Programmierung (Haskell).
Aber ich habe mich noch nie mit Systemprogrammierung beschäftigt. Die Idee, Software (ich bin mir nicht einmal sicher, ob dies die richtige Terminologie ist) auf einer niedrigen Ebene zu erstellen, die mit dem Betriebssystem interagiert, scheint interessant. Das Problem ist, ich bin mir nicht sicher, wie ich genau anfangen soll, und brauche weitere Beispiele dafür, was ich damit mache.
Soll ich zunächst die Win32-API lernen? Ich kenne etwas C ++, da ich damit einige Konsolen-Apps und -Spiele erstellt habe, es aber seit einigen Jahren nicht mehr verwendet habe. Ist das der richtige Weg? Und was ist mit C? Ich plane, mehr über C zu lernen (mithilfe des K & R-Buches), bevor der Sommer endet und das College beginnt. Ich möchte einen guten Vorsprung als Studienanfänger mit einem soliden Programmierhintergrund haben.
Antworten:
Ich glaube, Sie verwechseln die Systemprogrammierung mit der Anwendungsentwicklung . Die Systemprogrammierung würde eher dem Schreiben des Betriebssystems entsprechen und nicht mit diesem interagieren. Ich würde wahrscheinlich vorschlagen, mit der regelmäßigen Anwendungsentwicklung zu beginnen (unter Windows wäre dies die WinAPI ) und dann mit der Erforschung von Subsystemen fortzufahren, die Sie in der Tiefe interessant finden.
K & R ist offensichtlich die endgültige Anleitung zu C, und wenn Sie auf Windows-Anwendungen abzielen, würde ich dringend empfehlen, eine Kopie von Programming Windows zu erwerben .
Wenn Sie wirklich an Interaktionen auf "niedriger Ebene" interessiert sind, kann ich Ihnen auch die Win32 Assembly- Tutorials von Iczelicon vorschlagen ( MASM ist großartig und auch kostenlos).
Wenn Sie es schaffen, auch nur einen Bruchteil dieser Informationen vor Ihrem ersten Studienjahr zu erfassen, sind Sie wahrscheinlich fast allen anderen um Lichtjahre voraus.
quelle
Schreiben Sie ein kleines eingebettetes Projekt auf einen eingebetteten Controller wie den Arduino. Dies ist eine großartige Möglichkeit, um mit dem Programmieren von Lernsystemen zu beginnen, da Sie damit auf einer grundlegenden Ebene beginnen und in diese hineinwachsen können.
quelle
Wenn Sie an Systemprogrammierung interessiert sind, gibt es nichts Schöneres, als tatsächlich auf einem Betriebssystem zu arbeiten (entweder auf dem Kern des Betriebssystemkerns oder auf den zugehörigen Gerätetreibern).
Ich würde daher vorschlagen, sich an der Linux-Entwicklung zu beteiligen - es ist eine sehr gute Community, um mehr über Betriebssystem-Interna zu erfahren. Ich habe eine Menge über Betriebssysteme gelernt, indem ich einfach den Diskussionslisten für Linux-Kernel gefolgt bin .
Es ist auch eine Gelegenheit, ein konkretes Projekt anzunehmen und Ihre Fähigkeiten zu verbessern. Als Personalvermittler von Softwareentwicklern nehme ich es sehr zur Kenntnis, wenn jemand zu einem Open Source-Projekt beigetragen hat - es ist fast immer ein positiver Indikator für Können und Engagement!
quelle