C++ oder C# lernen?



  • Ich weiß, ich befinde mich in einem C++ Forum, aber hoffe dennoch auf unparteiische Meinungen.

    In meiner Ausbildung habe ich 6 Wochen lang je C# und Java gelernt. Allerdings nur Datentypen, Methoden und Klassen. Alles tiefergehende nicht. Nun würde ich gern hier weiter machen und bin nach meiner Recherche im Netz an einem Punkt angekommen, an dem ich gern ein paar Meinungen von Euch hören würde.

    Derzeit habe ich ein Programm in Planung, welches mit Information eines Windows Systems liefert. Anschließend ist ein Programm geplant welches für mein Hobby Modellfliegen sein soll. Ich weis, da gibt es schon einiges doch würde mein Club gern spezielle Dinge anders haben wollen als wie es derzeit gibt. Und ich wurde gebeten dies wenn möglich umzusetzen.

    Eigentlich war mein Plan dies in C# mit WPF zu machen, doch nach bisschen kreuz lesen musste ich feststellen, dass es am Ende ja nicht Plattformunabhängig wird. Und da kam die Sprache C++ ins Spiel, hiermit ist es möglich das Programm plattformunabhängig zu veröffentlichen.

    Nun würden mich mal ein paar Meinungen eurer seit hören. Soll ich mich auf C++ einlassen und dies weiter vertiefen, oder ist es sinnvoller C# mit WPF zu machen?


  • Mod

    Den Hauptunterschied hast du selber schon genannt: Willst du hauptsächlich Windowsanwendungsprogrammierung machen, geht's mit C# einfacher. Und für anderes bist du mit C++ besser aufgestellt. Das klingt jetzt biased nach C++, aber Windowsanwendungsprogrammierung ist ein großes Ding und für viele Leute alles, was sie jemals wollen/brauchen. Da musst du jetzt wissen, was dir selber wichtiger ist. Erfahrungsgemäß ist für Programmierung im Modellbaubereich eine Windowsanwendung oft eher ungeeignet, da man oft mit heterogenen nicht-Windows-Plattformen zu tun hat, und auch häufig hardwarenahen Code schreibt. Aber das scheint in diesem speziellen Fall ja (noch) nicht der Fall zu sein.



  • Per se sind beide Sprachen plattformunabhängig, aber es kommt eben auf das verwendete UI-Framework an (für C++ z.B. Qt oder wxwidgets), für welchen Systeme es kompiliert (und ausgeführt) werden kann.

    Aber auch im .NET-Umfeld wird an einem platttformunabhängigen UI gearbeitet: Introducing .NET Multi-platform App UI (MAUI).

    Die Frage ist auch, wieviel Zeit du dir für das Lernen der Sprache (und des UI-Frameworks) geben willst?
    Es ist zwar gut ein konkretes Projekt als Ziel zu haben, aber ob du alleine die Anforderungen für die Anwendung in akzeptabler Zeit umsetzen kannst, stelle ich mal in Frage (gerade beim Lernen sollte man viele kleine Testprojekt entwickeln).
    Du wirst neben der Programmiersprache auch die Grundlagen des Software-Engeneerings, z.B. Architektur und Design-Patterns, verstehen müssen.



  • @Th69 sagte in C++ oder C# lernen?:

    Die Frage ist auch, wieviel Zeit du dir für das Lernen der Sprache (und des UI-Frameworks) geben willst?

    Die Zeit spielt eigentlich eine untergeordnete Rolle. Mache dies in meiner Freizeit und benötige es nicht um meine Brötchen damit zu verdienen.

    @Th69 sagte in C++ oder C# lernen?:

    Es ist zwar gut ein konkretes Projekt als Ziel zu haben, aber ob du alleine die Anforderungen für die Anwendung in akzeptabler Zeit umsetzen kannst, stelle ich mal in Frage (gerade beim Lernen sollte man viele kleine Testprojekt entwickeln).

    Dachte folgendermaßen vorzugehen. Die Grundlagen von C++ erlernen und dann Stück für Stück das Programm aufzubauen. Also zuerst mit den einfachen Sache anfangen und dann immer mit der Schwierigkeit steigend aufbauen.



  • @JammerMan sagte in C++ oder C# lernen?:

    Die Zeit spielt eigentlich eine untergeordnete Rolle.

    Die Frage ist, wielange möchte dein Club darauf warten?

    @JammerMan sagte in C++ oder C# lernen?:

    Also zuerst mit den einfachen Sache anfangen und dann immer mit der Schwierigkeit steigend aufbauen.

    Gerade diese Vorgehensweise läßt die meisten Projekte scheitern.
    Man sollte schon am Anfang wissen, was die kompliziertesten Dinge bei der Umsetzung sind und dementsprechend die Architektur und Zeiteinteilung planen. Ich hoffe, du kennst die 80:20-Regel bzw. 90:90-Regel? Wenn nicht, dann weißt du es jetzt. 😉



  • Derzeit nutzt mein Club etwas anderes, sie würden mir die nötige Zeit geben. Also von der Seite drängt nichts.

    Auch wenn ich die Software nicht fertig bekomme, oder zwischenzeitlich jemand anders schneller ist. So würde ich dennoch programmieren können, auch wenn es nur für meine Bedürfnisse ist. Man weis ja nie, hab Freunde, die manchmal fluchen, dass sie was kleines brächten, um ihre Arbeit zu erleichtern.

    Andere Projekte würde ich schon zu genüge finden. Stellt sich nur noch die Frage nach der Sprache.


  • Mod

    @Th69 sagte in C++ oder C# lernen?:

    Gerade diese Vorgehensweise läßt die meisten Projekte scheitern.
    Man sollte schon am Anfang wissen, was die kompliziertesten Dinge bei der Umsetzung sind und dementsprechend die Architektur und Zeiteinteilung planen. Ich hoffe, du kennst die 80:20-Regel bzw. 90:90-Regel? Wenn nicht, dann weißt du es jetzt. 😉

    Wie machst du das als Anfänger, wenn du noch gar nicht weißt, was warum schwierig ist, und du noch nie irgendwelche Architektur gemacht hast?

    Wobei das auch heißen kann (vielleicht hast du das auch gemeint), zuerst die Mittel an dazu geeigneten Beispielen richtig kennen zu lernen, anstatt sich mit blutigem Anfängerwissen gleich an das richtige Projekt zu machen und dieses gleich zu Beginn durch unwissende Fehlentscheidungen zu vergiften.



  • Ich würde einfach erstmal anfangen und weiterschauen. Wenn man zum ersten Mal in einer Sprache ein Projekt macht, wird man sowieso nicht alles "korrekt" machen (gilt eigentlich generell). Also ich würde einfach mal mit einem kleinen Teilprojekt anfangen und schauen, wie weit du so kommst. Am besten nimm irgendwas wirklich kleines, sodass du ggf. hier nachfragen kannst, wie man es besser machen kann. Ich finde gerade für Hobbyprojekte Learning by Doing völlig in Ordnung.



  • Nur mal aus Interesse, warum eig. C++ oder C#?

    Nicht das ich jetzt konkret eine andere Sprache im Sinne hätte, die ich die empfehlen würde, mich würde nur mal interessieren , warum du grade auf die beiden Sprachen kommst.
    Insbesondere hast du ja Java in deiner Ausbildung gemacht ... das ist ja grade für Plattformunabhängigkeit bekannt (Mit dem Unterschied, dass es nicht auf jeder Plattform kompiliert werden muss im Gegensatz zu C++/C). Wie gesagt ich empfehle dir wirklich nicht Java, grade graphische Oberflächen sind da grausam, aber es wundert mich schon, dass es nicht in deiner Auswahl vorkam 🙂

    Wirkliche Alternative wäre aber zum Beispiel Python.

    Persönlich finde ich C++ natürlich eine gute Wahl (etwas voreingenommen). Aber du darfst dir da nichts vormachen, das wird ein steiler und langer Weg. Mit z.B. Python kommst du garantiert schneller an dein (vorläufiges) Ziel.
    Deswegen sollte wohl eher die Frage sein, was du dir langfristig erhoffst.



  • @SeppJ sagte in C++ oder C# lernen?:

    @Th69 sagte in C++ oder C# lernen?:

    Gerade diese Vorgehensweise läßt die meisten Projekte scheitern.
    Man sollte schon am Anfang wissen, was die kompliziertesten Dinge bei der Umsetzung sind und dementsprechend die Architektur und Zeiteinteilung planen. Ich hoffe, du kennst die 80:20-Regel bzw. 90:90-Regel? Wenn nicht, dann weißt du es jetzt. 😉

    Wie machst du das als Anfänger, wenn du noch gar nicht weißt, was warum schwierig ist, und du noch nie irgendwelche Architektur gemacht hast?

    Wobei das auch heißen kann (vielleicht hast du das auch gemeint), zuerst die Mittel an dazu geeigneten Beispielen richtig kennen zu lernen, anstatt sich mit blutigem Anfängerwissen gleich an das richtige Projekt zu machen und dieses gleich zu Beginn durch unwissende Fehlentscheidungen zu vergiften.

    Genau so habe ich es gemeint (ich hatte ja weiter oben auch "(gerade beim Lernen sollte man viele kleine Testprojekt entwickeln)" geschrieben.



  • Ich arbeite auch mit C++, bereits seit 12 Jahren beruflich und ich entwerfe Backends (Serverapplikationen) mit Windows-basierten Entwicklungsumgebungen, die aber ausschließlich auf Linux-Systemen eingesetzt werden. Das ist genau die Plattformunabhängigkeit die C++ anbietet. Wir verwenden C++, weil wir in einem Bereich arbeiten, wo es auf das letzte Fünkchen Performance ankommt. Damit sind wir aber im Konzern auch die einzigen. Der Rest arbeitet größtenteils mit Java oder C#.

    Meine Meinung ist subjektiv, denn ich kann eigentlich nur C++ und einige wenige Scriptsprachen, aber ich mag C++, ich mag auch die Community und für mich persönlich ist es Liebe 😍

    Der Arbeitsmarkt sucht durchaus auch noch mehr C++-Entwickler. Ob das für immer und ewig so bleiben wird, ist ne andere Frage.

    Mein Tipp: finde raus was dir Spaß macht und was am Arbeitsmarkt Punkte bringt.



  • @Leon0402 sagte in C++ oder C# lernen?:

    Nur mal aus Interesse, warum eig. C++ oder C#?

    C# und Java hatten wir in der Ausbildung und da hat Java mit absolut nicht gefallen, daher C#.
    Und nun kam allerdings die Problematik mit der Plattformunabhängigkeit und da tauchte auf einmal C++ noch auf.

    Gar nicht so einfach, eine Entscheidung zu treffen.
    Ganz abgeneigt gegenüber von C# bin ich nicht, doch da kommt wieder die Plattformunabhängigkeit hinzu und ich
    schwanke zu C++.
    WPF und C# ist einfacher für Windows GUI's gegenüber C++ und QT/WXWidgets !? Hm, wirklich nicht einfach.


Anmelden zum Antworten