Was würdet Ihr an C++ ändern, wenn Ihr keine Rücksicht auf Kompatibilität, Geld, Zeit, Arbeit, etc. nehmen müssten?
-
Artchi schrieb:
Yo, Minimal-Systeme programmiert man (wenn man eine Hochsprache benutzen will) doch eher in C oder in J2ME?
Was ist mit der Spieleprogrammierung?
Da sollte man doch auch nicht gerade mit Speicher (Ich sag nur Resources) und CPU/GPU-Leistung durch die Gegend schläudern.Sovok schrieb:
bei punkttransformationen z.b. sind die operatoren göttlich
Habs zwar noch nicht probiert, aber ich kann mir das schon sehr gut im Zusammenhang mit Kreutzprodukten (Vektoren) und Matrizen vorstellen!
Wie sähe das denn sonst aus?Matrix EineMatrix(...); Matrix EineMatrix2(....); Matrix EineMatrix3(EineMatrix.BuildSquare...(EineMatrix2));
???
@Thread: Ich ware auf jeden Fall für einen erweiterten Standard,
also mit GUI, Sockets und Threads.
-
net schrieb:
was macht das '+'? addiert es immer zwei elemente der vektoren oder hängt es den einen vektor an den anderen dran?
Genau das meinte ich mit intuitiv. Du denkst einfach zu kompliziert, weil du wahrscheinlich schon zu viele Schweinereien unbewusst wahrgenommen hast.
+ ist ein mathematischer Ausdruck, der für Addition verwendet wird. Wenn da also a + b steht, heisst das, dass 2 Vektoren addiert werden. Und Vektoraddition ist eindeutig definiert, schau mal in deinem Mathe Lehrbuch nach. Was soll daran also unklar sein?
Eine andere Sache ist es, wenn Operatoren missbraucht werden. Da wären wir also wieder bei std::string. Wer sich einmal mit Operatorenüberladung angefreundet hat, schreibt halt lieber s1 += s2 statt s1.append(s2). Leider wird hier Operator + (bzw +=) missbraucht und somit geht das intuitive Verständnis verloren. Nur was soll man machen? Einen neuen Operator für Konkatenation einführen? Das ruft natürlich wieder die Kritiker auf den Plan, die schon jetzt sagen, dass zu viele Operatoren vorhanden sind.Und weil wir gerade beim Thema Operatoren sind, für C++ würde ich mir noch rotate left und rotate right Operatoren wünschen, evtl. <<< bzw >>>.
-
audacia schrieb:
Rauswerfen? Sicher? Dir ist klar, welcher Basis sich C++ entzöge?
Du bist sicher, dass du das Thema gelesen hast? Hier geht es nicht um realistische oder politisch kluge Entscheidungen, sonst hätte ichs an das ISO-Kommitee geschrieben.
audacia schrieb:
Ich glaube, du brauchst eine andere Programmiersprache.
Ich will eine freie, imperative, nicht krankhaft OO-fixierte Programmiersprache mit möglichst wenig/null Abstraktionsoverhead und - du wirst es nicht glauben - da ist C++ tatsächlich meine Lieblingssprache und ich weiß nicht, was dagegen spricht, dass sie mit den aufgelisteten Features noch besser wäre. Vermutlich wäre sie nur einfach nicht so elitär verkrüppelt und kryptisch wie sie es heute ist, aber das ist ja auch was wert
-
Eine möglichkeit, kurzschlussauswertung von operatoren oder funktionen zu ermöglichen wäre gelegentlich nützlich - einige operatoren werden ja oft nur deshalb nicht überladen weil diese kurzschlussauswertung dann nicht möglich wäre, etwa so:
class A; bool operator&&(const A& lhs, deferred const A& rhs) { // der ausdruck für rhs ist hier noch nicht ausgewertet und auch nicht im scope if ( ... ) .. // irgendwas das nur von lhs abhängt const A& rhs = deferred; // den ausdruck für rhs auswerten und rhs initialisieren // ... }
-
Artchi schrieb:
Yo, Minimal-Systeme programmiert man (wenn man eine Hochsprache benutzen will) doch eher in C oder in J2ME?
nicht j2me. da passt nicht mal die cldc rein und es würde auch zu lahm sein. (minimalsysteme haben niedrige taktfrequenzen). aber c schon. c ist erste wahl.
groovemaster schrieb:
+ ist ein mathematischer Ausdruck, der für Addition verwendet wird. Wenn da also a + b steht, heisst das, dass 2 Vektoren addiert werden. Und Vektoraddition ist eindeutig definiert, schau mal in deinem Mathe Lehrbuch nach. Was soll daran also unklar sein?
schön dass du das so siehst, aber für die meisten c++ user ist ein vektor (wegen std::vector) kein n-dimensionaler vektor (in matrizendarstellung) wie sie ihn aus'm matheunterricht kennen, sondern ein dynamisches array, also was rein technisches. und ich glaub' std::vector hat keinen 'operator+' (hab' jetzt nicht nachgeschaut). vielleicht haben sie's bewusst weggelassen, weil sich jeder was anderes drunter vorstellen würde
groovemaster schrieb:
Eine andere Sache ist es, wenn Operatoren missbraucht werden. Da wären wir Und weil wir gerade beim Thema Operatoren sind, für C++ würde ich mir noch rotate left und rotate right Operatoren wünschen, evtl. <<< bzw >>>.
das ist allerdings blöd, zumal die meisten prozessoren rotationen kennen. das hat schon in c gefehlt. naja, man braucht es selten, aber es fehlt einfach schon.
-
Ich will endlich den White Space Operator !
Etwas so mächtiges hat noch keine Sprache bisher !Devil
-
-
asdrubael schrieb:
gar nicht so doof (oder voll durchgeknallt). wie wär's mit frei definierbaren operatoren? dann könnte man _alles_ überladen, selbst c++ keywords.
-
net schrieb:
schön dass du das so siehst, aber für die meisten c++ user ist ein vektor (wegen std::vector)
Schon klar, dass viele bei Vektor an std::vector denken. IMO ist dieser Name unglücklich gewählt. Deshalb sprach ich ja auch ausdrücklick von Vektoren in einem mathematischen Kontext.
-
net schrieb:
asdrubael schrieb:
gar nicht so doof (oder voll durchgeknallt). wie wär's mit frei definierbaren operatoren? dann könnte man _alles_ überladen, selbst c++ keywords.
Hast du das auch ganz zuende gelesen? Sieh dir mal das Datum an.
-
ich würde das gnaze übersichtlicher machen und perfekt auf deutsch übersetzten
-
groovemaster schrieb:
Einen neuen Operator für Konkatenation einführen?
Ja!
denn
string s="hallo";
string s2="welt";
cout<< s+s2;ist doof.
warum? weil
s+s2 != s2+s
ist.
das ist doof.In VB hat man &, PHP hat . und ocaml ^
soetwas ist geil. denn "hallo"+"welt" ist keine addition, warum also so tun als wäre es eine?
lieber "hallo" # "welt" verwenden, oder ein anderes zeichen. & wäre geil, weil es am natürlichsten wirkt, aber in C++ leider schon für bit_and verschwendetfrei operatoren zu definieren wäre mal eine coole idee - die frage ist nur die umsetzung und da fürchte ich, dass sie zu uneinheitlich wären
mal ** und mal ^^ für exponenten... ne, keine gute idee.
jeder operator sollte einen fest definierten zweck erfüllen.sicher wäre ein
a x b
für das kreuzprodukt aus a und b sicher super, aber dann hätte man ja probleme mit
axb
was wieder unintuitiv nicht gehen würde.
und wenn ich ** überlade:
ist dann
c=a**p;
eine multiplikation von a und *p oder a hoch p ??
-
Shade Of Mine schrieb:
soetwas ist geil. denn "hallo"+"welt" ist keine addition, warum also so tun als wäre es eine?
lieber "hallo" # "welt" verwenden, oder ein anderes zeichen. & wäre geil, weil es am natürlichsten wirkt, aber in C++ leider schon für bit_and verschwendetNun, & wäre mir persönlich auch sympathisch.
-
groovemaster schrieb:
net schrieb:
schön dass du das so siehst, aber für die meisten c++ user ist ein vektor (wegen std::vector)
Schon klar, dass viele bei Vektor an std::vector denken. IMO ist dieser Name unglücklich gewählt. Deshalb sprach ich ja auch ausdrücklick von Vektoren in einem mathematischen Kontext.
Stroustrup hat in seinem Buch geschrieben, warum std::vector heißt, und warum der Name trotz Verwechslungsgefahr zum mathematischen Vector so genannt wurde. Leider habe ich das Buch gerade nicht zu hand. Bin aber der Meinung, es stand in dem Kapitel über valarrays!
-
Ich würde mir ein "Modul"-Konzept wünschen, wie ich es bereits mal auf http://open-std.org gelesen habe, mit
einer Unterstüzung für dynamische LibrariesAnsonsten würde ich ne Möglichkeit zur Verkettung von Konstruktoren und einen
statischen Konstruktor (wie in Java oder C#) sehr begrüßen.Mehr fällt mir grad auch nicht ein ..
-
Shade Of Mine schrieb:
otze schrieb:
this sollte in self umbenannt werden,
lieber ocaml syle, da kann man this selber benennen
Was ist ocaml? Ist das eine Programmiersprache?
Oder ist das so wie in Pyhton? Hier muss man jeder Klassenfunktion einen extra Paramenter in die Definition reinschreiben -> der wird dann zu this/self.
-
groovemaster schrieb:
Shade Of Mine schrieb:
soetwas ist geil. denn "hallo"+"welt" ist keine addition, warum also so tun als wäre es eine?
lieber "hallo" # "welt" verwenden, oder ein anderes zeichen. & wäre geil, weil es am natürlichsten wirkt, aber in C++ leider schon für bit_and verschwendetNun, & wäre mir persönlich auch sympathisch.
versteh ich nicht, was ihr gegen das + bei strings habt. was soll adition von strings sonst bedeuten als eine anfügung des einen string an den anderen ? ich finde das sehr intuitiv. da braucht man doch nicht einen extra operanden zu erfinden.
-
DEvent schrieb:
versteh ich nicht, was ihr gegen das + bei strings habt. was soll adition von strings sonst bedeuten als eine anfügung des einen string an den anderen ? ich finde das sehr intuitiv. da braucht man doch nicht einen extra operanden zu erfinden.
addition ist kommutativ, aneinanderhängen von strings nicht (hatte glaub' ich shady schon erwähnt)
-
sieht das doch nicht so eng. nicht alles ist pure mathematik.
für mich wäre es extrem verschwenderisch und unnötig dafür einen neuen op. einzuführen. da liest man sich halt die doku durch und ferdig ist.edit:
string mystring; string ein = "ein"; string langer = "langer"; string text = "text"; string punkt = "punkt"; mystring.append(ein.append(langer.append(text.append(punkt))));
oder:
string mystring; string ein = "ein"; string langer = "langer"; string text = "text"; string punkt = "punkt"; mystring += ein + langer + text + punkt;
was soll das append mehr ausdrücken als anfügen ? und + soll da weniger ausdrücken?
-
3 + 4 = 7 4 + 3 = 7 hal + lo = hallo lo + hal = lohal
Aber ich finde es auch einfacher text1 += text2 anstatt text1.append(text2) zu schreiben. Aber wenn ich es mir überlege drückt append doch einfach mehr aus.