Autor Thema: Welche Sprache ?  (Gelesen 9493 mal)

Below Zero

  • Beiträge: 18
    • Profil anzeigen
Gespeichert
« am: 18. November 2004, 17:59 »
Hi , ich gehe in eine Informatik Schule.
Jetzt habe ich nach 2 Jahren allgemeine Programmiersprachen (Assembler, Visual Basic , Basic und etwas Java) die Möglichkeit in eine spezielle Richtung zu gehen.

Zur Auswahl sind folgende Sprachen:
    C
    C++
    Java
    C#

    [/list:u]

    Ich möchte dann als Matura Arbeit ein kleines OS programmieren, welche Sprache sollte ich wählen ?

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 18. November 2004, 18:37 »
Also, C ist am einfachsten, für C++ brauchst du auch nicht viel Arbeit, für Java müsstest du dir erst ein Gerüst proggen auf dem ne VM läuft und für C# müsstest du wahrscheinlich erstmal DotGNU portieren oder so ^^

Klaus

  • Beiträge: 4
    • Profil anzeigen
    • http://members.nanet.at/klausweiss
Gespeichert
« Antwort #2 am: 18. November 2004, 18:53 »
Hab da auch gleich ein paar Fragen.
Was ist eigentlich der Unterschied zwischen C und C# ?
Und werden OS wie Mac OS ja nur in C geschrieben odi ?


Kann man da auch mit einer Art Inline Funktion andere Sprachen einbinden ?

GhostCoder

  • Beiträge: 187
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 19. November 2004, 10:00 »
Hiho,

Klaus:
Jo, eigentlich werden alle OS in C bzw. C++ geschrieben. C# is ne Weiterentwicklung von C++ die aber keinen Systemcode erzeugt, sondern dotnet bytecode. Dadurch ist es (fast) komplett plattformunabhängig. Außerdem wurde die Sprache (von C++ aus) noch erweitert. Mir persönlich gefällt C# aber nicht, wegen extremer Typsicherheit und sowas... Das ist einfach nur Ineffizient.

Below Zero:
Ich kann dir auch nur C oder C++ empfehlen, wie Another Stupid Coder schon geschrieben hat, brauchste für die anderen Sprache schon einen kompletten C Kernel für die VM bzw. Framework.

MfG GhostCoder
A man, a legend!

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #4 am: 19. November 2004, 12:18 »
Hi.

Wie schon korrekt gesagt wurde ist ein OS in Java/C# mehr oder weniger "unmöglich" zu schreiben.

Die beiden Sprachen wurden von C/C++ abgeleitet und in erster Linie auf Platformunabhängigeit hin entwickelt.

Da beide Sprachen nur einen Bytecode erzeugen der von einem Interpreter gelesen und ausgeführt wird, lässt auch die geschwindigkeit zu wünschen übrig.

C halt ich als beste Wahl, da man hier recht gut mit arbeiten kann.
Und wenn du trotzdem ein bissl zu C++ rüberlunselst (sprich mal die eine oder andere Klasse einbaust) wird die sicher kein Lehrer auf die Finger hauen.

Wenn du als Maturaarbeit ein OS schreiben willst, dann solltest du dir vorher gut überlegen wie viel Zeit du dafür zur Verfügung hast und was du in dieser Zeit erreichen willst.

Vielleicht nennst du uns hier mal die genauen Richtlinien für deine Maturaarbeit. Dann könnten wir dir vielleicht ein paar kleine Empfehlungen geben was du alles einbauen könntest etc.

