Frage von Yasin9911, 160

Betriebssystem programmieren-Mit welchem Betriebsystem gehts am Besten-Mit welcher Computersprache geht´s bzw. ist dafür geeignet?

Hallo Leute, ich möchte gerne Anfangen mit das Programmieren von einem Betriebssystem. Ich möchte gerne Handybetriebssysteme wie z.B. Android, IOS, Windows,... Programmieren. Allerdings bin ich noch ein Anfänger und habe 0 Wissen was das Thema "Programmieren" angeht. Habe im Internet gelesen, dass Linux eigentlich am Besten sein sollte, um etwas ernstes zu Programmieren. Hab auch gelesen, dass "C++" die benötigte Computersprache sein sollte oder gibt es noch eine andere die benötigt ist bzw. auch notwendig ist?

Wieso ich mich für dieses Thema interessiere? Ich möchte beruflich Softwareentwickler werden. Ich werde auch in einer IT-Schule gehen, also würde ein bisschen Wissen über die Computerwelt nicht schaden. Ich hoffe ihr könnte mir helfen und gute Ratschläge geben.

Antwort
von ChrizZly2030, 54

Nun, zuerst könntest du dir einen Assembler - Deine Sprache (z.B. C, C++, java, python etc.) Compiler zu schreiben. Dann könntest du ein paar Treiber für deine Hardware schreiben. Dann den Kernel, Alles kombinieren und dann den ganzen Rest.

Aber zuerst solltest du programmieren können. Ein Betriebssystem ist gehört nicht zu den Dingen, die man zum lernen mal eben so programmiert. Suche dir eine Sprache aus (learncpp.com ist sehr gut um C++ zu lernen). Suche dir dann ein paar Projekte aus, die du mal realisieren möchtest.

Einige Vorschläge zum programmieren wären erstmal:

(Wenn du lernst, was diese sind) Eine Liste, ein Baum, ein Vektor, ein Graph

Dann kannst du verschiedene Algorithmen programmieren:

Matrix Multiplikation (z.B. Datei einlesen, berechnen, in neue Datei schreiben (dynamisch, sowie statisch (falls du C oder C++ machst)).

Verschiedene Sortieralgorithmen, Minimaler Spannbaum, kürzester Weg von A nach B und und und.

Ich persönlich würde dir empfehlen zuerst C++ zu lernen. Einfach, weil C++ objektorientiert ist im Gegensatz zu C. Java ist zu einfach. Java übernimmt vieles für dich, was andere Programmiersprachen nicht tun. Wenn du Java kannst ist es noch ein langer Weg zu C++. Aber wenn du C++ kannst ist es einfacher Java zu lernen.

Ich selber hatte es anders rum gelernt (zuerst Java an der Schule, dann C++ an der Uni und C++ war wesentlich komplexer, aber es kam mir so vor als hätte ich mehr Möglichkeiten).

Wenn du C++ programmieren willst empfehle ich dir auf jeden Fall Linux zu installieren. Als IDE ist Geany ganz gut. der Gnu Compiler ist einfach Spitze. Unter Windows gibt es da nur den MinGW, welcher ein schlecht portierter Gnu Coompiler ist. Der erste gute C++ Compiler ist bei Visual Studio bei. Visual Studio kostet aber ein ganzes Stück. Vom Intel Compiler ganz zu schweigen.

Wenn du java lernen willst kannst du es auf jedem PC machen. Eclipse ist eine gute IDE und das jdk von Oracle ist für alle Plattformen kostenlos erhältlich.

-ChrizZly

Kommentar von gerlochi ,

mir kahmnes auch so vor mit C++! es ist einfach diese gewaltige kraft und das potential! ich habe auch mit java angefangen und als ich dann c# gelehrnt habe, das einem nochnmehr als java abnimmt, habe ich verstanden und fand meinen weg zu C++! C++ ist meiner meinung nach die bedeuntenste und beste sprache von allen!

Kommentar von Yasin9911 ,

Danke für die sehr sehr hilfreiche Antwort. Ich werde mir vornehmen, jeden Tag einpaar Stunden C++ und Assembler zu lernen. Gäbe es eventuell eine Möglichkeit mit dir Kontakt aufzubauen? Ich möchte vieles lernen, um etwas Programmieren zu können und du scheinst dich wirklich sehr gut auszukennen in diesem Bereich. Wäre echt cool, wenn es so eine Möglichkeit gäbe. 

Kommentar von julib5432112345 ,

Kleiner Tipp: Assembler nur um zu kapieren wie Prozessoren arbeiten. Assembler ist reine Maschinensprache und schon kurz vor 0 und 1. Also lasse das lieber, es ist reine Arbeitsbeschaffung

Kommentar von ChrizZly2030 ,

Assembler ist nicht Maschinensprache. Assembler ist aber am nächsten zur Maschinensprache von all den Sprachen, die für uns lesbar ist. Ich selber kann kein Assembler. Ich fand parallele Programmierung (Multi Core Programmieung) interessanter. Und Assembler braucht man auch nur, wenn man einen Compiler schreiben will oder eben wenn verstehen will wie ein Prozessor funktioniert. Zum Programmieren an sich muss man Assembler nicht können und ich würde es für den Anfang auch nicht empfehlen. Ich denke C++ ist anspruchsvoll genug fürs erste. Und es bringt ja auch nichts, wenn du Assembler und C++ nur so ein bisschen kannst.

Du kannst mir gerne per PN schreiben. Aber im Internet findet man zu Programmierung extrem viel. Wenn du Englisch kannst, dann findest du praktisch alles im Internet.

Auch zu Linux kann ich dir deine Fragen beantworten, da ich Linux selber nutze :)

