Ist es sinnvoll heute noch C++ anzufangen?



  • asc schrieb:

    +fricky schrieb:

    danke für deine unterstützung. aber wenn ich's mir recht überlege, einen verbesserungsvorschlag habe ich dann doch: alles einstampfen und nochmal von vorn beginnen!

    Stimmt: Einen Neuentwurf ohne die C-Altlasten wäre durchaus interessant

    das finde ich auch, obwohl ich C-fan bin. was in C gut und praktisch ist, kann in anderen programmiersprachen blöd und störend sein. wahrscheinlich käme am schluss sowas ähnliches wie Java oder C# raus, bloß dass es im normalfall direkt zu maschinencode compiliert wird, anstatt in einer VM zu laufen.

    JustAnotherNoob schrieb:

    Seitenweise hört Fricky gar nicht darauf, dass Operatoren nur Namen sind, er geht nichtmal drauf ein...

    tut mir leid, wenn ich nicht auf alles eingegangen bin, vielleicht fand ich's auch nicht so wichtig, ich dachte das op-überladungsthema wär' schon gegessen, aber ok: operatoren haben namen, da stimme ich dir zu (und jeder andere wahrscheinlich auch). diese 'namen' haben eine feste bedeutung und eine bestimmte reihenfolge der abarbeitung ohne klammerung (ich könnte wetten, da hat schon jemand hier gesagt). auf was wolltest du eigentlich hinaus?

    Dravere schrieb:

    ... das Paper n2532 ...

    man dankt. das schau' ich mir bei gelegenheit mal an.
    🙂



  • +fricky schrieb:

    aber wenn ich's mir recht überlege, einen verbesserungsvorschlag habe ich dann doch: alles einstampfen und nochmal von vorn beginnen!

    Haha, ich krieg mich nicht mehr ein! Immer voll auf die Zwölf, was... 😃

    asc schrieb:

    Stimmt: Einen Neuentwurf ohne die C-Altlasten wäre durchaus interessant

    Fragt sich nur, wieviele einen solchen Standard dann auch wirklich einsetzen würden. Es existieren soviele C-mit-Klassen-SDKs, die dann keine Sau mehr übersetzt kriegen würde. Sicher eine interessante Idee, und wohl Weihnachten und Ostern zusammen für euch Puristen. Aber das wäre dann wohl eine solch krasse 'Weiterentwicklung', dass man schon eher von einer neuen Sprache sprechen müsste (vielleicht "C+#"? oder "C++++"? 😉 ). Für viele Firmen käme es dem zumindest gleich. Es wäre ein harter Schnitt nötig, und wir wissen doch, wie Firmen oft auf sowas reagieren => never change a running programming language. Viele taten/tun sich ja schon schwer, ihre alte VS6 Steinzeit-IDE mal gegen was Aktuelles auszutauschen (wir haben es vor ca. einem Jahr gewagt 😉 )...



  • C++ ist dafür, daß es den "Balanceakt" vollführt, eine maschinennahe Sprache wie C um zahlreiche high-level-Konzepte wie Objektsystem und generische Programmierung zu erweitern, schon ziemlich gut. Daß man auf dieser Multi-Paradigmen-Basis nicht die konzeptionelle Eleganz und Einfachheit etwa von lisp oder smalltalk erwarten kann, liegt doch auf der Hand.

    Jetzt fehlt in C++ aber IMHO noch ein entscheidender Schritt in Richtung high-level-Programmierung: die Integration eines parallelen, dynamischen Typsystems mit late binding neben das vorhandene statische Typsystem. Bitte nicht vergessen in C++1x oder C++2x.



  • u_ser-l schrieb:

    Jetzt fehlt in C++ aber IMHO noch ein entscheidender Schritt in Richtung high-level-Programmierung: die Integration eines parallelen, dynamischen Typsystems mit late binding neben das vorhandene statische Typsystem.

    au ja, noch etwas basic, pascal, logo und prolog dazu, eine portion HTML und das ganze abgerundet mit einer prise Verilog. wohl bekomms!
    🙂



  • Die Zeit wird kommen, dann ist GW-BASIC wieder in. goto wird heiliggesprochen
    und OOP wird vom Papst verboten. Mal abwarten 😉



  • +fricky schrieb:

    au ja, noch etwas basic, pascal, logo und prolog dazu, eine portion HTML und das ganze abgerundet mit einer prise Verilog. wohl bekomms!
    🙂

    mach dich nicht lustig! 😃

    das mit dem dynamischen Typsystem in C++ ist nicht nur ein Scherz. Es würde die Anwendungsmöglichkeiten von C++ enorm in Richtung rapid-prototyping und sogar scripting erweitern.



  • ich vergewissere dir, dass das zu 99.99% nicht passieren wird und zwar nicht, weil sie es "vergessen" haben.



  • ich denke auch.

    Einige Sprachen wie das neue Cobra von cobra-language.com erlauben ja wahlweise statische und dynamische Typisierung.



  • Keine neuen Beiträge Ist es sinnvoll heute noch C++ anzufangen?

    Nein.

    Fred closed.



  • Hi,

    Ich finde auch, dass C++ schon so seine Tücken hat. Leider auch einige, in die selbst erfahrenere Programmierer oftmals tappen. Die Sprache hat zu viele mächtige Features, die den Leuten zu viel Freiheit an die Hand geben. So entstehen einfach zu viele Fehler und das wird mit dem kommenden C++0x Standard nicht besser, sondern eher noch im Gegenteil. Damit werden sie es endgültig erreichen, daß Niemand mehr durch diese Sprache durchblickt.

    Ein weiterer, in diesem Thread noch nicht genannter, netter Fallstrick in C++ ist IMHO auch noch dieser Klassiker:

    class MyClass {
    	int *array;
    	int len;
    public:
    	MyClass(int l) : len(l), array(new int[len]) {}
    };
    
    int main(int argc, char* argv[]) {
    	MyClass test(10);
    	return 0;
    }
    

    Aufgrund des hohen Verbreitungsgrads wird C++ noch nicht morgen verschwunden sein, bei vielen älteren, aber noch gepflegten, Projekten lohnt eine Neuprogrammierung wohl kaum aber neue Projekte werden heutzutage und zukünftig kaum noch in C++ realisiert meiner Erfahrung nach. Ausnahmen bestätigen auch hier natürlich die Regel.



  • aber neue Projekte werden heutzutage und zukünftig kaum noch in C++ realisiert meiner Erfahrung nach.

    Nach deiner Erfahrung aus einer Firma?

    C++ hat eben seine Bereiche gefunden und da ist es sehr erfolgreich (siehe Stellenausschreibungen, Freelancer, Firmen die Support und Tools anbieten usw.). Im Gegensatz zu früher wird C++ eben nicht mehr unbedingt überall eingesetzt. Aber das ist ein Prozess durch den viele Sprachen gehen.

    Wenn man Desktopanwendungen entwickelt, die unter OS X und Windows laufen sollen, dann führt ja kaum ein Weg an C++ vorbei. C# ist vielleicht gut unter Windows, aber eben nicht unter OS X und das gleiche für Objective C nur andersrum (Java ist keine wirkliche Alternative, da es keine native GUI anbietet und einfach schmerzhaft bei der Verbreitung ist). In der Spieleprogrammierung ist C++ unangetastet. Im Embeddedbereich ist C++ auch sehr erfolgreich und im Scientificcomputing ist C++ die Topsprache.

    Ich denke in 50 Jahren wird hier noch diskutiert werden, wann C++ denn nun ausstirbt.

    (Übrigens wird es wohl eher immer lukrativer C++ Kenntnisse zu haben, wenn immer weniger Leute C++ kennen. Selbst wenn man von jetzt auf gleich alle neuen C++ Projekte einstellen würde, braucht man ja zur Wartung noch viele C++ Programmierer. Nicht umsonst führen COBOL Programmierer oft die Gehaltsstatistiken an!)



  • Paddy33 schrieb:

    So entstehen einfach zu viele Fehler und das wird mit dem kommenden C++0x Standard nicht besser, sondern eher noch im Gegenteil.

    Das befürchte ich leider auch. Wie dick werden C++ Lehrbücher wohl sein wenn der neue Standard draussen ist? 😞
    Disclaimer: Ich mag C++ und werde auch weiterhin in C++ programmieren.


  • Administrator

    general bacardi schrieb:

    Das befürchte ich leider auch. Wie dick werden C++ Lehrbücher wohl sein wenn der neue Standard draussen ist? 😞

    Gleich dick ...

    ... nur wirst du zwei davon haben 😃

    Grüssli



  • u_ser-l schrieb:

    das mit dem dynamischen Typsystem in C++ ist nicht nur ein Scherz. Es würde die Anwendungsmöglichkeiten von C++ enorm in Richtung rapid-prototyping und sogar scripting erweitern.

    naja, ich wette das kann man in C++ schon heute, mit 'nem wilden gebräu aus template metaprogramming, preprocessor-tricks und RTTI, hinbekommen (wär 'ne idee für eine neue boost-library, wenn die nicht schon gibt). mit C++0x gibt's auch noch 'ne dynamic-typing-light version durch das mutierte 'auto' keyword.
    🙂



  • sicher, wenn man jede Funktion und jede Library-Fkt. mit einem wrapper von/nach void* versieht und alle Variablen void* deklariert und ständig hin- und hercastet, geht das schon heute. Ist aber nicht elegant und bläht den Programmcode auf, obwohl er durch Weglassen von Typangaben doch reduziert werden soll.



  • Herrlich, hab gerade den ganzen Thread gelesen und Tränen in den Augen 🤡 🙂
    danke!

    Artchi schrieb:

    Es ist ja nicht so, das die C++-Fanboys sich jede Woche in Java-Foren rumtummeln und gegen Java stänkern. Denk mal darüber nach, wer hier von beiden Seiten Minderwertigkeitskomplexe hat? 🙄

    Komisch, da es in dem Thread hier 19 Seiten lang um c vs c++ ging und die Ausgangsfrage "Ist es sinnvoll heute noch C++ anzufangen?" lautete 🙄

    ibs schrieb:

    Wenn man Desktopanwendungen entwickelt, die unter OS X und Windows laufen sollen, dann führt ja kaum ein Weg an C++ vorbei. C# ist vielleicht gut unter Windows, aber eben nicht unter OS X und das gleiche für Objective C nur andersrum (Java ist keine wirkliche Alternative, da es keine native GUI anbietet und einfach schmerzhaft bei der Verbreitung ist)

    Da der Post noch aktuell ist: Das ist faktisch falsch:
    Das einzig annehmbare Cross-platform GUI toolkit für c++ ist unbestreitbar QT (was du übrigens auch mit Java verwenden kannst), leider bietet QT weder auf Windows noch auf OS X eine gutaussehende native GUI.
    Im Gegensatz zu Java, da Java Swing sowohl unter Windows als auch unter OS X (und auch unter GTK, leider nicht mit KDE) auf den nativen gui toolkits basiert. Die Java Unterstützung auf OS X ist perfekt (es gibt einen Grund, dass NeoOffice Java Swing als GUI benutzt für das OpenOffice backend), da sie ja auch von Apple entwickelt wurde. Ebenso kannst du damit rechnen, dass Java auf 100% aller OS X rechner vorhanden ist, da es mit dem Betriebssystem ausgeliefert und upgedated wird.
    Und wenn man von C(++) kommt kann man ja immernoch SWT nehmen, dann hat man noch paar Abartigkeiten aus der alten Heimant 🤡 👎



  • ablach schrieb:

    ibs schrieb:

    Wenn man Desktopanwendungen entwickelt, die unter OS X und Windows laufen sollen, dann führt ja kaum ein Weg an C++ vorbei. C# ist vielleicht gut unter Windows, aber eben nicht unter OS X und das gleiche für Objective C nur andersrum (Java ist keine wirkliche Alternative, da es keine native GUI anbietet und einfach schmerzhaft bei der Verbreitung ist)

    Da der Post noch aktuell ist: Das ist faktisch falsch:
    Das einzig annehmbare Cross-platform GUI toolkit für c++ ist unbestreitbar QT (was du übrigens auch mit Java verwenden kannst), leider bietet QT weder auf Windows noch auf OS X eine gutaussehende native GUI.

    Wer redet von Cross-platform GUI toolkits? Man kommt eben oft leider doch nicht darum herum, die GUI für beide Systeme in den Systemtoolkits zu schreiben. OS X und Windows unterscheiden sich eben zu sehr in vielen Details, als dass man das in einem Rutsch erledigen könnte. Vor allem wenn man sich an die Guidelines der Paltformen halten will (was man muss, wenn man einen Sticker des Herstellers bekommen will). Das geht nicht mit einer einzigen GUI Library.

    Wobei ich Qt dennoch recht gut finde. wxWidgets bietet aber ebenfalls native GUI. Aber wie gesagt, man kann nicht sinnvoll eine GUI für zwei so unterschiedliche Systeme basteln.

    Die Java Unterstützung auf OS X ist perfekt (es gibt einen Grund, dass NeoOffice Java Swing als GUI benutzt für das OpenOffice backend), da sie ja auch von Apple entwickelt wurde. Ebenso kannst du damit rechnen, dass Java auf 100% aller OS X rechner vorhanden ist, da es mit dem Betriebssystem ausgeliefert und upgedated wird.

    Windows ist hier problematisch und unter OS X weiß man auch nicht, wer welche Version hat. (Gibt leider genug Leute/Firmen, die keine automatischen Updates ausliefern). Da kann man bei C++ mit eigenen DLLs oder dem OS X .app System sehr einfach Anwendungen deployen.

    (Man sieht, dass du hier offensichtlich mehr theoretische Erfahrung hast. Nach deinen Aussagen glaube ich kaum, dass du jemals kommerzielle Desktop Anwendungen entwickelt hast)


  • Administrator

    ablach schrieb:

    Das einzig annehmbare Cross-platform GUI toolkit für c++ ist unbestreitbar QT (was du übrigens auch mit Java verwenden kannst), leider bietet QT weder auf Windows noch auf OS X eine gutaussehende native GUI.

    1. Was bitte ist annehmbar?
    2. Weisst du eigentlich WIEVIELE Cross-Platform GUI Frameworks es in C++ gibt?

    ablach schrieb:

    Im Gegensatz zu Java, da Java Swing sowohl unter Windows als auch unter OS X (und auch unter GTK, leider nicht mit KDE) auf den nativen gui toolkits basiert.

    ROFL, da hat jemand keine Ahnung. Auf den nativen GUI Toolkit. Klar, Java Swing gleicht auch so wahnsinnig dem Aussehen von der Windows GUI. Und wenn man auf das Windows Theme umstellt, wird oft vieles nicht unterstützt oder läuft einfach schief.

    ablach schrieb:

    Die Java Unterstützung auf OS X ist perfekt

    Nochmals ROFL. Ja, in der Theorie, in der Praxis meistens nicht. Vor allem folgt die Auslieferung von neuen Versionen meistens extrem verspätet. Ich habe schon erlebt, dass MacOS X über ein Jahr hinten nach war mit der Java Version Auslieferung. Und dann hast du ein ziemliches Problem, da du nicht einfach irgendwo Java runterladen kannst.

    Auch ist Java nicht so platformunabhängig wie viele es gerne möchten. Es stimmt zwar, dass man es nur einmal kompilieren muss und dann auf allen Platformen starten kann, aber wenn es zum Beispiel auf Windows funktioniert, heisst es noch lange nicht, dass es auch auf MacOS X oder Linux funktionieren wird.

    Dein Name ist wirklich gut gewählt 😃

    Grüssli



  • ibs schrieb:

    Wer redet von Cross-platform GUI toolkits? Man kommt eben oft leider doch nicht darum herum, die GUI für beide Systeme in den Systemtoolkits zu schreiben.

    Wenn du die GUI eh für beide Systeme einzeln schreiben willst, warum willst du dich dann auf eine Sprache (C++) festlegen? Hindert dich doch niemand die Mac GUI in Obj-C und die Win GUI in C# zu implementieren?

    Windows ist hier problematisch und unter OS X weiß man auch nicht, wer welche Version hat. [..]
    (Man sieht, dass du hier offensichtlich mehr theoretische Erfahrung hast. Nach deinen Aussagen glaube ich kaum, dass du jemals kommerzielle Desktop Anwendungen entwickelt hast)

    Ich habe schon einige Java (Swing) Anwendungen entwickelt und auf Windows und OS X Systemen deployt und hatte nie probleme mit der Verbreitung von Java. Java 1.5 ist auf allen Systemen ab 10.4 verfügbar und installiert, 10.3 wird eh nicht mehr supported von den meisten Anwendungen. Unter Windows sieht es ähnlich aus, ansonsten wird Java 1.5 eben als Systemanforderung angegeben (in meinem Fall geht der Windows-Installer und das Programm selbst auch sicher, dass Java installiert ist). Mit C# hab ich das gleiche "Problem".

    Dravere schrieb:

    1. Was bitte ist annehmbar?
    2. Weisst du eigentlich WIEVIELE Cross-Platform GUI Frameworks es in C++ gibt?

    Nein, ich hab sie nie gezählt 🙄 Ich kenne aber die wichtigsten, und QT ist sehr gut, was anderes würde ich für crossplattformentwicklung in C++ nicht empfehlen, du?

    ROFL, da hat jemand keine Ahnung. Auf den nativen GUI Toolkit. Klar, Java Swing gleicht auch so wahnsinnig dem Aussehen von der Windows GUI. Und wenn man auf das Windows Theme umstellt, wird oft vieles nicht unterstützt oder läuft einfach schief.

    Ich weiß nicht wovon du redest, Swing benutzt die UXTheme API (oder wie die heißt) von Windows XP und verwendet die nativen XP Themes. Eher scheint es so als hättest du keine Erfahrung mit Java auf dem Desktop?

    Nochmals ROFL. Ja, in der Theorie, in der Praxis meistens nicht. Vor allem folgt die Auslieferung von neuen Versionen meistens extrem verspätet. Ich habe schon erlebt, dass MacOS X über ein Jahr hinten nach war mit der Java Version Auslieferung. Und dann hast du ein ziemliches Problem, da du nicht einfach irgendwo Java runterladen kannst.

    Die Verfügbarkeit neuerer Versionen lässt natürlich zu wünschen übrig, ist aber erstmal zweitrangig. Das Perfekt bezog sich offensichtlich auf die Implementierung und nicht auf die Verfügbarkeit, hast du das absichtlich so absurd reinterpretiert?

    Auch ist Java nicht so platformunabhängig wie viele es gerne möchten. Es stimmt zwar, dass man es nur einmal kompilieren muss und dann auf allen Platformen starten kann, aber wenn es zum Beispiel auf Windows funktioniert, heisst es noch lange nicht, dass es auch auf MacOS X oder Linux funktionieren wird.

    Dein Name ist wirklich gut gewählt 😃

    Grüssli

    Komischer Argumentationsgang, bist du -fricky?



  • edit: link vergessen

    Dravere schrieb:

    Und dann hast du ein ziemliches Problem, da du nicht einfach irgendwo Java runterladen kannst.

    😮 http://developer.apple.com/java/download/


Anmelden zum Antworten