Ist es sinnvoll heute noch C++ anzufangen?



  • fricky, du bist echt gut.
    Kein anderer Troll hat es bisher geschafft trotz offensichtlichen Nicht-Wissens so viel Aufmerksamkeit zu erlangen und auch mich immer wieder dazuzu treiben dir zu antworten

    In C gibt es Pointer als Typen, aber dennoch kommt der * an den Namen und nicht zum Rest des Datentypes. Inkonsistente C-Syntax? Wayne? Ja richtig, wayne.. genauso wie das was du uns bisher vorgelegt hast. Vielleicht bringst du mal ein Beispiel was C so toll kann, was C++ nicht kann? Oder was Java kann, was C++ nicht kann? Und ich rede nicht von Workarounds.



  • JustAnotherNoob schrieb:

    In C gibt es Pointer als Typen, aber dennoch kommt der * an den Namen und nicht zum Rest des Datentypes.

    Wer sagt das?



  • JustAnotherNoob schrieb:

    In C gibt es Pointer als Typen, aber dennoch kommt der * an den Namen und nicht zum Rest des Datentypes.

    Aber ja doch:

    char  *p, buf[256];
    

    Oder willst Du den kompletten Quellcode vollmüllen ?



  • 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. Scheppertreibers Beispiel demonstriert, warum es so auch sinnvoller sein kann.

    P.S.: Meine Kristallkugel hat mir grad geflüstert, dass die Diskussion sich nun in die Richtung bewegen wird, ob man mehrere Variablen in einer Zeile deklarieren darf oder nicht... 🤡



  • _matze schrieb:

    Also auf die Idee bin ich selbst noch nie gekommen, aber wenn man es mal ausprobiert, kriegt man keinen Fehler, sondern eine vorzügliche Warnung (VS2008)

    die warnung kriegste bestimmt weg, wenn du oben eine funktion hinschreibst: string b{return"hello";}

    JustAnotherNoob schrieb:

    In C gibt es Pointer als Typen, aber dennoch kommt der * an den Namen und nicht zum Rest des Datentypes.

    beim dereferenzieren, oder wo?

    JustAnotherNoob schrieb:

    Vielleicht bringst du mal ein Beispiel was C so toll kann, was C++ nicht kann?

    kommt drauf an, was du mit können meinst. C ist viel leichter lesbar. z.b. ist in C ein ausdruck der form: a = b->c(d); relativ eindeutig. in C++ gibt es dagegen viele möglichkeiten, was es bedeuten könnte.
    🙂



  • 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.


Anmelden zum Antworten