*** Protokolldatei gestartet *** Datum: Do. Nov 7 19:57:38 2013 [Donnerstag, 7. November 2013] [19:57:38] Betreten Sie haben den Kanal #forth-ev betreten (-bernd@p4FC551DF.dip0.t-ipconnect.de). [Donnerstag, 7. November 2013] [19:57:43] Hallo! [Donnerstag, 7. November 2013] [19:57:44] Modus Kanalmodi: [Donnerstag, 7. November 2013] [19:59:28] Hallo Meister! [Donnerstag, 7. November 2013] [19:59:38] Da rührt sich ja was ;-) [Donnerstag, 7. November 2013] [20:00:12] Mich hat letzte Woche der Haskell-Stammtisch eingeladen, die wollten mal eine Programmiersprache sehen, die nicht ganz so exotisch ist ;-) [Donnerstag, 7. November 2013] [20:00:48] Wieso sind die da auf Forth gekommen (was ich mal vermute, dass du vorgestellt hast ;) ) [Donnerstag, 7. November 2013] [20:01:43] Einer der Gruppe ist über den GA144 drauf gekommen. [Donnerstag, 7. November 2013] [20:02:36] Das lässt zwei Optionen: Ein Haskell in diesem Forth-Dialekt oder ein Haskell-Multicoreprozessor in Hardware [Donnerstag, 7. November 2013] [20:02:45] Haha. [Donnerstag, 7. November 2013] [20:03:55] Ich habe dieser Tage mal ein Experiment gestartet. Sowohl search-wordlist als auch show-wordlist auf traverse-wordlist aufzusetzen. [Donnerstag, 7. November 2013] [20:04:02] Und? [Donnerstag, 7. November 2013] [20:04:08] letzteres ist einfach [Donnerstag, 7. November 2013] [20:04:26] ersteres ist nicht so ganz toll geworden. Zumindest habe ich es einfacher erwartet [Donnerstag, 7. November 2013] [20:04:55] Da gibt's doch eine Flag zum Abbrechen. [Donnerstag, 7. November 2013] [20:04:57] Unterm Strich sind die drei Worte in etwa das gleiche, wie vorher die getrennten IMplemtierungen [Donnerstag, 7. November 2013] [20:05:26] Ja, so sonderlich viel bringt das nicht. [Donnerstag, 7. November 2013] [20:05:51] Entscheidend ist, dass der User jetzt selber so was machen kann. [Donnerstag, 7. November 2013] [20:05:56] Ja klar. Aber traverse-wordlist liefert keine Information ob die Liste nun komplett und ohne Ergebnis durchlaufen ist oder ob es den einen Treffer gab. Das muss man separat mitführen [Donnerstag, 7. November 2013] [20:06:36] Naja, würde ich so machen: Eine 0 am Anfang auf den Stack werfen, und wenn ein Treffer da ist, das durch das nt ersetzen. [Donnerstag, 7. November 2013] [20:06:44] Am Schluss hat man nt oder 0 auf dem Stack. [Donnerstag, 7. November 2013] [20:06:51] Das ist auch so etwa meine KLösung [Donnerstag, 7. November 2013] [20:07:12] Hat aber umwerfend viel Stack-geschuffle an Board. [Donnerstag, 7. November 2013] [20:07:50] Echt? [Donnerstag, 7. November 2013] [20:07:54] Sollte nicht so sein. [Donnerstag, 7. November 2013] [20:08:38] Du brauchst ja auch noch den c-addr/len vom String. Der will auch gerettet werden. [Donnerstag, 7. November 2013] [20:09:05] Das Wort, dass den NT auswertet hat ( c-addr len 0 nt -- c-addr len 0 true | xt +/-1 false ) [Donnerstag, 7. November 2013] [20:10:21] Ich würde da eher 0 c-addr len nt -- nt c-addr len flag machen. [Donnerstag, 7. November 2013] [20:10:30] also 0 durch nt ersetzen, wenn true, sonst 0 lassen. [Donnerstag, 7. November 2013] [20:10:49] Dann reicht nt>string 2over str= zum Testen. [Donnerstag, 7. November 2013] [20:12:13] Das verlagert das stackgeschuffle in die Vorbereitung vom traverse-wordlist. Dürfte aber zumindest schneller sein... [Donnerstag, 7. November 2013] [20:12:43] Klar. [Donnerstag, 7. November 2013] [20:13:00] Werd ich mal ausprobieren. Danke für den Tipp [Donnerstag, 7. November 2013] [20:14:15] "Meine" user haben übrigens gefragt, wozu man traverse-wordlist eigentlich braucht. Da sind mir nur eine Übungen aus den "Männern, die auf Ziegen starren" eingefallen. Nicht wirklich jugendfrei ;) [Donnerstag, 7. November 2013] [20:14:47] Naja, neben WORDS kann man damit auch so Sachen wie Tab-Completion implementieren. [Donnerstag, 7. November 2013] [20:15:25] Zumindest haben die meisten Forth-Systeme so etwas ähnliches als internen Faktor. [Donnerstag, 7. November 2013] [20:15:36] Und dann gilt halt: "don't bury your tools". [Donnerstag, 7. November 2013] [20:16:23] jupp. Seh ich auch so. show/search wordlist sahen sich schon sehr ähnlich. [Donnerstag, 7. November 2013] [20:17:17] Jetzt nimmer ;) [Donnerstag, 7. November 2013] [20:17:54] Wobei search-wordlist in Systemen wie Gforth eh ganz anders aussieht, weil es eine Hash-Table benutzt. [Donnerstag, 7. November 2013] [20:20:29] Das sollte doch eigentlich egal sein. Da habt ihr doch viel Text drauf verwandt, wie und in welcher Reihenfolge die Worte zu durchlaufen sind. [Donnerstag, 7. November 2013] [20:21:45] Das wäre doch erst wieder interessant, wenn der Iterator durch den Suchstring modifiziert werden würde [Donnerstag, 7. November 2013] [20:22:03] Nein. traverse-wordlist läuft durch die ganze Tabelle, search-wordlist nur durch den aktuellen Bucket. [Donnerstag, 7. November 2013] [20:22:22] Und die Linked-List gibt's parallel trotzdem. [Donnerstag, 7. November 2013] [20:22:32] Der Iterator verwendet die Hash-Tabelle gar nicht. [Donnerstag, 7. November 2013] [20:23:33] Was ich mir noch bei Systemen mit gigantischen Ressourcen vorstellen könnte, ist ein Iterrator, der anhand des Suchstrings nur einen Teilbereich abackern muss. Das ist aber mit den Formalien von traverse-wordlist wohl nicht abbildbar [Donnerstag, 7. November 2013] [20:23:58] Soll auch nicht. [Donnerstag, 7. November 2013] [20:24:33] TAB-Completion wäre aber ein schöner Einstieg für dieses Thema [Donnerstag, 7. November 2013] [20:25:50] SELECT * FROM WORDLIST WHERE ISPREFIX(NAME,STRING); oder sowas? [Donnerstag, 7. November 2013] [20:27:04] jo [Donnerstag, 7. November 2013] [20:27:29] Wir reden aber nicht nur über ein paar Tausend Worte hier. [Donnerstag, 7. November 2013] [20:29:55] Du könntest auch einen Prefix-Tree machen für Tab Completion. [Donnerstag, 7. November 2013] [20:30:19] Wenn du viele, viele Wörter, und viel viel Platz hast, kannst du in dem auch sehr schnell suchen. [Donnerstag, 7. November 2013] [20:33:24] Für die distributed hash table von net2o verwende ich einen Prefix Hash Tree (da sind die Keys ja alle schon Hashes). [Donnerstag, 7. November 2013] [20:35:19] Bei "distributed" gibt's halt neben Unterbäumen auch Verweise auf andere Maschinen. [Donnerstag, 7. November 2013] [20:35:47] Und die hast Du als Wordlist implementiert? [Donnerstag, 7. November 2013] [20:35:52] Das ist alles immer noch Gebastel, ich bin abgelenkt worden, weil ich einen Signatur-Algorithmus brauche. [Donnerstag, 7. November 2013] [20:35:59] Nein, das ist keine Wordlist ;-) [Donnerstag, 7. November 2013] [20:36:09] Aber man kann eine Wordlist damit implementieren. [Donnerstag, 7. November 2013] [20:36:23] Da kannst Du ja gar nicht traverse-wordlist benutzten 8=) [Donnerstag, 7. November 2013] [20:36:59] Hashes assoziiere ich immer mit "Existiert" und weniger mit "Reihenfolge".... [Donnerstag, 7. November 2013] [20:37:24] Grundsätzlich kann man auch einen Prefix-Tree traversieren. [Donnerstag, 7. November 2013] [20:37:38] Und die Reiheinfolge ist ganz einfach: Der Hash ist ja auch nur eine lange Zahl. [Donnerstag, 7. November 2013] [20:38:03] Für net2o-Objekte ist der Hash natürlich ein kryptographisch sicherer. [Donnerstag, 7. November 2013] [20:38:03] Aber doch wohl keine monoton wachsende, oder? [Donnerstag, 7. November 2013] [20:38:28] Doch, ein 512-Bit-Hash ist eine Zahl zwischen 0 und 2^512-1. [Donnerstag, 7. November 2013] [20:38:51] Nur die Zuordnung von Message -> Hash ist natürlich völlig zufällig. [Donnerstag, 7. November 2013] [20:39:27] Ergo gilt bei Dir, je größer die Zahl, desto später kam das Element dazu? [Donnerstag, 7. November 2013] [20:39:32] Nein. [Donnerstag, 7. November 2013] [20:39:46] Die Zuordnung wird von der Hash-Funktion gemacht. [Donnerstag, 7. November 2013] [20:40:11] Die stellt auch nicht sicher, dass es keine Kollission gibt, sondern nur, dass die sehr unwahrscheinlich ist, und nicht absichtlich herbeigeführt werden kann. [Donnerstag, 7. November 2013] [20:40:28] das ist klar. [Donnerstag, 7. November 2013] [20:41:36] Wobei bei 2^512 die Kollisionsfreiheit sicher sicherzustellen wäre ;) [Donnerstag, 7. November 2013] [20:49:52] Aber nochmal was anderes. [Donnerstag, 7. November 2013] [20:49:52] Der name2comp liefert einen XT, der die compilation semantic liefert? [Donnerstag, 7. November 2013] [20:49:52] Quasi die Laufzeit von DO, wenn ich nach DO suche? [Donnerstag, 7. November 2013] [20:49:55] Also zumindest in diesem Universum wird's hart, eine zu finden ;-) [Donnerstag, 7. November 2013] [20:50:26] Compilation Semantic ist halt entweder xt+execute oder xt+compile, [Donnerstag, 7. November 2013] [20:50:33] Je nachdem ob es immediate oder nicht ist. [Donnerstag, 7. November 2013] [20:50:56] und DO ist für gewöhnlich immediate [Donnerstag, 7. November 2013] [20:52:14] Genau, das gibt dann ' DO ' EXECUTE [Donnerstag, 7. November 2013] [20:55:07] 020 * Please wait while we process your connection. [Donnerstag, 7. November 2013] [20:55:48] 042 BerndPaysan 276NAJ1FA your unique ID [Donnerstag, 7. November 2013] [20:55:48] 484 BerndPaysan Your connection is restricted! [Donnerstag, 7. November 2013] [20:55:50] Betreten Sie haben den Kanal #forth-ev betreten (-bernd@p4FC551DF.dip0.t-ipconnect.de). [Donnerstag, 7. November 2013] [20:55:56] Modus Kanalmodi: [Donnerstag, 7. November 2013] [20:56:13] Na sowas, ein Hickup... [Donnerstag, 7. November 2013] [20:56:25] Habt ihr Nebel? Hier zumindest ist es sehr feucht [Donnerstag, 7. November 2013] [20:57:11] Nein, den ganzen Tag Föhn. [Donnerstag, 7. November 2013] [21:16:47] Noch was? [Donnerstag, 7. November 2013] [21:17:03] Ich bin zur Zeit am Überlegen, in wie wenige "Primitive" ich eine GUI zerlegen kann. [Donnerstag, 7. November 2013] [21:17:03] ich heute nicht mehr [Donnerstag, 7. November 2013] [21:17:21] Also, Text, Bilder und Rahmen als visuelle Komponenten. [Donnerstag, 7. November 2013] [21:17:37] Und hbox/vbox/zbox plus Glue zur Organisation. [Donnerstag, 7. November 2013] [21:17:46] zbox ist übereinaner gestapelte Sachen. [Donnerstag, 7. November 2013] [21:18:42] Rahmen hätten bei mir auch ein Pixmap mit Alpha-Kanal, das in 9 Rechtecke zerlegt wird: Ecken, Kanten und die Mitte. [Donnerstag, 7. November 2013] [21:19:18] Macht zusammen 7 verschiedene Objekte. [Donnerstag, 7. November 2013] [21:19:48] Rahmen macht der Window-Manager [Donnerstag, 7. November 2013] [21:19:54] Nein, GUI. [Donnerstag, 7. November 2013] [21:19:59] Rahmen von Buttons und so. [Donnerstag, 7. November 2013] [21:20:22] Ah so [Donnerstag, 7. November 2013] [21:20:39] Die können auch verschiedene Zustände haben, also angeklickt oder Mouse-Over und so. [Donnerstag, 7. November 2013] [21:21:19] Boxen mit was drin scheint derzeit ein akzeptables Modell sein. [Donnerstag, 7. November 2013] [21:21:33] Wobei das "was drin" halt unterschiedlich ist [Donnerstag, 7. November 2013] [21:22:15] INwieweit der Rahmen (also die Box) etwas von dem status des "was drin" wissen muss, sei dahingestellt [Donnerstag, 7. November 2013] [21:22:50] Na, Button angeklickt sieht anders aus wie idle. [Donnerstag, 7. November 2013] [21:23:10] Das ist nicht "was drin", der Rahmen gehört zum Button dazu. [Donnerstag, 7. November 2013] [21:23:21] Der Text kann sich ja auch ändern, wenn man klickt. [Donnerstag, 7. November 2013] [21:23:33] Oder tippt - Editierbares Feld. [Donnerstag, 7. November 2013] [21:23:53] Generell also "Erhält Events" [Donnerstag, 7. November 2013] [21:23:58] Ja. [Donnerstag, 7. November 2013] [21:24:06] Das kann jedes Objekt. [Donnerstag, 7. November 2013] [21:24:13] Touchgesten sind ja auch inwzischen dabei [Donnerstag, 7. November 2013] [21:24:28] Eben. [Donnerstag, 7. November 2013] [21:24:54] Deswegen bin ich auch am Überlegen, ob "Box" ein wirklich allgemeines Modell ist [Donnerstag, 7. November 2013] [21:25:22] Oder ob nicht besser ein "abgrenzbarer Bereich" treffender sein könnte [Donnerstag, 7. November 2013] [21:26:11] Es gibt durchaus noch Alternativen, Dinge anzuordnen. [Donnerstag, 7. November 2013] [21:26:30] Viele einfache Spiele haben ja diese pseudo-perspektivischen Grids. [Donnerstag, 7. November 2013] [21:26:57] Ich meine mich zu entsinnen, dass die Rechtecke nicht so ganz zufällig im Spiel sind. Aber zwingend sind die nicht (mehr). 3D lässt auch grüßen [Donnerstag, 7. November 2013] [21:27:38] Es gibt auch so als Kreis angeordnete Dinge. [Donnerstag, 7. November 2013] [21:28:02] Stell Dir eine kinect vor, deren Nutzer vor dem System herumtanzen und damit Aktionen auslösen, je nach dem, wo sie grad irgendwas machen [Donnerstag, 7. November 2013] [21:28:51] Als Programmierer wäre es hübsch, die Aktionen zwar auszuführen, aber nicht die kinect kennen zu müssen. [Donnerstag, 7. November 2013] [21:29:19] Die gleichen Aktionen könnte man auch als HTML Seite triggern. [Donnerstag, 7. November 2013] [21:29:21] Für so 3D-Spiele ist ein 3D-Grid zur Anordnung recht brauchbar. [Donnerstag, 7. November 2013] [21:29:32] Andere Optik, gleiche Wirkung [Donnerstag, 7. November 2013] [21:31:26] Deswegen bin ich skeptisch, was "Box" betrifft. 4 Ecken war bislang ok, der Ausblick sieht aber anders aus. IMHO [Donnerstag, 7. November 2013] [21:32:39] Legitim ist es iMHO, das nur eine "Box" den Aufmerksamkeitsfokus hat [Donnerstag, 7. November 2013] [21:33:10] Also die Events erhält [Donnerstag, 7. November 2013] [21:33:13] Vielleicht muss man beim Thema "Box" nur von der Art der Ausrichtung abstrahieren. [Donnerstag, 7. November 2013] [21:33:29] Eine kreisförmige Anordnung von Dingen ist auch eine "Box". [Donnerstag, 7. November 2013] [21:34:09] Sprich: Es gibt Container, die Objekte "anordnen", und die Dinge selber. [Donnerstag, 7. November 2013] [21:35:04] Das hatten wir bei MINOS schon, Martin Bitter wollte König Arthus Tafelrunde damit implementieren. [Donnerstag, 7. November 2013] [21:35:11] Ging wegen der Box-Abstraktion nicht. [Donnerstag, 7. November 2013] [21:35:14] Wobei ich eine streng hierarchische COntaineranordnung auch noch bezweifeln würde. [Donnerstag, 7. November 2013] [21:35:29] Alternative zur Hierarchie ist immer der Grid. [Donnerstag, 7. November 2013] [21:35:51] Grid mit Alfa-Anteil. Dinge im Vordergrund sind relevanter als andere [Donnerstag, 7. November 2013] [21:36:48] Wobei ich jetzt auch nicht weiss, wie ein "Tastendruck im Hintergrund" aussieht ;) [Donnerstag, 7. November 2013] [21:38:07] Mobilgeräte haben noch Kompass und Neigungssensor. Da kann man auch lustige Dinge damit machen ;-) [Donnerstag, 7. November 2013] [21:40:00] Zur Strukturierung klassisch aussehender GUIs ist das Boxen-Konzept aber sehr gut geeignet. [Donnerstag, 7. November 2013] [21:40:47] Aber auch nur für die ;) [Donnerstag, 7. November 2013] [21:41:04] ich klink mich dann mal aus [Donnerstag, 7. November 2013] [21:41:07] Bis neulich [Donnerstag, 7. November 2013] [21:41:11] Ciao! [Donnerstag, 7. November 2013] [21:41:14] Beenden MatthiasT hat den Server verlassen (""). [Donnerstag, 7. November 2013] [21:41:18] * BerndPaysan macht das Licht aus