Was würdet Ihr an C++ ändern, wenn Ihr keine Rücksicht auf Kompatibilität, Geld, Zeit, Arbeit, etc. nehmen müssten?
-
otze schrieb:
this sollte in self umbenannt werden,
lieber ocaml syle, da kann man this selber benennen
-
Shade Of Mine schrieb:
macht
vec.add(otherVec);
jetzt eine addition von allen werten, da vec[0]+=otherVec[0] usw. oder hängt es otherVec an vec an?
wer kann das schon sagen. genauso bei +im prinzip haste schon recht, man kann beides übelst missbrauchen. der nachteil an überladenen operatoren ist nur einfach die schlechtere lesbarkeit. ein unscheinbares a+b irgendwo im quelltext könnte man für 'ne addition halten d.h. es sieht total harmlos aus und wirkt etwas irreführend.
Sovok schrieb:
Artchi schrieb:
Und warum sollte z.B. regex auf std::string verzichten? Das willst du doch eigentlich damit andeuten?
Warum sollte es z.B. Regex nicht auf jedem System geben? Selbst jeder PDA hat Leistung und Speicher ohne Ende. Verstehe den Grund nicht, warum man noch die Minimalisten-Tour bei C++ fahren soll?weil die industrie noch viele minnimalistensysteme einsetzt die mit c++ programmiert werden?
naja, aber solche libs wären sicher optional. wenn man keine regex-library mit linkt dann gibt's das eben nicht.
-
net schrieb:
ein unscheinbares a+b irgendwo im quelltext könnte man für 'ne addition halten [...]
Und das sollte es ja auch sein, selbst bei Überladungen. Nur eine unscheinbare Addition ..
Nebenbei bemerkt vermisse ich in C++ etwas mehr Anpassung an dlls. Dann noch ein paar Kleinigkeiten, wie eine typsichere
Ellipse, oder Verkettungen von Konstruktoren, etc ..
-
ikona schrieb:
net schrieb:
ein unscheinbares a+b irgendwo im quelltext könnte man für 'ne addition halten [...]
Und das sollte es ja auch sein, selbst bei Überladungen. Nur eine unscheinbare Addition ..
ja, warum suche ich jetzt schon 5 stunden diesen fehler? es kann doch nicht an einer einfachen addition liegen
-
net schrieb:
ikona schrieb:
net schrieb:
ein unscheinbares a+b irgendwo im quelltext könnte man für 'ne addition halten [...]
Und das sollte es ja auch sein, selbst bei Überladungen. Nur eine unscheinbare Addition ..
ja, warum suche ich jetzt schon 5 stunden diesen fehler? es kann doch nicht an einer einfachen addition liegen
features rauszunehmen weil programmierer sie schlecht anwenden halt ich aber ned für sinnvoll
nen bug den ich wegen einer operatorüberladung nich gefunden hab hatt ich noch niebei punkttransformationen z.b. sind die operatoren göttlich
net schrieb:
naja, aber solche libs wären sicher optional. wenn man keine regex-library mit linkt dann gibt's das eben nicht.
der aktuelle stand bei c++ is eher, dass ich z.b. kein stdlib hab (string,vector) weil das system kein ordentliches filesystem hat und somit fstream nich portabel is
ich kenn die stdlib intern nich so genau aber die scheint ja nich sonderlich modular zu seinwenn also unser jetziges system nich optimal is sollte es eher überarbeitet werden, bevor man was neues hinzufügt
-
Sovok schrieb:
net schrieb:
naja, aber solche libs wären sicher optional. wenn man keine regex-library mit linkt dann gibt's das eben nicht.
der aktuelle stand bei c++ is eher, dass ich z.b. kein stdlib hab (string,vector) weil das system kein ordentliches filesystem hat und somit fstream nich portabel is
eigentlich kann man auf minimalsystemen alles vergessen, was dynamischen speicher braucht. ...und c++ ohne 'new' ist nur noch zur hälfte zu gebrauchen
-
Yo, Minimal-Systeme programmiert man (wenn man eine Hochsprache benutzen will) doch eher in C oder in J2ME?
-
Warum noch Herumdoktern an einer Missratenen Sprache wie C++, wo es doch so schöne Sprachen wie C# oder Python gibt?
BTW: Schon mal die Mehrfachvererbung in Python angeschaut? Die Implementierung der Mehrfachvererbung in C++ ist ein einziger Witz
-
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 ??