"C++ is the dumpest language in the world"
-
Diskussionsstarter schrieb:
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.
was davon meinst du denn?
-
~fricky schrieb:
Diskussionsstarter schrieb:
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.
was davon meinst du denn?
Bin noch nicht sonderlich weit in dem Paper (die ersten 7 Lektionen habe ich bisher durch). Konkret meine ich damit ein effizientes und transparentes swap.
-
Diskussionsstarter schrieb:
~fricky schrieb:
Diskussionsstarter schrieb:
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.
was davon meinst du denn?
Bin noch nicht sonderlich weit in dem Paper (die ersten 7 Lektionen habe ich bisher durch). Konkret meine ich damit ein effizientes und transparentes swap.
In manchen anderen Sprachen, z.B. in Haskell, gibt es das Konzept "swap" überhaupt nicht. Nur weil man eine Idee in einer Sprache schön implementieren kann, bedeutet das nicht, dass diese Idee in anderen Sprachen überhaupt sinnvoll ist.
-
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#%&...
-
Bashar schrieb:
swap in Python:
a, b = b, a
sieht ja scheiße aus
-
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#%&...
Stimmt, so gesehen hast du recht.
-
Diskussionsstarter schrieb:
Konkret meine ich damit ein effizientes und transparentes swap.
ein 'swap' ist doch bloss das vertauschen zweier dinge, bzw. eine 'rotation' von etwas, das nur aus zwei elementen besteht. dass unter C++ aus solch einfachen dingen eine wissenschaft gemacht wird, ist mal wieder bezeichnend.
-
lolnoob schrieb:
Bashar schrieb:
swap in Python:
a, b = b, a
sieht ja scheiße aus
Nein, das sieht am einfachsten und am schlüssigsten aus.
Lege einem totalen Neuling diese codezeile vor und erkläre ihm dass '=' für das Zuweisen zuständig ist, und er wird dir auf Anhieb sagen können was dieser Ausdruck macht. Und das ganze ohne programmieren zu k.Die lesbarkeit ist hierbei kaum zu Übertreffen und man kann sich auf die Wesentlich probleme konzentrieren und muss sich nicht mit trivialen Kleinigekeiten (wie oft in C++) herumschlagen-
-
Es ist total unklar, ob man das als a, (b = b), a lesen soll (so lese ich das) oder als (a, b) = (b, a).
-
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).
-
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.
-
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.
-
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).