Eine Sprache = Nur ein mittel zum Zweck
-
Dravere schrieb:
Interessante Theorie, somit ist jede Sprache, welche an Umfang zugenommen hat, unbeliebter als früher. Welche Sprache würde das nicht betreffen? lol
smalltalk: nil, true, false, super, self und eventuell thisContext. Seit knapp 30 Jahren.
-
+fricky schrieb:
ja, weil programmiersprachen nicht aussterben können. ich gehe aber davon aus, dass c++ mit dem neuen standard rapide an beliebtheit verlieren wird (weil es an beleibtheit gewonnen hat).
Ja. Es ist nämlich nicht in die Hirne der Programmiersklaven zu bekommen, daß sie die Möglichkeiten bescheiden benutzen sollen. Jeder will immer das gerade neu Erlernte auch einsetzen und so kommt es, daß bald lauter Lispoide Einzeiler geschrieben werden werden, das wird noch viel schlimmer als der Metaprogrammierungswahn. Und kein normal denkender Architekt kann das zulassen.
Rein technisch hätte C++ die Nase weit vorn. Aber was nutz mir eine eierlegende Wollmichsau, wenn die Sauhirten bei ihrem Anblick nur verzückt im Kreis rennen und sie nicht melken?
Ich bin mal gespannt, wie sich die Sache entwickelt, aber habe ein ungutes Gefühl dabei.
-
also ich wüsste die möglichkeiten auch in maßen nicht zu nutzen. ausserdem ist weniger mehr. man kommt auch ohne den ganzen kram aus, in c wurden schließlich die besten programme geschrieben.
-
Wikinger75 schrieb:
...und zwar kann ich mich nicht zwischen C++ und JAVA...
Du stellst immer noch fragen ohne zu beantworten was du mit dieser Sprache erreichen willst: Spiele, Geschäftsanwendungen, kleine Tools, mit Internetunterstützung oder ohne, mit viel Grafikanteil oder eher maginal...
Abhängig von der Zielsetzung erfolgt die Sprachwahl. Beispielsweise werden Spiele (gerade wenn viel Grafikanteil besteht) vorwiegend in Sprachen wie C++ umgesetzt. Java hat wiederum seine großen Vorteile wenn es entweder mit Internet zu tun hat oder wenn man schneller ein bestimmtes Ziel erreichen will und Hauptspeicher eher nicht der begrenzende Faktor ist...
Nahezu jeder Programmierer lernt im Laufe seiner Laufbahn neue Sprachen, besonders dann, wenn die Projekte unterschiedlichste Zielsetzungen haben. Wer sein leben lang nur im wesentlichen eine Anwendungsform programmiert wird eher wenige Sprachen beherrschen (Ich z.b. habe aufgrund meiner Laufbahn im wesentlichen die syntaktisch verwanden Sprachen: C++ sowie etwas Java und C# als Schwerpunkt [Es gab zwar noch weitere Sprachen, aber die haben in meinen Bereich keine echte Verbreitung]).
cu André
-
@volkard & +fricky
Ich schätze dass C++ mit dem neuen Standard an Beliebtheit gewinnen wird.Einfach weil man a) viele Dinge nun gleich elegant lösen kann wie in anderen Sprachen (ich denke hier z.B. an lambda expressions), und b) weil einige Änderungen drinnen sind, die ohne das Zutun des Programmierers für bessere Performance sorgen (r-value refs & move semantics z.B.).
Die Erweiterung der Standard-Library ist auch lange fällig, und sehe ich sehr positiv. Es gibt (leider) viele Projekte die Libraries ala Boost nicht verwenden wollen, da sie ja nicht Standard sind. Oder Firmen die es gar verbieten bestimmte externe Libraries zu verwenden.
Eine umfangreichere Standard-Library bietet hier IMO viel Potential.
Und einige der weiteren Spracherweiterungen machen zwar die Spache selbst etwas komplizierter, dafür wird die Implementierung von diversen Dingen viel viel einfacher. Man danke nur an die ganzen Template- und Präprozessor-Orgien in BOOST_AUTO, bind oder function...
Dem Anfänger bringt das zwar nichts, aber für Leute die schon ganz gut C++ können, aber keine Lust haben Stundenlang auf 50 Zeilen Template-Magick zu starren, wenn sie z.B. irgendeinen Fehler suchen, bringt es denke ich einiges.
----
Irgendwie finde ich die Argumentation "schlechter weil mehr Features" etwas komisch. Die liesse sich genauso auf LINQ oder andere neue C# Features anwenden. Aber jeder liebt LINQ. Wieso liebt dann nicht jeder den neuen C++ Standard
-
ich hab da jetzt noch nichts gesehen was mir die arbeit wirklich erleichtert. naja die erweiterte standartbibliothek ist gut aber der rest ist unnötig (std::vielluftumnichts)
-
Ja C++ ist schon seit längerem auf dem absteigendem Ast. Spätestens mit der Einführung der neuen .NET Technologie und dem Erstarken von C# hat die Relevanz von C++ im Alltag drastisch abgenommen. Die Zukunft auf der Microsoft Plattform wird langfristig eine Zukunft ohne C++ sein und für systemnahe Programmierung gibt es geeignetere Sprachen als C++, beispielsweise C. C++ wurde also quasi der Boden unter den Füßen weggezogen, wenn du so willst.
-
Perice schrieb:
und für systemnahe Programmierung gibt es geeignetere Sprachen als C++, beispielsweise C.
Ja, genau mein Punkt.
Technisch gesehen ist das totaler Unfug. Für systemnahe Programme ist C++ enorm viel geeigneter als C. Wenn man die 20K für Exceptions nicht bezahlen mag, darf man halt keine nehmen. Wenn man die 500k für cout nicht bezahlen mag, darf man es eben nicht nehmen. Wenn man den bloat durch parallele fast gleiche Templates nicht haben mag, muß man sie halt meiden. Meistens reicht es bereits, eine Millisekunde lang nachzudenken und sich an cheshire cat classes erinnern.
Aber trotzdem denken viele Leute, C++ sei irgendwie systemweiterweg als C. Wenn der Sourcecode identischen asm-Code erzeugt, ist da nix weiter weg. Und man hat die zusätzliche Möglichkeit, wegen der viel besseren Verständlichkeit ordentlicher Objektorientierung verdammt viel bessere Programme/Treiber/Kernels oder wasauchimmer zu bauen. Auch hier wieder wäre ist die Bescheidenheit der Schlüssel.Realistisch gesehen kannst Du echt recht haben.
-
hier zahlt es sich tatsächlich aus, daß die "Objektorientierung" von C++ eher ein "namespace feature" als eine echte Objektprogrammierung ist.
-
volkard schrieb:
Auch hier wieder wäre ist die Bescheidenheit der Schlüssel.
Oder deutsch...
-
Perice schrieb:
Ja C++ ist schon seit längerem auf dem absteigendem Ast. Spätestens mit der Einführung der neuen .NET Technologie und dem Erstarken von C# hat die Relevanz von C++ im Alltag drastisch abgenommen. Die Zukunft auf der Microsoft Plattform wird langfristig eine Zukunft ohne C++ sein und für systemnahe Programmierung gibt es geeignetere Sprachen als C++, beispielsweise C. C++ wurde also quasi der Boden unter den Füßen weggezogen, wenn du so willst.
Klar, deswegen ist auch hier im C++-Forum täglich so viel los. Und deshalb gibt es jeden Tag einen Neuling der fragt, wie er am besten C++ lernt. Und deshalb kommen ja auch jedes Jahr neue Compiler-Versionen von MS, Intel, Codegear und GNU auf den Markt, weil immer weniger Leute C++ brauchen.
-
volkard schrieb:
Perice schrieb:
und für systemnahe Programmierung gibt es geeignetere Sprachen als C++, beispielsweise C.
Ja, genau mein Punkt.
Technisch gesehen ist das totaler Unfug. Für systemnahe Programme ist C++ enorm viel geeigneter als C. Wenn man die 20K für Exceptions nicht bezahlen mag, darf man halt keine nehmen. Wenn man die 500k für cout nicht bezahlen mag, darf man es eben nicht nehmen. Wenn man den bloat durch parallele fast gleiche Templates nicht haben mag, muß man sie halt meiden. Meistens reicht es bereits, eine Millisekunde lang nachzudenken und sich an cheshire cat classes erinnern.
Aber trotzdem denken viele Leute, C++ sei irgendwie systemweiterweg als C. Wenn der Sourcecode identischen asm-Code erzeugt, ist da nix weiter weg. Und man hat die zusätzliche Möglichkeit, wegen der viel besseren Verständlichkeit ordentlicher Objektorientierung verdammt viel bessere Programme/Treiber/Kernels oder wasauchimmer zu bauen. Auch hier wieder wäre ist die Bescheidenheit der Schlüssel.Realistisch gesehen kannst Du echt recht haben.
Aufgrund der mangelnden kompilierberkeit von c++ in auf embeddeten System stellt C immer noch die erste Wahl der Programmiersprachen für Systemitgergation mittels Hardwarenaher Systeme dar. Was nutzt einem eine der Sprachen die mit allen der Mitteln des Programmierenden zur verfügung gestellt hat,, wenn mann doch nur einen Bruchteil bietet der imprinzieb dem entsprechen tut was die erstere hat? Der von C++ erzeugte assembeler code wird nämlich auch nicht identischer im C Coder dargestellt, wenn ein optimierter C Code generiert wird. Da kann C++ nur hinterher hinken. Wie schon das alte Sprichwort sagt. Mit C++ kann man sich ein Bein weg scheißen und dann ist man deutlich lahmsamer!
-
Bulli schrieb:
Perice schrieb:
Ja C++ ist schon seit längerem auf dem absteigendem Ast. Spätestens mit der Einführung der neuen .NET Technologie und dem Erstarken von C# hat die Relevanz von C++ im Alltag drastisch abgenommen. Die Zukunft auf der Microsoft Plattform wird langfristig eine Zukunft ohne C++ sein und für systemnahe Programmierung gibt es geeignetere Sprachen als C++, beispielsweise C. C++ wurde also quasi der Boden unter den Füßen weggezogen, wenn du so willst.
Klar, deswegen ist auch hier im C++-Forum täglich so viel los. Und deshalb gibt es jeden Tag einen Neuling der fragt, wie er am besten C++ lernt.
Ich weiss, wilde Spekulation, aber es könnte ja vielleicht daran liegen, dass die domain c-plusplus.net ist?
-
naja c wurde ja gott sei dank dem "tollen" comitee zu alt sonst hätten sie das auch noch so verschandelt
-
Nene, C wird schon noch aktiv verunstaltet.
-
wirklich? wie?
-
C++ ist nichts halbes und nichts ganzes. Wie schon gesagt, kann man natürlich mit C++ genauso systemnahmen Code schreiben wie mit C. Aber wenn man dies tut, nutzt man lediglich die Sprachfeatures von C++, die es aus C übernommen hat, ergo kann man auch gleich bei C bleiben. Für den Highlevel- und Userbereich gibt es bekanntlich weitaus komfortablerer und effektivere Sprachen als C++. Man muss sich also fragen was C++ für eine Daseinsberechtigung hat. Wirklich sinnvolle Einsatzgebiete gibt es für diese Sprache heutzutage kaum noch.
-
für Resourcen-kritische Mittel- und Großprojekte ist C++ nach wie vor mit die erste Wahl.
-
Senfkohl schrieb:
C++ ist nichts halbes und nichts ganzes. Wie schon gesagt, kann man natürlich mit C++ genauso systemnahmen Code schreiben wie mit C. Aber wenn man dies tut, nutzt man lediglich die Sprachfeatures von C++, die es aus C übernommen hat, ergo kann man auch gleich bei C bleiben.
Nein. Man benutzt Klassen und Templates und und und.
Beispiel von voriger Woche:
Für ein wenig mathematiklastiges Zeugs möchte ich sehr schnell Quadratzahlen generieren.
Kleines Meßprogramm, um zu sehen, ob JedesmalQuadrieren oder UngeradeZahlenAufsummieren besser ist.#include <iostream> #include <ctime> using namespace std; class SquareGenerator{ private: int value_; int step_; public: SquareGenerator(){ value_=1; step_=1; } inline void step(){ step_+=2; value_+=step_; } int value(){ return value_; } }; int main() { int sum=0; clock_t start=clock(); for(int o=0;o<1000000;++o){ #if 1 for(int i=1;i<10000;++i) sum+=i*i; #else for(SquareGenerator s;s.value()<100000000;s.step()) sum+=s.value(); #endif } cout<<clock()-start<<'\n'; cout<<sum<<'\n'; return 0; }
macht mit #if 1
L6: movl $1, %edx .p2align 2,,3 L7: movl %edx, %eax imull %edx, %eax addl %eax, %ebx incl %edx cmpl $10000, %edx jne L7 incl %ecx cmpl $1000000, %ecx jne L6
Der Code sieht überzeugend aus.
Aber macht mit #if 0
L6: movl $1, %eax movl $3, %edx .p2align 2,,3 L7: addl %eax, %ebx addl %edx, %eax addl $2, %edx cmpl $99999999, %eax jle L7 incl %ecx cmpl $1000000, %ecx jne L6
Kann man da auch nur im gerinsgten sehen, daß
for(SquareGenerator s;s.value()<100000000;s.step()) sum+=s.value();
statt entsprechendem C-Code verwendet wurde, der mir aufgewürdet hätte, die Quadratzahlenlogik mit der sie benutzenden Logik zu vermischen? Nein. Alles sauber und hundertprozentig wegoptimiert.
C++ erlaubt es, daß man viel weiter abstrahiert, als es in C möglich ist, und doch kommt der gleiche Code raus. Mit C++ muß man keine Zusatzkosten für Abstraktion zahlen.
-
also ich persönlich mag C ja lieber als c++, denn es ist eine kompakte sprache.