mfg
TeeJay
----------------------
Redakteur bei LowLevel

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 19. November 2004, 15:04 »
Ähm...soweit ich weiß wurden zumindest die Alten MacOS (MacOS X basiert ja bekanntlich auf Darwin) teilweise in Objective-C geschrieben.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #6 am: 19. November 2004, 16:48 »
Naja die beste Wahl ist eigentlich Asm^^ finde ich, denn ohne Asm ist ein OS vollkommen unmöglich(und ich meine vollkommen^^)
Auch wenn man mit MMX Registern was machen will(was für memcpy funktionen äusserst beschleunigend ist) dann braucht man auch da MMX da heutige C-Compiler das nicht unterstützen, genauso mit SSE/SSE2 3dNow! und was es da sonst noch an Befehlssätzen gibt.
Es gehen zwar einige Bereiche mit C schneller zu schreiben, aber um Asm kommt man nicht rum.
Und von den genannten C/C++/J/C# gehen wirklich nur C/C++ und die ja auch nur wenn man keine Bibliotheken verwendet usw, also letztendlich ist man auf Asm angewiesen
Also wenn du wirklich ein OS machen willst, solltest du dir bewusst sein, dass er viel Zeit brauchen wird und zeitweise wirds auch arg frustrierend. Dennoch würde ich jeden ermuntern dazu sich an sowas ranzuwagen, wenn er ein halbwegs guter Programmierer ist, denn es gibt keinen besseren Weg Computer und Hardware besser kennen zu lernen.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Below Zero

  • Beiträge: 18
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 19. November 2004, 17:31 »
Hi erstmal danke für die vielen Antworten.

Also ich habe noch 2 Jahre Zeit bis zur Matura möchte aber bei so einem Projekt schon zumindest bei der Design Geschichte anfangen. Ich habe mich jetzt erstmal in C++ eingeschrieben, ich weiß das man ASM braucht um ein OS zu schreiben mach mir dafür aber keine Sorgen da wir sowieso schon 4 Jahre Angewandte Programmierung haben , wobei 1 1/2 Jahre auf Assembler eingestellt waren. Eventuell belege ich C noch als Freigegenstand.

Zum Design.
Technisch würde ich gerne über Memory Protection, Virtueller Speicher sowie Multitasking und -threading verfügen. Und eine mehr oder weniger schöne GUI, wobei ich aber erstmal eine DOS ähnliches System anstrebe.
Ob es über ein eigenes Filesystem verfügen soll weiß ich noch nicht.

Ich habe von einem unserer Professoren gehört, dass man durch einen Layer für Linuxemulation, sowie einer Portierung des Toolkits GKT+ das Problem mit den Applikation aus der Welt schaffen kann, ist das richtig?

Und ist es schwer eine Unterstützung für UTF-8 zu programmieren ?

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 19. November 2004, 19:32 »
Also:
Gui würde ich vernachlässigen, zumindest voerst erstmal muss viel getan werden, nichts gegen eine Gui, aber ich würde deshalb nicht bei anderen Dingen (IDT, Treiber,...) nur Code kopieren und das ganze braucht halt viel vorbereitungszeit. Memoryprotection, Virtueller Speicher und Multitasking sollten mit ProtectedMode relativ einfach realisierbar sein, sofern du nicht das Codergenie des Jahrzehnts bist, halte ich einen Linuxemulatorlayer und vorallem GTK+ (ich nehme an das "GKT+" ein Tippfehler ist) für etwas voreillig, ein weg wäre eventuell (kA, wie schwer das wird...) so wie bei Linux für den L4er-Kernel einen Microkernel (eben wie z.B.: L4) zu programmieren und dann den Linux-Kernel als Modul zu kompillieren...sollte möglich sein oder?

Below Zero

  • Beiträge: 18
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 19. November 2004, 19:51 »
Ja war ein Tippfehler  :wink:
Naja GUI mache ich wenn dann sowieso erst viel später, ist klar.
Wollte nur mal wissen wie und ob das funktioniert.

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #10 am: 20. November 2004, 00:29 »
Also als erstes musst du mal Grundlagen schaffen.
Das heisst:
- Bootloader
- PIC
- Segmenteinteilung
- Multitasking (muss nicht sein)
- Treiber für Keyboard, Diskette, HDD?, Bildschirmausgabe


Wenn du soweit mal bist und praktisch eine DOS-ähnliche Shell zum laufen bringst, hast du schon einen Haufen geschafft.

Dann würde ich zunächst einen Treiber für FAT12 schreiben. Das System ist weit verbreitet und relativ einfach gestrickt.

GUI würde ich eher zum Schluss machen wenn du noch einiges an Zeit über hast. Weil das erfordert, gerade im PMode einiges an Leserei (VESA etc) und vor allem auch wieder einiges an Logistik (Fensterverwaltung etc)
----------------------
Redakteur bei LowLevel

 

Einloggen