"C++ is the dumpest language in the world"



  • Bashar schrieb:

    In den meisten Sprachen ist so ein allgemeines swap auch nicht sinnvoll, weil Value-Objekte nicht den Stellenwert haben, den sie in C++ haben. Man arbeitet also wenn dann mit Referenzen.

    swap in Lisp:

    (rotatef a b) 
    ; allgemeiner als swap:
    (rotatef a b c d)
    

    swap in Python:

    a, b = b, a
    

    swap in Java:

    // F#%&...
    

    Ich muss dir hier widersprechen, zumindest im Rahmen dieses Papers geht es ja um hardwarenahe Programmierung bzw. das Programmieren in einer Sprache in der man auch an den rohen Speicher seiner Daten heran kommt (salopp gesagt). In Lisp(?), Python oder Java ist gar nicht gewollt, dass der Programmierer das kann und das ist auch mit eine Kritik des Autors an diesen Sprachen. Man muss hier natürlich der Fairness zu liebe eingestehen, dass es gar nicht immer sinnvoll ist und man bei Betrachung sämtlicher Programmiersprachen als DSLs das auch gar nicht benötigt.
    Aber in einer general purpose Sprache sollte es möglich sein. Und das glaube ich ist auch was "Diskussionsstarter" (toller Name!) eigentlich gemeint hat (ohne sich selbst darüber bewusst zu sein) und der Autor in seinem Paper auch behandeln will.
    Dass er C++ dazu verwendet obwohl er an so vielen Stellen harte Kritik an der Sprache äußert lässt auch mich ins Grübeln kommen. Gibt es wirklich keine bessere Sprache? Oder wollte der Autor von den in Frage kommenden Sprache die am meisten verbreitete für sein Paper benutzen?



  • fdgfdgfdg schrieb:

    Es ist total unklar, ob man das als a, (b = b), a lesen soll (so lese ich das) oder als (a, b) = (b, a).

    Dann schreib es halt als letztes, dann sieht es mehr nach Tuple Unpacking aus (was es eigentlich auch ist). Die Operatorenrangfolge lässt aber auch ersteres zu, und wenn man dabei nicht direkt an Tupel denkt, sondern nur an Vertauschen, ist das auch eine akzeptable Schreibweise.



  • Programmier-Profi schrieb:

    Ich muss dir hier widersprechen, zumindest im Rahmen dieses Papers geht es ja um hardwarenahe Programmierung bzw. das Programmieren in einer Sprache in der man auch an den rohen Speicher seiner Daten heran kommt (salopp gesagt).

    Nicht nur, aber natürlich ist das Paper in diesem Punkt sehr eingeschränkt. Dieser Sub-Thread ist durch die Bemerkung "Schade nur, dass man bei den Sprachen kaum Auswahl, denn außer C++ fällt mir gerade gar keine ein, wo man das halbwegs transparent implementieren kann." ausgelöst worden. Und hier muss man eben sagen, dass man in vielen Sprachen auch gar keine Notwendigkeit für ein "transparentes swap" hat. Das Paper tut so, als wäre es allgemein, und C++ nur als Repräsentation ausgewählt worden, aber für welche Sprachen träfe denn sowas noch zu? C, Ada, Delphi, vielleicht C# (hat immerhin sowas wie Value-Objekte), noch was? In diesen Sprachen fehlen aber (AFAIK) die Sprachmittel, um das alles so generisch umzusetzen.

    In Lisp(?), Python oder Java ist gar nicht gewollt, dass der Programmierer das kann und das ist auch mit eine Kritik des Autors an diesen Sprachen. Man muss hier natürlich der Fairness zu liebe eingestehen, dass es gar nicht immer sinnvoll ist und man bei Betrachung sämtlicher Programmiersprachen als DSLs das auch gar nicht benötigt.
    Aber in einer general purpose Sprache sollte es möglich sein.

    Bleibt "general purpose" zu definieren. Java ist sicherlich eine "general purpose" Sprache in dem Sinne, dass sie für allgemeine Zwecke, nicht nur für einen speziellen Zweck (wie z.B. AWK) entworfen wurde. Das heißt ja nicht, dass absolut alles gehen muss.

    Dass er C++ dazu verwendet obwohl er an so vielen Stellen harte Kritik an der Sprache äußert lässt auch mich ins Grübeln kommen. Gibt es wirklich keine bessere Sprache? Oder wollte der Autor von den in Frage kommenden Sprache die am meisten verbreitete für sein Paper benutzen?

    Genau das. Vielleicht gibt es eine bessere Sprache dafür, vielleicht auch nicht.



  • fdgfdgfdg schrieb:

    Es ist total unklar, ob man das als a, (b = b), a lesen soll (so lese ich das) oder als (a, b) = (b, a).

    1. Deine fälschliche Interpretation dieses Ausdrucks kommt daher, da du von C++ vorbelastet bist. Weil du glaubst, dass C++ das Einzig wahre ist, bleiben dir andere Sprachen & Ansätze verwehrt.

    2. Lege diesen Code einem Unwissenden vor, also einen, der nicht durch irgendwelche Programmiersprachen vorbelastet ist. Er wird bei dieser Schreibweise recht schnell zum Ergebnis kommen.

    3. Ja es handelt sich hierbei um tuples. Wenn du magst, kannst du auch Klammern drumherum machen, was aber in diesem Fall nicht unbedingt notwendig ist. Aber es kann das Gemüt eines C++ Programmierers, wie in deinem Fall, beruhigen.



  • n00b, in der mathematik schreibt man das genauso. ohne klammern ist das schrott



  • lolnoob schrieb:

    n00b, in der mathematik schreibt man das genauso. ohne klammern ist das schrott

    n00b,

    In der Mathematik schreibt man ne Menge anders als es dann in der Programmierung umgesetzt wird.

    Bestes Beispiel:
    Hast du jemals das Summenzeichen ∑ in einem C++ code gesehen? Nein? Aber du hast doch bestimmt schon for-Schleifen im C++ code gesehen. 🙄

    Außerdem benutzt man in der Mathematik '=' zum Vergleichen und nicht zum explizieten zuweisen. 🙄

    Wenn man keine Ahnung hat, einfach mal die Fresse halten. 💡



  • lolnoob schrieb:

    n00b, in der mathematik schreibt man das genauso. ohne klammern ist das schrott

    In Bayern ist der Horizont von Haus aus begrenzt?



  • lolnoob schrieb:

    n00b, in der mathematik schreibt man das genauso. ohne klammern ist das schrott



  • lolnoob schrieb:

    n00b, in der mathematik schreibt man das genauso. ohne klammern ist das schrott

    Du hast von Mathematik genau so viel Ahnung wie von Python oder C++.



  • aja!!!! schrieb:

    lolnoob schrieb:

    n00b, in der mathematik schreibt man das genauso. ohne klammern ist das schrott

    Du hast von Mathematik genau so viel Ahnung wie von Python oder C++.

    Ich wusste gar nicht, dass ich ein Python-Experte bin.



  • In C++ kann man gar nicht sagen was

    a,b = b,a;
    

    tut (ohne zusätzliche Information).



  • kann man den operator , überladen?



  • hmmmmmmmmmmmm schrieb:

    kann man den operator , überladen?

    natürlich



  • hmmmmmmmmmmmm schrieb:

    kann man den operator , überladen?

    kann man. aber hat natürlich, wie vieles in c++, mehr nach- als vorteile und deshalb sollte man's besser lassen.
    🙂



  • lolnoob schrieb:

    aja!!!! schrieb:

    lolnoob schrieb:

    n00b, in der mathematik schreibt man das genauso. ohne klammern ist das schrott

    Du hast von Mathematik genau so viel Ahnung wie von Python oder C++.

    Ich wusste gar nicht, dass ich ein Python-Experte bin.

    Das liegt daran, dass du keiner bist. 🙄 Genau so wenig wie in allen anderen Bereichen.



  • Ich habe den Artikel auch mal ueberflogen. Leider hat er keine Ahnung von modernem C++. Wie sollte er auch, wenn seine Erfahrung aus der Gruendungszeit von Amazon stammt. Da gab's noch kein C++ so richtig und schon garnicht ein modernes C++. Auch wenn viele Sachen anscheinend fehlen, sind sie bewusst vom Standardkomitee nicht in die Sprache aufgenommen worden, da sie viel besser durch Bibliotheken realisiert werden. Reflektion zaehlt z.B. dazu.

    Tja und das zu Emacs ... Viele nutzen auch Vi(m), ein heiliger Krieg mehr, der schon ueber Generationen ausgefochten wird. Einige haben auch zugegeben, von Emacs auf Vi gewechselt zu haben.

    Auch all die anderen Sprachen ... Fuer jeden Task das richtige Werkzeug pflege ich immer zu sagen. C, C++, Java, Lisp (Scheme) etc. haben alle ihre Daseinsberechtigung, wobei auch persoenliche Vorlieben eine Rolle spielen. Wich wundert, dass er Prolog und Co. nicht erwaehnt hat.

    Der Blogger ist nicht gerade offen fuer Ideen, die nicht seinem gedanklichem Schema entsprechen.



  • knivil schrieb:

    Auch wenn viele Sachen anscheinend fehlen, sind sie bewusst vom Standardkomitee nicht in die Sprache aufgenommen worden, da sie viel besser durch Bibliotheken realisiert werden. Reflektion zaehlt z.B. dazu.

    Wie würdest du Reflection durch Bibliotheken realisieren?



  • Keine Ahnung, noch nie gebraucht. Das erste bei google.de: http://www.extreme.indiana.edu/reflcpp/ .



  • Was diskutiert Ihr hier und was hat das mit der gestellten Frage noch zu tun?



  • Nach acht Seiten koennen Threads eine Art Eigendynamik entwickeln. Manchmal passiert das auch schon nach dem zweiten Post.

    Was wird diskutiert: Das leidige "C++ vs. the rest of the world" und alles nur, weil der Rest der Welt uneinsichtig ist. 🙂


Anmelden zum Antworten