*** Protokolldatei gestartet *** Datum: Mi. Okt 5 20:01:30 2011 [Mittwoch, 5. Oktober 2011] [20:01:30] Betreten Sie haben den Kanal #forth-ev betreten (~bernd@ppp-188-174-11-16.dynamic.mnet-online.de). [Mittwoch, 5. Oktober 2011] [20:01:34] Modus Kanalmodi: [Mittwoch, 5. Oktober 2011] [20:02:14] Hallo Bernd [Mittwoch, 5. Oktober 2011] [20:03:26] Hallo Matthias! [Mittwoch, 5. Oktober 2011] [20:03:43] Hallo Bernd [Mittwoch, 5. Oktober 2011] [20:03:50] Hallo Carsten! [Mittwoch, 5. Oktober 2011] [20:03:59] Suche gerade nach Unterkuenften fuer die Tagung 2012 [Mittwoch, 5. Oktober 2011] [20:04:22] Und, schon ein paar Kandidaten? [Mittwoch, 5. Oktober 2011] [20:06:33] ja, koordiniere mit Martin, Anfragen gehen dann naechste Woche raus [Mittwoch, 5. Oktober 2011] [20:06:50] Muss ja Preiswert und gut sein [Mittwoch, 5. Oktober 2011] [20:07:05] Genau. [Mittwoch, 5. Oktober 2011] [20:08:49] Ich will auch mal bei CenterParks anfragen, die haben auch Angebote fuer Tagungen. [Mittwoch, 5. Oktober 2011] [20:16:13] Matthias: Ich nehme mir jetzt mal Zeit, und implementiere die Recognizers auch in Gforth. [Mittwoch, 5. Oktober 2011] [20:16:22] ;=) [Mittwoch, 5. Oktober 2011] [20:17:05] Erich hat die schon für Sachen benutzt, die ich mir nicht mal vorstellen konnte [Mittwoch, 5. Oktober 2011] [20:17:16] Das kann ich mir vorstellen ;-) [Mittwoch, 5. Oktober 2011] [20:18:07] Das heißt aber auch, dass du bei der Generalisierung weit genug ausgegriffen hast. [Mittwoch, 5. Oktober 2011] [20:18:07] Dann bin ich ja mal gespannt, was Du so meinst, was man besser machen sollte [Mittwoch, 5. Oktober 2011] [20:18:34] Also, das erste, was mir eingefallen ist: Den NOTFOUND-Teil würde ich nicht in die Recognizer-Liste 'reintun. [Mittwoch, 5. Oktober 2011] [20:19:02] Da der Nutzer ja beliebige Recognizer-Listen (oder Stacks) anlegen kann, muss das System den Fall abfangen, dass da nichts gefunden wurde. [Mittwoch, 5. Oktober 2011] [20:19:04] Hab ich ja in meinem Artikel erwähnt. [Mittwoch, 5. Oktober 2011] [20:19:33] Und weil man Recognizer in der Regel entweder vorne oder hinten einhängen will, muss es genau für die zwei Spezialfälle auch zwei Spezialoperatoren geben. [Mittwoch, 5. Oktober 2011] [20:19:43] Das macht aber den Interpreter so richtig generisch. Absolut keine Sonderbehandlungen [Mittwoch, 5. Oktober 2011] [20:20:09] Inkl. Ins eigene Knie schießen [Mittwoch, 5. Oktober 2011] [20:21:04] (was, wie ich gelernt habe ein Killerfeature für jeden ernsthaften Forther ist (IIRC Michael K)) [Mittwoch, 5. Oktober 2011] [20:21:14] Wenn, dann sollte der Default-Notfound-Zustand "ignorieren des unbekannten Worts" sein. [Mittwoch, 5. Oktober 2011] [20:21:35] Das kann durchaus sinnvoll sein, wenn man etwa einen Text nur auf Keywords untersuchen will, und der Rest durchrauschen soll. [Mittwoch, 5. Oktober 2011] [20:21:52] Das kann man durchaus auch mit den bestehenden Exceptions regeln. [Mittwoch, 5. Oktober 2011] [20:22:18] Oder durch Einhängen eines "wer bei mir vorbeikommt, wird als NOOP interpretiert"-Recognizers. [Mittwoch, 5. Oktober 2011] [20:22:40] gerne auch das. Dafür ist die LIste schließlich da [Mittwoch, 5. Oktober 2011] [20:22:49] Die Schleife der Recognizer hat aber halt mal ein Ende, und am Ende soll dann etwas sinnvolles mit den Überbleibseln gemacht werden. [Mittwoch, 5. Oktober 2011] [20:23:23] Exception werfen? ( != NOT-FOUND natürlich) [Mittwoch, 5. Oktober 2011] [20:23:42] Hm, warum ungleich? [Mittwoch, 5. Oktober 2011] [20:23:48] Das ist doch "nicht erkannt". [Mittwoch, 5. Oktober 2011] [20:23:57] Recognizerliste leergelaufen [Mittwoch, 5. Oktober 2011] [20:24:10] Das ist etwas aussagekräftiger als not-found [Mittwoch, 5. Oktober 2011] [20:24:42] das not found ist da implizit mit drin [Mittwoch, 5. Oktober 2011] [20:26:03] "undefined word" sagt die tabelle zur Exception -13. [Mittwoch, 5. Oktober 2011] [20:26:53] Das stimmt dann nur bedingt. [Mittwoch, 5. Oktober 2011] [20:27:25] Die Exception "Recognizerliste leer" wird ja nur kommen, wenn jemand den not-found recognizer herausgenommen hat [Mittwoch, 5. Oktober 2011] [20:28:01] also eine Systemeinstellung verändert hat. [Mittwoch, 5. Oktober 2011] [20:28:10] Naja, das darf man nicht so sehen. [Mittwoch, 5. Oktober 2011] [20:28:18] Recognizer sind dann ein Sprachfeature, keine Systemeinstellung. [Mittwoch, 5. Oktober 2011] [20:28:41] Die Liste der Recognizer sehe ich als Systemeinstellung [Mittwoch, 5. Oktober 2011] [20:28:50] welche in welcher reihenfolge [Mittwoch, 5. Oktober 2011] [20:29:20] Das der Interpreter so umgebaut werden kann, ist ein Sprachfeature, ja [Mittwoch, 5. Oktober 2011] [20:31:19] Und deshalb sollte man sich überlegen, was man dann macht, mit nichterkannten Wörtern. [Mittwoch, 5. Oktober 2011] [20:31:34] IMHO zwei Optionen: Nichts oder Exception werfen. [Mittwoch, 5. Oktober 2011] [20:33:14] Für mich scheint das mit der Exception werfen sinnvoller, weil du beim Einhängen deines Recognizers ganz hinten immer Klimmzüge machen musst, um den NOTFOUND-Recognizer zu behandeln. [Mittwoch, 5. Oktober 2011] [20:33:18] Die Frage ist auch, wer wirft wo welche Exception. [Mittwoch, 5. Oktober 2011] [20:33:35] Ja, das hängt davon ab, wofür man sich entscheidet. [Mittwoch, 5. Oktober 2011] [20:33:40] Das place-rec wort ist doch eher überschaubar [Mittwoch, 5. Oktober 2011] [20:34:02] Klar, ist überschaubar, aber wenn's noch einfacher geht, ist's noch besser. [Mittwoch, 5. Oktober 2011] [20:34:08] ok, der Name ist unglücklich, aber die Funktion eher nützlich [Mittwoch, 5. Oktober 2011] [20:34:35] So wie ich es im amforth habe, ist der Interpreter auch sehr klar. [Mittwoch, 5. Oktober 2011] [20:35:54] volksForth: wann/wo die Tagung in 2012? [Mittwoch, 5. Oktober 2011] [20:36:16] Modus saper gibt Ihnen Operator-Status. [Mittwoch, 5. Oktober 2011] [20:36:16] Modus saper gibt MatthiasT Operator-Status. [Mittwoch, 5. Oktober 2011] [20:36:16] Modus saper gibt volksForth Operator-Status. [Mittwoch, 5. Oktober 2011] [20:36:18] Und die Exception "recognizer liste leer" kann man in der Tat noch hard-coded reinnehmen. Das wäre IMHO sinnvoll. Aber nicht die -13 not found Geschichte. Das ist ein Recognizer [Mittwoch, 5. Oktober 2011] [20:37:40] Ja, da bin ich nicht unbedingt deiner Meinung. [Mittwoch, 5. Oktober 2011] [20:38:01] Musst Du auch nicht ;) [Mittwoch, 5. Oktober 2011] [20:39:42] Ich könnte mir auch vorstellen, dass man die im System gepflegte Liste der Recognizer zur Laufzeit um einen weiteren erweitert, der grarantiert anspricht. Das wären aber eindeutig implementation details [Mittwoch, 5. Oktober 2011] [20:40:22] Die default Aktion am Ende der Liste könnte genausogut ein deferred word sein [Mittwoch, 5. Oktober 2011] [20:40:51] Das kann man aus Kompatibilitätsgründen so machen, wenn etwa das NOTFOUND wie in Gforth deferred ist. [Mittwoch, 5. Oktober 2011] [20:41:06] Und die Nutzer erwarten, dort ihre Erweiterung einhängen zu können. [Mittwoch, 5. Oktober 2011] [20:41:24] typisches Legacy-Problem ;) [Mittwoch, 5. Oktober 2011] [20:41:42] Genau, das lässt man dann in der nächsten Revision wieder weg, nachdem man die Leute lang genug gewarnt hat. [Mittwoch, 5. Oktober 2011] [20:41:53] (und zwischen zwei Gforth-Minor-Revisions ist immer genügend Zeit ;-) [Mittwoch, 5. Oktober 2011] [20:42:14] Wobei es kein Hexenwerk ist, in einem Recognizer ein deferred word einzubauen. Das schaff sogar ich [Mittwoch, 5. Oktober 2011] [20:42:53] Eben, da könnte man auch sagen "wer das NOTFOUND als Legacy-Word haben will, läd einfach notfound.fs, dann bekommt er es" [Mittwoch, 5. Oktober 2011] [20:43:25] z.B. ja [Mittwoch, 5. Oktober 2011] [20:44:37] Die andere Frage ist, wie man mit STATE umgeht. [Mittwoch, 5. Oktober 2011] [20:44:45] Anton wird deine Lösung nicht mögen ;-) [Mittwoch, 5. Oktober 2011] [20:44:53] Also STATE @ IF geht gar nicht. [Mittwoch, 5. Oktober 2011] [20:45:18] Ehrlich gesagt hab ich kein Problem mit state [Mittwoch, 5. Oktober 2011] [20:46:09] Der ANSI-Standard hat das etwas blöd formuliert, und damit "unintentional consequences" gehabt. [Mittwoch, 5. Oktober 2011] [20:46:17] entweder ich compilier oder ich führe code aus in der Hoffnung, das der was sinnvolles tut (z.b. was anderes compiliert). Da ist state eher nützlich [Mittwoch, 5. Oktober 2011] [20:46:55] die Diskussion mit den 4 verschiedenen Modi war amüsant zu lesen, aber wo liegt der Sinn? [Mittwoch, 5. Oktober 2011] [20:48:08] Das beseitigt STATE und im Endeffekt auch IMMEDIATE. [Mittwoch, 5. Oktober 2011] [20:48:26] Es ist ein anderer Ansatz, das Geschehen zu verstehen, das System hat dann keinen Zustand mehr. [Mittwoch, 5. Oktober 2011] [20:48:52] Stattdessen sagt man, was man haben will. [Mittwoch, 5. Oktober 2011] [20:48:54] cui bono? [Mittwoch, 5. Oktober 2011] [20:49:32] Ja, ist so die Frage. Bei Forth will man eigentlich die Anzahl der Parameter auf dem Stack eher minimal halten. [Mittwoch, 5. Oktober 2011] [20:50:20] state und auch immediate sind doch eher interaktive features. Also Sachen für den Interpreter und wie er den Compiler steuert, Oder? [Mittwoch, 5. Oktober 2011] [20:51:29] Ja. [Mittwoch, 5. Oktober 2011] [20:51:35] Aber halt als "unschön" angesehene. [Mittwoch, 5. Oktober 2011] [20:51:53] Man soll so Code nicht mit STATE @ IF ... ELSE ... THEN schreiben müssen. [Mittwoch, 5. Oktober 2011] [20:53:17] Irgendwie muss man aber dem Interpreter kundtun, was grade aktuell ist [Mittwoch, 5. Oktober 2011] [20:53:25] Ja klar, das schon. [Mittwoch, 5. Oktober 2011] [20:53:35] soll er nun 1 2 + ausführen oder soll er den code dafür compilieren (lassen) [Mittwoch, 5. Oktober 2011] [20:53:47] Das kann man z.B. machen, indem man zwei Recognizer-Listen hat, und zwischen denen hin- und herwechselt. [Mittwoch, 5. Oktober 2011] [20:54:02] state reloaded? [Mittwoch, 5. Oktober 2011] [20:55:18] zwei Listen, die anhand von NEWSTATE ausgewählt werden ist IMHO nicht viel anders als state @ if ... [Mittwoch, 5. Oktober 2011] [20:55:41] Ja, aber es ist nicht state @ if überall. [Mittwoch, 5. Oktober 2011] [20:55:55] Der State wird nur an einer Stelle abgefragt. [Mittwoch, 5. Oktober 2011] [20:56:16] das stimmt, das state @ wäre dann nur einmal. [Mittwoch, 5. Oktober 2011] [20:56:26] im Interpreter zentral [Mittwoch, 5. Oktober 2011] [20:57:08] gefällt mir auch (immer besser) [Mittwoch, 5. Oktober 2011] [20:57:17] Die andere Option ist, dass der Recognizer das mit dem Wort finden nur halb aufbereitet, und dem Interpreter dann Spielraum gibt, den Rest zu erledigen. [Mittwoch, 5. Oktober 2011] [20:57:42] Womit man dann sogar so Dinge wie POSTPONE 123.4e5 machen könnte ;-) [Mittwoch, 5. Oktober 2011] [20:59:01] da aber das, was gefunden wird, davon abhängt, wer wie sucht, würden da Informationen vorloren gehen, wenn man nicht höllisch aufpasst [Mittwoch, 5. Oktober 2011] [20:59:45] und ein postpone 123e3 ist --- was soll das genau machen? später die Zahl compilieren? [Mittwoch, 5. Oktober 2011] [21:00:08] Genau. [Mittwoch, 5. Oktober 2011] [21:00:20] postpone 1 postpone + soll äquivalent zu postpone 1+ sein. [Mittwoch, 5. Oktober 2011] [21:01:04] Du willst das wohl komplett orthogonal haben? [Mittwoch, 5. Oktober 2011] [21:01:12] hätt was [Mittwoch, 5. Oktober 2011] [21:01:16] Ja, wenn man das schon macht, soll man es richtig machen. [Mittwoch, 5. Oktober 2011] [21:01:43] Ich möchte auch, dass man etwa : foo [ postpone dup ] ; eingeben kann, und dass im Interpreter-Modus das dann eben dup in foo hineincompiliert. [Mittwoch, 5. Oktober 2011] [21:02:59] Also, ein Recognizer sollte zurückliefern: [Mittwoch, 5. Oktober 2011] [21:03:11] Das Datum, das er geparsed hat. [Mittwoch, 5. Oktober 2011] [21:03:16] das mit dem foo muss ich erst noch verdauen. [Mittwoch, 5. Oktober 2011] [21:03:19] Etwas, was zu tun ist, um es zu interpretieren. [Mittwoch, 5. Oktober 2011] [21:03:35] Etwas, was zu tun ist, um es zu compilieren. [Mittwoch, 5. Oktober 2011] [21:03:54] Und etwas, was zu tun ist, um es als Literal abzulegen (damit kann man dann POSTPONE im Compilation-Modus implementieren) [Mittwoch, 5. Oktober 2011] [21:05:17] warum soll das datum wieder zurückkommen? Das widerspricht allem, was ich bei forth gelernt habe (der caller consumiert die Parameter und liefert seine eigenen Ergebnisse zurück, wenn vorhanden) [Mittwoch, 5. Oktober 2011] [21:06:03] Naja, der Recognizer sollte eigentlich nur die Arbeit des "Erkennens" machen. [Mittwoch, 5. Oktober 2011] [21:06:13] Und was ist das Literal? Das Token für das Interpretieren oder das Token fürs Compilieren? [Mittwoch, 5. Oktober 2011] [21:06:48] NOOP für interpretieren, LIT, für compilieren und nochmal LIT, für zum Literal machen. [Mittwoch, 5. Oktober 2011] [21:07:12] Bei normalen Wörtern EXECUTE COMPILE, und LIT, [Mittwoch, 5. Oktober 2011] [21:07:31] Bei Float dann NOP FLIT, und FLIT, [Mittwoch, 5. Oktober 2011] [21:07:38] Bei immediate EXECUTE EXECUTE LIT, [Mittwoch, 5. Oktober 2011] [21:08:06] Um die Anzahl der Parameter klein zu halten, könnte jeder Recognizer einen Pointer auf so ein Array mit den drei Methoden zurückliefern. [Mittwoch, 5. Oktober 2011] [21:08:31] Das ist eine "Factory", sagt mein Design-Pattern-Buch. [Mittwoch, 5. Oktober 2011] [21:08:49] Oder so halb, weil das Objekt ja zerlegt auf dem Datenstack übergeben wird ;-) [Mittwoch, 5. Oktober 2011] [21:09:03] Das heisst aber auch, das der Interpreter 2 von den drei Ergebnissen wegwirft und eines ausführt [Mittwoch, 5. Oktober 2011] [21:09:24] Dann lieber drei recognizerlisten, die je nach state aktiviert werden [Mittwoch, 5. Oktober 2011] [21:09:58] Dazu mach' ich ja dieses Brainstorming. [Mittwoch, 5. Oktober 2011] [21:10:28] Ich werd das Protokoll sicher auch noch mehr als einmal lesen ;) [Mittwoch, 5. Oktober 2011] [21:11:27] Irgendwie hab auch das Gefühl. das man damit so ziemlich jede OO Implementieren erschlagen könnte [Mittwoch, 5. Oktober 2011] [21:11:33] Das will ich auch. [Mittwoch, 5. Oktober 2011] [21:12:03] Also mit den (vielen|mehreren) Recognizerlisten in Verbindung mit ggf anonymous wordlists [Mittwoch, 5. Oktober 2011] [21:12:26] Das muss man auch nesten können. [Mittwoch, 5. Oktober 2011] [21:12:31] @saper: ist noch in Arbeit, Maerz oder April in den Niederlanden, mehr steht noch nicht fest. Habe gerade eine E-Mail aus den Niederlanden bekommen das die Kollegen dort sich am Samstag treffen und beraten [Mittwoch, 5. Oktober 2011] [21:12:50] stacks sollen dabei hilfreich sein [Mittwoch, 5. Oktober 2011] [21:13:07] Eine Klasse ist selbst ihr eigener Recognizer, der durchsucht dann wieder eine Reihe anonymer Wortlisten. [Mittwoch, 5. Oktober 2011] [21:13:22] http://www.denieuweklasse.de/ habe ich heute gefunden, gross genug und nicht zu teuer (99 Euro/WE mit Essen) [Mittwoch, 5. Oktober 2011] [21:13:22] [Mittwoch, 5. Oktober 2011] [21:13:57] Eine faszinierende Idee [Mittwoch, 5. Oktober 2011] [21:15:08] Wobei: Der durchsucht die anonyme Wordlist der Klasse selbst, und delegiert den Rest dann an den Recognizer der Superklasse ;-) [Mittwoch, 5. Oktober 2011] [21:16:08] oder der superklasse_n_ [Mittwoch, 5. Oktober 2011] [21:16:22] Wenn man multiple inheritance haben will, ja. [Mittwoch, 5. Oktober 2011] [21:17:20] Da ist dann auch sinnvoll, dass der Recognizer nur die halbe Arbeit macht: Um die sekundären Superklassen bei MI zu bearbeiten, muss man ja vorher und nachher den This-Pointer umrechnen. [Mittwoch, 5. Oktober 2011] [21:17:32] da muss man nur den Interpreter dazu bringen, diese Hierarchie der Recognizer zu bearbeiten [Mittwoch, 5. Oktober 2011] [21:18:22] eine einfache Liste ist das dann nicht mehr [Mittwoch, 5. Oktober 2011] [21:18:25] Oder dass zumindest die Datenstruktur der Recognizer so aufgebaut ist, dass man die einfach als Pointer übergeben kann. [Mittwoch, 5. Oktober 2011] [21:18:35] Für's Nesten braucht man den Nest-Recognizer-Recognizer. [Mittwoch, 5. Oktober 2011] [21:18:43] ;) [Mittwoch, 5. Oktober 2011] [21:18:59] YMMD [Mittwoch, 5. Oktober 2011] [21:19:01] Closures (also anonyme CREATE-DOES>-Wörter) braucht man ja auch. [Mittwoch, 5. Oktober 2011] [21:20:17] Ich habe ganz interessiert Mitgelesen, war gut! Muss jetzt aber weg, bis die Tage! Einen guten Abend noch [Mittwoch, 5. Oktober 2011] [21:20:23] Ciao! [Mittwoch, 5. Oktober 2011] [21:20:26] Ciao [Mittwoch, 5. Oktober 2011] [21:20:43] und so leid es mir tut, ich muss auch aufhören. [Mittwoch, 5. Oktober 2011] [21:20:43] Verlassen volksForth hat den Kanal verlassen (Ciao!). [Mittwoch, 5. Oktober 2011] [21:20:58] Also, dann gute Nacht, war sehr hilfreich, das Brainstorming. [Mittwoch, 5. Oktober 2011] [21:20:59] Aber ich bin gespannt, was Du draus machst [Mittwoch, 5. Oktober 2011] [21:21:06] Bis neulich [Mittwoch, 5. Oktober 2011] [21:21:09] Ciao! [Mittwoch, 5. Oktober 2011] [21:21:12] * BerndPaysan macht das Licht aus [Mittwoch, 5. Oktober 2011] [21:21:20] Beenden MatthiasT hat den Server verlassen ("/me geht dann mal").