Zwei Jahre C++ und immernoch keine Ahnung :)



  • Hallo zusammen,
    wie bereits im Titel steht beschäftige ich mich seit zwei Jahren mit C++. Letztes Jahr hatte ich "Der C++ Programmierer" von Ulrich Breymann durchgelesen. Meiner Meinung nach habe ich dort auch das Meiste verstanden. Aber egal ob ich nun Projekte für MicroController, Konsolenanwenungen oder GUI Anwendungen mit Qt (QtQuick) erstelle, habe ich immernoch das Gefühl nicht wirklich die Möglichkeiten von C++ auszuschöpfen und zu nutzen. Nun bin ich nicht sicher ob es daran liegt, dass meine Projekte vielleicht zu klein sind, jedoch fällt mir auf, dass vieles was ich in dem Buch gelernt habe nach und nach in Vergessenheit gerät. Variadic Templates, Fold Expressions, selbst Vererbung, SmartPointer und einige Themen der Objektorientierung kommen in gefühlt keinem Projekt bei mir vor. Ich möchte auch nichts overengineeren nur um mal wieder etwas angewendet zu haben. Die Frage ist nun wie ich bald weitermache. Zum einen habe ich überlegt bei Qt vielleicht mal die Widgets Geschichten anzuschauen in der Hoffnung vielleicht dort etwas mehr mit Vererbung in Berührung zu kommen. Ein anderer Gedanke war vielleicht mal mit der UnrealEngine ein kleines Spiel zu schreiben. Vielleicht habt ihr auch eine ganz andere Idee. Ich bin auf dieses Thema gekommen, weil mir auffällt, dass ich oft die Forenfragen hier nicht beantworten könnte oder anders geantwortet hätte.

    Ich bin gespannt auf eure Antworten 🙂



  • @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Aber egal ob ich nun Projekte für MicroController, Konsolenanwenungen oder GUI Anwendungen mit Qt (QtQuick) erstelle

    Du programmierst also ohne ein konkretes Ziel zu haben?

    beschäftige ich mich seit zwei Jahren mit C++

    Un du hast vorher nicht programmiert?



  • So richtig Erfahrungen sammelt man eigentlich erst wenn man entweder beruflich coded oder eben privat größere Projekte durchzieht.
    Aber generell braucht es halt einfach Zeit. Grafikengines würde ich erstmal weglassen. Wichtig ist, dass man erstmal einen sauberen Stil entwickelt, bevor man sich an komplexere Themen wagt.



  • @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Zwei Jahre C++ und immernoch keine Ahnung

    geht mir nicht viel anders, obwohl ich schon länger c++ benutze. aber ich weiß wenigstens woran es liegt. ich will schnell zum gewünschten ergebnis kommen. dabei möchte ich nicht durch gedanken ausgebremst werden, was schöner code oder state of the art ist. ich nehme alle abkürzungen. das hat leider den nachteil, dass ich in einem jahr selber nicht mehr verstehe, was ich da zusammengebaut habe. 🙂



  • vielleicht solltet ihr mal erst den programmablauf planen und dann anfangen zu programmieren.



  • Ich habe vorher stümperhaft für ein Spiel Scripts geschrieben. Das rechne ich aber nicht mit dazu. Erst bei C++ habe ich angefangen die Sprache von Grund auf zu lernen.
    Meine "Vision" ist eigentlich, dass ich kleine Tools für Leute schreiben kann die Badarf danach haben. Besonders die Gruppe an Gamern die Nieschenspiele mögen und sich über jede neue Software zur Verwaltung freuen wollte ich glücklich machen. Bis jetzt habe ich glaube kein Projekt was länger ist als 2000 Zeilen (mal von der GUI-Formatierung abgesehen).
    Ich versuche mir vorher schon einen Plan zu machen wie ich etwas angehe. Dabei liegt mein Fokus darauf wie die Klassen aufgebaut sind und welche Methoden sie bereitstellen müssen sowie Schnittstellen und Libraries die ich benötige um etwas umzusetzen. Meine letzten Projekte bestanden aus einer Handyapp sowie Desktopanwendung um die Beleuchtung meiner Küche zu steuern oder meinen PC zu steuern. Dann hatte ich eine Konsolenanwendung gebastelt welche mir via Telegram bescheid gibt wenn die Benzinpreise günstig stehen, diverse kleine Clients für Remoteschnittstellen von Spieleservern und andere Spielereien. Ich plane auch für einen Kollegen ein kleines Smarthomesystem mit Microcontrollern, Desktop-, Smartphone und Tabletanwendung um alles zu steuern, auszulesen und Sensordaten grafisch darzustellen, sowie einen kleinen zentralen Server (Singleboard Computer) der alles im Netzwerk richtig durchreicht (natürlich verschlüsselt). Ich versuche auch neuerdings via Doxygen auf eine saubere Dokumentation zu achten.

    Vielleicht gibt es auch Coding-Projekte welchen man sich anschließen kann und Leute die Ahnung haben einem die Leviten lesen wenn man Mist schreibt. Allerdings kenne ich sowas nicht und wüsste auch nicht wo ich auf solche Leute treffe 😅



  • @Zhavok
    Irgendwas machst du komisch.
    Du steuerst verschiedene Geräte an, liest Daten von denen, musst die verarbeiten,...das ist doch der Klassiker, wenn es um Vererbung geht (Basisklasse 'Device').
    Also da ist 'Vererbung' sicherlich möglich ohne ' overengineeren'.



  • ... was Bushmaster sagt.
    Ich will schnell zum Ziel kommen, habe wenig Zeit und noch weniger Lust, mich mit den ganzen Neuerungen zu beschäftigen, und benutze deshalb sehr wenig Elemente/Erweiterungen, die mit bzw. nach C++ 11 gekommen sind.



  • @Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    vielleicht solltet ihr mal erst den programmablauf planen und dann anfangen zu programmieren.

    mache ich ja, zumindest im kopf. meine erste überlegung ist immer, mit welchen tools/sprachen sich etwas am schnellsten realisieren lässt. und es gibt ja auch ständig neue technologien und programmiersprachen. sich mit neuem zu beschäftigen finde ich viel reizvoller, als sich in einer bekannten sprache weiterzuentwickeln. mit dieser haltung kann man natürlich kein crack in einer sprache werden, sondern kann von allem nur 'ein bisschen'.



  • @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Bis jetzt habe ich glaube kein Projekt was länger ist als 2000 Zeilen

    Du konntest nicht programmieren und hast nur Kleinkram gemacht - da lernt man halt nicht so viel. Übung macht den Meister - so ist es, man kommt leider nicht drumrum.



  • Ich will auch garnicht drum herum kommen. Ich suche ja gerade einen möglichst direkten Weg rein ins Chaos, damit ich vielleicht in zwei weiteren Jahren halbwegs damit umgehen kann 🙂

    Ich weiß eben nur nicht wie ich dahin komme. Ich würde auch weg von eigenen Projekten gehen, sonst besteht die Gefahr die gleichen Fehler wieder und wieder zu machen. Kennt ihr einen weg oder Projekte wo man vielleicht Anschluss finden kann?



  • @Bushmaster der punkt ist eben einfach, dass du - die entsprechende übung vorausgesetzt - kartoffeln auch super toll mit einem messer schälen, aber umgekehrt mit einem sparschäler kein obst oder gemüse schneiden kannst. 🙄

    @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Ich weiß eben nur nicht wie ich dahin komme. Ich würde auch weg von eigenen Projekten gehen, sonst besteht die Gefahr die gleichen Fehler wieder und wieder zu machen.

    was denn für fehler? kennst du dich schon mit systemprogrammierung (ich meine jetzt nicht boost oder so) aus?



  • Falls du damit die WinApi oder ähnliches meinst, nein.



  • @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Falls du damit die WinApi oder ähnliches meinst, nein.

    vielleicht wäre das mal was, womit du dich beschäftigen könntest / solltest. also zum glück kann du mit c++ auch c-programme schreiben.



  • @Wade1234 sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    also zum glück kann du mit c++ auch c-programme schreiben.

    Festgehalten für die Nachwelt.



  • Ich höre nicht unbedingt gutes über die WinApi. Die Rede ist von LegacyCode und das man definitiv nicht damit lernen sollte. Ebenso höre ich von überall, dass man C++ und C nicht mischen sollte worauf glaube ich @Swordfish auch gerade angespielt hat.
    Generell bin ich kein Freund von sowas. Ich achte extra darauf, dass mein Code weitestgehend plattformabhängig funktioniert.



  • Naja die "Basis*" APIs von Betriebssystemen sind alle alt. WinAPI ist wenigstens moderner und grösstenteils weniger schrottig als das ach so tolle POSIX.

    Was jetzt schlecht wäre, wäre C++ mit der WinAPI zu lernen. Was nicht schlecht ist, ist C++ zu lernen und dann, wenn man es halbwegs gut kann, sich die WinAPI anzusehen. Oder auch gern das POSIX Gedöns, wenn man auf Schmerzen steht und/oder oder kommerziell native Anwendungen vor allem für den Serverbereich programmieren möchte.

    Und IMO kann das schon sehr interessant sein. Man sieht da halt wie die ganzen Dinge gemacht werden die du mit Standard C++ nicht machen kannst. Und dazu gehörten bis vor kurzem (vor C++17) sogar so grundlegende Dinge wie die Liste der Dateien in einem Verzeichnis zu bekommen.

    *: Neben den alten grundlegenden APIs gibt es natürlich halbwegs moderne, für Zeugs das neu dazugekommen ist. Beispielsweise Direct3D 11.



  • @Zhavok sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Ich achte extra darauf, dass mein Code weitestgehend plattformabhängig funktioniert.

    aus welchem grund? normalerweise strebt man doch plattformunabhängigkeit an.



  • Es ist doch offensichtlich, dass er sich vertippt hat, lies einfach die zwei Sätze davor.



  • @Mechanics sagte in Zwei Jahre C++ und immernoch keine Ahnung 🙂:

    Es ist doch offensichtlich, dass er sich vertippt hat, lies einfach die zwei Sätze davor.

    sich auf eine plattform zu fixieren mag auch vorteile haben.


Log in to reply