Und wie ich bereits gesagt habe, würde ich ein eigenes Betriebssystem erstmal nach hinten verschieben.

Antwort
von Belaro, 60

Ein eigenes Betriebssystem erstellen? Würde ich auch gerne machen.

Mit 0 Erfahrung in Programmieren wird man es niemals schaffen, ein Betriebssystem auch nur annähernd zu erstellen. Ich würde dir etwas kleineres für den Anfang anraten wie zum Beispiel einen Taschenrechner in der Konsole zu erstellen. Du kannst im Laufe der Zeit sicherlich mit grösseren Projekte anfangen aber für den Anfang wird das sicher ausreichen.

C++ ist an sich ein guter Einstieg. Ich würde aus Erfahrung aber lieber mit C anfangen. C++ ist eine objektorientierte Sprach und objektorientiert zu programmieren, ist nicht leicht. Deshalb tendiere ich zu C für den Anfang. C verwendet man meistens für Mikrochips, wo nicht viel Speicherplatz zur Verfügung steht wie zum Beispiel bei Kaffeemaschinen oder Waschmaschinen.

Kommentar von Yasin9911 ,

Ja hab mich leider falsch formuliert. Natürlich möchte ich mit etwas kleinem Anfangen. Ich bedanke mich für deine hilfreiche Antwort. Ich schaue mich mal im Internet rum was C bedeutet. 

Kommentar von gerlochi ,

c ist schon ein guter anfang, assembler und c++ aber (meiner meinung nach) besser

Kommentar von Yasin9911 ,

Ja ich fange mal klein an, will erstmal schauen, ob ich auch kleine Sachen programmieren kann. Danke :)

Kommentar von SparxDev ,

Um Gottes Willen nein! Mit Assembler solltest du nicht Anfangen!

Das ist etwas für die ganz Erfahrenen. ;) Assembler ist die mir bekannte Schwerste Programmiersprache. ^^

Fang am besten, wie schon gesagt, mit C oder C++ an. Was ich auch nur sehr Empfehlen kann ist VisualBasic und C#. :)

lG SparxDev

Expertenantwort
von martin7812, Community-Experte für programmieren, 31

Um ein Betriebssystem zu programmieren, wirst du auf jeden Fall den Assembler des jeweiligen Prozessors brauchen (also bei einem PC das Assembler des x86).

Man kann ein gesamtes Betriebssystem in Assembler schreiben oder Assembler-Code mit C (vielleicht auch noch C++ oder Pascal) kombinieren. Mit C#, Java und den meisten anderen Sprachen kann man das allerdings nicht machen.

PCs sind sehr gut dokumentiert, so dass es relativ einfach ist, ein sehr einfaches PC-Betriebssystem hinzubekommen.

Handies sind hingegen so gut wie gar nicht dokumentiert, so dass der Versuch aussichtslos ist, ein Betriebssystem zu schreiben, das auf einem "normalen" Handy funktioniert.

Wenn du allerdings noch gar keine Programmiererfahrung hast, wird es noch ein paar Jährchen dauern, bis du weit genug bist, ein PC-Betriebssystem zu schreiben.

Mein persönlicher Background: Ich selbst arbeite in der Entwicklung für Automobil-Betriebssysteme (also z.B. für Motorsteuerungen usw.), habe hobbymäßig vor Jahren ein einfaches PC-Betriebssystem programmiert und bin seit zwei Jahren an einem zweiten PC-Betriebssystem dran (habe aber keine Zeit, weswegen das wohl nie fertig wird...).

