Was würdet Ihr an C++ ändern, wenn Ihr keine Rücksicht auf Kompatibilität, Geld, Zeit, Arbeit, etc. nehmen müssten?
-
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.
-
natürlich wird append schnell kryptisch, wenn du mehrmals hintereinander sachen anhängen willst...
-
hehejo schrieb:
Aber wenn ich es mir überlege drückt append doch einfach mehr aus.
otze schrieb:
natürlich wird append schnell kryptisch, wenn du mehrmals hintereinander sachen anhängen willst...
dafür bastelt man sich ein 'append' mit variabler argumentenliste
-
dafür bastelt man sich ein 'append' mit variabler argumentenliste
das wär wirklich eine gute erweiterung. variabler argumentenliste ohne die macros aus dieser header datei ( hab vergessen wie sie hies ).
meine liste wäre dann noch:
delegates und properties wie in c#
-
DEvent schrieb:
string mystring; string ein = "ein"; string langer = "langer"; string text = "text"; string punkt = "punkt"; mystring.append(ein.append(langer.append(text.append(punkt))));
naja, ganz so schlimm wie dus hier gezeigt hast, is es ja noch nicht:
mystring.append(ein).append(langer).append(text).append(punkt);
-
net schrieb:
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.
jo wenn wir von minnimalsoftware auf nem minnimalsystem ausgehn
aber technisch kann ein kompaktes 66mhz system mit uClinux auch ein 5mb programm starten und ausführenwenn die software sich also an den standard hält spricht nix dagegen ausgewachsene software auf nem kleinen system laufen zu lassen
und eine 5mb software ohne oop zu schreiben is selbstmord... da sin wir uns hoffentlich einig
-
del me
-
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 ?
Nun, da würde mir noch so manches einfallen. ZB zeichenweise "Addition", so nach dem Motto
"aaa" + "bbb" = "ccc"
Aber ganz so eng sehen wir das ja auch nicht, sonst würde wohl niemand std::string nutzen. Ausgesprochen sinnvoll (und eindeutig) ist es trotzdem nicht.
Und dass Addition kommutativ ist, ist ein wichtiger Aspekt. Auch wenn man diesen nicht überbewerten sollte. Multiplikation zB ist ja auch nicht immer kommutativ (siehe zB Quaternions).
-
hehejo schrieb:
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.Ja, eine programmiersprache.
aber nicht wie in Python, schwer zu erklären, ich zeig mal code:class test = object(foobar) end;;
mit object(foobar) sagt man, dass man auf 'this' über den namen foobar zugreifen will.
ist recht lustig:class test = object(self) method print str = print_string str method print_hello = self#print "hello" (* ruft 'this->print("hello") auf *) end;;
wirklich sinnvoll ist es nicht, oder ich habe den sinn noch nicht entdeckt, aber lustig
und ich mag an python, dass a.b(c) und b(a,c) das selbe sind, aber das ewige self stört mich
naja, perfekt ist keine sprache
@DEvent:
warum properties? die machen doch nur im zusammenhang mit reflection sinn - also musst du dir ja auch noch reflection wünschennatürlich ist append() nicht ideal, aber + für strings genauso wenig.
weil eben a+b != b+a ist. das ist doof.
wenn es einen concat operator gäbe, wäre das viel cooler, dann könnte man nämlich auch listen und andere container aneinanderhängen.
klar ist mathematik nicht alles, aber man darf die gesetze der operatoren nicht so leichtfertig über den haufen werfen - vorallem wenn man nichts gewinnt. was würde es stören, wenn man einen operator für concat hätte? viele sprachen haben das.