** Protokolldatei gestartet *** Datum: Mi Okt 7 19:58:32 2009 [Mi Okt 7 2009] [19:58:32] Betreten Sie haben den Kanal #forth-ev betreten (~bernd@ppp-93-104-186-111.dynamic.mnet-online.de). [Mi Okt 7 2009] [19:58:37] Modus Kanalmodi: [Mi Okt 7 2009] [19:58:37] Hallo Matthias! [Mi Okt 7 2009] [19:58:54] Ah, Hallo Bernd! [Mi Okt 7 2009] [19:59:11] Da habe ich doch gleich den richtigen [Mi Okt 7 2009] [19:59:42] Wir hatten, IIRC schon mal drüber geredet, wo die Number Prefixes bezogen auf das Vorzeichen stehen sollten. [Mi Okt 7 2009] [19:59:50] Ichhabs aber vergessen :=( [Mi Okt 7 2009] [19:59:57] Ja: Erst Prefix, dann Vorzeichen. [Mi Okt 7 2009] [19:59:59] war das $-123 oder -$123 ? [Mi Okt 7 2009] [20:00:04] Ich hab's früher immer anders rum gemacht [Mi Okt 7 2009] [20:00:09] Deshalb geht bei mir jetzt beides. [Mi Okt 7 2009] [20:00:27] "bei mir" heisst bigforth? [Mi Okt 7 2009] [20:00:40] Und Gforth [Mi Okt 7 2009] [20:01:35] und die andere Frage: mit >number wird ja wirklich nur die Ziffernfolge gewandelt. Die Handhabung von . erfogt da wohl noch woanders? [Mi Okt 7 2009] [20:01:43] Ja. [Mi Okt 7 2009] [20:01:50] ist DPL da noch im Standard? [Mi Okt 7 2009] [20:01:55] >number ist nur ein ganz kleines Stück [Mi Okt 7 2009] [20:02:02] AFAIK ist DPL nicht im Standard. [Mi Okt 7 2009] [20:03:03] Und zum dritten: Es gab mal die Idee des recognizers, falls der Interpreter nicht mehr weiterweiss und es noch vielleicht Regeln geben könnte, das Wort noch umzuwandeln. [Mi Okt 7 2009] [20:03:21] http://groups.google.de/group/comp.lang.forth/msg/f70a9ea205b5b75a?hl=de [Mi Okt 7 2009] [20:03:45] Die Idee ist mir ja sympatisch, nur habe ich nie wieder was davon gehört [Mi Okt 7 2009] [20:03:58] Ja, das ist mal wieder versandet. [Mi Okt 7 2009] [20:04:10] Insb könnte ich mir vorstellen, das als Namens-Faktory zu gebrauchen. [Mi Okt 7 2009] [20:04:24] Ja, Dot-Parser oder so. [Mi Okt 7 2009] [20:04:28] Jupp [Mi Okt 7 2009] [20:04:50] byte34.bit6 müsste man dann nicht alles von hand definieren.. [Mi Okt 7 2009] [20:05:12] nur so auf Verdacht hin.... (bei den Mikros haben viele Bits einen eigenen Namen..) [Mi Okt 7 2009] [20:20:21] Ich glaube, so eine Struktur wie die Recogniser sollte man erst mal in einer Referenz-Implementierung gründlich austesten. [Mi Okt 7 2009] [20:20:24] Also in Gforth z.B. [Mi Okt 7 2009] [20:21:06] Unsere Nutzer werden uns dafür sicher wieder an die Gurgel springen, wenn wir schon wieder die Internas des äußeren Interpreters ändern. [Mi Okt 7 2009] [20:22:01] wieso? Man kann den recognizer doch als deferred word ausbilden, per default sende exception "not found" [Mi Okt 7 2009] [20:22:27] Das wäre der angeflanschte recogniser. [Mi Okt 7 2009] [20:22:30] Wer was intelligenteres haben will, kann sich da bequem einhängen [Mi Okt 7 2009] [20:22:45] Die Idee von Anton geht eigentlich weiter, der will den äußeren Interpreter über Recogniser implementieren. [Mi Okt 7 2009] [20:23:03] Also: Man hat einen Recogniser "search order stack" [Mi Okt 7 2009] [20:23:29] Naja, möglich ist das schon. [Mi Okt 7 2009] [20:23:48] Und da hängt man dann einmal "search order stack" und "number conversion" ein. [Mi Okt 7 2009] [20:23:54] Die word-lists sind ja eigentlich auch nichts anderes [Mi Okt 7 2009] [20:24:02] Genau. [Mi Okt 7 2009] [20:24:16] Die Word-Lists sind eben dann recogniser vom Typ "wordlist" [Mi Okt 7 2009] [20:24:28] Und werden im search order stack gestapelt. [Mi Okt 7 2009] [20:24:34] Und Du meinst, der Anwender würde es merken? ;=) [Mi Okt 7 2009] [20:24:51] Die Anwender, die jetzt mit NOTFOUND und PARSER1 und so arbeiten, ganz sicher. [Mi Okt 7 2009] [20:25:07] Wer nur einfach normales Forth schreibt, würde nichts merken. [Mi Okt 7 2009] [20:25:12] Aber wer macht das schon ;-) [Mi Okt 7 2009] [20:25:49] ach, vielliecht viele? [Mi Okt 7 2009] [20:26:07] Aber beschweren tun sich immer die wenigen, die Probleme haben ;-) [Mi Okt 7 2009] [20:26:40] Zufiredene User gibt es keine, das stimmt. VOn denen hört man nie. [Mi Okt 7 2009] [20:27:07] Wobei ich sagen muss, dass mir die Leute mit Problemen, die sich dann auch beschweren, erheblich lieber sind, als die, die nur heimlich meckern, und hintenrum verbreiten, wie schlecht das System xxx denn ist. [Mi Okt 7 2009] [20:27:19] Full ACK. [Mi Okt 7 2009] [20:27:20] Betreten Martin_53 hat den Kanal betreten (-martin@p5B38678E.dip.t-dialin.net). [Mi Okt 7 2009] [20:27:24] Hallo Martin! [Mi Okt 7 2009] [20:27:28] Grüß Euch alle! [Mi Okt 7 2009] [20:27:35] Hallo Martin! [Mi Okt 7 2009] [20:27:46] Habt Ihr schon ein Thema? [Mi Okt 7 2009] [20:28:12] Wir reden gerade über recognizer [Mi Okt 7 2009] [20:28:17] http://groups.google.de/group/comp.lang.forth/msg/f70a9ea205b5b75a?hl=de [Mi Okt 7 2009] [20:29:08] Wie man (4th) Nummern erkennt? [Mi Okt 7 2009] [20:29:21] Das Thema haben wir schon durch. [Mi Okt 7 2009] [20:29:24] Hat doch der Bernd auch in seiner number_chain [Mi Okt 7 2009] [20:29:25] Vordergründig [Mi Okt 7 2009] [20:29:49] Es geht mehr darum, wie man generell alle möglichen Sachen parst, und das als modifizierbare Struktur in Forth einbaut. [Mi Okt 7 2009] [20:30:04] Ich würd mich aber auch um Dinge wie REGISTER.7 freuen [Mi Okt 7 2009] [20:30:23] wo dann eine Regel existiert, die die 7 als Bitnummer erkennt [Mi Okt 7 2009] [20:30:41] Frage: Wie sehen denn auf dem AVR Bit-Adressen aus? [Mi Okt 7 2009] [20:30:55] so wie sonst auch? [Mi Okt 7 2009] [20:30:56] Mhm - dann muss man ja jede menge weiterer Delimiter einführen [Mi Okt 7 2009] [20:31:10] Na, beim 8051 sehen die ziemlich krank aus... [Mi Okt 7 2009] [20:31:26] Wo wir bei Mikros sind ... [Mi Okt 7 2009] [20:31:26] Da kann man auf jede 8. Speicherstelle bitweise zugreifen... [Mi Okt 7 2009] [20:31:39] Auf die anderen nicht... [Mi Okt 7 2009] [20:31:41] In der AVR Basic-Variante kann man PORTA.7 schreiben und dann "weiss" der Compiler, was zu tun ist [Mi Okt 7 2009] [20:31:51] Ja, das ist schon schön. [Mi Okt 7 2009] [20:32:06] ich habe für meine lieben kleinen einen Modellmotor entworfen, den sie tatsächlich nachbauen können. Darauf habe ich _sehr_ großen Wert gelegt ... [Mi Okt 7 2009] [20:32:12] in amforth würde das endlose und weitgehend nutzlose wortdefinitionen erfordern [Mi Okt 7 2009] [20:32:18] Aber in Forth kann man ja Wörter .0 bis .7 definieren, und dann PORTA .5 machen. [Mi Okt 7 2009] [20:32:31] jaaaa, aber immer ans Leerzeichen denken [Mi Okt 7 2009] [20:32:40] Ja klar. [Mi Okt 7 2009] [20:32:54] und .7 würde dann als doppelt genaue Zahl kommen,..... endlose Fehlerquellen [Mi Okt 7 2009] [20:32:54] Oder jede Menge Delimiter ... [Mi Okt 7 2009] [20:33:24] Nö, nur einen Recognizer [Mi Okt 7 2009] [20:33:31] der das Format erkennt und passend zerlegt. [Mi Okt 7 2009] [20:33:34] Das hatten wir mal: Da hatte jemand 64 als Wort definiert. Das wurde dann niemals mehr an Number übergeben. [Mi Okt 7 2009] [20:33:50] Als die Basis gewechselt wurde, gin es ganz schön schief. [Mi Okt 7 2009] [20:33:52] : 42 37 ; [Mi Okt 7 2009] [20:34:22] Hat einen Vorteil: BASE ist egal :=)) [Mi Okt 7 2009] [20:34:31] decimal 64 Constant 64 . [Mi Okt 7 2009] [20:34:31] hex 64 . [Mi Okt 7 2009] [20:34:31] dnach [Mi Okt 7 2009] [20:35:28] ... aber weiter mit dem Motormodell ... da dreht man eine Kurbel und sieht wie schön die Kolben hoch und runter gehen .. [Mi Okt 7 2009] [20:36:20] ... ich habe es jetzt auf die Spitze getrieben ... mit einem kl. Kompressor Druckluft in die Zylinder und die Kurbel dreht sich ... [Mi Okt 7 2009] [20:37:42] ... leider nur hin und her ... trotz Schwungrad komme ich nicht über den Totpunkt hinweg ... mein kleines mechanisches 3-Wege-Ventil hat dafür die falschen Steuerzeiten ... [Mi Okt 7 2009] [20:38:28] ... kennt Ihr / wißt Ihr von elektrisch ansteuerbaren (Druck)luftventilen ... da wäre ich mit den Steuerzeiten sehr flexibel ... [Mi Okt 7 2009] [20:39:03] Lichtschranke ... Microcontroller ... Ventil ... [Mi Okt 7 2009] [20:39:07] das ist Hardware ;=) (nein, keine Ahnung) [Mi Okt 7 2009] [20:39:28] Bei Dampfmaschinen ging das mit einem einfachen mechanischen Schieber, der um 90° phasenversetzt geschoben wurde. [Mi Okt 7 2009] [20:39:33] Das müsste mit Druckluft auch gehen. [Mi Okt 7 2009] [20:39:56] müsste ... [Mi Okt 7 2009] [20:40:01] Oder mehr Schwungmasse [Mi Okt 7 2009] [20:40:14] Mit "müsste" meine ich "geht ganz bestimmt" [Mi Okt 7 2009] [20:40:19] Dampf=Druck [Mi Okt 7 2009] [20:40:25] Nur halt keine Luft. [Mi Okt 7 2009] [20:40:28] Das weiß ich :-) [Mi Okt 7 2009] [20:41:23] Zum Einsteig ist dann sicher die Szene aus der Feuerzangenbowle dran " wat issn dat, die Dampfmaschin... auf der einen Seite....." ;=)) [Mi Okt 7 2009] [20:41:58] Ist halt nur so, dass ich mein 3-wege-Ventil mit einem Akkuschrauber 'drehe' und der Motor folgen 'soll'. D.h. die richtige Phasenlage zu treffen ist nicht leicht. [Mi Okt 7 2009] [20:42:29] Das geht so natürlich nicht - guck' dir lieber eine Dampfmaschine an, und bau das nach. [Mi Okt 7 2009] [20:42:37] dreht der Schrauber (handgeregelt) zu schnell, wirkt das wie eine Frühzündug. [Mi Okt 7 2009] [20:43:05] Klar. [Mi Okt 7 2009] [20:43:09] Nein, das wäre ein neues Projekt. [Mi Okt 7 2009] [20:43:36] Du musst nur das Schwungrad und das Ventil richtig zusammenbauen, dann passt alles. [Mi Okt 7 2009] [20:43:52] Den Akku-Schrauber brauchst du gar nicht. [Mi Okt 7 2009] [20:44:05] Wechselnde Drehzahlen wären auch eher als "hohe Kunst" anzusehen [Mi Okt 7 2009] [20:44:10] Hier geht es darum: Baue und erkenne das Prinzip eines Kurrbeltriebs und lerne ein paar Fachbegriffe. [Mi Okt 7 2009] [20:45:12] Die 90°-Steuerung funktioniert bei jeder Drehzahl. [Mi Okt 7 2009] [20:45:31] Also, die Kraft, die der 'Motor' bringt, reicht nicht aus um das Ventil zu Steuern. Es ist wie ein hahn-Küken-Teil aufgebaut und das 'Küken' sitzt sehr stramm, damit es auch dicht genug ist. [Mi Okt 7 2009] [20:46:16] Die 90°-Steuerung funktioniert bei jeder Drehzahl. Stimmt! Erst wenn man zu hoch dreht, zerlegt sich der Motor ... [Mi Okt 7 2009] [20:46:54] Das ist auch den ersten Dampfrennfahrern so gegangen ;-) [Mi Okt 7 2009] [20:47:11] Oder wenn der Druck im Kessel zu hoch ist... bumm... [Mi Okt 7 2009] [20:47:37] Naja - ist nur ein Versuch. Stirbt keiner wenn es das nicht gibt. Aber säh' schon toll aus, ein Modellmotor der 'richti' läuft. [Mi Okt 7 2009] [20:48:02] Kesselexplosionen waren häufiger. Gußeisen! [Mi Okt 7 2009] [20:48:42] Wer macht denn einen Kessel aus Gusseisen? Gab's damals noch keine Walzstraßen? ;-) [Mi Okt 7 2009] [20:49:06] Nein. [Mi Okt 7 2009] [20:49:18] Damals war alles besser [Mi Okt 7 2009] [20:49:30] da wurden die Kessel noch aus einem Stück gefeilt [Mi Okt 7 2009] [20:49:35] vom Meister :=) [Mi Okt 7 2009] [20:49:37] Sogar die Mikros warne größer! [Mi Okt 7 2009] [20:50:11] Vernietete Gußplatten oder Ringe. [Mi Okt 7 2009] [20:50:31] Ups gussplatten. [Mi Okt 7 2009] [20:51:03] Ok! zurück zum parser? [Mi Okt 7 2009] [20:51:55] Der ist ja wohl eine hoch belastete Routine und sollte kurz und schnell sein - oder? [Mi Okt 7 2009] [20:52:04] Klar. [Mi Okt 7 2009] [20:52:06] Nicht wirklich [Mi Okt 7 2009] [20:52:24] Ha - eine eindeutige Meinung! [Mi Okt 7 2009] [20:52:25] Wobei das in Forth ja nicht wirklich das Problem ist. [Mi Okt 7 2009] [20:52:28] :-) [Mi Okt 7 2009] [20:52:40] wann läuft denn der Parser? [Mi Okt 7 2009] [20:52:51] Beim Compilieren/Interpretieren [Mi Okt 7 2009] [20:52:53] doch nur, wenn ohnehin Zeit ist [Mi Okt 7 2009] [20:52:54] in 'find' praktisch immer? [Mi Okt 7 2009] [20:53:16] Na, ich bin schon froh, dass Forth-Programme praktisch im Null-Komma-Nix übersetzt werden. [Mi Okt 7 2009] [20:53:17] Eben, interaktiv [Mi Okt 7 2009] [20:53:57] Bei meinen Forth-Sachen ist die serielle Schnittstelle entscheident [Mi Okt 7 2009] [20:54:24] Bei gehosteten Systemen bremst die nicht. [Mi Okt 7 2009] [20:54:51] bigForth braucht für das ganze Compilieren von MINOS so je nach CPU 0,1 bis 0,2 Sekunden. [Mi Okt 7 2009] [20:55:03] Das make-Drumherum braucht länger ;-) [Mi Okt 7 2009] [20:55:37] Dabei soll's schon bleiben. [Mi Okt 7 2009] [20:56:17] Naja, ein AMD mit wasweissichvielen GHz ist doch eine andere Baustelle als ein 8bitter mit 10MHz [Mi Okt 7 2009] [20:56:41] Und da sind selbst 0,1 Sekunde für den ganzen Code schon arg langsam, oder nicht? [Mi Okt 7 2009] [20:56:50] Was liefert die Platte? [Mi Okt 7 2009] [20:57:18] Alles im Cache. [Mi Okt 7 2009] [20:57:20] Der parst ja auch in der Regel auch nur während der Entwicklung. (Der 8bitter) [Mi Okt 7 2009] [20:57:36] bigforth macht das doch hoffentlich auch?? [Mi Okt 7 2009] [20:57:54] Klar [Mi Okt 7 2009] [20:58:12] Aber weil es schnell genug compiliert, bleibt vieles einfach Source. [Mi Okt 7 2009] [20:58:15] Hätt mich auch sehr verwundert [Mi Okt 7 2009] [20:58:35] Soll ja auch so bleiben [Mi Okt 7 2009] [20:59:24] Aber ich denke nicht, das der äußere Interpreter durch die recognizer langsamer wird [Mi Okt 7 2009] [20:59:24] die laufen ja nur im"Fehlerfall" an [Mi Okt 7 2009] [20:59:53] Nein, die Idee von Anton ist, den ganzen Interpreter über zusammengesteckte recognizer zu implementieren. [Mi Okt 7 2009] [21:00:30] Und selbst das wird keine Performanceinbussen bringen. [Mi Okt 7 2009] [21:00:44] Ich denke auch nicht, dass man das groß merkt. [Mi Okt 7 2009] [21:01:17] Und schon gar nicht, wenn man erst noch gcc anwerfen muss (wie gforth das wohl neuerdings machen kann) [Mi Okt 7 2009] [21:01:17] Der Aufruf des Recognizers ist im Verhältnis zu der Arbeit, die der machen muss, klein. [Mi Okt 7 2009] [21:02:04] GCC anwerfen: Da wird das Ergebnis auf jeden fall gecachet. [Mi Okt 7 2009] [21:02:26] was man bei recognizern ja durchaus auch machen kann [Mi Okt 7 2009] [21:02:45] Hm, nicht wirklich wünschenswert. [Mi Okt 7 2009] [21:03:00] Ich habe mal mit FIND und Cache experimentiert [Mi Okt 7 2009] [21:03:12] FIND und Hash war viel schneller... [Mi Okt 7 2009] [21:03:40] Mein Usecase würde wahrscheinlich profitieren [Mi Okt 7 2009] [21:04:26] byte8.7 würde einmal zerlegt werden, danach würde ein neues Wort (eben byte8.7) in einem passenden Wordlist stehen und der recognizer würde sich die Arbeit des Stringzerlegens keinzweites mal machen müssen [Mi Okt 7 2009] [21:04:43] Was ist mit solchen Bandwürmern wie Dialog13.fenster5.kind6.button4.text ? [Mi Okt 7 2009] [21:04:52] das gleiche [Mi Okt 7 2009] [21:05:00] Für jede mögliche Kombination eine Wort? [Mi Okt 7 2009] [21:05:13] So sie mal im Quelltext benutzt wird, ja [Mi Okt 7 2009] [21:05:18] Ja gut - erst wenn es gebraucht wird ... [Mi Okt 7 2009] [21:05:45] deswegen halte ich die Idee ja für so charmant [Mi Okt 7 2009] [21:06:20] Man hat Worte zur Hand die es zwar nicht gibt, die man aber benutzen kann [Mi Okt 7 2009] [21:07:15] Dann stimmt das was Anton geschrieben hat: eine Reihe von Recognizern, die nacheinander arbeiten. [Mi Okt 7 2009] [21:07:38] "ich komme erst dran, wenn die vor mir gefehlt haben!" [Mi Okt 7 2009] [21:07:39] Inkl. OO Erweiterungen [Mi Okt 7 2009] [21:08:40] Mhm - wird mir zu komplex. Welche Seiteneffekte gibt es - wie kann ich sicher sein, die alle ausgeräumt zu haben? [Mi Okt 7 2009] [21:09:12] Da muss ich als Mensch ja höllisch aufpassen: [Mi Okt 7 2009] [21:09:16] Ist komplex, ja. Aber man muss es ja nicht zum Exzess kommen lassen. [Mi Okt 7 2009] [21:09:34] Aber die Grundstruktur ist einfach [Mi Okt 7 2009] [21:09:55] Angenommen ich habe mir ein Wort definiert grün.formular ... [Mi Okt 7 2009] [21:11:19] Parallel hat der Bernd vielleicht schon in seinen 20T words ein Objekt formular, das schon eine Methode grün kennt (Ist an den Haaren herbeigezogen. Aber auf die schnelle ...) [Mi Okt 7 2009] [21:11:35] Eher anders [Mi Okt 7 2009] [21:11:58] Du hast ein Wort grün definiert [Mi Okt 7 2009] [21:12:01] dann rufst Du grün.formular auf [Mi Okt 7 2009] [21:12:15] bislang brauchst Du ein Wort grün.formular [Mi Okt 7 2009] [21:13:01] mit einem passenden (!) recognizer würde der Interpreter erkennen, das grün eine Objektinstanz ist und formular eine dazugehörende Methode. [Mi Okt 7 2009] [21:13:08] Das weiß ich. Mein Beispiel war wohl nicht gut genug. [Mi Okt 7 2009] [21:13:16] Die dann passend zusammengebracht werden. [Mi Okt 7 2009] [21:13:43] (oder eine fehlemeldung: grün does not support method formular) [Mi Okt 7 2009] [21:14:37] Jepp: ich träume gerade und überlese die Fehlermeldung? Frag' den Bernd ich mach so etwas. [Mi Okt 7 2009] [21:14:46] Ich versuche es noch einmal: [Mi Okt 7 2009] [21:15:02] Der Clou ist aber, das eine Schnittstelle gibt, die aus der Fehlermeldung "grün.formular not found" die BEstandteile exztrahiert und dann neu anfängt [Mi Okt 7 2009] [21:15:39] Das Konzept geht davon aus, das die höher liegenden Recognizer versagen, damit die tieferliegenden dran kommen. [Mi Okt 7 2009] [21:16:27] Kann ich ausschließen, dass es mehrdeutige situationen gibt, in denen ein höherliegender Recognizer 'anspricht' obwohl er nicht gemeint ist? [Mi Okt 7 2009] [21:16:54] first come first serve [Mi Okt 7 2009] [21:17:12] Ich sehe da vergleiche zum Type-checking. [Mi Okt 7 2009] [21:18:32] Entweder ist es in 'meinem' Kopf - dann brauche ich keines. Oder ich habe mich so daran gewöhnt, dass ich es für normal halte. [Mi Okt 7 2009] [21:19:36] Und dann brauche ich extra Routinen zum Typewandeln. [Mi Okt 7 2009] [21:20:03] Da sehe ich kaum Bezug zum Recognizern, oder nur seeeehr komplizierte [Mi Okt 7 2009] [21:20:27] Naja ist alles Gewöhnungssache. Und so ein Stack von Recognizern hat etwas für sich. [Mi Okt 7 2009] [21:20:49] Stack => Liste [Mi Okt 7 2009] [21:20:58] jawohl. [Mi Okt 7 2009] [21:21:37] fein. [Mi Okt 7 2009] [21:22:00] Dann reconize ich mal die Dunkelheit draussen und bis neulich dann:=) [Mi Okt 7 2009] [21:22:02] Bernd - schreibst du schon welche? :-) [Mi Okt 7 2009] [21:22:08] Adele [Mi Okt 7 2009] [21:22:12] Beenden MatthiasT hat den Server verlassen ("Adele "). [Mi Okt 7 2009] [21:22:19] I recon you too. [Mi Okt 7 2009] [21:22:28] Ach er war schon weg. [Mi Okt 7 2009] [21:22:54] Bernd - dann bin ich auch weg. [Mi Okt 7 2009] [21:22:55] CU [Mi Okt 7 2009] [21:23:03] Ciao [Mi Okt 7 2009] [21:23:17] Verlassen Martin_53 hat den Kanal verlassen.