Kommentar von Yasin9911 ,

Hm, ja also ich möchte eh als erstes mal ganz klein anfangen :D ich lerne erstmal C und C++

Kommentar von SparxDev ,

Wenn du etwas ganz einfach Programmieren willst, dann lerne doch C#, oder was noch einfacher ist: VisualBasic! :)

Mit den zwei Sprachen kann man so viel Anstellen, z.B. Windows Anwendungen Programmieren.

Ich habe hier mal ein gutes Buch für dich um C# zu Lernen: https://www.rheinwerk-verlag.de/schrodinger-programmiert-c\_3366/

lG SparxDev ^^

Antwort
von TheBassHead, 55

Wenn du ein Betriebssystem Programmieren willst musst du mit Assembler und C arbeiten. Aber ein Betriebssystem zu Programmieren ist sehr aufwendig und schwer. Neben den Programmiersprachen muss man natürlich auch noch genau wissen wie ein Computer aufgebaut ist wie was überhaupt funktioniert.

Bis du überhaupt die benötigten Fähigkeiten dafür erworben hast werden schon mindestens ein paar Jahre vergehen. Wenn du keine lust hast SEHR viel Zeit ins lernen, etc. zu stecken, dann gib es lieber gleich auf. 

Ich sage nicht das es ein unmögliches Ziel ist, aber viele denken das man sofort mit dem programmieren von Betriebssystemen, etc. anfangen kann. Dies ist aber nicht so.

Kommentar von Yasin9911 ,

Ich verstehe was du meinst. Ich interessiere mich schon seid Jahren, für das Programmieren. Ich habe heute auch schon meinen Techniklehrer gefragt, er hat das gleiche gesagt. Er hätte mir auch ein Buch gegeben, was das Thema "Computersprache" angeht. Hatte es jedoch nicht mehr.

Antwort
von mrlilienweg, 7

Ich habe fast 40 Jahre als Anwendungsprogrammierer gearbeitet, ich würde aber niemals daran denken, ein Betriebssystem zu programmieren. An einem  Betriebssystem entwickeln ganze Stäbe von fähigen und erfahrenen Fachleuten, dieses geballte Wissen und die Anzahl der Arbeitsstunden wird wohl kein einzelner durchschnittlich befähigter  Mensch aufbringen können.  

Ich wünsche dir viel Erfolg beim Studium der einzelnen  Programmiersprachen, vom Rest deiner Pläne rate ich dir aber ab.

Antwort
von KnorxyThieus, 7

Hallo Yasin,

Da muss ich meinen Vorrednern wohl zustimmen - C++ ist eine schwere Hochsprache, die Programmierung eines ganzen Betriebssystemes ist noch wesentlich komplizierter.

Hey, das heißt nicht, dass es unmöglich ist - ein festes Projekt vor Augen zu haben, kann extrem motivierend sein! Aber fang doch trotzdem erstmal auf dem Boden der Tatsachen an: Wie viel hast du mit Programmierung schon am Hut? Der Einstieg ist häufig Batch oder Basic - frag gerne noch mal nach, wenn du einen guten Einstieg suchst!

Weiter geht es dann meistens mit einer besseren Sprache; ich weiß nicht, wie andere da vorgehen, aber ich habe mit Basic (Blitz Basic - aber das würde ich keinem mehr empfehlen) begonnen und darin programmiert, bis ich mehr als einmal deutlich aus der Sprache herausgewachsen war. Dann ging es mit Power an C# heran, in dessen fortgeschrittener Verwendung ich mich nun befinde. Die Sprache kann ich dir übrigens, als fortgeschrittene Sprache, auch empfehlen - aber bis du soweit bist, werden wohl noch ein paar Jahre vergehen, vielleicht hat sich das ja dann geändert ... :)

Je nachdem, wie offen du für andere Anwendungsgebiete bist, kannst du ja beim Üben der Sprachen gleich deinen Fokus auf für dein Projekt relevante Aspekte legen; das war und ist bei mir z. B. die Computerlinguistik, also OOP. (Musst du jetzt noch nicht verstehen :)) In deinem Falle könnte das z. B. die Grafik sein (wie stelle ich ein OS dar?), aber auch anderen Komponenten sind hier noch wichtig (wesentlich wichtiger!), die ich hier jetzt gar nicht alle aufzählen kann ...

Solltest du noch irgendwelche Fragen haben, nur zu! :-)

Mit freundlichen Grüßen,
KnorxThieus (♂)

Antwort
von W00dp3ckr, 40

