NG Programmiersprache?



  • thatway schrieb:

    Ist wohl sinnlos mit dir, kommen ja doch nur verlogene Unterstellungen.

    Es ist immer wieder schön zu sehen, daß Personen denen die Argumente ausgehen, dann automatisch auf persönliche Angriffe umstellen.

    Zu Thema Multiple Inheritance zurück:
    Als erster wäre hier "The Design an Evolution of C++, Bjarne Stroustrup, 1994" als Quelle zu nennen. Es findet sich reichhaltiges Material pro MI im Buch.
    Dann ist da noch "Objektorientierte Analyse und Design, Grady Booch, 1994" zu nennen. MI wird zwar selten benötigt, wenn man sie braucht vereinfacht sie das Design deutlich. Die Gegner von MI kommen meistens aus dem Smalltalk Lager. Smalltalk "löst" das Problem via duck typing, hier wird eine implizite Abhängigkeit erzeugt, die die Abhängigkeit zwischen den Klasse nur verschleiert, aber sie nicht wirklich auflöst.



  • ~john schrieb:

    thatway schrieb:

    Ist wohl sinnlos mit dir, kommen ja doch nur verlogene Unterstellungen.

    Es ist immer wieder schön zu sehen, daß Personen denen die Argumente ausgehen, dann automatisch auf persönliche Angriffe umstellen.

    ~john schrieb:

    thatway schrieb:

    Wenn Du nicht weißt wie man das richtig entwirft, mach dafür nicht Deine Mitmenschen verantwortlich. Es gibt mittlerweile eine reichhaltige Entwurfsmusterliteratur, darin kannst Du solche Grundlagen nachlesen.

    Ist wohl sinnlos mit dir, kommen ja doch nur verlogene Unterstellungen.

    Wer greift da wen persönlich an? 🙄



  • ~john schrieb:

    Zu Thema Multiple Inheritance zurück:
    Als erster wäre hier "The Design an Evolution of C++, Bjarne Stroustrup, 1994" als Quelle zu nennen. Es findet sich reichhaltiges Material pro MI im Buch.

    Du meinst jetzt aber nicht dieses Terminal Task Displayed Beispiel? Gabs nicht auch schon vor nem viertel Jahrhundert MVC?

    Da muss ich dann doch knivil recht geben.

    knivil schrieb:

    Next Generation Programmiersprache? Und alle labern von C++, Qt und ueber Vergangenheit.



  • volkard schrieb:

    Mr. N schrieb:

    Nein, man muss nicht alles mit Rekursion erledigen, in der Tat will man das auch nicht, da Rekursion sehr wenig abstrakt ist.

    Das gefällt mir auf der humoresken Ebene. Ich nehme es gleich mal in meine Sig auf. 👍

    Ich hab darüber dann gestern noch mit denis (Dr. Greenthumb) diskutiert... Nehmen wir z.B. die Summenfunktion, diesmal zur Abwechslung in Scheme.

    Vergleiche die rekursive Version

    (define (sum xs) (if (null? xs) 0 (+ (car xs) (sum (cdr xs)))))
    

    mit der Higher-order function-Version

    (define (sum xs) (fold-left + 0 xs))
    

    Welche ist abstrakter? 🙂



  • Es gibt gute Abstraktion und böse Abstraktion. Du bis zur dunklen Seite der Macht gewechselt, fürchte ich.



  • Je mehr die Leute Sprachen studieren, statt sie praktisch einzusetzen, desto realitätsfremder werden sie anscheinend.



  • volkard schrieb:

    Es gibt gute Abstraktion und böse Abstraktion. Du bis zur dunklen Seite der Macht gewechselt, fürchte ich.

    Dann gibt es wohl mehrere dunkle Seiten, ich dachte immer, das hier sei die dunkle Seite der Macht: http://www.springsource.org/

    Im Ernst, was ist "gute" und was ist "böse" Abstraktion? Das musst du mir erläutern, fürchte ich.



  • Das mit Spring musst du mir jetzt aber erklären, habe gerade ein Projekt mit Spring hinter mir und kann es bis jetzt nur empfehlen. Wobei hier auch weit nicht alle Teile des Frameworks eingesetzt wurden.

    MfG SideWinder



  • SideWinder schrieb:

    Das mit Spring musst du mir jetzt aber erklären, habe gerade ein Projekt mit Spring hinter mir und kann es bis jetzt nur empfehlen. Wobei hier auch weit nicht alle Teile des Frameworks eingesetzt wurden.

    http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12



  • Mr. N schrieb:

    Im Ernst, was ist "gute" und was ist "böse" Abstraktion? Das musst du mir erläutern, fürchte ich.

    Ich bevorzuge da Sachen, die weniger abstrakt als Rekursion sind.

    summe=0
    foreach i in xs
      summe+=i
    

    Manchmal (besonders wenn man Hochschulprofessor ist) baut man auch mal was rekursiv.

    fib 0 = 0
    fib 1 = 1
    fib n = fib (n-1) + fib (n-2)
    

    Gute Abstraktion. Jetzt steht das Zeug auch recht hübsch und übersichtlich da.

    Aber dann kommt einer, dem ist das doch nicht abstrakt genug, denn man kann ja noch fast den erzeugten Code erahnen, und er baut

    fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
    

    Böse Abstraktion.





  • volkard schrieb:

    Manchmal (besonders wenn man Hochschulprofessor ist) baut man auch mal was rekursiv.

    fib 0 = 0
    fib 1 = 1
    fib n = fib (n-1) + fib (n-2)
    

    Gute Abstraktion. Jetzt steht das Zeug auch recht hübsch und übersichtlich da.

    Aber dann kommt einer, dem ist das doch nicht abstrakt genug, denn man kann ja noch fast den erzeugten Code erahnen, und er baut

    fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
    

    Böse Abstraktion.

    Das zweite ist natürlich performanter, wenn man die ganze Liste will.

    Wobei ich - bitte nicht glauben, dass ich den Code hübsch fände - da noch eins draufsetzen kann:

    fix $ ([0,1] ++) . (zipWith (+) <*> tail)
    


  • Zeus schrieb:

    @SideWinder
    Ein kleiner Überblick über Nano:
    [...]

    Vielen Dank, hast du die Zusammenfassung extra für mich gemacht oder erst gestern ins Repository hochgeladen? 🙂

    Bin von einigen Dingen begeistert, aber bspw. die Begrenzung auf Rekursion als einzig iteratives Element will ich nicht wahrhaben 😃

    MfG SideWinder



  • Mr. N schrieb:

    volkard schrieb:

    Manchmal (besonders wenn man Hochschulprofessor ist) baut man auch mal was rekursiv.

    fib 0 = 0
    fib 1 = 1
    fib n = fib (n-1) + fib (n-2)
    

    Gute Abstraktion. Jetzt steht das Zeug auch recht hübsch und übersichtlich da.

    Aber dann kommt einer, dem ist das doch nicht abstrakt genug, denn man kann ja noch fast den erzeugten Code erahnen, und er baut

    fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
    

    Böse Abstraktion.

    Das zweite ist natürlich performanter, wenn man die ganze Liste will.

    Warum soll das performanter sein?



  • SideWinder schrieb:

    Vielen Dank, hast du die Zusammenfassung extra für mich gemacht oder erst gestern ins Repository hochgeladen? 🙂

    Ich hab sie auf Anfrage für dich und alle Lauscher gemacht 😉

    SideWinder schrieb:

    Bin von einigen Dingen begeistert, aber bspw. die Begrenzung auf Rekursion als einzig iteratives Element will ich nicht wahrhaben 😃
    MfG SideWinder

    Yo mal sehen 🙂



  • nachfrager schrieb:

    Warum soll das performanter sein?

    Weil die Fibonacci-Zahlen nicht immer wieder berechnet werden. Wenn du fib 4 rekursiv berechnest, berechnest du fib 1, fib 2, fib 3 und fib 4 immer auch (bei der naiven Rekursion sogar teilweise mehrfach). Bei der rekursiven Liste von volkard werden die Zahlen nur einmal berechnet und wiederverwendet.



  • Wenn ich blos den "Rekursionsschritt"? bei der Version erkennen würde 😃



  • Also baue ich mir zuerst Schlösser mit 5 Stockwerken der Abstraktion und muß dann doch selber die Abstraktion bis runter auf sagen wir mal C-Niveau auflösen und mir vorstellen, wie er es innendrin macht, damit ich nicht in eine Falle tapse, und eine sehr langsame Funktion baue. Uih, das würde mich aber ein bißchen nerven. 🤡 🤡 🤡



  • Mr. N schrieb:

    nachfrager schrieb:

    Warum soll das performanter sein?

    Weil die Fibonacci-Zahlen nicht immer wieder berechnet werden. Wenn du fib 4 rekursiv berechnest, berechnest du fib 1, fib 2, fib 3 und fib 4 immer auch (bei der naiven Rekursion sogar teilweise mehrfach). Bei der rekursiven Liste von volkard werden die Zahlen nur einmal berechnet und wiederverwendet.

    Da nehme ich dann doch lieber eine for-schleife.



  • hehe schrieb:

    Da nehme ich dann doch lieber eine for-schleife.

    Dann zeig deine Künste.


Anmelden zum Antworten