Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: hannibal am 29. April 2005, 13:42

Titel: kernel in C, erweiterungen in C++?
Beitrag von: hannibal 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
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: hannibal 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 ;)
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl 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
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Legend 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:
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl 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
Titel: kernel in C, erweiterungen in C++?
Beitrag von: DarkThing 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: DarkThing 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl am 29. April 2005, 21:57
Meine GUI ist im Kernel;)
Titel: kernel in C, erweiterungen in C++?
Beitrag von: DarkThing 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl am 29. April 2005, 22:02
Eben und bei wichtigen Teilen verlässt sich die App eh auf Betriebsystemroutinen.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: DarkThing 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Legend 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]
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: DarkThing 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?
Titel: kernel in C, erweiterungen in C++?
Beitrag von: mastermesh 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.
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl 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?;)
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Legend am 30. April 2005, 18:41
Na ja, also mal wieder C++ nachgebaut!  8)
Titel: kernel in C, erweiterungen in C++?
Beitrag von: Roshl am 30. April 2005, 19:26
Nein;)
Titel: kernel in C, erweiterungen in C++?
Beitrag von: DarkThing am 30. April 2005, 20:08
@mastermesh: Mein ich doch *lüg*

Würds auch nicht nachgebaut nennen. Nur vielleicht drum rum programmiert ;) was aber nicht negativ gemeint ist.