Warum sollte es C++ sein?



  • C# läuft auch auf Linux und Mac und iOS und Android...


  • Mod

    dot schrieb:

    C# läuft auch auf Linux und Mac und iOS und Android...

    Und GNU gibt's auch für Windows. Nur weil etwas technisch gesehen funktioniert, ist es nicht unbedingt toll.



  • f.-th. schrieb:

    Ich bin doof in der Grütze und hab nix besseres zu tun, also zu versuchen einfache Dinge unnötig kompliziert zu reden. Weiss zwar jeder wie "Rechner" in diesem Kontext zu verstehen ist, aber ich stell mich trotzdem mal ganz dumm (noch dümmer als ich bin, jau), und to so als tät ichs nicht checken. (...)

    *schnarch*

    ...und?



  • Die Frage müsste doch heißen: Wann sollte es C++ sein? Nicht "warum". Das würde ich beantworten mit "Wenn man die Stärken von C++ ausspielen kann". Die Stärken kann man von den Design-Zielen ablesen. Der Erfinder wollte eine Sprache, die bessere/mehr Abstraktionsmöglichkeiten gegenüber C bietet, ohne dass sich das negativ auf die Performance auswirkt. Und das ist IMHO auch gut erreicht worden. Was ich für hervorhebungswürdig halte, ist, dass es C++ einem erlaubt, die Verwendung von benutzerdefinierten Typen sehr angenehm zu gestalten. Benutzerdefinierte Typen mit schönen Schnittstellen sind ja eine Art von Abstraktion. Wo du in anderen Sprachen Dinge im Sprachkern definieren musstest, beispielsweise Dictionaries in Python, ist C++ mächtig genug, dass man solche Dinge wie Maps, Strings selbst in C++ implementieren kann und dies auch schon in der Standardbibliothek getan wurde.



  • SeppJ schrieb:

    dot schrieb:

    C# läuft auch auf Linux und Mac und iOS und Android...

    Und GNU gibt's auch für Windows. Nur weil etwas technisch gesehen funktioniert, ist es nicht unbedingt toll.

    Das mag im Allgemeinen richtig sein, im Falle von C# wär mir aber neu, dass es nicht toll funktioniert...



  • Dexxxter schrieb:

    Die Frage ist bereits gestellt, was spricht dafür C++ zu lernen, was hat euch dazu getrieben und warum wäre dies die Sprache erster Wahl?

    Ich würde einfach anfangen zu lernen und mich nicht zu sehr auf eine Sprache versteifen. Das meiste was du lernst, kannst du eh nahezu 1zu1 auf andere Sprachen übertragen. Ich programmiere bspw. eine 2D Engine in C++ und LUA, habe die allerdings auch ohne große Schwierigkeiten schon zu Java/Android portiert. An den Konzepten ändert sich eben nichts. Sei es jetzt eine while-Schleife, OOP oder ein Algorithmus zur Kollisionserkennung. Was sich halt ändert ist der Syntax - mei gott. Den schlägt man mal so beiläufig nach 😉 ! Klar - ein richtiger Guru wird man so natürlich nicht, allerdings muss man auch nicht alle Implementierungsdetails und die gesamte STL auswendig kennen, um guten Code zu schreiben.

    Zu deiner Ausgangsfrage: Ich programmiere im Beruf C / C++ / ASM / Perl im embedded/Automotive Bereich. Nicht weil ich will, sondern weil ich muss 🤡 ...



  • Hallo zusammen,

    erst mal danke für die zahlreichen Antworten.

    In einem scheint Einigkeit zu herrschen, C++ ist recht komplex für einen Einstieg, auch wurde erwähnt dasss C# vielleicht ein bessere Einstieg sein könnte, im wesentlichen bleibt es sich aber auch gleich, da ich ohnehin als Anfänger einsteigen, mich mit den verschiedenen Möglichkeiten und Konzepten von Grund auf befassen muss.

    Dennoch keine einfach Entscheidung ...

    Ich werde dieses Wochenende einfach mal in den örtlichen Buchhandel einfliegen und mir eine Übersicht sowohl für C#, als auch C++ verschaffen, dann einfach nach Bauchgefühl entscheiden (geblättertes Papier ist hierfür wohl besser für mich geeignet als dutzende Seiten im Netz durchzuklicken).

    Ich melde mich in jedem Fall nochmal zurück, entweder hier oder im C# Unterforum 😃

    Schönes Wochenende

    Dexxxter

    P.S. VisualBasic 2010 ist nicht wirklich ebenbürtig zu C-Sprachen oder?



  • Visual Basic .NET ist im Prinzip nichts anderes als eine alternative Syntax für C# und existiert wohl nur, weil Microsoft den zahlreichen Visual Basic 6.0 Entwicklern das damals neue .NET Framework, welches Visual Basic 6.0 ersetzen sollte, schmackhaft machen wollte. Für jemandem, der nicht einfach schon von Visual Basic Seite kommt, macht VB.NET imo keinen Sinn. C# ist die Amtssprache im .NET Land...



  • Vor einem Jahr hätte ich gesagt "fang mit Java an" - jetzt würde ich auch eher zu C# tendieren. Oder eine Interpretersprache, in denen hab ich allerdings nur wenig Erfahrung und würde das Empfehlen daher den anderen überlassen 😉



  • Interpretersprache zum Anfangen: Python

    Meine Empfehlung im konkreten Fall hier bleibt aber C#. Von Java würde ich auf jeden Fall abraten; insbesondere angesichts dessen, dass selbst das Plattformunabhängigkeitsargument dank Mono etc. immer mehr an Gewicht verliert. Und wer C# kann, kann praktisch sowieso Java auch...



  • Java macht durchaus Sinn, wenn man mit dem Programmieren Geld verdienen will. Gibt immer noch MASSIG viele Java Jobs.
    C# ist allerdings im Aufholen.

    dot schrieb:

    Und wer C# kann, kann praktisch sowieso Java auch...

    Das stimmt mehr oder weniger.
    Wobei es halt auch sehr wichtig ist das Framework zu kennen und diverse Standardmuster die in der jeweiligen Sprache gerne eingesetzt werden.



  • Wo du in anderen Sprachen Dinge im Sprachkern definieren musstest, beispielsweise Dictionaries in Python, ist C++ mächtig genug, dass man solche Dinge wie Maps, Strings selbst in C++ implementieren kann und dies auch schon in der Standardbibliothek getan wurde.

    Höh? Ein Dictionary wie in C++ kannst du auch in Python mit Sprachmittel bauen.

    Unterschiede sind halt:
    1. In Python gibt es eine schöne Syntax { "Key1" : 12, "Key2" : 10 }, in C++ nicht.
    2. In Python ist die Implementierung im Spracckern sinnvoll da Dictionaries extrem wichtig für Python sind und es so einfach performanter ist.



  • Hallo Dexxxter,

    ich würde dir auch zu C# raten (und MS Visual Studio Express als Entwicklungsumgebung). Die Sprache ist m.E. konsistenter als C++, und einfacher erlernbar.

    Zum Reinschnuppern kann ich dir das Open-Book Visual C# 2010 bzw. Visual C# 2008 (noch mit größeren WinForms-Kapiteln) empfehlen.
    Wenn du ein etwas alternativeres Buch suchst (mit direkterer Lernmethodik), dann gibt es C# von Kopf bis Fuß.

    Am besten, du fängst mit Konsolenprogrammen an, und wenn die Grundlagen der Sprache beherrscht sind (mind. 5-10 größere Übungsprogramme), dann wechselst du zur GUI-Programmierung. Und hier würde ich [trotzdem] zuerst (das als veraltet geltende) WinForms empfehlen (um auch hier die Grundlagen kennenzulernen), um erst danach dann auf WPF umzusteigen (da hier auch noch eine weitere Sprache XAML ins Spiel kommt).

    Viel Erfolg!



  • Ethon schrieb:

    Wo du in anderen Sprachen Dinge im Sprachkern definieren musstest, beispielsweise Dictionaries in Python, ist C++ mächtig genug, dass man solche Dinge wie Maps, Strings selbst in C++ implementieren kann und dies auch schon in der Standardbibliothek getan wurde.

    Höh? Ein Dictionary wie in C++ kannst du auch in Python mit Sprachmittel bauen.

    Na klar. Aber das würde ich nicht nutzen wollen, weil ...

    Ethon schrieb:

    [...] die Implementierung im Spracckern [...] einfach performanter

    ist.

    zero-cost abstraction ist es, was ich im Text bei C++ hervorheben wollte.



  • So einige Sachen werden in C++ mit Insintrics und Assembler erledigt, wenn Performance zählt. 🙂



  • cooky451 schrieb:

    Oder du nimmst C, da kannst du dich ganz auf die technischen Details konzentrieren und wirst nicht dauernd durch irgendwelche Wesentlichkeiten abgelenkt. 😉

    👍 😉



  • C++ solltest du nur nutzen, wenn du Segfaults handlen kannst.



  • Ach ja, gut dass du das gerade sagst.
    Habe seit 8 Stunden an einem gehangen.
    Jetzt erst behoben...
    Konstruktoren sind was tolles. 😃



  • Dexxxter schrieb:

    In einem scheint Einigkeit zu herrschen, C++ ist recht komplex für einen Einstieg, auch wurde erwähnt dasss C# vielleicht ein bessere Einstieg sein könnte, im wesentlichen bleibt es sich aber auch gleich, da ich ohnehin als Anfänger einsteigen, mich mit den verschiedenen Möglichkeiten und Konzepten von Grund auf befassen muss.

    C++ ist komplex, aber es ist eben nicht so, dass Du alles perfekt können musst, bevor Du das erste sinnvolle Programm schreibst.

    Ich persönlich halte C++ für eine sehr gute Einstiegssprache, weil man die bösen Fehler schon kennenlernt, bevor man große Programme schreibt. Das mag am Anfang frustrierend sein, aber das gehört zum Lernen dazu.
    Außerdem bietet C++ einen recht gradlinigen Weg, man ist von wenig abhängig: Es gibt keinen GarbageCollector, was ich als Vorteil ansehe.
    Ich hatte das Problem mal in JavaScript mal und kürzlich hatten wir das Problem auch in C#: Ein Objekt, mit dem man noch arbeiten wollte war aus dem Speicher entfernt worden, so dass der Zugriff darauf eine Exception auslöste. Darauf hat man als Entwickler wenig Einfluss und ich habe ehrlich gesagt weder eine Ahnung, wie noch ob die Kollegen das Problem in den Griff bekommen haben.

    Da Du Dich nicht wirklich geäußert hast, was Du eigentlich in der nächsten Zeit mit Deinen Programmierkenntnissen anfangen möchtest, sondern nur auf irgendwann später verweist, siehe hier: http://www.proggen.org/doku.php?id=start:language

    PS: Von C# will ich Dich nicht unbedingt abbringen. Als Sprache zur Anwendungsentwicklung würde ich zwar von einem Rückschritt zu C++ sprechen, aber C# ist gut lesbar und für den Anfang sicher eine angenehme Sprache, auch angenehmer als Java. Trotzdem möchte ich heute weder in C# noch in Java noch programmieren.



  • wenn ich mir ansehe, wie dringend gute C++ Entwickler bei uns in der Gegend gesucht werden, kann ich dir nur empfehlen, C++ zu lernen.
    Von C++ nach C# oder Java geht problemlos, umgekehrt musst du hingegen einiges lernen.

    Auch für C++ gibt es schöne Frameworks, mit denen du schöne GUIs entwickeln kannst. Und noch dazu plattformübergreifend!

    Und wie bereits erwähnt, man muss nicht alles perfekt beherrschen um sinnvolle C++ Programme schreiben zu können.


Anmelden zum Antworten