Eine Sprache = Nur ein mittel zum Zweck



  • volkard schrieb:

    +fricky schrieb:

    langsamer isser doch nicht (hast wohl den asm-code nicht gesehen), aber er ist ein typisches beispiel für 'over engineering'. mit einem mal spielt sowas wie 'const-correctness' eine rolle (sinnlose komplexität) und aus dem leicht verständlichen zweizeiler:

    for(int i=1;...) 
      sum = sum + i*i;
    

    ca. 20 zeilen zu machen, finde ich ziemlich übertrieben.

    Nö, aus

    for(int i=1;...) 
      sum = sum + i*i;
    

    wurde

    for(SquareGenerator s;s.value()<100000000;s.step())
      sum+=i;
    

    solche generatoren benutze ich in C++ seit 15 jahren und sie machen den hauptcode code lesbarer und gelegentlich sogar erst realistisch lösbar. wenn die in haskell das dürfen, will ich das auch.

    klar, ein oo basierter ansatz hat vorteile, leichte austauschbarkeit, gemeinsames interface für verschiedene generatoren und so. aber in einem miniprogramm, in dem diese vorteile nicht zum tragen kommen, ist ein einfaches i*i doch günstiger. OOP ist doch nicht dazu da, simple dinge zu verstecken.
    🙂



  • +fricky schrieb:

    klar, ein oo basierter ansatz hat vorteile, leichte austauschbarkeit, gemeinsames interface für verschiedene generatoren und so. aber in einem miniprogramm, in dem diese vorteile nicht zum tragen kommen, ist ein einfaches i*i doch günstiger. OOP ist doch nicht dazu da, simple dinge zu verstecken.
    🙂

    klar, aber das da oben mit sum+= war nur ein testmessprogramm. würde ich wirklich nur die summe von quadratzahlen suchen, würde ich sum+=i*i nehmen, (wenn nicht wie jetzt der bronstein links neben mir stände).



  • volkard schrieb:

    klar, aber das da oben mit sum+= war nur ein testmessprogramm. würde ich wirklich nur die summe von quadratzahlen suchen, würde ich sum+=i*i nehmen, (wenn nicht wie jetzt der bronstein links neben mir stände).

    aber dann würdeste diese quadratsummenformel, die ja nicht sonderlich kompliziert ist, als eine codezeile hinschreiben und hättest keinen extra 'SquareSumGenerator' dafür, ne?
    🙂



  • +fricky schrieb:

    volkard schrieb:

    klar, aber das da oben mit sum+= war nur ein testmessprogramm. würde ich wirklich nur die summe von quadratzahlen suchen, würde ich sum+=i*i nehmen, (wenn nicht wie jetzt der bronstein links neben mir stände).

    aber dann würdeste diese quadratsummenformel, die ja nicht sonderlich kompliziert ist, als eine codezeile hinschreiben und hättest keinen extra 'SquareSumGenerator' dafür, ne?
    🙂

    int calcSum(int n){ //http://pirate.shu.edu/~wachsmut/ira/infinity/answers/sm_sq_cb.html
     return n*(n+1)*(2*n+1)/6;
    }
    

    Der Generator ist doch ne Range und produziert tausende von Dingen, nicht nur eine Zahl. Ganz andere Aufgaben.

    +fricky schrieb:

    OOP ist doch nicht dazu da, simple dinge zu verstecken.

    Doch, natürlich.
    Aus genau dem Argument, wie ich im Hauptprogramm calcSum(*i) statt *i*(*i+1)*(2**i+1)/6 schreiben will. Sie dient dazu, daß die Hauptfunktionen einfacher werden. Und genauso, wie es triviale einzeilige Funktionen gibt, gibt es triviale Klassen mit einem Attribut und sowas.


Anmelden zum Antworten