| Zeile 16: | Zeile 16: | ||
Wenn Du in erster Linie an eine grafische Oberfläche denkst, bist Du hier womöglich falsch. Grafische Oberflächen sind ein interessantes Thema – aber eine vollkommen andere Baustelle. Ein OS ist die [[HAL|Schnittstelle zur Hardware]]. Das heißt, Du wirst eine [[Speicherverwaltung]] bauen, einen [[Scheduler]], [[Treiber]] für störrische Hardware. Du wirst alles tun, nur keine bunten Pixel auf den Bildschirm bringen – oder falls doch, wird dir direkt anschließend die saubere Basis fehlen, damit man mit diesen Pixeln auch etwas sinnvolles anfangen kann. | Wenn Du in erster Linie an eine grafische Oberfläche denkst, bist Du hier womöglich falsch. Grafische Oberflächen sind ein interessantes Thema – aber eine vollkommen andere Baustelle. Ein OS ist die [[HAL|Schnittstelle zur Hardware]]. Das heißt, Du wirst eine [[Speicherverwaltung]] bauen, einen [[Scheduler]], [[Treiber]] für störrische Hardware. Du wirst alles tun, nur keine bunten Pixel auf den Bildschirm bringen – oder falls doch, wird dir direkt anschließend die saubere Basis fehlen, damit man mit diesen Pixeln auch etwas sinnvolles anfangen kann. | ||
| − | Du wirst dich mit vielen Fehlern herumschlagen müssen, du wirst trockene Spezifikationen etliche Artikel und [ | + | Du wirst dich mit vielen Fehlern herumschlagen müssen, du wirst trockene Spezifikationen etliche Artikel und [[:Kategorie:Tutorials|Tutorials] lesen müssen und manchmal stundenlang über ein Problem hängen und darüber grübeln, wie man es (am besten oder überhaupt) löst. Du wirst eine Menge fremden Code lesen müssen, eventuell nicht in der Sprache, mit der du dein OS programmierst (falls du dich dazu entscheidest, nicht in [[C]] zu programmieren). Du wirst dich selbst beim Kopieren von fremden Code ertappen, was aber der falsche Weg ist, denn beim Kopieren von Code lern man nichts. Du wirst einige Wochen, wenn nicht gar Monate brauchen bis du alles verstanden hast. Und selbst dann gibt es immer noch Dinge, die dir Kopfschmerzen bereiten. Es wird immer das ein oder andere Problem, den ein oder anderen Bug geben. Das ist aber in der Entwicklung von nativen Anwendungen auch nicht anders. |
| − | Du wirst, sofern du nicht Linux nutzt, auch einige Zeit mit dem Setup deiner Build-Umgebung verbringen. Es wird auch nicht alles von Anfang an klappen mit den [ | + | Du wirst, sofern du nicht Linux nutzt, auch einige Zeit mit dem Setup deiner Build-Umgebung verbringen. Es wird auch nicht alles von Anfang an klappen mit den [[:Kategorie:Werkzeuge|Tools]]. Es ist natürlich nicht unmöglich, auf anderen Systemen als Linux ein Betriebssystem zu entwickeln, aber anfangs schwieriger bzw. erfordert eine größere Vorbereitung. |
Wer sich nicht mit Hardware herumschlagen möchte, kann sich ein DOS oder ein abgespecktes [[Linux]] als Grundlage nehmen und seine Oberfläche darauf aufbauen. Aber selbst dann gibt es viel zu lernen: Du musst das darunter liegende System verstehen, wissen, wie es arbeitet und dementsprechend deine Vorstellung darauf aufbauen oder gegebenenfalls das System darunter an deine Bedürfnisse anpassen. Aber auch hier gilt wieder viele Spezifikationen, Artikel und Tutorials sowie Code zu lesen. | Wer sich nicht mit Hardware herumschlagen möchte, kann sich ein DOS oder ein abgespecktes [[Linux]] als Grundlage nehmen und seine Oberfläche darauf aufbauen. Aber selbst dann gibt es viel zu lernen: Du musst das darunter liegende System verstehen, wissen, wie es arbeitet und dementsprechend deine Vorstellung darauf aufbauen oder gegebenenfalls das System darunter an deine Bedürfnisse anpassen. Aber auch hier gilt wieder viele Spezifikationen, Artikel und Tutorials sowie Code zu lesen. | ||