Wie lerne ich C++ ...



  • Hallo,

    ich (Windowsuser) habe hier ein einfaches Multimeter mit serieller Schnitstelle und würde mir gerne selber ein Programm Schreiben , das dieses steuert und die Messwerte abfragen kann. Außerdem soll das Programm die Messwerte auch selbstständig auf einen FTP-Server hochladen oder gar als Email versenden können.

    Ist C++ dafür eine gute Wahl?
    Ist es mit ausdauer viel motivation und Zeit schaffbar sich selbst so eine Programmiersprache beizubringen? Oder sollte ich es lieber gelich bleiben lassen?
    Wie fange ich an? Einfach Visual C++ Express und ein par Tutorials runter laden? Oder lieber eine "richtige" C++ Version und ein paar Bücher Kaufen?

    Meine Vorkenntnisse:
    - Ich programmiere seit 3 1/2 Jahren mikrokontroller von Atmel im Assembler
    - Ich kann ein bisschen HTML und mit Style.css um (Es reicht für einfache Homepages)

    Vielen Dank für eure Hilfe!

    Gruß, Bastelui



  • Nein, C++ ist nicht optimal für dich. Schau dir z.B. Python an.



  • bastelui schrieb:

    Ist C++ dafür eine gute Wahl?

    Kommt auf die Programmierbibliotheken des Multimeters etc. an.

    bastelui schrieb:

    Ist es mit ausdauer viel motivation und Zeit schaffbar sich selbst so eine Programmiersprache beizubringen? Oder sollte ich es lieber gelich bleiben lassen?

    Ja, sofern wirklich Ausdauer und Motivation vorhanden ist.

    bastelui schrieb:

    Wie fange ich an? Einfach Visual C++ Express und ein par Tutorials runter laden? Oder lieber eine "richtige" C++ Version und ein paar Bücher Kaufen?

    Visual C++ Express ist eine "richtige" C++ Version. Sofern du nicht das (Microsoftspezifische) MFC oder Visual Studio-Plugins verwenden willst, ist sie für nahezu alles ausreichend.

    Du wirst unter C++ aber spezielle Bibliotheken für die Webzugriffe benötigen, das ist nichts das in den Standardbibliotheken enthalten ist (gibt es aber zu genüge.



  • asc schrieb:

    bastelui schrieb:

    Ist C++ dafür eine gute Wahl?

    Kommt auf die Programmierbibliotheken des Multimeters etc. an.

    ??Mein Multimeter kann doch einfach nur bestimmte Befehle?? Das hat doch keine Programmierbibliothek.!?

    Wofür ungefär braucht man denn das MFC oder Visual Studio-Plugins? Was kostet es das upzudaten / zu kaufen?

    MrN schrieb:

    Nein, C++ ist nicht optimal für dich. Schau dir z.B. Python an.

    Ich habe mir gerade mal bei Wiki den Artikel über Python durchgelesen. Das hört sich an, als wenn Python oberflächlicher und benutzerfreundlicher ist.
    Ich denke da habe ich es leiber ein bisschen komplizierter und bin dafür aber auch Maschienennäher.

    Ich kann jetzt ja nicht gleich anfangen ein riesen Programm zu schreiben, dass sofort alles kann. Erstmal muss ich den Syntax und ein paar Hintergründe verstehen, dann mal mit nem "Hallo Welt"-Programm anfangen, dann ein Button, eine Checkbox und dann mal ein normales Textdokument.txt erzeugen und mich langsam dahin Tasten, wo ich hin will.

    Sollte ich mir leiber ein/zwei Bücher kaufen(wenn ja welche?), oder gibt es genügend gute Tutorials in dieser richtung?

    Vielen Dank für eure Hilfe!!
    Gruß, Lukas.



  • im prinzip geht das mit fast jeder sprache. Frameworks oder APIs um auf die serielle Schnitstelle zuzugreifen, mails zu verschicken und für ftp transfer gibts in jeder vernünftigen sprache.

    Es gibt keine C++ Versionen (bald gibts nen neuen standard (in so ca 10 Jahren 😉 ) ), dass was du meinst sind Entwicklungsumgebungen und da ist VS Express OK.



  • bastelui schrieb:

    ??Mein Multimeter kann doch einfach nur bestimmte Befehle?? Das hat doch keine Programmierbibliothek.!?

    Gut... andere Frage: Wie spricht man es an wenn es keine Bibliothek mitbringt? Bzw. über welche Schnittstelle spricht man es an, und was für Ein- bzw. Ausgaben bekommt man von dieser?

    bastelui schrieb:

    Wofür ungefär braucht man denn das MFC oder Visual Studio-Plugins? Was kostet es das upzudaten / zu kaufen?

    Die MFC (Microsoft Foundation Classes oder so ähnlich) ist ein mehr oder weniger guter Wrapper um die sogenannte Windows API (Einer C-Schnittstelle zur Programmierung von Windowsoberflächen, und Betriebssystemfunktionen). Letzteres kann man auch mit der Expressversion verwenden, für ersteres muß man mindestens die Standardversion von dem Visual Studio (grob 300 Euro) erwerben.

    In deinen Fall nehme ich aber an, das dies nicht nötig sein wird. Gerade wenn du sehr Hardwarenah programmierst.

    Die Plugins wiederum können alles mögliche sein um das Leben zu vereinfachen. Ein paar Beispiele: Refactoringtools (Erlaubt z.B. im einfachsten Fall das Projektweite umbenennen von Funktionen etc. [und nicht nur mittels reiner Textsuche, sondern etwas intelligenter]), UML-Tools (Ich habe z.B. ein Plugin um mein UML Tool - erlaubt der vereinfacht gesprochen die graphische Entwicklung und Darstellung von Objektorientierten Programmen - in das Visual Studio zu integrieren etc.

    MrN schrieb:

    Ich habe mir gerade mal bei Wiki den Artikel über Python durchgelesen. Das hört sich an, als wenn Python oberflächlicher und benutzerfreundlicher ist.

    Das dürfte es sein, und vor allem ist C++ nicht unbedingt das Optimum für das Web (wobei es für wohl Alles genügend C und C++ Bibliotheken zur Auswahl gibt - meistens hat man eher die Qual der Wahl welche man verwendet).

    MrN schrieb:

    Ich denke da habe ich es leiber ein bisschen komplizierter und bin dafür aber auch Maschienennäher.

    Ich ziehe hier zwar C++ vor, bedingt durch deine Assemblervorkenntnisse könnte dann aber auch C etwas für dich sein.

    MrN schrieb:

    Ich kann jetzt ja nicht gleich anfangen ein riesen Programm zu schreiben, dass sofort alles kann. Erstmal muss ich den Syntax und ein paar Hintergründe verstehen, dann mal mit nem "Hallo Welt"-Programm anfangen,...

    ..soweit so gut...

    MrN schrieb:

    ...dann ein Button, eine Checkbox...

    und hier wird es mit C++ haarig. Versteh mich nicht falsch, ich will C++ sicherlich nicht schlecht machen (zumal ich damit u.a. mein Lebensunterhalt verdiene), aber C++ und Graphische Oberflächen ist eher ein späterer Schritt.

    Es gibt unter C++ keine einheitliche GUI-Bibliothek, und alle setzen Grundlagenwissen von C++ voraus (in der Regel beschäftigt man sich mind. ein halbes Jahr-Jahr mit reiner Konsolenprogrammierung - C++ ich mächtig aber auch komplex) und dann muss man sich erstmal aussuchen welche Bibliothek man nimmt (MFC, wxWidget, QT, VCL...).

    MrN schrieb:

    ...und dann mal ein normales Textdokument.txt erzeugen und mich langsam dahin Tasten, wo ich hin will.

    Das wiederum ist in C++ Grundlagenwissen und eher unproblematisch.

    MrN schrieb:

    Sollte ich mir leiber ein/zwei Bücher kaufen(wenn ja welche?), oder gibt es genügend gute Tutorials in dieser richtung?

    Die meisten Tutorials sind gelinde gesagt veraltet.

    Bücher sind z.B, das kostenlos erhältliche Thinking in C++, der C++ Primer und in deinen Fall (weil wohl sehr an der Basis) vielleicht sogar die sogenannte C++ Bibel: "Die C++ Programmiersprache" oder gar der C++ Standard. Wobei ich den Griff zu letzteren beiden erst nach der Lektüre einer der ersten beiden Sachen machen würde.

    cu André



  • naja schrieb:

    Es gibt keine C++ Versionen

    an sich ja, wobei um so neuer eine C++ Umgebung ist, um so mehr unterstützt sie in der Regel den C++ Standard (in sofern kann man schon von "Versionen" sprechen, wenn auch eher von Compilerversionen).

    naja schrieb:

    (bald gibts nen neuen standard (in so ca 10 Jahren 😉 ) )...

    Da der C++0x inzwischen Feature-Complete ist, kann es schneller passieren als du denkst (ich gehe von einem C++09 oder C++0A 😉 aus).

    naja schrieb:

    ..., dass was du meinst sind Entwicklungsumgebungen und da ist VS Express OK.

    unter Windows sogar eine der Besten.



  • asc schrieb:

    naja schrieb:

    (bald gibts nen neuen standard (in so ca 10 Jahren 😉 ) )...

    Da der C++0x inzwischen Feature-Complete ist, kann es schneller passieren als du denkst (ich gehe von einem C++09 oder C++0A 😉 aus).

    Und dann muss es erst mal Compiler dafür geben und dann müssen die erst mal so gut sein, dass man sie professionell einsetzen kann und dann müssen die Projekte in der Firma in der ich arbeite umgestellt werden,... für Hobbyspielereien gehts vielleicht schneller, aber für die Arbeit eher C++0D, C++0E...



  • naja schrieb:

    Und dann muss es erst mal Compiler dafür geben und dann müssen die erst mal so gut sein, dass man sie professionell einsetzen kann und dann müssen die Projekte in der Firma in der ich arbeite umgestellt werden,... für Hobbyspielereien gehts vielleicht schneller, aber für die Arbeit eher C++0D, C++0E...

    Dies sehe ich nicht so. Ja, ich gehöre zu denen, die vor dem C++98 Standard angefangen haben C++ zu lernen, und wissen wie die Situation bis heute ist. Aber ich sehe auch das inzwischen die Umsetzungen immer schneller erfolgen, die C++ Compilerhersteller schon mit ersten C++0x Features werben und auch scheinbar mehr Interesse daran besteht, nicht der Letzte zu sein.

    Daher gehe ich davon aus, das bereits nächstes bis übernächstes Jahr die Compilerhersteller einen Großteil umgesetzt haben (nicht alles, aber vieles) und es diesmal deutlich schneller den Firmeneinzug findet, als z.B. der C++98 und TR1.



  • asc schrieb:

    bastelui schrieb:

    ??Mein Multimeter kann doch einfach nur bestimmte Befehle?? Das hat doch keine Programmierbibliothek.!?

    Gut... andere Frage: Wie spricht man es an wenn es keine Bibliothek mitbringt? Bzw. über welche Schnittstelle spricht man es an, und was für Ein- bzw. Ausgaben bekommt man von dieser?

    Das Multimeter hat eine normale serielle Schnitstelle. http://de.wikipedia.org/wiki/RS-232
    Und wenn ich dem Multimeter die richtigen ASCI zeichenfolge schicke, macht es das, was ich will.

    asc schrieb:

    MrN schrieb:
    Ich denke da habe ich es leiber ein bisschen komplizierter und bin dafür aber auch Maschienennäher.

    Ich ziehe hier zwar C++ vor, bedingt durch deine Assemblervorkenntnisse könnte dann aber auch C etwas für dich sein.

    Meinst du damit C#?

    asc schrieb:

    MrN schrieb:
    ...dann ein Button, eine Checkbox...

    und hier wird es mit C++ haarig. Versteh mich nicht falsch, ich will C++ sicherlich nicht schlecht machen (zumal ich damit u.a. mein Lebensunterhalt verdiene), aber C++ und Graphische Oberflächen ist eher ein späterer Schritt.

    Es gibt unter C++ keine einheitliche GUI-Bibliothek, und alle setzen Grundlagenwissen von C++ voraus (in der Regel beschäftigt man sich mind. ein halbes Jahr-Jahr mit reiner Konsolenprogrammierung - C++ ich mächtig aber auch komplex) und dann muss man sich erstmal aussuchen welche Bibliothek man nimmt (MFC, wxWidget, QT, VCL...).

    Ok, wenn du das meinst, dann werde ich ersteinmal auf eine grafische Oberfläche verzichten.

    Ich habe mir mal Thinking in C++ angeschaut. Das beschäftigt sich anscheinend erstmal viel mit Grundlagen, also viel lesen und verstehen, bevor das erste Programm kommt das was sichbares macht. Nun gut.

    Wenn ich Visual C++ 2008 öffne gibt es viele Buttons und Menüs.
    Wie erstelle ich dann ein Projekt; was für ein Projekt muss ich erstellen; wie kann ich den code debuggen lassen und das Programm starten.

    Wo steht das, wie ich praktisch starte? Oder muss ich einfach ausprobieren?

    Vielen dank an ASC für die schnelle coole kompakte und tolle Hilfe!!

    Gruß, Bastelui



  • Schau Dir dies mal an: http://www.codeproject.com/KB/system/serial.aspx
    (demo project)

    Hier hast Du ein konkretes Beispiel auf meiner Homepage:
    http://www.henkessoft.de/Roboter/ASURO.htm (siehe ziemlich weit unten, Programm zur Ultraschall-Distanzmessung am Asuro via RS232)

    ... und das hier:
    http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx

    WinAPI findest Du hier: http://www.henkessoft.de/C++/WinAPI/WinAPI Kapitel 1 bis 6/api1.htm


  • Administrator

    bastelui schrieb:

    Das Multimeter hat eine normale serielle Schnitstelle. http://de.wikipedia.org/wiki/RS-232
    Und wenn ich dem Multimeter die richtigen ASCI zeichenfolge schicke, macht es das, was ich will.

    Also keine Bibliothek, bzw. die Bibliothek schreibst du? Du schickst dem RS-232 direkt Bits, nicht noch über irgendeine Bibliothek eines Drittanbieters?
    Dann brauchst du auf Windows dazu die WinAPI, musst die RS-232 Schnittstelle öffnen und entsprechend schreiben und lesen. Wie man das macht, müsstest du im WinAPI Forum nachfragen oder selber über die MSDN suchen.

    bastelui schrieb:

    Meinst du damit C#?

    Er schrieb C, da meint er auch C und nicht C#. C und C# sind unterschiedliche Sprache. C ist eine sehr Hardwarenahe Sprache, noch einen Schritte näher als C++ könnte man sogar behaupten.
    Allerdings sogar wenn ich C ähnlich Programmieren würde, würde ich wohl einen C++ Compiler nehmen, weil C++ einfach viele Vorteile hat 🙂

    bastelui schrieb:

    Wenn ich Visual C++ 2008 öffne gibt es viele Buttons und Menüs.

    Liest sich irgendwie witzig 🙂

    bastelui schrieb:

    Wie erstelle ich dann ein Projekt; was für ein Projekt muss ich erstellen; wie kann ich den code debuggen lassen und das Programm starten.

    Wo steht das, wie ich praktisch starte? Oder muss ich einfach ausprobieren?

    Für Visual Studio lohnt sich immer mal die MSDN anzuschauen.
    Um eine Projekt zu starten:
    File -> New -> Project -> General/Empty Project -> Wenn möglich, noch leerer machen

    Dann:
    main.cpp dazufügen (rechtsklick auf das Projekt -> Add -> New Item -> Code/C++ File(.cpp) -> Name Eingeben -> Ok

    Zum Kompilieren:
    F7 oder Ctrl+F7 .. bin mir nicht mehr sicher, was die Standardeinstellung war.
    Gibt auch ein Menu Build, dort findest du alles was du brauchst. Das Menu findet man auch, wenn man auf das Projekt rechtsklickt.

    Zum Debuggen:
    Oben das Menu Debug, bzw. F5.
    Breakpoints setzt man ganz einfach, indem man links von den Zeilennummern auf die graue Fläche klickt.

    Ansonsten halt ein wenig rumprobieren. Man findet sich relativ schnell zurecht.

    Grüssli



  • Dravere schrieb:

    Allerdings sogar wenn ich C ähnlich Programmieren würde, würde ich wohl einen C++ Compiler nehmen, weil C++ einfach viele Vorteile hat

    ja, z.b. die casts und sämtliche aktionen mit void* sind wunderschön.
    🙂



  • bastelui schrieb:

    asc schrieb:

    Ich ziehe hier zwar C++ vor, bedingt durch deine Assemblervorkenntnisse könnte dann aber auch C etwas für dich sein.

    Meinst du damit C#?

    Nein C

    Es gibt einige Sprachen mit dem C im Namen:
    C
    C++
    C++/CLI
    C#
    ...

    C ist die älteste von den aufgeführten und eine rein prozedurale Sprache. C++ wurde so konzipiert das es weitgehend C-Code versteht, aber selbst noch etliches andere mitbringt (Im wesentlichen ist C++ ein C Ableger, auch wenn man in C++ möglichst kein C programmieren sollte - möglich ist es aber).

    asc schrieb:

    Ich habe mir mal Thinking in C++ angeschaut. Das beschäftigt sich anscheinend erstmal viel mit Grundlagen, also viel lesen und verstehen, bevor das erste Programm kommt das was sichbares macht. Nun gut.

    C++ ist (wie auch C und Assembler) eine der komplexesten Sprachen und noch recht Hardwarenah. Da ist es nicht unüblich das die Grundlagen recht - ich sag mal - ausschweifend sind.

    asc schrieb:

    Wenn ich Visual C++ 2008 öffne gibt es viele Buttons und Menüs.
    Wie erstelle ich dann ein Projekt; was für ein Projekt muss ich erstellen; wie kann ich den code debuggen lassen und das Programm starten.

    Kurzeinführung:

    1. File/New/Projekt
    2. Win32 Console Application auswählen, Namen etc eingeben.
    3. OK, Next, Harken bei "Empty Projekt" setzen und mit Finish abschließen
    4. Rechte Maustaste auf dem Projekt, "Add/New Item" auswählen, C++ File (.cpp) und dann "main.cpp" oder wie deine erste Datei auch heißen soll, eingeben.

    Zudem rate ich noch zu folgenden:
    5. Im Solution Explorer rechte Maustaste auf dem Projekt machen, "Properties" auswählen
    6. Configuration/All Configurations auswählen
    7. Unter dem Ast C/C++ Warning Level auf 4 erhöhen

    und dann kannst du loslegen. Mit einem geöffneten Projekt wirst du den Rest (debuggen, starten... recht schnell selbst finden).

    cu André



  • asc schrieb:

    C++ ist (wie auch C und Assembler) eine der komplexesten Sprachen...

    c und asm sind nicht annähernd so komplex.
    🙂



  • FYI:
    build = STRG + SHIFT + B
    run with debugger = F5
    run without a debugger = STRG + F5



  • asc schrieb:

    C++ ist (wie auch C und Assembler) eine der komplexesten Sprachen und noch recht Hardwarenah.

    Ist C++ spätestens mit boost nicht überhaupt die komplexeste Sprache aller Zeiten?



  • user-l schrieb:

    Ist C++ spätestens mit boost nicht überhaupt die komplexeste Sprache aller Zeiten?

    Wie kann sich die Komplexität von etwas ändern, nur weil man es benutzt?

    Oder bekommt Dein Auto auch mehr Ausstattung, je mehr Du damit fährst? 😃



  • user-l schrieb:

    Ist C++ spätestens mit boost nicht überhaupt die komplexeste Sprache aller Zeiten?

    Ich finde das durch boost sogar einiges an Komplexität wegfällt (Smartpointer, BOOST_FOREACH, lexical_cast... vereinfachen einiges).

    cu André



  • welche Sprache ist denn komplexer als C++ mit boost ?



  • user-l schrieb:

    welche Sprache ist denn komplexer als C++ mit boost ?

    Was macht bitte schön C++ durch boost komplexer?


Anmelden zum Antworten