Ein komplettes Betriebssystem ist heutzutage Milliarden Wert.

Wenn Du Betriebssystem-Erweiterung lernen willst, dann würde ich Dir raten, Dich Linux anzuschließen. Android basiert auch auf Linux. Jedoch ist ein Betriebssystem viel mehr als nur der Kernel.

Kommentar von Yasin9911 ,

Danke für die schnelle Antwort. Ich versuche mal Linux zu Herunterladen. Würde auch eine heruntergeladene Version ausreichen? 

Kommentar von W00dp3ckr ,

Das passiert nicht an einem Abend.

Du solltest erstmal

  1. Linux installieren
  2. Linux ausprobieren
  3. Den Unterschied zwischen Quellcode und Ausführbarem Code lernen
  4. Typische Werkzeuge mit einfachen Beispielen nutzen lernen (gcc, bash, sed, awk, automake, git....)
  5. Dich erkundigen, wie man an die Linux Kernel Sources kommt
  6. Die runterladen
  7. Versuchen, die zu bauen
  8. Ein Buch über C durcharbeiten
  9. Ein Buch über Betriebssysteme mindestens Querlesn
  10. Kernel-Entwickler-Listen abonnieren
  11. Lange lesen und nachvollziehen
  12. Dann eigene Sachen schreiben
Kommentar von Yasin9911 ,

Ich versuchs. Danke.

Antwort
von W00dp3ckr, 58

Eine andere Idee:

Du kaufst Dir einen Arduino (wirklich super simpler Rechner) und versuchst den zu verstehen und zu sehen, was ein Betriebssystem normalerweise für Dich macht, und beim Arduino halt nicht.

Die Idee ist ernst gemeint. Schau Dich mal um, was Dir besser liegt.

Kommentar von Yasin9911 ,

Ich schaue mich mal um, vielleicht hilft es mir ja etwas. Danke.

Kommentar von julib5432112345 ,

Ich bin pro Raspberry. Der Neue Zero ist für $5 zu haben! Das soll mal einer toppen!

Kommentar von W00dp3ckr ,

Ja, aber der kann zuviel. Wenn Du einen Rechner hast, bei dem die Programme maximal 8kb lang sein können, dann hast Du zwar weniger Möglichkeiten, bist aber mehr gezwungen, an die Grenzen zu gehen.

Antwort
von gerlochi, 53

Ich hatte den gleichen Traum, aber ich habe/werde Assembler nie verstenden/verstehen :D. Also musste ich das eigene System verwerfen und schreibe nun meine eigenen Shells in verschiedenen Sprachen um auf Topp-Form zu bleiben(Amateur-Shells :D). C++ war zwar erst schwierig zu verstehen, gebau wie Linux. Aber dann geht es wie mit Domino. Es macht *klick* und die Ideen fallen, aber auch die Domino-Schlange hatt ein Ende und ich musste mich an anderen Shells orientieren - Urheberrecht verloren :( -.

Bei mir ist gerade Python die nächste Sprache. Programmiersprachen habe ich schon viele durch. Java, C#, VB, (Free-)BASIC und C++ hab ich. Jetzt kommen die ganzen Script-Sprachen, also Python, Perl und Ruby.

Es mach wahnsinigen Spaß! Und ich werde als nächstes meine C++-Shell (wenn ich mit Python fertig bin), für das Community-OS Týndur programmieren bzw kompilieren.

Ach das wird ein Spaß! Also, wenn es nichts wird, ich suche eh noch jemanden der bei meiner neuen C++-Shell mitmacht :).

Viel Glück, hier noch eine hilfreiche Seite: https://www.lowlevel.eu/wiki/OS-Dev_f%C3%BCr_Einsteiger

MfG gerlochi

Kommentar von Yasin9911 ,

Hey, das freut mich, dass wenigstens jemand seinen Traum sozusagen fast erfüllen kann! :D Ich hoffe ich werde das alles auch so gut können und lernen wie du! :D Hoffe du findest jemanden, ich wäre dafür garnicht geeignet, da ich mich 0 kenne. Danke für die Antwort.

Kommentar von gerlochi ,

vielleicht sehen wir uns ja wieder, aber ich bin auch, ich sage mal unter 14. also habe ich einfach zu schnell aufgegrben, du schaffst es sicher! ich würde dir dann sogar meine shell anbieten. dann brauchst du keine zu schreiben ^^. aber erstmal muss das os dafür c++ verstehen :). virl glück!

Kommentar von julib5432112345 ,

Hey kannst du mal deinen besten C++ Code posten? Bin jetzt wirklich neugierig. Und warum machst du Skriptsprachen nach den Compilierten Sprachen?

