ohne vordefinitere API/dlls?

  • Ich habe vor einiger Zeit mit C++ begonnen und damals auch einige kleinere Programme darin geschrieben, bin dann jedoch durch Sprachen, die mir besser gefallen haben wie Java (fand/finde die Umsetzung des OOPs in C++ einfach schrecklich) davon weg gekommen. Vor einiger Zeit wollte ich mich mal wieder auf C++ einlassen, da es einem doch etwas mehr Möglichkeiten beiten sollte als .net (ist zwar schnell, dafür aber relativ stark Platform gebunden) oder Java (Platform unabhängig, dafür muss man ohne eigene Bibliotheken mit dem vorlieb nehmen, das man von Java geliefert bekommt)
    Ich habe mich dann also umgeschaut und musste feststellen, dass man bei der GUI fast immer auf irgendwelche Biblotheken (QT usw.) oder die WinAPI verwiesen wird und auch wenn es um Dinge wie die Komunikation mit Hardware, die beispielsweise über USB angeschlossen wird, geht, gibt es immer vordefinierte dlls oder eben die WinAPI (wo bleibt da denn die Platformunabhängigkeit, die theoretisch C++ hat?).
    Als ein Programmierer, der aber lieber alles von Grund auf selbst erstellen und es somit auch verstehen möchte, würde ich lieber selbst die GUI usw schreiben. Vielleicht dann auch nicht immer, aber zumindest am Anfang; um zu verstehen wie es letztendlich funktioniert und unabhängig von irgendwelchem Bibliotheken zu sein, die es möglicherweise irgendwann nicht mehr geben wird.


    Somit frage ich nun einfach mal in die Runde, ob sich jemand mit sochen Dingen auskennt und bereit wäre, jemandem etwas beizubringen, der schon etwas länger nichts mehr mit C++ zu tun hatte, oder einfach hierauf mit einer Lösung/Links antworten könnte.


    mfg
    prime


    PS: Ganz ohne API wird man wohl nicht auskommen, wie ich mir denken kann, da man ja noch ein Programm haben möchte und nicht das Betreibssystem neu schreiben will, oder irre ich mich da?

    Users[4939].postCount++;


    • Weltherrschafts AG in Cooperation mit Weltuntergangs GmbH:
      "Wir sorgen dafür, dass sie sich keine Sorgen um Morgen machen müssen!"
  • Was hast du denn gegen QT? Gibt es für alle großen Betriebssysteme - Alle Betriebssysteme, die das nicht unterstützen haben zumeist was extrem eigenes. Smartphones zum Beispiel.


    Wenn es in Richtung Plattformunabhängigkeit geht, gibt es drei Dinge, um die man sich kümmern muss: Windows, X11 und der Mac-Mist.
    Wenn du nicht QT nehmen willst, kannst du auch wxWidget nehmen. Aber ohne API geht es wohl nicht, da du letztendlich immer wieder Stellen ansprechen musst, die vom Betriebssystem abhängen.


    /E: Uh schei*e, es ist spät... ich hoffe, das trotzdem das rübergekommen ist, was ich ausdrücken wollte.

  • Aber genau das ist es, was ich nicht möchte, ich möchte so unabhängig von Fremden Bibliotheken sein, wie es nur geht und daher kommt QT usw nicht in Frage. Viel mehr möchte ich wissen, wie QT die GUI regelt und es selbst schreiben.
    Irgendwann einmal muss es ja geschrieben worden sein.

    Users[4939].postCount++;


    • Weltherrschafts AG in Cooperation mit Weltuntergangs GmbH:
      "Wir sorgen dafür, dass sie sich keine Sorgen um Morgen machen müssen!"
  • Ich empfehle den QT-Source ;)
    http://qt.gitorious.org/qt/qt/trees/4.8


    --------------------------------------------------------------
    Argh, jetzt wo ich ein wenig wacher bin, versuche ich das ganze nochmal.
    Wenn wir von den drei großen OS-Gruppen ausgehen, haben wir folgende Komponenten:

    • WinApi (für Windows)
    • X11 (für die meisten UNIX-Systeme; allerdings gibt es für UNIX auch andere Fenstersysteme)
    • Irgendwas für MacOS.


    Apple und Microsoft machen dabei ihre eigene Brühe.
    Wenn du für diese Betriebssysteme programmieren willst, musst du diese vordefinierten Bibliotheken ansprechen, da alles visuelle auf ihnen aufbaut. Würdest du bspw. versuchen, auf einem Linux es ohne X11 zu programmieren, müsstest du zuerst den X11-Clienten beenden, um dann dein eigenes Fenstersystem anzuzeigen. Damit wäre es aber nicht mehr möglich, den normalen Desktop anzuzeigen, etc.
    Den X11-Source kannst du auch im Internet finden: Irgendwo hier
    Immer, wenn du ohne die OS-Bibliotheken programmieren willst, müsstest du über unnabhängig vom Kernel gesteuerten Programmcode die Kernelfunktionen deaktivieren - Was der Kernel natürlich nicht will und dich eigentlich daran hindern möchte.


    Auch ansonsten sind die Dinge (wie das Ansprechen von bestimmten Ports) immer betriebssystemabhängig. Linux-Systeme speichern z.B. Ein- und Ausgänge grundsätzlich in einer Datei, womit selbst über Bash auf alles zugreifen kann. Windows hat das nicht - Deshalb musst du zwingend mit dem Kernel interagieren, was dir die Plattformunabhängigkeit raubt.


    So plattformunabhängig wie C++ auch sein mag - Es gilt nur auf der untersten Ebene. Die Sprache ist in höheren Ebenen aber nicht Betriebssystemunabhängig.