Um was wirklich gut zu können, muss man es von Grund auf verstehen



  • ;fricky schrieb:

    das machen wir so.

    deal. siehe sig.

    ;fricky schrieb:

    und wenn du mich einmal beim bashen erwischst, darfst du es wieder rausnehmen. 🙂

    Klar. Dann hast Du Dich ins Unrecht gestellt.

    Wenn ich es aber rausnehme, ohne daß ich Dich zugleich des C++-Bashings überführe, stelle ich mich ins Unrecht.

    Außerdem möchte ich als Zusatzbedingungen haben, daß die Laufzeit des Vertrags auf ein Jahr beschränkt ist. Am 3.9.2010 ändere ich meine sig wieder, auch wenn Du so lange ausgehalten hast. Du darfst am 3.9.2010 wieder C++-bashen, selbst wenn meine sig noch steht.

    Leider bist Du nicht registriert, da müßte ich es auch als Vertragsbruch werten, wenn vermehrt C++-Bashing von IP-Adressen (bin zum Glück Mod und kann sie einsehen) auftaucht, die von Diensten wie http://www.geoiptool.com/ in die Nähe von Adressen gestellt werden, die auch alte Postings mit fricky als Absender haben.



  • Volkard jetzt hast du deine Ideale verkauft, um deine Ideale verteidigen zu können. 👎



  • volkard schrieb:

    Leider bist Du nicht registriert, da müßte ich es auch als Vertragsbruch werten, wenn vermehrt C++-Bashing von IP-Adressen (bin zum Glück Mod und kann sie einsehen) auftaucht, die von Diensten wie http://www.geoiptool.com/ in die Nähe von Adressen gestellt werden, die auch alte Postings mit fricky als Absender haben.

    Das wäre unfair. Fair is fair: werten dürftest du es nur als starkes Indiz. Ein paar statistische Überlegungen könnten das noch stärker machen. Aber ob das je ein stichhaltiger Beweis werden kann?



  • SideWinder schrieb:

    Das halte ich für einen üblen Deal. Du musst schon von deiner Seite auch etwas anbieten.

    ok, bei verstoß muss ich mich registrieren und meine name soll 'Basher' sein.

    volkard schrieb:

    Außerdem möchte ich als Zusatzbedingungen haben, daß die Laufzeit des Vertrags auf ein Jahr beschränkt ist. Am 3.9.2010 ändere ich meine sig wieder, auch wenn Du so lange ausgehalten hast. Du darfst am 3.9.2010 wieder C++-bashen, selbst wenn meine sig noch steht.

    gut. unter 'bashen' verstehen wir aber nur rohe polemik. wenn ich sachlich bleibe und meinen standpunkt begründen kann, ist das natürlich kein bash.

    µngbd schrieb:

    volkard schrieb:

    http://www.geoiptool.com/

    Das wäre unfair.

    ja, ich war vorhin über UMTS drin, und da hat mich dieses tool kurzerhand nach bayern teleportiert.
    🙂



  • du meinst funktionale sprachen, die aus rekursionen sowieso schleifen machen, nur man merkt nix davon? naja, aber bei echten rekursionen (d.h. auf realen rechnern, wie wir sie kennen) haste immer das problem des variablen stackbedarfs

    Nicht so in Scheme, z.B.: Tower of Hanoi. start liefert die Laenge der Zugliste. Rekursion ist das einzig Mittel. Aber durch tail transfer (tail recursion) ist es wesentlich angenehmer als die Rekursion, welche von C, Java und Co. geboten wird.

    (define (move N from to spare)
        (if (= N 0)
          '()
          (let ((pre (move (- N 1) from spare to))
                (mid (cons from to)))
            (append pre (list mid) (move (- N 1) spare to from)))))
    
    (define (start arg)
      (let ((res (move arg 1 2 3)))
        (begin
          (display (length res)) (newline))))
    

    Das ganze kann man z.B. mit Bigloo (amgepasst) compilieren und es gibt keine Probleme mit dem Stack. Jedoch braucht es etwas mehr als 700 Mbyte Artbeitsspeicher. Das ist normal fuer eine stricte Sprache.

    Im Vergleich dazu Haskell: Mich beeindruckte vor allem, dass das compilierte Programm fast gar kein Speicher brauchte. Unter anderem dadurch, dass Haskell lazy evaluiert.

    import System.Environment
    
    hanoi (0, _, _, _) = []
    hanoi (n, from, to, using) = hanoi(n-1, from, using, to) ++
                                 (from,to) : hanoi(n-1, using, to, from)
    
    str2int :: String -> Int
    str2int = read
    
    main :: IO ()
    main = do
      args <- getArgs
      let y = str2int( head args )
      let a = hanoi(y,1,2,3)
      let b = length a
      putStrLn ( show b )
    

    PS: Einfach nicht auf Sprachen herumhacken, sondern selbst mal drin programmieren. Vielleicht macht es euch ja sogar Spass!



  • knivil schrieb:

    ...Jedoch braucht es etwas mehr als 700 Mbyte Artbeitsspeicher.

    *schluck* bei wievielen scheiben? und wieviel MB bei einer scheibe mehr?
    übrigens kann ein computer 'towers of hanoi' auch nichtrekursiv spielen.
    🙂



  • ;fricky schrieb:

    ok, bei verstoß muss ich mich registrieren und meine name soll 'Basher' sein.

    Gute Idee 👍



  • ;fricky schrieb:

    übrigens kann ein computer 'towers of hanoi' auch nichtrekursiv spielen.
    🙂

    Ja, das wissen erschreckend wenige. Aber wir haben es ausgemessen und rekursiv ist es schneller.



  • ;fricky schrieb:

    gut. unter 'bashen' verstehen wir aber nur rohe polemik. wenn ich sachlich bleibe und meinen standpunkt begründen kann, ist das natürlich kein bash.

    Du forderst mich also dazu auf, dann um einen nicht unerheblichen Preis zu diskutieren, ob dein Bashing völlig haltlos ist oder ein Fitzelchen Kern der Wahrheit drin ist?! Dann bin ich ja eine bestimmt Sorte Threads nicht losgeworden, sondern trete derer den Größten an. Nee. Kein C++-Bashing.



  • ;fricky schrieb:

    knivil schrieb:

    ...Jedoch braucht es etwas mehr als 700 Mbyte Artbeitsspeicher.

    *schluck* bei wievielen scheiben? und wieviel MB bei einer scheibe mehr?
    übrigens kann ein computer 'towers of hanoi' auch nichtrekursiv spielen.
    🙂

    25 Scheiben. Die Laenge der Liste ist 33554431.

    Ja, das wissen erschreckend wenige. Aber wir haben es ausgemessen und rekursiv ist es schneller.

    Ja, aber die Implementation ist laenger als 2 bis 3 Zeilen.



  • knivil schrieb:

    Ja, aber die Implementation ist laenger als 2 bis 3 Zeilen.

    Mist, ich brauche vier Zeilen.

    Drehsinn der Kleinsten sei direkt zum Ziel, außer wenn n gerade. 
    Solange Turm nicht fertig ist:
      Leg die Kleinste in ihrem Drehsinn weiter.
      Ziehe eine Nicht-Kleinste.
    


  • knivil schrieb:

    ;fricky schrieb:

    knivil schrieb:

    ...Jedoch braucht es etwas mehr als 700 Mbyte Artbeitsspeicher.

    *schluck* bei wievielen scheiben? und wieviel MB bei einer scheibe mehr?
    übrigens kann ein computer 'towers of hanoi' auch nichtrekursiv spielen.
    🙂

    25 Scheiben. Die Laenge der Liste ist 33554431.

    das sind 32 MB. wenn man mal davon ausgeht, dass pro zug 1 byte gebraucht wird, was sogar noch recht grosszügig gerechnet ist (für von->nach müssten 4 bits reichen), wofür braucht er denn die anderen 670 MB? das erinnert mich irgendwie an dieses template-bloat von *piiieeeps* (grrr! ich darf's nicht sagen).
    🙂



  • ;fricky schrieb:

    das erinnert mich irgendwie an dieses template-bloat von *piiieeeps* (grrr! ich darf's nicht sagen).
    🙂

    Das war aber eindeutig. Du hast verloren, Schwächling.



  • volkard schrieb:

    ;fricky schrieb:

    das erinnert mich irgendwie an dieses template-bloat von *piiieeeps* (grrr! ich darf's nicht sagen).
    🙂

    Das war aber eindeutig. Du hast verloren, Schwächling.

    ...D, ich wollte D sagen.
    🙂



  • ;fricky schrieb:

    volkard schrieb:

    ;fricky schrieb:

    das erinnert mich irgendwie an dieses template-bloat von *piiieeeps* (grrr! ich darf's nicht sagen).
    🙂

    Das war aber eindeutig. Du hast verloren, Schwächling.

    ...D, ich wollte D sagen.
    🙂

    Aber warum hättest Du nicht (grrr!) D sagen dürfen?



  • volkard schrieb:

    ;fricky schrieb:

    das erinnert mich irgendwie an dieses template-bloat von *piiieeeps* (grrr! ich darf's nicht sagen).
    🙂

    Das war aber eindeutig. Du hast verloren, Schwächling.

    LOL. Ging aber schnell.
    So schnell hättest das aber nicht erwartet, was Volkard.



  • naja, ne Zahl wird schon mal mit 4 Byte kodiert, davon hat er 2 ... also 8 Byte. Dann ist ein Listenelement ein Paar konstruiert mit (cons from to). Auch ist noch jeweils Typinformation 4 Byte (fuer cons-Zelle) dabei. Auch ist eine cons-Zelle etwas groesser, da sie ein Union ist und auch etwas groessere Datentypen fassen muss. Also 20 Byte fuer ein Eintrag ist Ok finde ich. Wie gross ist denn ein Listenelement in C++ fuer eine Liste a la std::list< std::pair<int, int> > oder Java? Sorry, man arbeitet halt nicht auf Bitebene. Und zeig mir mal ein rekursives Tower of Hanoi in C, dass du so leicht programmierst.

    Haskell im Vergleich hat aber ein besseres Reasoning-System, so dass man fuer die Bestimmung der Laenge nicht die gesamte Liste vorhalten muss. Das hat mich wirklich beeindruckt, dass er das automatisch macht.

    Mist, ich brauche vier Zeilen.

    Ich akzeptiere nur echt kompilierbaren Code.:)



  • volkard schrieb:

    Aber warum hättest Du nicht (grrr!) D sagen dürfen?

    ok, ich gestehe dass ich ein loser bin. *schluchz* ich erwarte gerade die aktivierungsmail, damit ich fortan den benutzernamen der ewigen schande führen kann.
    🙂



  • Schiebung 😡



  • ok, ich gestehe dass ich ein loser bin. *schluchz* ich erwarte gerade die aktivierungsmail, damit ich fortan den benutzernamen der ewigen schande führen kann.

    Blödsinn. Darüber muss abgestimmt werden. Und dass volkard selbst entscheidet, das der Vertrag gebrochen wurde, geht gar nicht. Man kann nun einmal nicht Richter und Kläger auf einmal sein.


Anmelden zum Antworten