Kommentar von gerlochi ,

Ist aber nur schwerwiegender Amateurcode. Ich könnte mal eine ältere Version posten, sie ist noch in der Beta-Phase. bevor du ihn dir durchließt, kann ich dir sagen: ich habe mit if begonnen und habe noch keinen nachteil festgestellt ^^ --- bitte: http://pastebin.com/D1THfJPMM - ich versuche es bald mal übersichtlicher zu machen ^^

Antwort
von julib5432112345, 68

Ja so euphorisch und geöffnet für die ganze Welt der Informationstechnologie war ich auch. Du hast nen langen weg vor dir. Du beginnst am besten mit Skripten wie Batch oder im Falle von Linux mit bash. Hast du jemals Linux benutzt? Dann machst du weiter mit C++ und kurz darauf parallel dazu Java (ist ganz ähnlich). 

Das verwendest du unter Linux und Windows. Wenn du dann Java drauf hast steigst du durch um Apps zu programmieren. Dann weißt du wie mat mit den OSs redet. Und wenn du dann anfängst die ersten Linux Kernel zu modifizieren bist du an deinem Ziel angekommen.

Fang erstmal mit Batch unter Windows an :) Bin offen für PMs ;)

Wie alt bist Du eigentlich, oder bleibst du eher anonym?

Kommentar von ChrizZly2030 ,

Wenn man sich dafür interessiert sollte man ne richtige Programmiersprache lernen. Was kann man unter Windows mit ner Batch machen? PC herunterfahren?

Kommentar von julib5432112345 ,

Ja PC runterfahren :D Das klingt wahnisnnig banal. Aber dinge wie Schleifen Parameter und der Umgang mit Pfaden und Anwedungen gehört dazu. Mache doch mal einen Batch Virus :) Ich fing an mit einer Batch die Hilft den PC zu reparieren. Ging über 1000 Zeilen. Kannst Resultate ja mal schicken :)

Kommentar von ChrizZly2030 ,

Kann ich leider nicht, da ich Linux Nutzer bin. Ich sehe die Windows Batch auch eher so als Spielzeug :P. Aber ja. Es geht mehr als PC herunterfahren. Klar. In der Schule haben wir aber nur mit herunterfahren und Autostart gespielt (was durch die Reborn Cards nicht geklappt hat ^^) Viel mehr hat mich die Batch nicht interessiert.

Kommentar von Yasin9911 ,

Hey, klasse! Danke für die Antwort. Ich werde auf meinem Rechner mal Linux mit wenig RAM installieren, damit ich dann einen schnellen Rechner habe! Ich bin 16 Jahre alt. 

Kommentar von julib5432112345 ,

Ein schmales Linux OS für den Anfang? Dann probier es mal mit Linux Mint. Eine schmale Dristibution :) Eine Distribution ist in diesem Fall eine Abwandlung des Unix Kernels. Es gab den Unix-Kern, der wurde umgeschrieben zu beispielsweise Debian und Debian wurde beispielsweise umgeschireben zu Linux Mint. Und wenn du es drauf hast kannst du selbst an der "Kernel-Brauerei" teilnehmen. Alles OpenSource. Das bedeutet jeder darf mitschreiben oder mitlesen :)

Kommentar von Yasin9911 ,

Ich versuche die richtige Software zu finden! Echt Klasse, dass du mich dabei unterstützt! :)

Kommentar von julib5432112345 ,

Die Richtige Software wofür? Meinst du das OS? Ja, ist in gewisser weiße auch Software. Aber eigentlich hat man dass Bild, dass die Software über das OS mit der Hardware redet :)

Kommentar von gerlochi ,

das ist eine gute idee :). linux ist das richitge!

Antwort
von Hammingdon, 43

Du wirst es ohne jahrelanger erfahrung nicht schaffen, vorallem nicht ohne Kenntnisse im programmieren.

Kommentar von Yasin9911 ,

Ja ich will ja eig am Anfang nur wissen, was man da so alles benutzt bzw braucht, den Rest möchte ich dann Googlen und erstmal was kleines Programmieren. Trotzdem Danke für deine Hilfe.

Kommentar von W00dp3ckr ,

Soviel ich weiß, ist der Kernel in c und Assembler geschrieben.

Kommentar von Hammingdon ,

am snfang lern c# und dann c++. eventuell java für android apps

Kommentar von Yasin9911 ,

Hm ja ok werde ich machen bzw. versuchen! :)

Keine passende Antwort gefunden?

Fragen Sie die Community