Autor Thema: kernel in C, erweiterungen in C++?  (Gelesen 10134 mal)

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« am: 29. April 2005, 13:42 »
ich frage mich grad inwieweit das moeglich ist den kernel mit c++ zu fuettern, wenn der grundstock in C geschrieben ist? waere um einiges effektiver einige dinge in klassen gekapselt zu programmieren.

(im konkreten fuers CommOS)

lg, hannibal
\\o
o//
\o/

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #1 am: 29. April 2005, 13:50 »
Es ist nicht effektiver. Der Code bläht sich dadurch ziemlich auf und oftmals ist er auch langsamer. Es kann auch schnell unübersichtlich werden. Der einzige Vorteil der ist, ist die teilweise geringere Schreibweise.
OOP ist denke ich im OS-Dev nicht wirklich sinnvoll.
Mein Kernel war ja selbst in C++ aber ich hab ihn jetzt recodet in Plain-C ist weit übersichtlicher.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #2 am: 29. April 2005, 13:59 »
mir ist schon klar, dass plain-C groesstenteils schneller sein wird, aber fuer gewisse dinge wird oop sicher gut sein; so wie zb GUI-objekte und dergleichen..waere sicher mit klassen komfortabler zu loesen als mit normalem C.

deshalb meine frage ;)
\\o
o//
\o/

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #3 am: 29. April 2005, 14:04 »
Meine Gui funzt ohne OOP auch gut;) Wie gesagt du hast nur weniger schreibaufwand, mit gutem C kriegt mans genauso hin
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #4 am: 29. April 2005, 16:37 »
Wenn sich der Code bei euch aufbläht, nehmt einfach nen aktuellen Compiler und nicht uralt 2.95.x gcc's ... mehr sage ich dazu mal nicht!  :roll:
*post*

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #5 am: 29. April 2005, 16:40 »
ich hab den neusten gcc benutzt und der code war ca. doppelt so gross
höchstwahrscheinlich weil der dämliche compiler JEDE funktion doppelt angelegt hat
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 29. April 2005, 21:38 »
Ich würd mir da nicht so große Gedanken drum machen. Ich schreib meinen Kernel in C und wenn später ne GUI kommen sollte werde ich die als extra Programm in C++ schreiben. Ein Fenster lässt sich einfach optimal als Klasse darstellen. Mit Vererbung kann man dann noch ganz leicht Controls von der Fensterklasse ableiten usw.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #7 am: 29. April 2005, 21:45 »
Da meine Fenster Eigenschaften haben die die Controls nicht brauchen wäre das Platzverschwendung, und dann Vererbung anzuwenden würde alles noch komplizierter machen. Letztendlich geht alles nur darauf hinaus ein klein wenig Schreibarbeit zu sparen, was zu 80% auf Kosten der Übersicht geht.
Das ist es mir nicht wert.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 29. April 2005, 21:53 »
Ich meinte es gibt eine Klasse für alles auf dem Bildschirm. Die hat Attribute wie zum Beispiel die Position. Und Methoden wie neuzeichnen. Davon wird eine Klasse abgeleitet die für die eigntlichen Fenster zuständig ist, und eine Klasse(n) für Controls.

Egal, eigentlich ist es nur Geschmackssache. Jeder der zwischen den Sprachen schwankt kann ja mal beides an nem Mini Projekt testen und sich dann entscheiden. Wie gesagt, meine Meinung ist: Alles was mit Kernel usw. zu tun hat in reinem C schreiben (oder Asm), und dann bei GUI evtl. C++ verwenden.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #9 am: 29. April 2005, 21:57 »
Meine GUI ist im Kernel;)
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 29. April 2005, 22:00 »
So ähnlich wie bei Win? Ok, dann sollte man sich wirklich überlegen auch die in C zu schreiben. Nur wegen der GUI den Kernel in C++ schreiben macht keinen Sinn. Nochwas das für C spricht: Man hat eine genauere Vorstellung davon was der Compiler draus macht und was später wann und wie abläuft. Es ist viel komplizierter zu sagen was bei Klassen passiert (Konstruktor usw.). Bei einer App ist das nicht so wichtig beim Kernel aber schon.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #11 am: 29. April 2005, 22:02 »
Eben und bei wichtigen Teilen verlässt sich die App eh auf Betriebsystemroutinen.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #12 am: 30. April 2005, 10:56 »
Was auch noch gehen könnte wäre den Kernel in C und die GUI in C++, auch wenn sie zusammengehören also ein Projekt sind. Theoretisch müsste ein C++ Compiler das compilieren können, auch wenns so mit das dümmste ist was man machen kann ^^.

Aber wie gesagt, jeder sollte das einfach mal testen.

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #13 am: 30. April 2005, 11:17 »
Du kannst auch die C Teile durch z.B. gcc jagen und die C++ Teile durch g++ - dann jedoch sollte man in den header nicht die extern "C" { ... } teile vergessen! ;)

@Roshl: Wenn deine Controls dann solche Eigenschaften von den Fenstern geerbt haben, die keinen Sinn machen für die Controls machen, dann war es wohl nicht ganz richtig die Controls von den Fenstern erben zu lassen! ;)[/code]
*post*

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #14 am: 30. April 2005, 13:27 »
Ich habe Vererbung nie benutzt;) Im Prinzip hab ic C++ nie wirklich benutzt. OOP ist für mich total überflüssig.
Es gibt nix was man mit C++ machen kann, was man nicht auch mit gutem C hinbekommt.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 30. April 2005, 14:44 »
Windows macht das AFAIK so:
Es gibt eine Klasse die CObject heißt. Von der werden Control Klassen, Fensterklassen usw. abgeleitet.

@Roshl: Wie machst du das? Hast du ne Struktur mit Infos über jedes Fenster und ne Sammlung Funktionen die diese Strukturen verwalten?

mastermesh

  • Beiträge: 341
    • Profil anzeigen
    • http://www.kostenloser-laptop.de/
Gespeichert
« Antwort #16 am: 30. April 2005, 16:15 »
Zitat von: DarkThing
Windows macht das AFAIK so:
Es gibt eine Klasse die CObject heißt. Von der werden Control Klassen, Fensterklassen usw. abgeleitet.


Korrektur: so ist das bei der MFC.

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #17 am: 30. April 2005, 16:39 »
Zitat von: DarkThing
@Roshl: Wie machst du das? Hast du ne Struktur mit Infos über jedes Fenster und ne Sammlung Funktionen die diese Strukturen verwalten?


Ja wie soll ichs in C denn sonst haben?;)
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #18 am: 30. April 2005, 18:41 »
Na ja, also mal wieder C++ nachgebaut!  8)
*post*

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #19 am: 30. April 2005, 19:26 »
Nein;)
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

 

Einloggen