Ist es sinnvoll heute noch C++ anzufangen?



  • Immer diese praxisnahen Beispiele. Wenn ich b im gesamten Programm nicht benutze, ist es mir doch egal, ob b jetzt eine Funktion oder ein Objekt ist. Aber sobald ich es benutze, fliegen mir die Fehler nur so um die Ohren, wenn ich mich bei der Deklaration vertan hab.



  • _matze schrieb:

    Abgesehen davon, dass es optisch m.E. schöner ist, wenn der '*' am Bezeichner und nicht am Typ pappt, ist es jedem natürlich selbst überlassen. So eine Konvention existiert nicht.

    Es geht nicht um eine Konvention. Der Stern gehört zum Bezeichner, nicht zum Typ. Egal, wo dabei die Leerschritte sind, wären anderenfalls hier a und b Zeiger. Insofern ist das gesagte schon richtig.

    char * a, b;
    


  • Ich denke ja. Zumindest war das mit ein Grund für mich, Pascal ab- und C
    anzuschaffen. 10 Seite Pascal ca. 10 Zeilen C 😉



  • Oh man nun werdet doch nicht immer gleich persönlich, wenn fricky~ euch mal die Fehler von C++ vor Augen führt. Diesen Konstruktoraufruf, der in Wirklichkeit eine Funktionsdeklaration darstellt finde ich auch besonders tückisch. Darüber sind damals in meinem C++ Uni Kurs sehr viele Kommilitonen gestolpert und wunderten sich dann, warum sie eine seltsame und für sie völlig unverständliche Fehlermeldung vom Compiler bekamen.

    Ihr Leute müsst mal bedenken, daß solche Tücken für Jemanden, der noch nicht seit 5 Jahren C++ programmiert und in jeder freien Minute den C++ Standard auswendig lernt, durchaus ein ernsthaftes Problem darstellen.

    Noch fataler ist natürlich das altbekannte virtual Problem, was dutzende meiner Kommilitonen völlig hat an die Wand fahren lassen.

    class abstract {
    public:
    	void init() { print(); }
    	virtual void print() = 0;
    	abstract() { init(); }
    };
    
    class abc : public abstract {
    public:
    	virtual void print() { cout << "Ich bin abc" << endl; }
    };
    
    int main(int argc, char* argv[]) {
    	abc test;
    	return 0;
    }
    

    Da soll der unerfahrene Neuling erstmal verstehen, was er hier falschgemacht hat und warum er mit einem obskuren runtime error R6025 abgestraft wird.

    Und von solchen Falltüren gibt es in C++ noch einige mehr.



  • Camba schrieb:

    Oh man nun werdet doch nicht immer gleich persönlich, wenn fricky~ euch mal die Fehler von C++ vor Augen führt.

    Es würde nicht stören wenn fricky selbst nicht absolut Kritikunfähig wäre, und seinen Standpunkt nicht als den einzig richtigen verbreiten würde. Wir wissen selbst das C++ nicht in jeden Fall optimal ist, aber dies gilt auch für sein ach so intuitives C (und einige Probleme von C++ basieren auf den C-Altlasten).

    Dennoch greife ich lieber zu C++ als zu C, weil ich persönlich - trotz der Fallstricke - C++ für intuitiver halte (Gerade wenn man einige C-Altlasten auf ein Minimum reduziert). Und das "virtual-Problem" gibt es übrigens nicht nur unter C++, sondern unter wohl jeder Sprache die ein Objekt nicht vor der Abarbeitung aller Konstruktoren anlegt.


  • Administrator

    @Camba,
    Wir hätten hier nichts dagegen, wenn +fricky wirklich kritisieren würde. Es gibt Dinge in C++ die man stark kritisieren könnte, wenn man denn C++ versteht. Was +fricky hier aber tatsächlich macht ist reines rumgetrolle. Er kennt C++ nicht, kritisiert den grössten Müll und wenn man den gleichen Müll an seiner C Sprache kritisiert, dann aktzeptiert er diese Kritik nicht. Es ist völlig idiotisch, mit einer solchen Person überhaupt zu reden, weil es gar keinen Sinn hat. Denn diese Person will nicht kritisieren und darüber in einem vernünftigen Ton reden, sie will nur rumtrollen.

    Deine Kritikpunkte sind übrigens auch nur so la la. Solche Fallen für Anfänger gibt es in jeder Sprache. Deshalb muss man eine Sprache auch lernen. Zudem gilt C++ seit jeher als eine komplizierte Sprache für Anfänger und man hat als Ziel noch nie angegeben, dass man eine einfache Sprache für Anfänger sein möchte. 😉
    Allerdings das mit dem Konstruktor zum Beispiel, wird im nächsten Standard berücksichtig und deshalb eine neue zusätzliche Schreibweise eingeführt, damit dies einheitlicher wird.

    Grüssli



  • Dravere schrieb:

    Was +fricky hier aber tatsächlich macht ist reines rumgetrolle.
    ...
    Allerdings das mit dem Konstruktor zum Beispiel, wird im nächsten Standard berücksichtig und deshalb eine neue zusätzliche Schreibweise eingeführt, damit dies einheitlicher wird.

    schon irgendwie merkwürdig, dass das ANSI/ISO-komitee das dumme gelaber von trollen berücksichtigt.
    🙂


  • Administrator

    @Camba,
    Siehst du, genau das meine ich mit rumgetrolle. Er meint jetzt tatsächlich, dass das Standardkommitee auf ihn hört. Er hat zwei Zeilen geschrieben und es schlecht genannt. Das ist aber keine Kritik, das ist sinnloses Gelaber. Kritik bedeutet auch Vorschläge machen, wie man es besser machen könnte. Die Leute zu einer ernsthaften Diskussion zu animieren. Deswegen hat auch der Vorschlag, welcher beim Standard eingereicht wurde, 30 Seiten! Das ist vernünftige Kritik, weil man dort auch lesen kann, dass sich der Verfasser mit dem Thema auseinander gesetzt hat und nicht einfach schreit: SCHEISSE! 😉

    Deshalb hört man auch auf so eine Person, welche vernünftig kritisiert und man hört nicht auf so eine Person wie +fricky, denn dieser trollt nur rum.

    Grüssli



  • Dravere schrieb:

    ...hat auch der Vorschlag, welcher beim Standard eingereicht wurde, 30 Seiten!

    30(!) seiten über diese syntaktische konstruktor/prototypen mehrdeutigkeit? wo kann man sich das downloaden? haste mal 'nen link?
    🙂



  • Dravere schrieb:

    Er meint jetzt tatsächlich, dass das Standardkommitee auf ihn hört.

    😮 Klar...

    Dravere schrieb:

    Das ist aber keine Kritik, das ist sinnloses Gelaber. Kritik bedeutet auch Vorschläge machen, wie man es besser machen könnte.

    Was du meinst, nennt sich konstruktive Kritik. Wer keine Vorschläge zur Verbesserung machen will, darf trotzdem meckern und das Kritik nennen. Überhaupt muss es doch erlaubt sein, zu sagen was einem nicht gefällt, ohne gleich die Lösung parat zu haben. Alle Welt darf doch schließlich auch über die Politik herziehen, obwohl nur die wenigsten wirklich gute und praktikable Vorschläge zu deren Verbesserung bringen können...


  • Administrator

    @+fricky,
    Grundsätzlich sind es sogar weit über 30 Seiten, wenn man alle Diskussionen und Papers dazuzählt. Du kannst dich da gerne selber drüber informieren:
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/

    @_matze,
    Dann nennen wir es halt konstruktive Kritik. Aber mal ehrlich, kam schon mal konstruktive Kritik von +fricky? Habe ich noch nicht erlebt.
    Zudem, all diese Leute, welche immer über alles lästern oder herziehen, halte ich genauso für Trolle. Sollen sie es zuerst besser machen oder bessere Vorschläge bringen, ansonsten ist es eben nur grossartiges Geredet oder heisse Luft. Meistens haben diese Leute auch überhaupt keine Ahnung vom Thema, sieht man auch sehr gut bei +fricky, und deshalb kann man sie gar nicht ernst nehmen.

    Grüssli



  • _matze schrieb:

    Wer keine Vorschläge zur Verbesserung machen will, darf trotzdem meckern und das Kritik nennen.

    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!
    🙂



  • Dravere schrieb:

    Grundsätzlich sind es sogar weit über 30 Seiten, wenn man alle Diskussionen und Papers dazuzählt. Du kannst dich da gerne selber drüber informieren:
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/

    ich hätt' aber gern die von dir angesprochenen 30 seiten zu diesem thema. du kennst doch sicher 'nen direkten link darauf, oder?
    🙂



  • +fricky schrieb:

    ich hätt' aber gern die von dir angesprochenen 30 seiten zu diesem thema. du kennst doch sicher 'nen direkten link darauf, oder?
    🙂

    Zeig Eigeninitiative

    +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 (Und wie in jeder Sprache: Bei einige Features erkennt man den Zahn der Zeit und sollte sie überdenken; Wer D erwähnt: D sehe ich persönlich als syntaktischen Fehlgriff).



  • darf trotzdem meckern und das Kritik nennen.

    Größtenteils sind die Aussagen aber unbegründet und gegen Gegenargumente ist er völlig resistent. Nicht, dass die Gegenargumente unfehlbar seien, aber er geht nichtmal drauf ein sondern versucht sein Glück weiter und wiederholt seine Behauptung einfach wieder.
    Fricky regt einfach durch seine Ignoranz auf, denn man könnte zumindest auf alle Aussagen eingehen und nicht nur auf die, die einem gerade passen.
    Beispiel: Operatorenüberladung, Seitenweise hört Fricky gar nicht darauf, dass Operatoren nur Namen sind, er geht nichtmal drauf ein, dafür gibt es nur eine Erklärung: Er wusste nicht, was er dagegen sagen sollte. (Audacia schon, meiner Meinung nach zwar ein geringeres Problem, aber das Abwägen sei jedem selbst überlassen, wenigstens kennt hier jemand Fakten, Fricky scheinbar nicht..)
    Dazu kommt, dass es offensichtlich ist, dass fricky sich nie ernsthaft mit C++ beschäftigt hat(wenn ich mich richtig erinnere hat er es sogar zugegeben), aber trotzdem über die Sprache urteilt. Die meisten C++ Programmierer hier kennen Java zumindest, also ich jedenfalls hatte schon damit zutun und behaupte mein Urteil sei nicht unbegründet.


  • Administrator

    +fricky schrieb:

    ich hätt' aber gern die von dir angesprochenen 30 seiten zu diesem thema. du kennst doch sicher 'nen direkten link darauf, oder?

    Ich hätte gerne 50 Milliarden Schweizer Franken. Her damit! lol

    Aber ich bin mal nicht so und helf dir mal, zum Beispiel das Paper n2532 hat 35 Seiten. Es ist das Aktuellste was ich zum Thema finden konnte. Ist aber, wie schon gesagt, nur eines von vielen.

    Und interessant was du als "Verbesserungsvorschlag" siehst:
    "ALLES SCHEISSE UND NEUANFANGEN!"

    Immer noch keine konstruktive Kritik. Aber ist ja typisch bei dir ...

    Grüssli



  • 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!
    🙂


Anmelden zum Antworten