Compiler, C++-Format, ...



  • Hallo

    Also wie man WinAPI einen Anfänger empfehlen kann, verstehe ich wirklich nicht.

    chrische



  • chrische5 schrieb:

    Also wie man WinAPI einen Anfänger empfehlen kann, verstehe ich wirklich nicht.

    Meiner subjektiven Meinung nach aus 2 Gründen :):

    - Erstens denke ich, dass OOP verständlicher ist, wenn man prozedurale Programmierung kennt. Prozedurales Programmieren ist von Anfang an logisch, einfach und verständlich. Mit der WinAPI wird man darauf gestoßen, dass, und warum, Klassen nötig sind bzw von Vorteil sein können. Zum Beispiel gibt es unzählige Funktionen, die als ersten Parameter ein HWND fordern, wie ShowWindow, EnableWindow, SetWindowPos usw. Da sieht man dann das erste mal die Verknüpfung von Daten mit darauf zugeschnittenen Funktionen.
    Dass dann eine Klasse "Window" praktisch ist, weil man das Handle nicht die ganze Zeit herumschleppen muss und sie im Konstruktor mit NULL initialisieren kann, ist ein nachzuvollziehender und logischer Schritt. So wird man ganz locker an die OOP herangeführt. Ebenso die dann nützliche Vererbung, falls man eine ChildWindow-Klasse will, die die Window-Klasse erweitert.

    - Zu zweiten ist es eine Sache des Verständis und der Einfachheit. Wenn man mit der Fensterprogrammierung anfangen will, wurde mit Sicherheit schon ein Konsole-Hello-World-Programm programmiert. Da hat man eine Datei, in der die main-Funktion ist, von der aus eine Funktion ausgeführt wird, die irgendwas tut.
    Legt man dann ein MFC-Projekt an, hat man auf einen Schlag 9 (!!) Dateien, deren Inhalt man nicht versteht, die gefüllt sind mit irgendwelchen Klassen, die irgendwelche Makros beinhalten, die irgendetwas tun; nicht einmal eine vernünftige main-Funktion gibt es.
    Da ist es definitiv einfacher, ein Projekt anzulegen mit einer Datei, in der statt der "main" nun eine "WinMain" ist. In dieser WinMain muss man 4 oder 5 Funktionen aufrufen, die dann ein Fenster erzeugen, eine Nachrichten-Schleife abarbeiten und bei einer Schließen-Nachricht macht man das Fenster mit einem Befehl zu und beendet die Nachrichten-Schleife.



  • Gibt es eine sprache, womit man kleine inputboxes und msgboxes erstellen kann,
    ohne das Programm zu kompilieren?
    (außer VBS)



  • Jimbo schrieb:

    Gibt es eine sprache, womit man kleine inputboxes und msgboxes erstellen kann,
    ohne das Programm zu kompilieren?
    (außer VBS)

    Ja, gibt es zu Hauf. Aber sorry, das ist *absolut kein* Argument für eine Sprache, die man lernen möchte. Überleg Dir mal, wo die Prioritäten bei einer Programmiersprache liegen, die man lernen möchte. Die Prioritäten sind sicherlich *nicht*, einfach irgendwelche Nachrichten-Boxen erstellen zu können sondern möglichst viel zu lernen.

    Mein persönlicher Vorschlag wäre sowieso entweder Python – oder aber Ruby, und zwar per Hackety Hack. Einfacher kann man Programmieren wahrscheinlich nicht lernen.

    Bedenke: Wenn Du es mit dem Programmieren ernst meinst, wird eine Sprache nicht reichen, und auch nicht zwei oder drei. Vielmehr muss man in der Lage sein, sich auch später noch in relativ kurzer Zeit eine *neue* Sprache anzueignen, sobald das nötig ist. Es gibt Profis die vorschlagen, pro Jahr mindestens eine neue Sprache zu lernen. Ich selbst kann mindestens acht Sprachen "fließend" und mehrerer andere gut genug, um darin mit einer Doku Programme zu schreiben (und da sind Sachen wie XML, HTML etc. nicht enthalten). Und trotzdem kann ich für den aktuellen Arbeitsmarkt eigentlich *zuwenig* Sprachen!



  • Konrad Rudolph schrieb:

    Es gibt Profis die vorschlagen, pro Jahr mindestens eine neue Sprache zu lernen. Ich selbst kann mindestens acht Sprachen "fließend" und mehrerer andere gut genug, um darin mit einer Doku Programme zu schreiben (und da sind Sachen wie XML, HTML etc. nicht enthalten). Und trotzdem kann ich für den aktuellen Arbeitsmarkt eigentlich *zuwenig* Sprachen!

    Du machst mir Angst 😞



  • Badestrand schrieb:

    Konrad Rudolph schrieb:

    Es gibt Profis die vorschlagen, pro Jahr mindestens eine neue Sprache zu lernen. Ich selbst kann mindestens acht Sprachen "fließend" und mehrerer andere gut genug, um darin mit einer Doku Programme zu schreiben (und da sind Sachen wie XML, HTML etc. nicht enthalten). Und trotzdem kann ich für den aktuellen Arbeitsmarkt eigentlich *zuwenig* Sprachen!

    Du machst mir Angst 😞

    Na ja, vielleicht habe ich übertrieben. Ich habe mit meinem Studium (Bioinformatik) sowieso einige Probleme weniger. Aber wenn man als reiner Programmierer mit Ausbildung, ohne Studium, nen Job sucht, sollte man definitiv *mehr* können als andere. Und wenn Java gefragt ist – hey, dann lernt man halt in zehn Tagen (und Nächten, Schlaf wird allgemein überschätzt) Java, bevor man zum Vorstellungsgespräch geht. Such is life: A bitch, so f*ck her.



  • wobei man mit c++ ganz gut grundkonzepte lernt - von strukturiert über objektorientiert bis funktional ist (fast) alles da (wobei mir Prolog/CHR nichts ersetzen kann, und Qi ist auch ganz lustig 🙂 )



  • queer_boy schrieb:

    wobei man mit c++ ganz gut grundkonzepte lernt - von strukturiert über objektorientiert bis funktional ist (fast) alles da (wobei mir Prolog/CHR nichts ersetzen kann, und Qi ist auch ganz lustig 🙂 )

    Das ist schon korrekt. Allerdings ist in C++ viel "Beiwerk" vonnöten, was zum einen daran liegt, dass C++ die echt perverse C-Syntax geerbt hat und zum anderen einfach daran, dass es eben so flexibel ist. Für Anfänger gibt es hier schon eine Menge Hürden, die in Python o.ä. einfach nicht existieren. Das Erfolgserlebnis ist schließlich ein wichtiger Teil des Lernens.



  • Allerdings gibt es in Python so viele Sachen die man (gerade als Anfänger) so schnell misbrauchen kann...
    Mit Python lernen ist denke ich nicht viel besser als mit PHP lernen, und zu was das führt sieht man ja oft genug. Dasselbe gilt für Ruby.



  • hustbaer schrieb:

    Allerdings gibt es in Python so viele Sachen die man (gerade als Anfänger) so schnell misbrauchen kann...
    Mit Python lernen ist denke ich nicht viel besser als mit PHP lernen

    Das halte ich für grundsätzlich falsch. *Jede* Sprache lässt sich (relativ einfach) missbrauchen, sogar Ada oder Haskell. Trotzdem gibt es gerade zwischen Python und PHP massive Unterschiede. Python wurde mit System entwickelt, PHP als Kunterbunt-Haufen.

    Zugegeben, die dynamische Typisierung in Python und Ruby mag ich auch nicht (und halte sie auch für überflüssig) aber ich denke, dass Python und Ruby trotzdem ein recht gutes Gefühl für ein Typsystem vermitteln, anders als dies z.B. bei PHP oder BASIC der Fall ist.



  • Hm.
    Wo ist bitte ein Typensystem wenn ich zu Instanzen (!) dynamisch irgendwelche Member (Daten und Funktionen!) dazuhängen kann?
    *schauder*
    Oder gar zu ganzen "Klassen".

    Eieiei... ich weiss nicht.

    Und: natürlich lässt sich jede Sprache misbrauchen, bloss wenn man mit etwas so "mächtigem" (im Sinne von: man kann fast alles schnell hinfrickeln) wie Python oder Ruby anfängt, dann wird man sich nachher sehr schwer tun sauber in einer Sprache wie C++ oder Java programmieren zu lernen.



  • hustbaer schrieb:

    Hm.
    Wo ist bitte ein Typensystem wenn ich zu Instanzen (!) dynamisch irgendwelche Member (Daten und Funktionen!) dazuhängen kann.
    *schauder*
    Oder gar zu ganzen "Klassen".

    Hä? Was hat das eine mit dem anderen zu tun? Was spricht dagegen, Klassen erweiterbar zu machen. Und was spricht gegen Reflection? AOP geht doch sogar noch weiter.

    wenn man mit etwas so "mächtigem" (im Sinne von: man kann fast alles schnell hinfrickeln) wie Python oder Ruby anfängt, dann wird man sich nachher sehr schwer tun sauber in einer Sprache wie C++ oder Java programmieren zu lernen.

    Halte ich wie gesagt für falsch und irgendwie fehlt mir da auch eine Begründung. Zu guter Letzt halte ich den Begriff "Frickeln" hier für falsch. Mit Python oder Ruby "hackt" man, da steckt aber IMHO eine ganze Menge mehr hinter als beim "Frickeln"; vor allem eine ganz andere Ideologie.



  • also womit soll ich denn jetzt anfangen?
    C++ finde ich ganz schön schwer 😃
    MS-Dos kann ich, bis auf "for" ^^
    aber da kann man ja keine Fenster machen!
    Und ganz bisschen HTML


Anmelden zum Antworten