Einstieg in C++



  • Hallo,

    ich würde gerne privat C++ lernen.

    Ich habe bereits MSQL und Visual Studio Express C++ heruntergeladen und einige Konsolenausgaben programmiert. Ich stehe also relativ am Anfang.

    Meine Fragen sind:
    1. Was genau ist WinAPI und .NET?
    2. Kennt jemand eine gute Tutorial Seite, wo auch GUI behandelt wird?

    Vorerst waren das meine Fragen und danke für Antworten im voraus.



  • Kenan schrieb:

    1. Was genau ist WinAPI und .NET?

    WinAPI ist eine C-Schnittstelle, um an die Funktionalitäten heranzukommen, die Windows für Programme anbietet. Wohlgemerkt, C, nicht C++. Um C++ zu lernen brauchst du es (erstmal) nicht.

    2. Kennt jemand eine gute Tutorial Seite, wo auch GUI behandelt wird?

    1. Tutorials können ein gutes Buch nicht ersetzen. Da gibts auch welche die nichts kosten, z.B. den C++ Primer (PDF-Buch, gratis zu bekommen)
    2. GUI brauchst du für die ersten Schritte erstmal nicht. Einige Leute behaupten sogar, dass GUI-Programmierung in den ersten Monaten dich davon abhält, dich mit der Sprache selbst, ihren Features und der Standardbibliothek zu beschäftigen. Ich bin einer davon 😉 (Sprich: bleib erstmal auf der Konsole. Was du benutzt, um C++ zu lernen muss ja erstmal nicht klicki-bunti-toll aussehen...)


  • Kenan schrieb:

    ich würde gerne privat C++ lernen.

    Dann würde ich dir raten, ein gutes Buch zur Hand zu nehmen, einige der Empfehlungen umfassen u.a.:

    Ich empfehle einen Bogen um die C++ Bücher von J.Wolf, des Galileo Verlages und Markt+Technik zu machen (mit wenigen Ausnahmen sind diese leider nur für die "runde Papierablage" geeignet).

    Kenan schrieb:

    Meine Fragen sind:
    1. Was genau ist WinAPI und .NET?
    2. Kennt jemand eine gute Tutorial Seite, wo auch GUI behandelt wird?

    Zu 1:
    a) WinAPI ist die schon ewig alte C-Schnittstelle zum Windows Betriebssystem. Auch wenn ich durchaus in einigen Projekten vereinzelte WinAPI-Aufrufe mache, würde ich um sie weitgehend einen Bogen machen.

    b) .NET würde ich niemals mit C++ verbinden (Dafür gibt es auch eine eigene Sprache C++/CLI), es handelt sich vereinfacht gesprochen im wesentlichen (aber nicht nur) um eine große Bibliothek die von Microsoft entwickelt wurden ist, und nur auf Windows komplett lauffähig ist (Je nach Windowsversion). Man sollte aber wenn man .NET entwickeln will, lieber mit C# vorlieb nehmen.

    Zu 2:
    a) Es gibt keine guten Tutorials (man kann mich gerne eines besseren belehren, aber bislang habe ich im C++ Umfeld nicht ein einziges gesehen das ich empfehlen kann).

    b) C++ und GUI ist ein kleines Problem: Es gibt kein standardisiertes UI-Framework, und dies ist auch ein Grund warum ich jeden Anfänger empfehle erst einmal fit in C++ (mit der Konsole; C++ einschließlich der C++ Standardbibliothek, vielleicht auch etwas Templates...) zu werden. Ich rechne hier mit mindestens einen halben Jahr (eher länger).



  • pumuckl schrieb:

    1. Tutorials können ein gutes Buch nicht ersetzen. Da gibts auch welche die nichts kosten, z.B. den C++ Primer (PDF-Buch, gratis zu bekommen)

    Der C++ Primer ist nicht legal gratis zu bekommen, Thinking in C++ wiederum schon. Oder gib mir eine offizielle Seite auf der dies widerlegt wird.



  • asc schrieb:

    Der C++ Primer ist nicht legal gratis zu bekommen,

    Dann hatte ich das falsch in Erinnerung, danke für die Korrektur...



  • Erst einmal möchte ich mich für die ganzen Kommentare bedanken.
    Ich werde meine ersten kleinen Projekte auf Konsolenbasis programmieren.
    (Einstiegsprojekt: Adressbuch, wo Adressen in einer Textdatei gespeichert werden :D).
    Anschließend möchte ich aber unbedingt GUI programmieren, da ich freeware Software schreiben will. 🙂

    asc schrieb:

    b) C++ und GUI ist ein kleines Problem: Es gibt kein standardisiertes UI-Framework, und dies ist auch ein Grund warum ich jeden Anfänger empfehle erst einmal fit in C++ (mit der Konsole; C++ einschließlich der C++ Standardbibliothek, vielleicht auch etwas Templates...) zu werden. Ich rechne hier mit mindestens einen halben Jahr (eher länger).

    Es gibt doch so viele GUI-Windows Programme. Die wurden doch auch mit C++ entwickelt, oder eher mit C#? Wieso sollte denn GUI-Programmierung ein Problem sein?


  • Mod

    Kenan schrieb:

    Wieso sollte denn GUI-Programmierung ein Problem sein?

    Weil jemand der ein stabiles Haus bauen möchte, sich nicht gleichzeitig mit der Inneneinrichtung beschäftigen sollte.

    Anschließend möchte ich aber unbedingt GUI programmieren, da ich freeware Software schreiben will.

    Viel (gute) Freeware kommt ganz ohne GUI oder nur mit einem externen Programm, welches eine GUI bietet und das Konsolenprogramm aufruft.



  • Weil viele Frameworks Dinge machen, die sich vom Standard C++ unterscheiden. So hat Qt zum Beispiel eine eigene String Klasse, die sich von std::string unterscheidet. Woher soll man als Anfänger jetzt wissen, welche die "richtige" String Klasse ist? Wenn du aber zunächst nur für Konsole programmierst und dich an den Standard hältst bekommst du ein Gefühl für die Sprache und verstehst die Zusammenhänge besser (bzw. verstehst, wann du einen std::string und wann einen QString benutzen musst).
    Andere Frameworks (z.B. Microsoft .NET) verwenden völlig andere Speicherkonzepte, die nichts mit C++ zu tun haben und sogar eigene Schlüsselwörter benutzen.
    Daher solltest du dir zuerst ein Basiswissen erarbeiten, um nicht sofort den Überblick zu verlieren.



  • Kenan schrieb:

    Es gibt doch so viele GUI-Windows Programme. Die wurden doch auch mit C++ entwickelt...

    Auch aber nicht nur, und mit diversen unterschiedlichen UI-Frameworks die alle ihre eigenen Paradigmen etc. mitbringen. Gerade in C++ sollte man erst einmal die C++ Konzepte verstanden haben (Und da gehört imho auch zumindest ein grundlegendes [besser noch einigermaßen solides] Verständnis der C++ Standardbibliothek dazu, und ihrer groben Paradigmen).

    Wenn du unbedingt schnell zu UI-Entwicklung übergehen willst, würde ich dir Sprachen empfehlen, bei denen die UI zu der Standardbibliothek gehört, und sich daher auch weitgehend konsistent mit dem Rest einher geht. Dies ist z.B. bei Java und C# wesentlich eher gegeben.

    Kenan schrieb:

    Wieso sollte denn GUI-Programmierung ein Problem sein?

    Weil sich die GUI-Programmierung in C++ nicht wirklich in den Rest integriert, weil kaum ein Framework Ähnlichkeiten mit einem Anderen hat, weil jedes seine eigenen Konstrukte etc. mit sich bringt...

    C++ ist mit anderen Voraussetzungen entstanden wie beispielsweise die wesentlich jüngeren Sprachen C# und Java. C# und Java hatten den Vorteil, das man schon wesentlich mehr Erfahrungen einbringen konnte, und beide Sprachen setzen statt auf eine relativ schlanke Basisbibliothek auf recht umfangreiche Frameworks, die nahezu allumfassend sind. Diese Frameworks integrieren sich auch wesentlich besser in die Sprache, weil sie (weitgehend) in einen Stil gehalten sind.



  • edit durch SeppJ: ^Im Internet gibt es Raubkmordvergewaltigungskopien! Wer hätte das erwartet? 😮
    Wer an solch einer Kopie interessiert ist, der ist sicherlich in der Lage, seine Warez selbstständig zu finden. Und wer das nicht möchte, braucht hier auch keine Anleitung.^



  • Na gut...
    Wie ist es von der Geschwindigkeit bzw Performance? Mit C++ kann man doch eine wesentlich höhere Performance erreichen als mit C#, oder nicht?

    Und wie ist C# im Vergleich zu Java von der Performance her?

    Dann noch, wenn man eine GUI mit C++ baut, läuft die dann nicht korrekt auf allen Windows 2000 bis Windows 7 Betriebssystemen?

    Von QT habe ich gehört und ich denke ich benutze es dann auch.

    Wenn nicht, dann kann man doch bestimmt C++ mit C# verknüpfen(sprch c++ für Funktionen und C# für Darstellung)

    Aber für eine GUI dauert es noch eh ein paar Wochen. Ich weiss noch nicht einmal genau was Zeiger sind und warum irgendwie dieses *-Zeichen vor einer Variable stehen muss.



  • Kenan schrieb:

    Wie ist es von der Geschwindigkeit bzw Performance? Mit C++ kann man doch eine wesentlich höhere Performance erreichen als mit C#, oder nicht?

    Bekommen können und bekommen sind zwei unterschiedliche Dinge. Dir wird der Unterschied so schnell jedenfalls nicht auffallen. (Was nicht heißen soll, dass man an einigen Stellen nicht einiges rausholen könnte. Aber es ist halt nicht mal eben so getan. "Mal eben so" ist C# sogar recht oft schneller.)

    Kenan schrieb:

    Dann noch, wenn man eine GUI mit C++ baut, läuft die dann nicht korrekt auf allen Windows 2000 bis Windows 7 Betriebssystemen?

    Solange du nur API Aufrufe nutzt die Windows 2000 unterstützt, ist das kein Problem.

    Kenan schrieb:

    Wenn nicht, dann kann man doch bestimmt C++ mit C# verknüpfen(sprch c++ für Funktionen und C# für Darstellung)

    Das willst du als Anfänger nicht wirklich, da hast du genug mit einer Sprache zu tun.



  • Hmm momentan bin ich immer noch am überlegen, ob ich vllt doch nicht lieber mit C# anfange. Inwiefern hat man mit C++ mehr Freiheiten? Kann man z.B. mit C# auch die Hardware ansprechen? Zum Beispiel CD-Laufwerk auswerfen?

    Jetzt frage ich die Profis: Was ist rentabler für die Zukunft? Zum Beispiel kann man mit C++ bestimmt alles machen, was auch mit C# geht, aber andersrum? Auf der andern Seite will ich eigentlich nur für Windows Programme schreiben und bin eh alleine, und kann deswegen sowieso keine großen Projekte starten.

    Was ist die beste/benutzerfreundlichste/bequemste Entwicklungsumgebung? Visual C++/C# oder doch etwas anderes?



  • Kenan schrieb:

    Inwiefern hat man mit C++ mehr Freiheiten?

    Nicht viele. Hm.. Templates? Du darfst deinen Speicher selbst wieder freigeben? Wichtiger scheint mir da eher, dass der C++ Compiler nativen Code generiert. (Im Gegensatz zum C# Compiler.)

    Kenan schrieb:

    Kann man z.B. mit C# auch die Hardware ansprechen?

    Nicht wirklich.

    Kenan schrieb:

    Zum Beispiel CD-Laufwerk auswerfen?

    Klar geht das, das macht ja das Betriebssystem für dich, mit dem Laufwerk selbst musst du dafür nie sprechen. [Wenn du kein Betriebssystem hast, läuft C# eh nicht. ;)]

    Kenan schrieb:

    Jetzt frage ich die Profis: Was ist rentabler für die Zukunft? Zum Beispiel kann man mit C++ bestimmt alles machen, was auch mit C# geht, aber andersrum? Auf der andern Seite will ich eigentlich nur für Windows Programme schreiben und bin eh alleine, und kann deswegen sowieso keine großen Projekte starten.

    Geld verdienen kannst du mit beiden Sprachen, der Markt für Windowsprogramme ist groß genug. (Und ob das auch in den nächsten 20 Jahren so bleibt wird dir niemand beantworten können. Aber in einem solchen Zeitfenster sind verschiedene Programmiersprachen eh nicht relevant, die kannste ja nicht 0,nichts lernen.)

    Kenan schrieb:

    Was ist die beste/benutzerfreundlichste/bequemste Entwicklungsumgebung? Visual C++/C# oder doch etwas anderes?

    👍 Für Visual Studio. Aber das ist eine Art Religionsfrage. 😉



  • Ich hijacke den Thread mal. Ein Kumpel möchte gerne C++ lernen und hat sich den C++ Primer gezogen, allerdings ist er schlicht zu faul die Mengen an Text zu lesen. 😉
    Gibt es denn nicht irgendetwas Knappes, um einen vernünftigen Einstieg in modernes C++ zu bekommen? Muss ja nicht alles enthalten sein und ich werde ihm auch helfen.
    Ich habe Probleme etwas Leichteres zu finden, das kein Bullshit ist.



  • @Ethon Kann er denn schon C oder so etwas? Ansonsten kann er damit ja anfangen, das ist zumindest weniger Text, die Sprache ist halt viel kleiner.


  • Mod

    Lernen, ohne zu lernen? Ich glaube, da braucht es noch etwas Fortschritt für.



  • cooky451 schrieb:

    @Ethon Kann er denn schon C oder so etwas? Ansonsten kann er damit ja anfangen, das ist zumindest weniger Text, die Sprache ist halt viel kleiner.

    N bissel kann er schon, aber halt Anfängerniveau.
    Und da wir eh das Semester an der Uni eh ein bischen C und C++ programmieren müssen, lohnt es sich eh für ihn da etwas zu lernen. (Und nein, in der Vorlesung gehts nur um Makefiles etc, da lernt man auch kein C/C++).

    Lernen, ohne zu lernen? Ich glaube, da braucht es noch etwas Fortschritt für.

    Hmm, ich kann schon verstehen dass der Primer nicht den besten Eindruck auf Anfänger hat, das lernt man doch eher später zu schätzen.



  • Meiner Meinung nach ist c++ die aufwendigste, komplizierteste Sprache die es gibt.
    Und „einfach so“, „eben“ „kurz mal“ c++ zu lernen geht nicht. Ein dickes Buch ist da die absolute Pflicht.. Und der Fortschritt wird in Monaten/Halbjahren gemessen:)...
    Die einzige „faule“ Lösung, die ich kenne das ganze in die Blöcke zu unterteilen und wenn man keine Lust hat pausieren.
    z.B. Erstmal die Grundlagen ( quasi C und die Klassen ). Danach kann man schon was tun.
    Dann die Benutzung von STL.. ( Templates also nur gerade so minimal )
    usw..

    P.S.
    Der neue Standard soll über 1300 Seiten haben.. Und das ist nur trockene Aufzählung der Möglichkeiten/Regeln.. 😉



  • asc schrieb:

    pumuckl schrieb:

    1. Tutorials können ein gutes Buch nicht ersetzen. Da gibts auch welche die nichts kosten, z.B. den C++ Primer (PDF-Buch, gratis zu bekommen)

    Der C++ Primer ist nicht legal gratis zu bekommen, Thinking in C++ wiederum schon. Oder gib mir eine offizielle Seite auf der dies widerlegt wird.

    Keine ahnung auf welchen Primer du nun ausgehst aber ich sag mal online lesbar ist er.

    http://books.google.de/books?id=4vRE_Q41ZHEC&printsec=frontcover&dq=C%2B%2B+Primer&hl=de&sa=X&ei=DUxuT8_6CcTCswakzPnCAg&ved=0CDUQ6AEwAA#v=onepage&q=C%2B%2B%20Primer&f=false (4te Deutsche Auflage)

    http://books.google.de/books?id=8fXCn3E864sC&printsec=frontcover&dq=C%2B%2B+Primer&hl=de&sa=X&ei=DUxuT8_6CcTCswakzPnCAg&ved=0CEIQ6AEwAg#v=onepage&q=C%2B%2B%20Primer&f=false (4te Englische Auflage)

    ...

    Und hier noch ein link zu einem Buch welches ich selber leider zu spät in die Finger bekam.

    http://books.google.de/books?id=P7HuWSWtsh0C&printsec=frontcover&dq=C%2B%2B+Primer&hl=de&sa=X&ei=DUxuT8_6CcTCswakzPnCAg&ved=0CD0Q6AEwAQ#v=onepage&q=C%2B%2B%20Primer&f=false


Anmelden zum Antworten