Hintergrund für Windowsprogrammierung



  • *g* High-Level API vs Low-Level API

    Alles hat seine Daseins-Berechtigung, aber prügelt euch nur weiter.



  • Da freut sich aber jemand etwas vermeintlich gefunden zu haben. Aber nein, ich bin mir zwar durchaus bewusst, dass es bei der heutigen PISA-Jugend, wo viele schon von drei zusammenhängenden Sätzen überfordert sind (sieht man leider viel zu oft auch hier im Forum), problematischer sein kann. Doch grundsätzlich folgt aus "viel Text" in keinster Weise "schwer zu verstehen". Und das gilt so auch für die WinAPI.



  • Mit WinAPI kann man immer noch alles schrieben was man brauch, obwohl sie schon so alt ist -> WinAPI das beste wo gibt.



  • HALLO.

    erstmal danke für eure vielen antworten. wollte eigentlich nicht unbedingt eine grundsatzdiskussion anstossen. aber trotzdem interessant zu lesen, was die meinungen verschiedener programmierer sind.

    rüdiger schrieb:

    Wenn du also keine Windows-Systeminternen-Sachen machen willst, sondern nur ein paar Fenster, Knöpfe und ähnliches haben willst, bieten sich andere GUI-Frameworks, wie fltk an.

    nein, es muss nicht unbedingt windows-Systeminternen. was ich aber zum beispiel an der FLTK feststellen musste, ist die recht geringe dokumentation. da es nicht so oft wie MFC oder WinAPI verwendet wird, findet man halt leider weniger infos oder beispielprogramme dazu im netz. ich wollte halt gerne einen TRACKBALL in ein FLTK-OpenGL-window einfügen, hab das aber nicht ohne weiteres hinbekommen 😞

    net schrieb:

    wie wär's, wenn du mal ein paar konkrete fragen im winapi forum stellst? vielleicht lernst du durch interaktion mit anderen besser als aus büchern...

    naja, vom prinzip hast du ja recht, an beispielen und meinungsaustausch mit anderen lerne ich am besten. aber irgendwie will ich auch nicht bei jeder kleinigkeit, die ich nicht verstehe, im forum nachfragen.

    SeppSchrot schrieb:

    Wie auch immer, wo liegen denn jetzt deine Probleme?
    Verlierst du in der API den Überblick oder haperts an den Sprachkenntnissen?

    mein hauptproblem liegt daran, dass ich, wenn ich ein bestimmtes problem habe, ich oft einfach nicht die quelle zur lösung finden kann. und wie zuvor beschrieben kann es doch einfach nicht sein, dann immer hier im forum zu posten.

    viele grüsse,
    STICK!



  • Da das Beispiel fltk nicht das macht, was das WinAPI-Beispiel macht, müsst Ihr das hier auch gelten lassen:

    #include <windows.h>
    
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
        MessageBox(NULL, TEXT("Hello, World"), TEXT("Sample"), MB_OK | MB_ICONINFORMATION);
        return(0);
    }
    

    Dieses kleine Sample bringt nicht nur Fenster und Buttons ins Spiel, sondern sogar auch Graphik. Das ist der Beweis: Fltk ist viel zu kompliziert.

    BTW: Das rüdiger nicht weiß wovon er spricht, beweist er doch des Öfteren recht eindrucksvoll. Nehmt das zur Kenntnis, regt Euch nicht auf, das bringt doch nichts, Ihr wisst doch, wie merkbefreit er ist.



  • Gästchen schrieb:

    BTW: Das rüdiger nicht weiß wovon er spricht, beweist er doch des Öfteren recht eindrucksvoll. Nehmt das zur Kenntnis, regt Euch nicht auf, das bringt doch nichts, Ihr wisst doch, wie merkbefreit er ist.

    dann zeig mir doch bitte, wie leicht und übersichtlich die WinAPI ist.



  • rüdiger schrieb:

    Gästchen schrieb:

    BTW: Das rüdiger nicht weiß wovon er spricht, beweist er doch des Öfteren recht eindrucksvoll. Nehmt das zur Kenntnis, regt Euch nicht auf, das bringt doch nichts, Ihr wisst doch, wie merkbefreit er ist.

    dann zeig mir doch bitte, wie leicht und übersichtlich die WinAPI ist.

    Bei einem kleinen "Hello world" oder einem Taschenrechner ist die WinAPI wunderbar leicht und übersichtlich. Wir reden hier in dem Thread ja offensichtlich nicht über ernsthafte Anwendungen 😉



  • TactX schrieb:

    Wir reden hier in dem Thread ja offensichtlich nicht über ernsthafte Anwendungen

    ich denke, dem kann ich nicht zustimmen. wer hat schon interesse daran, ein einfaches taschenrechnerprogramm zu schreiben? werden die programme wirklich umfangreich / komplex, kann man dann mit der WinAPI noch etwas angfangen (da dann zu viel code selber geschrieben werden muss)? oder doch lieber MFC oder eine eine GUI? kann die FLTK z.b. überhaupt 'alle' wünsche erfüllen, wo es sich doch hier um ein "minimalistisches Design" handelt?

    DANKE.
    STICK.



  • Also ich finde rüdiger hat vollkommen recht. Jeder Anfänger wird doch wohl besser mit einem Framework wie z.B. diesem FLTK oder QT oder sonst was zurecht kommen als mit der Win-API. Das ist doch ganz natürlich, da diese Sachen auf einem viel höheren Abstraktionslevel sind und so für den Benutzer logischer erscheinen.
    Es mag ja viele unterschiedliche Meinungen geben, aber die, dass die WinAPI leichter zu erlernen ist, ist ja mal totaler Blödsinn.

    P.S. Ich hab auch schon mit der Win-API gearbeitet, bevor da was aus der Richtung kommt...



  • stick_thai schrieb:

    kann die FLTK z.b. überhaupt 'alle' wünsche erfüllen, wo es sich doch hier um ein "minimalistisches Design" handelt?

    FLTK habe ich nur einfach so rausgegriffen. Ob es 'alle' Wünsche erfüllen kann, weiß ich nicht. Aber es lässt sich wie die meisten Frameworks auch über anderen Code (zB WinAPI) erweitern. Wenn man also irgend wo an eine Grenze stößt, kann man sich weiter helfen.

    Aber schau dir mal den Link an, den ich gepostet habe. Da findest du eine Liste von GUI-Frameworks.



  • nep schrieb:

    Es mag ja viele unterschiedliche Meinungen geben, aber die, dass die WinAPI leichter zu erlernen ist, ist ja mal totaler Blödsinn.

    Ich stelle ja aus gutem Grund schon keine hohen Ansprüche an Diskussionspartner im Internet, aber ihr schießt immer wieder den Vogel ab. Ist es wirklich so schwer Argumente anzuführen, so dass ihr nur "Blödsinn" sagen könnt? Echt schlimm.
    WinAPI ist nicht schwer zu lernen, aber keine Freude zum Verwenden. Kann doch nicht so schwer zum verstehen sein. 🙄



  • minhen schrieb:

    WinAPI ist nicht schwer zu lernen, aber keine Freude zum Verwenden. Kann doch nicht so schwer zum verstehen sein. 🙄

    da zu fällt mir eigentlich nur folgendes ein:

    minhen schrieb:

    Ich stelle ja aus gutem Grund schon keine hohen Ansprüche an Diskussionspartner im Internet, aber ihr schießt immer wieder den Vogel ab. Ist es wirklich so schwer Argumente anzuführen, so dass ihr nur "Blödsinn" sagen könnt? Echt schlimm.



  • "Schwer" ist relativ. Natürlich kann es sein (bzw. ist es ja sogar auch), dass es auch nicht schwer ist die WinAPI zu erlernen. Nur ist es aber einfacher sich in ein Framework wie z.B. QT oder sonstiges einzuarbeiten als in die WinAPI.
    Das fängt einfach schon damit an, dass das ganze Objektorientiert gehalten ist, während die WinAPI prozedural ist. Ich könnte sogar meiner Freundin halbwegs erklären wie síe sich so eine einfache GUI zusammenbauen kann, da es für den Menschen einfach natürlicher ist aus OO Sicht zu denken. Bei der WinAPI bezweifel ich das einfach mal. Und das hat nicht mal was mit dem Grundgerüst zu tun, was so groß ist. Das setzt sich ja so fort, wenn ich z.B. einen Dialog mit Buttons usw. designen will.



  • @nep: Komisches Argument. Natürlicher ist es doch wohl eher sich die GUI zusammenzuklicken und nur die Funktionalität dahinter auszuprogrammieren. Aber das hat nichts mit dem darunterliegenden Framework zu tun. Da kann WinAPI mit irgendwelchen C-Function Pointern drunter sein und da kann eine 4GL-Sprache drunter liegen.

    MfG SideWinder

    PS: Dieses Posting hat auch ein Recht auf Leben :p



  • Da hast du natürlich recht.
    Nur was hat das mit der Diskussion zu tun ?

    Es ging ja jetzt nur ums reine Programmieren. Und da ist es ja wohl so, dass der OO-Ansatz für den Menschen verständlicher ist als der prozedurale



  • nep schrieb:

    Es ging ja jetzt nur ums reine Programmieren. Und da ist es ja wohl so, dass der OO-Ansatz für den Menschen verständlicher ist als der prozedurale

    Sagst du als geübter C++. Aber glaub mir, das ist nicht der Fall. Ich habe in der Uni genug Umgang mit absoluten Programmieranfängern und denen braucht man nicht mit OOP kommen. Beziehungsweise man tut ihnen damit keinen Gefallen. Gerade Programmierer verkennen völlig die gedankliche Komplexität von OOP-Ansätzen. Mit "natürlich" und "einfach" ist da nicht wirklich viel. Um's mal auf den Punkt zu bringen, Java überfordert erst mal alle Anfänger und auch nach einem Semester intensiven lernens kriegen es sehr viele nicht gebacken vernünftige Programme in Java zu schreiben. Werden die Leute aber mit z.B. Perl als erstes konfrontiert, verstehen sie es ziemlich schnell und schreiben auch brauchbare Skripte damit. Und Perl ist sicherlich nicht die Sprache mit der "schönsten" Syntax. Aber man programmiert damit meistens prozedural und hinter diesem Paradigma steckt wenig dahinter. Der Gegensatz dazu ist OOP mit sehr viel Konzepten, die dahinter stehen und die Komplexität entsprechend hochtreiben. Herrje, selbst abgefahrene Sachen wie Prolog fällt den Anfängern hier leichter.
    Objekt-orientierte Systeme sind zum Bauen größerer Anwendungen eine absolute Wohltat und vergleichsweise geradezu ein Traum, aber sie sind auch komplex. Dagegen will "man" keine großen Anwendungen prozedural bauen, aber das Konzept dahinter ist furchtbar primitiv und einfach zu verstehen.
    Sicher, wenn man frei weg von der Leber philosophiert sieht man viel WinAPI-Code und wenig OOP-Framework-Code und ist deswegen versucht ersteres als höllisch schwer und letzteres als furchtbar einfach zu sehen. Die Anfänger-Praxis sieht aber eben anders aus.



  • Da hast du natürlich recht. OOP ist sehr anspruchsvoll, aber darum geht es hier eigentlich auch nicht mal so sehr. Wenn jemand z.B. in C++ programmiert, dann sollte man erwarten, dass er zumindest weiß was Klassen usw sind. Und dieses Wissen reicht auch schon aus, um so ein Framework dann zu BENUTZEN. Es ist IMHO ein gewaltiger Unterschied ob ich ein OO-Framework einfach nur benutze, oder ob ich selbst etwas mit OO entwerfe.
    Klar, wenn jemand noch nie von Klassen gehört hat, dann wird er auch mit so einem Framework wie z.B. QT ziemliche Schwierigkeiten bekommen.
    Übrigens finde ich, dass der Vergleich mit Perl etwas hinkt. Perl ist eine Skriptsprache, und da muss man z.B. keine Variablen deklarieren und sich nicht um die entsprechenden Typen (String, int, ...) kümmern; oder gar die Speicherverwaltung. Ich habe damals auch mit Basic angefangen zu progarmmieren; mit C (was ja aber auch eine prozedurale Sprache ist) wäre ich damals bestimmt überfordert gewesen.



  • Naja, gerade bei Anfängern geht es doch um unbeschriebene Blätter. Den C++-Programmierer möchte ich sehen, der WinAPI schrecklich toll findet und den C-Programmierer will ich sehen, der voller Freude versucht ein OOP-Framework zu veerwenden.
    Bei Perl hast du zwar grundsätzlich recht, ich bezweifel aber die Auswirkungen. Zum einen fängt man bei uns im Grunde von Anfang an mit "use strict" an und muss deshalb grundsätzlich die Variabeln explizit deklarieren. Zum anderen unterscheidet Perl zwar nicht primitive Datentypen wie int, float, char, kennt aber sehr wohl verschiedene Variabeltypen (Skalar, Array, Hash und Referenzen sowie Referenzen auf diese vier) und achtet sehr genau darauf, dass man immer den richtigen Typ angibt ($var ist ein Skalar, @var ist ein Array, %var ist ein Hash, $$ ist eine Referenz auf einen Skalar, $@ eine Referenz auf ein Array, usw. Muss bei jeder Variabelnverwendung entsprechend angegeben werden).
    Ich glaube nicht, dass Datentypen viel gedankliche Komplexität erzeugen. Ich glaube aber sehr wohl, dass die Variabeltypen in Perl ordentlich verwirrend sind. Ich programmiere schon länger in Perl, aber mich verwirren sie hin und wieder auch noch. Insofern 😉
    Aber noch mal zur Sache mit dem hinkenden Vergleich, ich halte C in der Tat für eine wunderbare Sprache für Anfänger. Nur kenne ich außer mir niemanden, der diesen Weg gegangen ist. Hier fängt man eben mit Perl, Prolog oder Java an. Deswegen kann ich auch nur bei diesen drei erzählen, wie sich die Leute meiner Erfahrung nach anstellen.
    Aber noch mal erzähl ich nicht, dass ich C für eine gute Anfängersprache halte (nicht komplex, überschaubarer Sprachumfang, man lernt die Grundlagen: wunderbare Anfängersprache). Ich erinner mich noch ziemlich gut, wie ich das das letzte Mal im Forum hier gemacht habe. Wer den WinAPI-Thread hier gelesen hat, hat schon eine sehr gute Vorstellung von der Reaktion der Leute auf diese Aussage 🙄



  • is mal wieder typisch dass die moderatoren hier ihre macht dazu benutzen negative kritik an ihnen kommentarlos zu löschen 😮

    ja - ich mein rüdiger 😕 👎



  • Boh, passt man hier mal im Forum nen Tag nicht auf, ist hier wieder die Hölle los!!! 😃

    Stick_tai! Die Entwicklung von Anwendungen geht dahin, das man immer mehr abstrahiert. D.h. sich von Lowlevel entfernt. Gerade C++ wurde ja zu diesem Zweck entwickelt. Ich kann in C++ wunderschön Daten kapseln. Ich verstecke also allein durch das private-Schlüsselwort vor dem Benutzer einer Klasse bestimmte Details.

    Hier im Forum scheinen einige immer noch in der C-Welt hängen geblieben zu sein, sonst würden sie für die Anwendungs-Programmierung nicht WinAPI empfehlen. Gerade mit C++ kann ich die WinAPI schön kapseln und mir das Lebel leichter machen.

    Ich benutze ja auch einen std::vector anstatt mir selbst einen dynamischen Lowlevel-Array zu programmieren.

    FLTK ist dabei nur ein Konzept einer GUI-Bibliothek. Es gibt noch so viele GUI-Bibliotheken für C++ die verschiedene Anforderungen erfüllen (können). FLTK ist dabei minimalistisch und kann von Haus aus das nötigste. Es lässt sich aber durch anderen Klassen erweitern, wenn etwas fehlt. Aber durch das Minimalistische hat auch ein Anfänger leichtes Spiel das FLTK zu durchschauen und ohne Frust erste Ergebnisse auf den Bildschirm zu zaubern. Und wenn du einmal FLTK verstanden hast, sind anderen GUIs auch einfach zu verstehen, da sich die Konzepte überschneiden. Auch wenn jede GUI doch ihr eigenes Design hat.


Anmelden zum Antworten