Was würdet Ihr an C++ ändern, wenn Ihr keine Rücksicht auf Kompatibilität, Geld, Zeit, Arbeit, etc. nehmen müssten?



  • 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 verschwendet 😞

    Nun, & 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ühren

    wenn 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ünschen 😉

    natü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.



  • BTW: Schon mal die Mehrfachvererbung in Python angeschaut? Die Implementierung der Mehrfachvererbung in C++ ist ein einziger Witz

    Hab ich was verpasst?

    gar nicht so doof (oder voll durchgeknallt). wie wär's mit frei definierbaren operatoren?

    Gibts doch recht häufig: SML, Haskell, Scala, ...

    Zum Thema: Wenn ich das ändern würde, was ich alles ändern wollte, hätte die Sprache nicht mehr viel mit C++ zu tun.



  • meine liste wäre dann noch:
    delegates und properties wie in c#

    Ich find zwar C# ansich auch toll, aber ich denke irgendwie Delegates und Properties werden doch schon etwas "gehyped".
    Überleg lieber, was du in C++ wirklich neues brauchst und nicht, was dir in anderen Sprachen gefällt. Delegates sind
    immerhin nichts anderes als built-in Funktoren und Funktoren gibt es in C++ und über Properties wurde eh bereits
    mal diskutiert ..



  • Aus der Unzufriedenheit mit C++ sind doch schon einige Sprachen entstanden, wie D zum Beispiel:

    http://www.digitalmars.com/d/

    Vereint viel Vorteile moderner Programmiersprachen mit der Systemnähe von C++.
    Es gibt eingebaute String-Klassen, konsistentes Überladen von Operatoren, Delegates, Properties und der Präprozessorquatsch wurde auch entfernt.



  • Shade Of Mine schrieb:

    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 😞

    Ich finde es auch nervig, dass man das self immer selbst reinschreiben muss.

    class aga:
      def zap(self):
        pass
    
    var = aga()
    var.zap()
    

    Aus var.zap() macht der Interpreter ja zap(var).
    Finde schon, dass die Leute von Python einem das self hätten ersparen können.



  • ich denke, wenn man versucht die C++-Syntax-Dialekte zu normieren, dann hat
    man einen weiteren Dialekt. Also mein Vorschlag nur wenig verschlimmbessern
    denn anderenfalls kann man ja gleich eine andere Sprache nehmen oder
    programmieren.
    Also bisher haben wir wenn ich richtig zitieren 'den Hund(c) mit mit
    angenagelten Beinen(c++)'. Aber was haben wir wenn wir die vorgeschlagenen
    Erweiterungen implmentieren, diesen armen Hund mit angedübelten
    Ohren(c++++) :)?

    MfG f.-th.



  • Sovok schrieb:

    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ühren

    ich glaub' wir haben verschiedene auffassungen von minimalsystemen 😉

    f.-th. schrieb:

    Also bisher haben wir wenn ich richtig zitieren 'den Hund(c) mit mit
    angenagelten Beinen(c++)'. Aber was haben wir wenn wir die vorgeschlagenen
    Erweiterungen implmentieren, diesen armen Hund mit angedübelten
    Ohren(c++++) :)?

    jo, man kann's drehen wie man will. c++ bleibt immer aufgebohrtes c



  • Ich Proge C++ gerade weil es so ist!

    So Aussagen wie:
    ->keine Prozessor anweisungen
    ->Direkt Filesystem zugriff
    ->Die ewigen lib.
    ->...
    Die koennen nur von Windows proger kommen, aber dafuer gibt es doch
    die WinAPI.

    Java
    Das ist fuer mich eine Scriptsprache wie PHP auch.
    Und ob das unter OOP laufen kann...

    Das ist fuer mich eine Script-Sprache
    -Direkt filesystem zugriff, ST on board.
    -Jeder befehl schon anwendbar ohne lib include.
    -Evnt. Microsoft, wenns die Finger im Spiel hat.
    -Wenn for() zu FOR BLA = BL1 THEN END
    -----Ohne erweiterung---

    Programmsprachen:
    C/C++
    Assembler
    Pascal
    FORTAN
    ...

    Scriptsprachen:
    PHP
    Java
    Basic
    Power Bulding (oder so)
    SHELL
    ...

    Es wird wohl schon etwas uneinichkeit geben.

    Ghost


Anmelden zum Antworten