Fragen Zum Einstieg in C++



  • Werd's mir merken. Ab jetzt nur noch C++!!

    Und wer hat die Servolenkung?

    Gruß

    Volker



  • zarathus schrieb:

    Werd's mir merken. Ab jetzt nur noch C++!!

    Und wer hat die Servolenkung?

    Gruß

    Volker

    Delphi, dafür hat C++ den Welt-stärksten Motor.



  • Mit C++ kann ich gar nicht mehr machen als mit Delphi. Ich kann es durch die Komplexität von C++ aber besser umsetzen. Sowohl für den Moment als auch für die Zukunft, sprich Wartung und Wiederverwendbarkeit. Ein simples Beispiel sind hier die Templates, mit denen ich sowohl typsichere als auch hoch wiederverwendbare Komponenten entwickeln kann. Und der Hammer ist Template-Metaprogrammierung: ich kann in C++ Code einen Code schreiben, der zur Compiletime C++ Code erzeugt. Und ich kann es noch weiter treiben: ich kann in C++ Code einen Code schreiben, der zur Compiletime Berechnungen durchführt. Das muß man sich erstmal als Außenstehender auf der Zunge zergehen lassen! Es ist halt Metacode. Wofür andere Sprachen externe Tools benötigen, bringt C++ alles in Serienausstattung mit. Das macht es komplex und will auch gelernt sein, will man es anwenden!

    Die Templates und Metaprogrammierung sind dabei nur ein von vielen C++-Features, die C++ komplex machen.

    Ich weiß aus meiner langjährigen beruflichen Java-Programmierung, das simple Sprachen wie Java, alle fehlenden Features die wegen angeblicher Einfachheit weg gelassen wurden, am Ende doch durch externe Tools und Frameworks kompensiert werden. Was wir nicht auf Arbeit alles einsetzen, um dort hin zu kommen, was ich mit C++ und Betriebssystem-API im Direktzugriff habe, glaubt man man nicht.

    C++ ist komplex. Aber ich kann mich entscheiden, was ich davon nutze. Wenn ich keine Metaprogrammierung brauche oder noch nicht gelernt habe, lasse ich es weg. Ich komme auch mit einem C++-Subset über Umwege zu meinem Ziel, so wie ich es auch in Java oder Delphi über Umwege machen würde. Aber ich kann mich mit den Jahren in die C++ Features einarbeiten und besseren Code schreiben. Und ja, richtig gelesen: mehrere Jahre lernen!



  • zarathus schrieb:

    Also wenn ich das richtig verstanden habe, gibt es KEINE freie C++ IDE mit GUI-Erstellung per Drag & Drop.

    Warum muß der GUI Designer in der IDE drin sein? Kann doch auch ein externes Programm sein. Ist doch egal für das Ergebnis.

    Noch mal: man braucht für die meisten Masken keinen GUI-Designer! Ich habe schon sehr komplexe Masken erlebt wo man ohne GUI-Designer verloren war, aber eher selten. Und das waren dann auch eher unergonomische Masken.
    Meistens kann man es mit Code lösen, weil Masken meistens wenig Komponenten enthalten. Ich zeige dir mal ein Beispiel mit C++ Code:
    http://algierlib.tigris.org/wiki/HowTo/LayoutSendMessage

    Dabei ist das nicht mal das Optimum. Ich habe da noch ein DSL-Konzept für Algierlib im Kopf, damit der C++ Code noch kürzer wird.

    Aber um dich zu beruhigen, es gibt genug GUI-Designer für C++:

    1. FLUID (Einführung als Video) von FLTK
    2. http://glade.gnome.org/ für GTK+ und gtkmm
    3. http://www.wxformbuilder.org/ für wxWidgets
    4. QtDesigner



  • Artchi schrieb:

    ... Was wir nicht auf Arbeit alles einsetzen, um dort hin zu kommen, was ich mit C++ und Betriebssystem-API im Direktzugriff habe, glaubt man man nicht.

    Tja, was wäre wohl C++ (und eigentlich jede andere 'Höhere Programmiersprache') ohne die verteufelten C-Betriebssystem-APIs. Wohl auch nicht recht viel mehr als eine von tausenden, für sich alleine genommen 'sinnleere' Skript-Sprache, und eine sehr bedenkliche noch dazu ...
    Die Semantik von C++ verletzt nämlich das POLS (Principle Of Least Surprise) in gröbster Art und Weise. Angesichts gleichlautender Funktionen, die je nach Lust und Laune die unterschiedlichsten (== unvorhersagbarsten) Dinge tun - also defintiv für Überraschungen gut sind - und bei deren Ausführung sich der Programmablauf auch gerne unangekündigt in 'unsichtbare' aber leider doch vorhandene Ausnahme- behandlungsroutinen verabschiedet, lässt sich bei größeren Quellcode-Abschnitten fast nie genau vorhersagen, was bei Ausführung desselben auf den Anwender oder auch auf Wiederverwender des Quellcodes zukommen wird ...
    Die zahlreiche verbuggte C++ - Anwendersoftware unserer modernen Zeit ist ja nur eine logische Folge davon und spricht Bände.
    Gar nicht auszumalen, was erst passiert, wenn eines Tages auch die
    C-Implementierer von Betriebssystem- und Systemnahen APIs ähnlich schlampig zu Werke gehen wie ihre C++ Skript-Kiddie-Kollegen und dann keine zuverlässige Auskunft mehr darüber geben könnten, was ihre Schnittstellen eigentlich tun.

    Qualitäts-Software, deren Funktionieren man (bei genaue festgelegten Domain-Voraussetzungen) auch garantieren möchte, wird man sich mit C++ so schnell nicht basteln können. Eher einfach nur verbuggte, kurzlebige Massenware, die ja in 3 Jahren oft auch gar nicht mehr funktionieren soll damit man den ahnungslosen Anwendern dann mal auf die Schnelle die Version 2.0 verscheppern kann ('Goldplating' der unangenehmen Sorte, weil ja bereits die erste Version oft schon verbuggt war - weite Teile des Quellcodes aber natürlich wiederverwendet werden ... man ist ja so objektorientiert, nicht wahr?)

    Also oft ist weniger mehr, bzw. je nach Qualitäts-Anforderungen an die Software, die man entwickeln soll (Darf es auch ein bisschen verbuggt sein und soll eine Beta-Version (die nie Alpha erreicht) möglichst schnell verfügbar sein -> C++.
    Soll die Software in einer (relativ) genau spezifizierten Mindest-Umgebung garantiert das tun, was im Handbuch steht (und nichts anderes) -> C.

    mfg Herr Experte



  • Hallo Artchi,

    vielen Dank für die Links. Du hast mich überzeugt. Es geht auch ohne GUI's in der IDE. Und sicherer ist es allemal die Grundlagen zu verstehen, auch in Pascal.

    So in's Wasser springen und dann Halme suchen zum Rausziehen das bringt wahrscheinlich weniger wie vernünftig von vorne anzufangen. Ich hab' das bisher immer so gehalten, daß ich eine Idee hatte und die Umsetzen wollte. Dann wurde das Notwendige zusammengesucht. Ist nicht zwingend eine saubere Strategie. Man wird vermutlich nur ein gewisses Level in der Programmierung erreichen, und sich nur schwer darüber hinaus weiterentwickeln.

    Zu den Typbibliotheken habe ich trotzdem noch eine Frage, auch wenn sie zu früh kommt. In diesen Dingern scheint etwas versteckt zu sein, woraus IDE's von MSVC++ oder VB, oder #develop DLL's Erzeugen. Mit Verweis wird das hinzugefügt. Man hat dann in einer Baumansicht die Klassen die in der DLL drinne stecken.
    Im Falle von DesignCAD steckt die "Fernsteuerung" COM und OLE wohl auch darin. Und so diverser ActivX-Zugriff.

    Wie bindet man diese Typbibliotheken oder die entsprechende DLL z.B. in CodeBlocks ein? Oder wenn man seine Programme mit einem einfachen Editor schreibt? Im FeePascal-Buch konnte ich über DLL nachlesen, dass deren Funktionen im Programm wo sie aufgerufen werden sollen genauso lauten müssen wie in der DLL wo sie enthalten sind. Dazu müsste man in die DLL gucken können.

    Ich hatte mal iegendwann OLE-Viewer am Start, aber meine in Erinnerung zu haben, dass zwar die Klassenansicht sichtbar wurde, aber nicht der eigentliche Funktionsaufruf. Bin mir nicht mehr sicher.

    Das ist wohl für den Anfang eh zu viel.

    Erst mal werde ich versuchen C++ Primer zu ergattern.

    Und nochmal DANKE für die Tipp's und Links.

    Volker



  • zarathus schrieb:

    Werd's mir merken. Ab jetzt nur noch C++!!

    keine Angst: C/C++ ist eine gängige und berechtigte Schreibweise.



  • !rr!rr_. schrieb:

    zarathus schrieb:

    Werd's mir merken. Ab jetzt nur noch C++!!

    keine Angst: C/C++ ist eine gängige und berechtigte Schreibweise.

    Das läßt sich ja zum Glück einigermaßen einfach feststellen, wenn man beobachtet, wer "C/C++" verwendet und was er sagen will.



  • die Bezeichnung "C/C++" habe ich in 3 verschiedenen Bedeutungen verwendet gesehen:

    1. man meint "C und C++", ohne genauer differenzieren zu wollen - Beispiel: "Bücher zu C/C++"

    2. man meint "C++ und C", will dabei aber auch das "reine C" betonen - Beispiel: "Projekte in C/C++"

    3. man meint C++ im Sinne einer objektorientierten Spracherweiterung von C.



  • !rr!rr_. schrieb:

    die Bezeichnung "C/C++" habe ich in 3 verschiedenen Bedeutungen verwendet gesehen:
    1. man meint "C und C++", ohne genauer differenzieren zu wollen - Beispiel: "Bücher zu C/C++"

    D.h. man will Papier sparen und geht werden tief in C++ noch in C ein 🤡

    !rr!rr_. schrieb:

    2. man meint "C++ und C", will dabei aber auch das "reine C" betonen - Beispiel: "Projekte in C/C++"

    D.h. man bekommt Leute die weder richtig C noch richtig C++ können. 🤡

    !rr!rr_. schrieb:

    3. man meint C++ im Sinne einer objektorientierten Spracherweiterung von C.

    D.h. man ist ein Apple-Jünger? Obj-C 🤡



  • genau.

    - nein: 3. heißt: man hat mal was von Objektorientierung gehört, kann aber nur C 😃



  • Es ist schade, welchen Schwachsinn hier Leute fabrizieren, wenn es nicht um ihre Lieblingsprogrammiersprache geht.

    Didaktiker5 schrieb:

    Qualitäts-Software, ... , wird man sich mit C++ so schnell nicht basteln können. Eher einfach nur verbuggte, kurzlebige Massenware, die ja in 3 Jahren oft auch gar nicht mehr funktionieren soll ...

    Sicher, was man vor allem an 10 und mehr Jahren weiterentwickelten C++ Anwendungen bemerkt, die von den Kunden positiv gelobbt wird.



  • zarathus schrieb:

    Zu den Typbibliotheken habe ich trotzdem noch eine Frage, auch wenn sie zu früh kommt. In diesen Dingern scheint etwas versteckt zu sein, woraus IDE's von MSVC++ oder VB, oder #develop DLL's Erzeugen. Mit Verweis wird das hinzugefügt. Man hat dann in einer Baumansicht die Klassen die in der DLL drinne stecken.
    Im Falle von DesignCAD steckt die "Fernsteuerung" COM und OLE wohl auch darin. Und so diverser ActivX-Zugriff.

    Wie bindet man diese Typbibliotheken oder die entsprechende DLL z.B. in CodeBlocks ein? Oder wenn man seine Programme mit einem einfachen Editor schreibt? Im FeePascal-Buch konnte ich über DLL nachlesen, dass deren Funktionen im Programm wo sie aufgerufen werden sollen genauso lauten müssen wie in der DLL wo sie enthalten sind. Dazu müsste man in die DLL gucken können.

    Ich hatte mal iegendwann OLE-Viewer am Start, aber meine in Erinnerung zu haben, dass zwar die Klassenansicht sichtbar wurde, aber nicht der eigentliche Funktionsaufruf. Bin mir nicht mehr sicher.

    Wenn Du Windows-Programmierung betreiben willst (und dazu gehört eindeutig COM bzw. ActiveX), solltest du Microsoft-Tools benutzen. Dazu gehört auch eine MS-IDE und MS-Compiler. Der Compiler in Codeblocks ist bzgl. Windows-Programmierung so bei Windows 2000 Pro stehen geblieben. Für die Portierung von Linux-Projekten auf Windows noch akzeptabel, aber für die Ausnutzung von Windows-Techniken ungenügend.

    Besorge dir MSVC, am besten in der Standard-Edition. Ich kenne die Express Edition nicht sehr gut, aber diese hat definitiv keine ATL (Active Template Library) um komfortabler ActiveX zu programmieren. Auch wird die Express keine ActiveX-Tools haben. Man kann mit der Express sicherlich sowas zu Fuß entwickeln, aber die Tools in der Bezahlversion von MSVC sind definitiv hilfreich.

    Entwickelst du beruflich? Dann solltest du das Geld dafür übrige haben und sparst damit Zeit und Geld.

    Die COM-Technik definiert eine bestimmte Schnittstelle/API. Und diese kann man dann natürlich auslesen. Man kann Interfaces abfragen, und das Objekt gibt einem dann die Schnittstellen-Informationen zurück. In der MSDN gibt es viele Infos darüber. Wie man das selber entwickelt und nutzt, wird in der MSDN und auch gut bei codeproject.com erklärt... da gibt es massig Tutorials und Examples zu COM+ und ActiveX (speziell ATL).

    Beispiel-Artikel für Einsteiger:
    http://www.codeproject.com/KB/COM/comintro.aspx
    http://www.codeproject.com/KB/COM/COM_from_scratch_1.aspx
    http://www.codeproject.com/KB/COM/COMBasics.aspx

    Überischt aller Artikel:
    http://www.codeproject.com/KB/COM/
    http://www.codeproject.com/KB/atl/

    Du wirst C++ verstehen müssen. Die Artikel setzen das voraus.





  • Vielen Dank für die vielen Links.

    Ui ui ui jetzt muß ich aber rann...

    Gestern hab' ich mir das Buch "Der C++ Programmierer" gekauft und gleich angefangen. Meine Freundin bricht nicht zwingend in Begeisterungsstürme aus 🙂

    Bei ebay gib's momentan VC++6 Standart Edition für ca. 130€. Was haltet Ihr von dieser IDE? Der Import von Typbiliotheken sollte dort doch möglich sein.
    Ich will nix rausgeben, was mit einer IDE geproggt ist die nur zur "Persönlichen Verwendung" ist. Da sollte was Freies oder Low-Cost her. Ansonsten hätte ich Delphi 7 nehmen können. Oder halt VB 2008 Express. Funktionieren würde es damit. Aber warum einfach, wenn's auch schwer geht...

    Und man muß sich in C++ und C auskennen um "h2pas" in Lazarus besser benutzen zu können. Da ist ggf. Hand anlegen angesagt...

    Ich hab' beruflich nix mit Programmmierung zu schaffen. Das mach ich als Hobby um meinen eingeschränkten Geist etwas auf Vordermann zu bringen. Na, seit mitte Oktober bin ich auch Radfahrer...

    So, "Der C++ Programmierer" ruft...

    Gruß

    Volker



  • zarathus schrieb:

    Vielen Dank für die vielen Links.

    Ui ui ui jetzt muß ich aber rann...

    Gestern hab' ich mir das Buch "Der C++ Programmierer" gekauft und gleich angefangen. Meine Freundin bricht nicht zwingend in Begeisterungsstürme aus 🙂

    Bei ebay gib's momentan VC++6 stan**** Edition für ca. 130€. Was haltet Ihr von dieser IDE? Der Import von Typbiliotheken sollte dort doch möglich sein.
    Ich will nix rausgeben, was mit einer IDE geproggt ist die nur zur "Persönlichen Verwendung" ist. Da sollte was Freies oder Low-Cost her. Ansonsten hätte ich Delphi 7 nehmen können. Oder halt VB 2008 Express. Funktionieren würde es damit. Aber warum einfach, wenn's auch schwer geht...

    Und man muß sich in C++ und C auskennen um "h2pas" in Lazarus besser benutzen zu können. Da ist ggf. Hand anlegen angesagt...

    Ich hab' beruflich nix mit Programmmierung zu schaffen. Das mach ich als Hobby um meinen eingeschränkten Geist etwas auf Vordermann zu bringen. Na, seit mitte Oktober bin ich auch Radfahrer...

    So, "Der C++ Programmierer" ruft...

    Gruß

    Volker

    Nur mal so als Hinweis:

    Das 1998 veröffentlichte Visual Studio 6.0 war eine Sammlung der Entwicklungsumgebungen Visual Basic 6.0, Visual C++ 6.0, Visual InterDev (ASP Webapplikationsentwicklung), Visual FoxPro und Visual J++.

    Das Programm ist so veraltet, dass ich das sogar für umsonst nicht nehmen würde.

    Außerdem gibt es Visual C++ 2010 Express kostenlos. Das reicht für den Einstieg mehr als aus. Übrigens darf man damit sogar kommerzielle Anwendungen erstellen. Probier es doch erst mal damit. Vielleicht sagt dir das alles ja auch gar nicht zu.

    PS: Habe den Thread nicht komplett durchgelesen.



  • HILFE! VS 6.0? 😮 Dafür müsste man mir Geld geben, damit ich das benutze. VS 6.0 ist nicht ISO-C++ konform! 1998 wurde der erste C++ Standard von der ISO verabschiedet. Davor hat jeder C++ gemacht, wie er es wollte. Dazu zählt auch VS 6.0.

    Selbst VS 7.0 (2002) ist nicht ISO-C++ konform. Minimum ist VS 7.1 (2003!). Visual C++ 2003 Standard (nicht mit VisualStudio verwechseln) hatte ich damals neu für ca. 120 EUR gekauft. So als Orientierung.

    Ab 2005 gibt es das einzelne Visual C++ 2005 Standard leider nicht mehr. Gibt es nur noch als VisualStudio 2005 Standard.

    Als Einstieg kannst du die Express Editionen benutzen. Mit denen kann man auch kommerzielle Software ohne Einschränkung entwickeln. Nur ist die Express Edition logischerweise nicht so umfangreich wie z.B. die Standard Edition. Es fehlen halt viele Tools und Libs (MFC, ATL usw.). Aber damit du C++ lernst, reicht die EE.



  • zarathus schrieb:

    Bei ebay gib's momentan VC++6 stan**** Edition für ca. 130€.

    😮 WUCHER! Ich hatte damals (1999) dafür neu 219 DM bezahlt. Der bei EBay müsste dir Geld geben, damit du das nimmst.

    zarathus schrieb:

    Ich hab' beruflich nix mit Programmmierung zu schaffen. Das mach ich als Hobby um meinen eingeschränkten Geist etwas auf Vordermann zu bringen. Na, seit mitte Oktober bin ich auch Radfahrer...

    Dann hats du ja keinen Stress im Sinne von "Kunde will das morgen fertig haben". Dann kannst du locker mit der EE lernen. Du kannst auch den COM+ Kram damit machen. Denn das Windows SDK von Microsoft ist da auch mit bei (das Windows SDK ist eh kostenlos ohne IDE beziehbar, die IDE ist nur schönes Beiwerk). 2003 gabs schon das SDK von MS samt C++ Compiler kostenlos. Nur die Express IDEs gab es damals noch nicht.

    Die Standard-Edition kann man sich später kaufen.



  • Oh bei solchen Preisen sollte ich mein Visual C++ .Net Standard und Visual C# .Net Standard verkaufen 😃



  • Na dann mal Finger weg. Wie gut das ich gefragt habe. 🙄

    Ich beobachtete mal Visual Basic 6 bei ebay. Das ist für knappe 300€ über den Tisch gegangen 😮

    Für ein Visual Studio 6 werden gerade 599€ aufgerufen.

    Ich nutze ja die Express Edition.

    Zusätzlich habe ich noch CodeBlocks und Eclipse am Start. Bei Eclipse habe ich den MINGW-Compiler eingestellt, bei CodeBlocks den MS.

    Bei Eclipse werden die Deutschen Umlaute bei einer Textausgabe dargestellt, bei CodeBlocks und VSC++ Express nicht. Bei CodeBlocks auch nicht, wenn ich auf den MINGW wechsele.
    Da hat sich wohl in der Eclipse bei der Konfiguration eine Einstellung gesetzt, die ich bei den anderen Beiden noch nicht gefunden habe.

    Wie stellt man das ggf. um, dass die Umlaute angezeigt werden?

    Gruß

    Volker


Anmelden zum Antworten