00:00:00 --- log: started forth/06.07.21 00:01:22 --- quit: JasonWoof ("off to bed") 00:51:51 --- join: virl (n=blah@vie-086-059-017-040.dsl.sil.at) joined #forth 01:08:27 --- nick: Quiznos -> LabelModicum 01:11:38 --- nick: LabelModicum -> Quiznos 02:30:00 --- join: vatic (n=charlest@pool-162-83-254-201.ny5030.east.verizon.net) joined #forth 04:05:25 --- quit: virl (Remote closed the connection) 04:52:17 --- join: PoppaVic (n=pete@0-1pool47-31.nas30.chicago4.il.us.da.qwest.net) joined #forth 04:58:57 --- quit: ohub (kornbluth.freenode.net irc.freenode.net) 05:01:57 --- quit: docl (kornbluth.freenode.net irc.freenode.net) 05:03:21 --- quit: uiuiuiu (kornbluth.freenode.net irc.freenode.net) 05:03:21 --- quit: virsys (kornbluth.freenode.net irc.freenode.net) 05:04:58 --- join: uiuiuiu (i=ian@dslb-084-056-232-222.pools.arcor-ip.net) joined #forth 05:05:33 --- quit: PoppaVic (kornbluth.freenode.net irc.freenode.net) 05:05:39 --- join: virsys (n=virsys@or-71-53-74-48.dhcp.embarqhsd.net) joined #forth 05:06:30 --- join: PoppaVic (n=pete@0-1pool47-31.nas30.chicago4.il.us.da.qwest.net) joined #forth 05:09:11 --- quit: k4jcw (kornbluth.freenode.net irc.freenode.net) 05:09:55 --- join: k4jcw (n=jcw@adsl-065-006-151-062.sip.asm.bellsouth.net) joined #forth 05:13:59 --- join: ohub (n=oherrala@sikw1.oulu.fi) joined #forth 05:29:48 --- quit: vatic ("Chatzilla 0.9.71 [Firefox 1.5.0.4/2006050817]") 05:50:34 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 05:51:15 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 06:06:54 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 07:03:04 --- nick: nighty -> nighty- 07:04:09 --- nick: nighty- -> nighty 07:06:48 HELP!!! 07:07:07 i'm tryin to code up an `enum' word akin to c++'s 07:07:09 are you drowning? 07:07:19 1000 07:07:22 1100 07:07:27 1101 07:07:29 :) 07:07:43 what are you seeking? 07:08:10 in forth? C? Yer hollers are as irksome as the debate in ##C 07:08:15 enum is followed by one or more space-delimited words upto a ; and each word is created as a const and its value set sequentially starting from 0 07:08:23 oh, lord 07:08:25 blablabla Vic :) 07:08:28 You mean for forth 07:08:40 it's fast, it's simple, it's straight sideways :) 07:08:49 that-a way 07:08:53 <--> 07:08:54 heh 07:08:57 you need an immediate word with a wordlist. 07:09:02 yea 07:09:19 a compile-time word 07:09:29 it parses a term, the term relates to a bitset of a size that is shoved to the stack 07:09:40 "bitset"? 07:09:46 meaning what? 07:09:51 brb coffee lackage 07:10:03 well, enum can be anything - sequencial or just bits. 07:10:55 The kicker is the symbol related to the set 07:11:19 Quiznos, I made an enum word, behaves like this: 07:11:19 0 enum{ FOO BAR BAZ BLAH POPPAVIC } 07:11:47 mad: the '0' is a base? 07:12:11 "baseline", I mean 07:12:17 or offset 07:12:40 Yep, the starting value. 07:12:52 Quiznos: using a wordlist or voc makes it easy. 07:13:04 former neighbor is on the land and she wants to chat with me, bbiaf 07:13:11 whatever 07:13:12 sorry vic, asynch real life 07:13:21 thanks for your help 07:13:34 madwork {} looks good 07:13:40 yep 07:13:42 nice 07:14:03 cool ok, i'll be boq soon 07:14:27 Here's my implementation: 07:14:28 : enum{ ( n -- n+1 ) 07:14:28 begin 07:14:28 token dup "}" $= 0= 07:14:28 while 07:14:28 " constant " swap $cat over swap $cat evaluate 1+ 07:14:30 repeat 07:14:32 2drop 07:14:34 ; 07:14:49 Using my own Forthy language, but you can take it from there. ;) 07:14:58 Where's yer wordlist, voc? 07:15:15 the way i see it folks, either ANS is a straight jacket or a guide to forming similar functionality of code and kernels. I choose the latter 07:15:38 plus i take from other languages what works, makes my life easier and translates well to idiomising into forth. 07:15:39 Quiznos, I agree. I refer to ANS for a guideline when creating my own wordsets. 07:15:43 I personally see ANS as a guideline 07:15:44 agreed 07:15:48 dont shrug 07:15:55 07:15:55 you might lock up that way 07:15:58 It's like GUI guidelines 07:15:59 rood 07:16:02 bbs 07:29:21 : enum ( n "name" -- n+1 ) dup constant 1+ ; 07:29:25 0 enum thing1 07:29:27 enum thing2 07:29:28 drop 07:29:53 bit more wordy, and it needs a better name, but... 07:30:07 I made a version like that too. yea, simpler: 07:30:07 : enum ( n -- n+1 ) 07:30:07 dup constant 1+ 07:30:07 ; 07:30:59 : enum; drop ; 07:33:43 hmm...actually you could just use CONSTANT for the last one 07:33:48 then you wouldn't need the DROP 07:34:04 0 enum thing1 07:34:06 enum thing2 07:34:12 constant #things 07:35:14 he wants a type called enum - with names for that set 07:35:24 sez you 07:36:14 tathi: yer mother wears army-boots! ;-) 07:37:31 hehe 07:40:13 seriously though, Quiznos didn't say anything about a "type"; he just asked for sequentially numbered constants. 07:40:22 I know 07:40:42 But he bailed too fast to clarify enum ONCE versus many 07:41:34 And, I despise folks that expand the base namespace instead of realizing they need to create multiples. 07:42:54 well, that's a personal preference 07:43:19 besides, the simple solution doesn't preclude him putting the constants in some special wordlist 07:43:52 you would just have to set the compilation wordlist to whatever you want beforehand 07:44:32 yeppers, no args 07:44:43 we'll know later, I am sure 07:45:35 know what later? 07:46:16 tathi: what he meant or wanted 07:46:50 I don't see much ambiguity in what he said he wanted 07:46:55 enum is followed by one or more space-delimited words upto a ; and each word is created as a const and its value set sequentially starting from 0 07:48:08 tathi: ahh, so - he meant the base voc. 07:55:23 tathi: apparently, he has never heard of verbs versus adjectives and such. Interesting. 07:56:44 ? 07:56:52 He didn't once mention vocabularies. 07:57:24 yeah, my bad - I felt he wanted an "enum" TYPE 07:58:02 we'll hear from him later and find out if we understood 07:58:57 He just said enum word akin to C++'s. 07:59:06 yep 07:59:31 Anyway, i don't like too many vocabularies and nested shit. It's just hard to navigate. 07:59:38 enum is a type in c and c++ - I don't know precisely what he wanted: a quick-fix or a does> 08:00:15 I prefer more and smaller vocs. Or namespaces. I just debate the order-setup 08:00:22 ..and duration 08:00:28 ..and scope 08:00:50 Well, depending on how the vocabulary words are set up, it can be workable. 08:00:59 I'm lately leaning towards two different behaviours. 08:01:15 My vocabularies are always immediate. 08:01:29 OK.. Say on, I'm nearing that bollix 08:02:01 And, I implicitly set search and compile to the same thing. 08:02:24 Then, I use { and } for ALSO and voc pop. 08:02:39 Would words designed to parse ONE more or a PHRASE more be an issue? 08:02:54 yeah, I've been thinking of blocks myself 08:02:54 I don't see why. I never use 'em anyway. 08:04:00 well, I keep thinking of several languages beyond forth or C. C wants them universal, forth (as a rule) does the same. Breakout is not a bad thing, (see structs, unions, enum) 08:04:11 contexts 08:04:40 This scheme is kinda nice, because I can just do this sort of thing: 08:04:40 : foo 123 { math 456 + } ; 08:05:28 { myvoc 08:05:28 : foo ... ; 08:05:28 : bar ... { math / } ; 08:05:28 } 08:05:31 can you typify that for me? 08:05:45 that's kind of neat 08:05:51 what was 'math'? 08:05:55 Just an example. 08:06:16 looked pseudo-lispish 08:06:22 Yea. It allows for easy, dynamic nested vocabularies, with a nice visual representation. 08:06:50 And since the vocs are immediate, there's no runtime overhead or anything. 08:06:53 yep. THat's what I need next - when I can figure out core dlopen/install/overload 08:07:34 madwork: most can't envision "preprocess RT" and "process compile" and "process execute" 08:07:50 I see it in ##C all the time 08:08:09 Forth would the ultimate preprocessor for any of those languages. 08:08:16 Just imagine. 08:08:28 you could get much of the language malleability from Forth into C++, etc. 08:08:31 I'm working on it, I'm working on it! 08:08:34 Heh. 08:08:53 The reason the dlopen shit is bugging me. 08:09:04 The other way i like to use the immediate vocabularies is without nesting... the behaviour is more like directory navigation, really. 08:09:40 I want the core from a dll/plugin - users could write overloads/replacements. I am also thinking about forgetting the ancient "forget" 08:09:59 { : myword FOO BAR BAZ bazword FOO BAR barword FOO fooword ; } 08:10:05 I like FORGET. 08:10:15 yeppers, but parsing is beginning to bug me a truffle 08:10:45 But, I'm thinking of having a more intelligent hash-tabled dictionary with some simple management so I can redefine or delete previously defined words without blowing away the rest of the dict. 08:10:49 madgarden: great for secondaries and no deferred refs into the forget - otherwise, it's a LOT of accounting and checking. 08:11:26 Yea, but that checking can be done at compile time. 08:11:40 Any undefined/deleted words that are still referenced can be set to ABORT. 08:12:01 --- join: JasonWoof (n=jason@c-71-192-33-206.hsd1.ma.comcast.net) joined #forth 08:12:01 --- mode: ChanServ set +o JasonWoof 08:12:08 Yeah, I still think I need to set it up to use dbopen - No, compile-time wou;ld not be exec-time, and forget is usually done from console. It makes it all the more difficult. 08:12:33 Yep. 08:13:02 madwork: yer assuming that all dtor() set abort() on forwarded ptrs. 08:13:11 ..or restore them 08:13:12 back. 08:13:18 what did i miss? 08:13:35 Q: debate on yer vague q and a lot of debate 08:13:50 coolies 08:14:12 madwork was successful 08:14:17 i liked that solution 08:14:41 PoppaVic, not sure what you're talking about. When a word is FORGETted, it effectively decompiles each address and does refcounting on the referenced word. If a word being forgotten is ref'ed, then the CFA can be set to an ABORT code and the word is not deleted (thought the code can be). 08:14:47 Quiznos, YAYS! :D 08:15:47 heh 08:16:40 Quiznos, I was also describing a similar "syntax" for vocabulary usage. 08:17:45 howso? 08:17:58 i wanna use FIG's original vocabulary words and semantics 08:18:13 the links to previous-voc and last word are in the vocabulary's word 08:18:16 Ahh. yea, mine's a fair bit different, but logical and clean, I think. 08:18:21 esplain it? 08:18:49 f83 and voc-stacks do not lend themselves to be dynamic loading afaik 08:18:58 and newer * 08:19:07 Oh, at that level... yea, I just have a voc field in each word that points to its voc word. Nice and easy, and I can trace parentage simply and such. 08:19:11 But anyway, the syntax... 08:19:18 kk 08:19:31 Yes,I use a voc stack, and all the vocs are immediate. 08:19:37 k 08:19:43 { is voc.push, and } is voc.pop 08:19:48 k 08:20:07 So then... 08:20:07 : foo 123 { float 456 / } ; 08:20:37 i dont get it, to what voc is { activating? 08:20:53 { is not activating a voc, it's the same as ALSO. 08:20:57 ah 08:21:04 } pops the voc stack 08:21:10 k 08:21:17 So in my example, FLOAT is the vocabulary. 08:21:18 of which voc? 08:21:21 ok 08:21:32 } just drops the top of the voc stack 08:21:32 madwork you're not very linear, are you? :)- 08:21:37 heh 08:21:42 In my explanations, no. ;) 08:21:45 heh 08:22:01 Sorry, I'm the absent-minded mad inventor type. 08:22:12 i'm gonna start fixing eforth 1.0e to be more iAPX specific 08:22:15 gotcha 08:22:32 add some asm code sans the voc to get at the processor 08:22:42 the easy stuff at first, but with enum, that's made alot easier 08:22:48 So anyway, it lets you easily create scope blocks for defining new words, as well as accessing wordsets. 08:22:50 ty for that!!!11elevenone 08:22:59 Ahh, cool. :) 08:23:02 No problemo. 08:23:19 ok so it's { definitions? calls? } 08:23:25 Did we get somewhere? 08:23:29 no 08:23:30 :) 08:23:53 voc will replace the topmost ORDER setting. 08:24:21 current/context issues 08:25:38 Consider instead: ... .... 08:25:55 n+1) begin token dup "}" $= 0= while " const " swap $cat over swap $cat evauluate 1+ repeat 2drop ; 08:25:58 oops 08:26:02 Quiznos, yep. 08:26:09 well, madwork i wanna ask about that code 08:26:14 yep 08:26:15 lemme get the head of it 08:26:18 You can put definitions in the block, or use the block inside of a definition. 08:26:26 : enum 08:26:27 heh 08:26:32 dum gpm 08:26:47 It's amazing how depressing " or ' and such are 08:27:36 parse a word, dup enum-value, ~ != "}" loop on building a const declaration and eval it at compile time? 08:28:01 i'm mixing perl/awk at the ! ~= point 08:28:05 not matching 08:28:14 Heh. 08:28:27 Yea, I'm doing a string compare of each token, and ending when it matches "}" 08:28:33 i'm getttin a woody thinkin of the possibilities 08:28:56 And yes, it creates a constant string which is then evaluated at compile-time. 08:29:01 okidoke 08:29:22 brb, must focus on work for a bit. ;) 08:29:27 kk ty 08:29:58 i dreamin of porting GNU to Forth :) 08:30:03 it's only write 08:30:12 at least the concepts 08:30:16 replace emacs 08:30:17 lol 08:30:19 and bash 08:30:24 I would suggest just returning values of the enum, and you must or/and/mask 08:30:33 with what? 08:30:57 the usual: enum foo enum bar | enum snafu & 08:31:03 in terms of yaccd grammer you mean split up the rules and make separate words? 08:31:30 except 'enum' becomes a keyword, and you'd talk about the SET of an enum 08:31:36 ok 08:31:42 so, 08:31:48 enum word+ 08:32:26 `_enum' would handle one word and loop on multiple words? 08:32:38 enum would loop until sentinel? 08:33:05 i like that better for proper factoring and language design 08:33:14 try, enum ofbyte { one two three } and then ofbyte one ofbyte two | ofbyte three & 0<> ... 08:33:59 there are many, many ways of satisfying the basic SPACE DELIMITER system. 08:34:00 so, 08:34:03 : _enum ( n --) token " const " swap $cat over swap $cat evaluate ; 08:34:15 that does one enum 08:34:30 Quiznos: that's based on madwork's code 08:34:33 and the visible word handles the looping; or, (enum) 08:34:35 yes 08:34:48 (enum) for the base word and enum for the looping 08:34:49 I'd use a wordlist or a subvoc of constants you can NOT reach otherwise 08:34:58 why? 08:35:16 you're thinking of a separate namespace? 08:35:17 keeps them out of the main namespace and forces a semantic on users 08:35:21 ok 08:35:29 so define a voc for enumerated consts? 08:35:45 each enum TYPE is a namespace ;-) 08:35:49 ok 08:36:06 so initial-n enum ... words+ ... ; 08:36:13 just doesn't act exactly like a voc 08:36:43 that's alot of branches but i think i like the concept of separate namespaces 08:36:46 i'll ponder that 08:37:07 enum { [value constname...] } 08:37:46 the {...} stuff CAN be tidier, but not with reuse of the basic parser and delimiters 08:38:08 yea, i dont wanna build new parsers really, as Chuck says coders want to do 08:38:29 your is in the proper place tho 08:38:36 Forths are really interesting for considering variants of IPC and lexing/parsing 08:38:57 ipc? 08:39:02 that's true 08:39:08 Chuck was brilliant, at one time - I think he's gotten bogged 08:39:17 we just need to know what the rest of the geek-world is doin 08:39:30 i'm-a wanting to play with functional coding 08:39:31 ipc usually means commo between procs, in forth we use the Datastack for similar. 08:39:42 oh, inter-process comms 08:39:56 BTW, any joy reading my source or the notes? 08:40:07 havent touched it yet 08:40:20 ok, that explains a lot of yer confusions 08:40:28 got stuck in some nonsense yesterday 08:40:30 brb 08:40:49 Remember to join #Metabuilder regular after you peruse it all. 08:41:17 prob I get is too little feedback from outside sources, let alone contrib ;-) 08:42:42 yea yea sure sure :) 08:43:25 madwork: w/o defers that can look AHEAD, forget would be ok. How would you resolve the FORGET with forwarded branching/exec? 08:44:04 Quiznos: well, it sorta' matters because you now have the links, source and it isn't pure #forth - so, I hate to bug them in here. 08:45:12 i dont your precaution is warranted but you've been here longer 08:45:20 I'd feel the same way if a ##C joiner was trying to talk ##C++ or #lisp or #asm 08:45:42 PoppaVic what is tathi's "fovm" code? 08:45:45 Sometimes, we need the channel for "issues". 08:46:01 sure 08:46:13 Quiznos: he did a pseudo assembler that can build forthish "words" 08:46:26 he's got it posted, somewhere. 08:46:30 oki 08:46:34 i'll bug him for it 08:47:18 Written in C, it lays down in-memory "fovm" that lets folks bytecode extensions. 08:47:32 o 08:47:33 ok 08:47:49 he had a project in mind, so it isn't super-generic. 08:47:54 ok 08:48:11 Still, damn fine "first pass" - like FICL is. 08:48:15 ok 08:48:27 i havent peeked in ficl, only heard of it 08:48:43 PoppaVic, I currently use a word reference for deferred words and forget. So, when you FORGET a word that's contained in a deferred word, that word's reference is killed and you'll get an abort if you try to execute that reference. 08:48:56 --- join: virl (n=blah@vie-086-059-017-040.dsl.sil.at) joined #forth 08:52:12 PoppaVic one of your mentioned goals is to avoid any and all gnuisms; why not use a different or several c compilers instead? tcc and lcc come to mind 08:57:43 --- log: started forth/06.07.21 08:57:43 --- join: clog (n=nef@bespin.org) joined #forth 08:57:43 --- topic: 'Welcome to #forth. We discuss the Forth programming language, simplicity, and a variety of technical subjects.' 08:57:43 --- topic: set by ayrnieu on [Thu Jun 22 20:55:25 2006] 08:57:43 --- names: list (clog PoppaVic1 virl @JasonWoof tathi Ray_work timlarson_ ohub k4jcw PoppaVic virsys uiuiuiu Snoopy42 Quiznos @crc madgarden madwork Quartus nighty nighty_ michaelw juri_ warpzero ccfg wart Zymurgy_ ayrnieu Raystm2 OrngeTide Robert) 08:57:44 --- quit: PoppaVic (Nick collision from services.) 08:57:53 --- nick: PoppaVic1 -> PoppaVic 08:58:10 pissing on gnu or such systems, means in fact writing everything from scratch so the whole OS 08:58:20 right 08:58:39 code to standards, not compilers. 08:58:42 virl i dont think so. there's alot already complete within forth that can be reused 08:58:50 madwork: I was trying to type a response when the isp croaked, paste yer last few lines, please? 08:59:00 parsing is done. it need not be redone 08:59:02 Quiznos: you keep forgetting 08:59:16 and i'm more inclined to port more concepts than actual code anyway 08:59:30 Forth wants to be the OS - it always has - interfacing it all over takes work 08:59:57 yes, i know, but Linux isnt just *any* OS -- it is WIDE-OPEN to us to use and become intimate with. 09:00:09 Quiznos, yeah but everything isn't Forth and other systems are also out there 09:00:26 virl sorry, i'm in my box now, please leave a message :) bahaha 09:00:31 Further, the base-level "parsing" of Forth is not that flexible. We already know it isn't 100% RPN, so...? 09:00:43 that's a feature, not a problem :) 09:00:51 no 09:00:58 yer painting over issues 09:01:07 perhaps i'm not a jaded as most older forthers are? 09:01:15 I prefer to fix the woodwork BEFORE painting over it 09:01:28 PoppaVic, I currently use a word reference for deferred words and forget. So, when you FORGET a word that's contained in a deferred word, that word's reference is killed and you'll get an abort if you try to execute that reference. 09:01:49 i might be, it might be naivte on my part but that's a point on forth's side -- there really is no "wrong way" 09:01:56 PoppaVic, smart delimiters would help alleviate that parsing inflexibility. 09:02:07 Quiznos: I'm and old fuck, and I live in C as well: I am really not the one to approach with newer/better unless there is a reason - and human-interfaces are ALWAYS a reason. 09:02:16 madwork: delim: I agree 09:02:18 :) ok 09:02:56 madwork: so, yer talking about words that essentially ctor/dtor - and you manage the dtor to fix "issues" 09:03:18 bbiab, gotta do RL... 09:03:35 Quiznos: I - oh, fuck it - yer a flitterby ;-) 09:03:56 PoppaVic, more or less. 09:04:37 I use counted references instead of addresses to access unsafe things. 09:04:48 madwork: nothing wrong with that. I'm trying to "classify" in an extensible, repeatable way for similar reasons. Seems to be what folks call "decoupling" 09:05:52 OTOH, while I miss FORGET, I'm about where I say "fuck it" and they just keep loading until they recycle and start again. 09:06:55 I eventually want something my kid can use easily. :) So, maximum interactivity, minimum garbage. 09:06:56 Perhaps there is a nice, sensible way to re-source from CURRENT back down to core, and get them back in the game where they left off. 09:07:31 madwork: A noble goal, and I agree 09:08:10 BUT, I want a C-based core - not one of 30 or 40 "asm"blers 09:08:51 Yep. Well, mine's C-based, as you know. 09:08:52 further, I keep thinking there SHOULD be a way to share bytecode. Which always leads me back to tathi and his "fovm" 09:09:02 And I'll be using it to interface to some other C libraries. 09:09:07 amen 09:09:17 or mine project 'xell' 09:09:20 Just share source. :) 09:09:35 But yea, been thinking of how to "pickle" my Forthy state. 09:09:37 Reuse everything you can - if someone wants to translate all the C into - let them write a goddamned translator. 09:09:54 madwork: yeah, another term for pcode - I know 09:10:47 I think tathi's fovm gets "too tight" with bitcodes, we need to suffer larger 'bytes' 09:11:27 packing is nice - but you need a packer+exporter and an importer-unpacker. 09:12:31 We've had several forth - and java - over the years that tried to resolve this: with exactly the language-centric success you'd envision. 09:12:43 ZIP :) 09:12:49 indeed 09:13:30 they want to bind too much too low. 09:14:20 and, lets face it, I know Forth doesn't HAVE to be RPN - but folks can't switch mindsets 09:14:24 'they want to bind too muc too low'? 09:14:42 yep - ask mad, you always argue with me. 09:14:55 Well, Forth has to be able to control its input stream at compile-time. To me, that's paramount. 09:15:11 RPN is just a side-effect of that, really. 09:15:58 RPN is ideal. 09:16:57 It's natural. 09:17:06 RPN is RPN, it's not "ideal" working with HUMANS 09:17:15 it's friendly to the machine. 09:17:21 that's nice 09:17:30 and to humans too. 09:17:52 (when they want to learn) 09:17:53 Well, you know... it's the stack that's unnatural for humans, not RPN. 09:17:54 madwork: remember, the forth input can change state and mode, etc 09:18:00 PoppaVic, sure. 09:18:19 Humans want a visual representation of their data, and the stack hides that. 09:18:22 madwork: most folks can't see state/mode - even "mode" is obtuse 09:18:30 But, it's what makes the language so malleable. 09:18:33 madwork: far worse 09:19:00 they want to type, see results, get code that replicates it, and all fast and simple. 09:19:14 ..even worse, but I lack the voc 09:20:07 there is python, so those who want python don't see why they should use it. even when you make it not RPN, which is braindead. 09:20:12 Well, i think a dynamic, interactive environment is ideal. It's like building, sculpting, rather than designing. 09:20:19 What we can offer is a shell, interp, lang, compiler, and loader. BUT, it's all work. Lisp bypasses a LOT by going right to mcode. 09:20:57 madwork: I don't even have a prob with feeding source into that can generate a new binary 09:21:30 ..but most folks seem to have issues at every level with that idea 09:22:00 Well, I generally don't care what others think. ;) 09:22:04 It impedes my creativity. 09:22:47 madwork: I like feedback, and respect/appreciate contrib - but I get tired of "yer doing it wrong" - w/o any source-alternative supports. 09:23:21 Yep. I like feedback too, and I'll steal your best ideas and adapt them to my needs. ;) 09:23:30 ..and I will NOT USE ASM - asm is made into objects we might link, I will NOT INTERPRET IT in C 09:23:32 The rest I don't have time for. 09:23:42 madwork: agreed 09:23:47 --- join: neceve (n=claudiu@unaffiliated/neceve) joined #forth 09:23:50 --- join: ianp (n=irc@littlescroll.com) joined #forth 09:23:57 hi 09:24:08 hi 09:24:12 howdy 09:24:16 oy 09:24:17 back. 09:24:38 madwork: in some ways, I have a lot of respect for the #openbios folks. 09:24:59 oddly, no one has built UP from them 09:25:29 PoppaVic [flit] i am NOT! :) it's day time and there are things that have to be done while the rest of the world is awake. 09:26:26 Quiznos: I meant yer here and gone - all the time.. You cannot converse that way - just stir up debates w/o feedback. 09:26:45 channels are RT - with potty-breaks 09:27:00 Channels are the potty breaks. :) 09:27:28 PoppaVic i think i've made abetter impression than that, why do you assume that i am zsynchronous-event free? that's not right. 09:27:28 The human sources can't track when you wake and post to sleep and read to repost. 09:27:53 s/zs/as 09:28:33 Quiznos: I do not feel you are BAD, dammit - I just get too boggled with all the other topics we discuss in multiple channels. *I* Can NOT help if yer a slow processor - I move along. 09:28:54 PoppaVic why are you thinking for me? 09:29:00 oyyyy 09:29:11 * PoppaVic folds The Chair... 09:29:17 stop that. besides, i'm neither mad, bad nor angry; i just have interruptions is all 09:29:31 because he is soo old and soo wise Quiznos ;-) 09:29:42 listen to virl, learn XML 09:29:47 virl he's in a mode of tacit procuration and he oughtnot be 09:30:11 don't you have a meeting? 09:30:26 they are RL and asynchronous, just like everyone else. 09:31:05 Well, trust me: IRC and channels are not asynch - YOUR channel can be - but don't expect action 09:31:11 Speaking of which, I think I'm going to asynch-my-ass out of here for now. 09:31:19 Catchas later. ;) 09:31:26 laters, madwork - stay well 09:32:12 PoppaVic i do chat where my audience is ON another continent; i dont have a problem with waiting for them to respond. why do you have a problem waiting a few minutes (last interruption was 10minutes) 09:32:24 madwork nite 09:32:37 Quiznos: I suspect you log the channel and scrollback to post the next conundrum. 09:32:45 so what? 09:33:00 it's called continuity 09:33:01 well, it boggles the flow is ALL I EVER SAID, damn. 09:33:17 alright. is there anything else you'd like to say? 09:33:32 If we were all in the room and talking this way, it'd get old - fast 09:33:43 stop supposing please? 09:34:05 Nada, I think you have enough to get spun-up and ready to talk - whereever. 09:34:28 Vic, i dont need to be "spun up" quit repsonding as if i were a child. 09:34:41 i dont respond to you that way 09:34:45 --- quit: ohub (kornbluth.freenode.net irc.freenode.net) 09:34:45 --- quit: timlarson_ (kornbluth.freenode.net irc.freenode.net) 09:34:46 --- quit: tathi (kornbluth.freenode.net irc.freenode.net) 09:34:46 --- quit: Ray_work (kornbluth.freenode.net irc.freenode.net) 09:34:46 --- quit: virsys (kornbluth.freenode.net irc.freenode.net) 09:34:47 --- quit: crc (kornbluth.freenode.net irc.freenode.net) 09:34:48 --- quit: ianp (kornbluth.freenode.net irc.freenode.net) 09:34:48 --- quit: OrngeTide (kornbluth.freenode.net irc.freenode.net) 09:34:48 --- quit: Robert (kornbluth.freenode.net irc.freenode.net) 09:34:49 --- join: Ray_work (n=Raystm2@199.227.227.26) joined #forth 09:34:57 umm.. I was not being sarcastic, so.. now I have to wonder why yer defensive. 09:35:07 --- join: ianp (n=irc@64.74.153.248) joined #forth 09:35:44 --- join: virsys (n=virsys@or-71-53-74-48.dhcp.embarqhsd.net) joined #forth 09:35:44 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 09:36:01 i'm not defensive; i'm annoyed that by what you're writing, you're bothered by a delayed response, no one else has ever responded that way to my answering an old post 09:36:09 You have my source, a channel here, debate, and yer own ideas. I think you need to read up, and then come and talk about - that's all I meant. 09:36:11 people catch-up all the time. 09:36:21 * PoppaVic sighs 09:36:25 OK, stay well 09:36:35 ty 09:40:32 --- log: started forth/06.07.21 09:40:32 --- join: clog (n=nef@bespin.org) joined #forth 09:40:32 --- topic: 'Welcome to #forth. We discuss the Forth programming language, simplicity, and a variety of technical subjects.' 09:40:32 --- topic: set by ayrnieu on [Thu Jun 22 20:55:25 2006] 09:40:32 --- names: list (clog neceve michaelw Snoopy42 PoppaVic timlarson_ k4jcw virsys) 09:41:22 --- join: nighty (n=nighty@66.163.28.100) joined #forth 09:41:34 --- join: Quiznos (i=1000@69.168.231.199) joined #forth 09:43:01 --- join: JasonWoof (n=jason@c-71-192-33-206.hsd1.ma.comcast.net) joined #forth 09:43:01 --- join: uiuiuiu (i=ian@dslb-084-056-232-222.pools.arcor-ip.net) joined #forth 09:43:04 --- mode: ChanServ set +o JasonWoof 09:43:06 --- join: juri_ (i=[w8a0eoh@volumehost.com) joined #forth 09:43:09 --- join: ayrnieu (i=julian@ip68-13-114-58.om.om.cox.net) joined #forth 09:43:33 --- join: warpzero (n=warpzero@wza.us) joined #forth 09:43:45 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 09:44:30 damn.. system is weird today 09:44:44 massive server split, two nodes i believe 09:44:46 --- join: Robert (n=robert@unaffiliated/robert) joined #forth 09:44:47 --- join: OrngeTide (i=orange@orangetide.com) joined #forth 09:44:49 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 09:45:25 --- join: Serg_Penguin (i=Serg_Pen@ppp85-140-29-190.pppoe.mtu-net.ru) joined #forth 09:46:41 --- join: virl (n=blah@vie-086-059-017-040.dsl.sil.at) joined #forth 09:46:59 I can't keep track, ever since Lilo spoke of/debated IRC2 and then went off. 09:47:18 hi back.. 09:47:27 --- join: madwork (n=foo@derby.metrics.com) joined #forth 09:47:28 wb, how is XML? 09:48:22 XML sucks ass. 09:48:26 what do you want to know? 09:48:28 I agree 09:48:31 i like xml. editing some right now. 09:48:42 madwork, that's to some degrees true 09:48:42 --- join: saon (i=1000@unaffiliated/saon) joined #forth 09:48:45 --- join: Zymurgy (i=zymurgy@cat.delfax.net) joined #forth 09:48:58 --- join: wart (n=wart@spray.anyhost.ru) joined #forth 09:48:59 it's odd that we can screw with umpty forms given ASCII 09:49:05 --- join: nighty_ (n=nighty@66-163-28-100.ip.tor.radiant.net) joined #forth 09:49:47 I said it some months ago, that's it stupid. 09:49:56 --- join: ianp (n=irc@littlescroll.com) joined #forth 09:50:04 I do my RPC calls in Forth, not SOAP. 30 bytes vs. 30K. 09:50:05 no, I agree - it's just... weird 09:50:27 ass 09:50:33 rpc? soap? I just take a bath 09:50:34 madwork, for that I won't use xml 09:50:40 And, i didn't mean to come back in here. ;) 09:50:46 xml is not for people; it's for computers. 09:50:54 madwork: HAH - nailed! 09:51:08 And since Forth is for computers, we don't really need XML then do we? ;) 09:51:10 Quiznos: not true\ 09:51:12 Quiznos, when it would be for computers, it would be binary. 09:51:29 because ASCII or generally strings are horrible to computers. 09:51:30 binary is for comps, text is for people. 09:51:39 oh, please 09:51:50 pdf is not for people, it's for computers. 09:52:01 Here's my RPC call for adding two numbers: 09:52:01 poff 123 456 + .s clear pon 09:52:24 pdf, iirc, is for comps - written in a forthish variant. 09:52:50 madwork: not much worse than ncurses 09:52:57 ..or gtk+ 09:53:24 I just basically have a Forth session running over telnet, and I talk to it in Forth. 09:53:29 I think something is good for computers, when it's damn simple and binary. that's one idea of xell, but heh I'm one of those stupid guys. 09:53:29 Simplest RPC you could want. 09:53:30 Humans will disagree, which tells me it needs more layering/vocs/parsers 09:53:48 --- join: ccfg (n=ccfg@dsl-roigw1-fe8ade00-21.dhcp.inet.fi) joined #forth 09:54:14 xml is a mix of problems: people complain it is hard to read data because it is so concise, so we design xml that is wordy, then it is too verbose for people to read or so we make programs to do this for us...um, weren't we trying to read this directly when we started? 09:54:49 * PoppaVic listens to Heston and watches "Armegeddon" on * off 09:54:57 most computer users arent powerful enough to write a concise dialect for themselves, and translation modules. 09:55:13 --- join: astrobe (n=astrobe@c-real.rouen-wireless.net) joined #forth 09:55:15 no, it's not "consise" it's just another format. 09:55:17 well, who knows what they thought? in creating xml. 09:55:24 ..it adds issues to issues ;-) 09:55:32 "html sucks" was a key thinking point. ;) 09:56:06 I'm never sure if they expect unicode for their XML or within their XML - and back to ascii, etc 09:56:30 xml is the reductionists' approach to making things automated, and so it has the general problems that reductionists' approaches normally have. 09:56:45 someone read Passinatti on c.l.f in "What languages.." ? 09:56:51 maybe they want utf8 for their input to XML to whatever 09:57:16 maybe they use ascii for all of it. 09:57:27 ..no idea - less interest 09:58:12 XML even _expects_ to build trees and step them 09:58:21 Not interested. 09:58:37 I like code == data 09:58:46 Not code -> data -> code -> data 09:58:50 yep, or Code(data) 09:59:16 act on it, generate it, or both 09:59:41 algorithms= data+code - deal with it. 09:59:48 --- part: Serg_Penguin left #forth 10:00:10 OO C is about as deep as I care to dip, forths are similar. 10:00:29 diff is their IPC-like Datastacks 10:01:33 God, I love Charleton's script at the beginning - it makes my skin crawl 10:04:47 --- join: ohub (n=oherrala@sikw1.oulu.fi) joined #forth 10:11:18 astrobe, I've read it. 10:12:05 Quartus: it' a "oouch", isn't it? 10:12:18 What are you referring to exactly? 10:12:55 http://groups.google.fr/group/comp.lang.forth/browse_frm/thread/2f92040fa53646b0?scoring=d&hl=fr 10:13:27 The whole thread. I mean what is it you think is an 'oouch'? 10:14:15 sorry, i thought it would point to the message. It's the latest from Passinatti 10:15:09 In which he again condemns the Forth community by assuming that it consists entirely of those people who post in comp.lang.forth. 10:16:12 Well that's a biais, but OTOH he cannot know about those who don't speak 10:16:43 BTW I'm not his biggest fan. 10:16:58 --- quit: PoppaVic ("everyone stay well, talk to you tomorrow!") 10:17:06 I'm not either. He makes a number of claims in that post that he doesn't substantiate. 10:17:18 "So often in comp.lang.forth, the use of libraries is treated as if it 10:17:18 was a bad thing." 10:17:56 I haven't seen this. Last major library effort I recall was a completely Standard floating-point output routine; it was really amazing and well-received. 10:18:29 fonseca oops, kk 10:18:36 Some of the post just confuses me -- "Having 10:18:36 spent four years in college studying control theory isn't replaced by 10:18:36 having an extensible dictionary and low-level access to the hardware." 10:18:42 What's that mean? 10:19:13 But the number of Forth libraries looks quite modest wrt to other languages 10:19:43 The number of Forth users on the 'net is smaller. 10:19:46 He says "programming is also about expressing 10:19:46 one's experience and knowledge. 10:19:49 " 10:19:57 Is it? That's usually called 'teaching'. 10:23:18 He completely ignores, for instance, the FSL, or Wil Baden's repository of code. And if he himself has ever created and shared a library of Forth code, I'm unaware of it. 10:25:43 "four years": he says that Forth is a great tool to program, but it only deals with programming the chip: it doesn't help with, say, programming a TCP stack. Hence the need for libs. 10:26:00 Is that what you infer from reading that sentence? 10:27:12 yes, and from other similar examples he gives. 10:28:34 I'm not at all clear on how a programming language is supposed to 'help with' programming a TCP stack, or how Forth fails to do this. If there's to be a TCP library, it has to be written by somebody. 10:29:50 of course it cannot help, it's not its job! Only he has not to be in our way. 10:30:04 Do you know of any open source TCPIP stacks written entirely in Forth? 10:30:28 Protocols are a good example of what he is saying, because they are sometimes tricky to implement and debug 10:30:29 There may be one, but I've never run across one that doesn't require an underlying OS. 10:30:34 k4jcw, I've never had occasion to find one, all the work I've done in Forth that needed TCP/IP was done on a hosted Forth, so I used OS facilities. 10:30:50 not open source, but I think MPE Ltd. has one... 10:30:57 I'm not arguing anything here, just for the record. I'm asking. 10:31:08 and there, you're happy when you find that someone already did it for you. 10:31:11 Yea, MPE has a lot of stuff I can't afford. So does Forth Inc 10:32:09 astrobe, I'm in favour of more Forth libraries being created and shared. Passaniti might like to step up and write one instead of generally bashing others for what he perceives as their failure to do so. 10:32:47 Sadly, I'm not smart enough to write a TCP stack in Forth. 10:32:53 He's starting to suffer from Coughlin's disease. Coughlin isn't a programmer, though; Passanit is. 10:33:41 what does Coughlin suffer from? 10:34:03 Do a search, throw a dart, read one of 'em. :) 10:34:18 ok :) 10:34:25 One of his recurring refrains is that there aren't enough teaching materials in Forth. 10:34:40 I tend to agree with that statement. 10:34:46 But mostly for mid-level Forth programmers. 10:34:53 After reading Coughlin, you might find yourself wanting to disagree. 10:34:56 There's plenty of introductory material, but not much more. 10:35:29 k4jcw: THEN DO IT YOUR F*-SELF says Quartus. If I get him correctly :) 10:35:53 could we have a short discussion of forth programming style on shallow data and return stacks? 10:36:20 timlarson_, sure. Go ahead and start the ball rolling. 10:36:25 k 10:36:54 allowing deep stacks tends toward using the stacks as a primary data structure... 10:37:08 How deep is deep? 10:37:44 timlarson_, general rule of thumb says that you shouldn't be working more than a few items deep in an given word. 10:37:48 deep enough that you do not usually have to think about them overflowing when you code almost carelessly. 10:37:57 Quartus: I was not in favour of libs, although I tend to offer them for my system. I thing I was misled by the giant, ill-designed libs I've often seen. 10:38:05 That's true at one level. 10:38:15 But a shallow stack prevents recursion, which can be very useful. 10:38:18 If you find yourself with more than a small handful of active stack-items, you'll have a lot of trouble getting at the deeper ones. 10:38:53 I'm not suggesting the stack should be shallow, just that you should code to it as though it were. Recursion is a separate consideration. 10:39:01 Agreed. 10:39:08 so use of deep stacks *used as* deep stacks imply a certain style of programming, that for instance makes co-routines (if I have the name right) difficult. 10:39:27 (I mean routines that both keep working for quite a while, passing control back and forth.) 10:39:30 astrobe, I'm in favour of shared code. I've used and written quite a bit. 10:39:32 I think tmilarson is thinking about feeding strings IN the stack 10:39:55 timlarson_, I can't think of any reason that stack-depth would affect coroutines, but coroutines aren't a common technique in Forth. 10:40:11 no, not strings or arrays, just the question of nesting many pointers and scalars in a stack or not. 10:40:24 timlarson_, it isn't a good idea to schlep around data structures on the stack itself. 10:40:56 If a stack is the right construct for storing certain data items, perhaps create another one for the purpose. 10:41:21 not that either...just many layers of calls...the layering implies the need to climb back up the layers to clean up the stack before it can be used by another routine...it implies a time-layering use of routines. 10:41:41 That is the nature of a stack. Last in, first out. 10:42:00 so back to the use of shallow stacks and the idea I had... 10:42:08 Quartus: and are you satisfied with Forth's (lack of?) support for libraries? Never ran into name clashes? 10:42:30 if you treat the stacks like just a handy form of short term (and very limited quantity) memory... 10:42:45 astrobe, I wrote a simple module/public:/private:/end-module routine that allows named modules that entirely encapsulates library code. It's portable. 10:43:09 then your program state would tend to be stored in your program's data structures instead of on the stack... 10:43:35 timlarson_, your program's data structures should not be stored on the stack. The stack is for parameter-passing. 10:44:42 Quartus: it seems you are seeing a common-mis-thought that I am not presenting. 10:45:25 Perhaps you can clarify. 10:45:31 there is a difference between putting data structures on the stack (which I am not even discussing) versus putting control flow information primarily on the stack (which is what I am trying to break away from). 10:45:47 What do you mean by 'control flow information'? 10:46:02 do you read c.l.f? 10:46:29 there was an example there of moving control flow info off of the stack onto a data structure... 10:46:44 it was for recursive processing of a large tree of data. 10:46:50 did you see it? 10:47:22 I don't recall it specifically. 10:47:49 It's not tough to move control-flow onto its own stack. 10:47:52 here is the datastructure that resulted: http://datastructures.igo.com/tree/tbt.htm 10:48:44 ah, threaded binary tree, tbt 10:48:55 That link doesn't resolve for me. 10:49:11 I am suggesting that using shallow (very, say 4 or 5 cell) stacks leads to control flow being encoded in your data structures instead of in your stacks, the powerful side effect being that you then have many more options open to how you do your control flow. 10:49:45 for me neither 10:49:46 ouch, I must have recorded it wrong...searching for the right link... 10:50:05 Control-flow for me means BEGIN/WHILE/REPEAT, IF/ELSE/THEN, etc. 10:51:11 control flow is much more than that...that is just the fine-low-level-detail of it. 10:51:52 So what do you mean by 'control flow', beyond that? 10:52:04 let me find that right link first, moment... 10:53:07 astrobe, it's possible to entirely avoid name-clashes in a multiple-wordlist system. Tougher if you don't have wordlists, obviously. :) 10:53:39 i-n-d-e-e-d :) 10:54:35 Quartus: I don't know, I just read Paul Graham's "being popular" before reading that article on clf. 10:55:05 I stopped reading Graham quite awhile ago. What's that one about? 10:55:13 bleh. don't read Paul Graham :) 10:55:26 Sometimes I'm on the edge on losing my faith. 10:55:37 try this http://datastructures.itgo.com/trees/tbt.htm 10:55:37 Eh? 10:55:57 it was about the things that makes a programming language popular and succesful 10:56:04 does that load properly for you? 10:56:30 timlarson_, it does. What relationship does the data stack, shallow or not, have with a threaded binary tree structure? 10:58:10 Quartus /on/of/ but nevermind 10:58:15 I will explain, but first do you see how using in using a tbt you use your begin/while/repeat/if/else/then/etc. control structures to follow a tree-shaped-data-driven control structure? 10:58:52 No. 10:59:15 Wait. What are you asking? 10:59:37 the dynamic pointers/addresses in the data structure control what your "tree walking" routine does, right? 11:00:16 Are you asking if the data stored in a tbt controls what direction you take when you walk through it? 11:00:26 you did notice that some of the pointers in the tbt are dynamic, right? 11:00:27 And how do you set-up this pointers? with a classic traversing algorithm? :) 11:01:10 Dynamic in what regard? That they can be changed? I'd hope so. 11:01:20 astrobe, yes...because any programming problem is going to consist of both data and code...it is where we shift the dividing line that I am talking about. 11:01:49 dynamic in that walking the tree changes some of the pointers, and that is how the path through the tree is determined. 11:02:28 That's certainly not clear from the page you posted. 11:02:45 Adding/removing data from the tbt would require changing some of the pointers, but not walking it. 11:03:27 ok, I chose a bad example... 11:04:46 can you see how when we want to do some operations and we want to control the sequence and occurance (conditionals) of these operations that we can do this by writing code, by creating a guiding set of data, or by any combination of the two? 11:04:57 Yes. 11:05:26 Well, not 'any' combination; the 'all data and no code' combo would be pretty slow to execute. 11:06:21 and if when we write code we have a particular data structure intricately intertwined in how we write the code, then it will influence our decisions as to how we choose to control sequence and conditions, because some ways will be easier and more comfortable to use? 11:06:56 That's where abstraction comes into play. Ideally the representation of the data is not intertwined in the code. 11:07:31 but if you use the stacks as "stacks", then you do have a datastructure intertwined with your code. 11:08:13 Are you discussing Forth's built-in data stack, stacks created by an application for manipulating data, or something else? 11:08:23 on the other hand if you use your stacks as a tiny short-term memory, then you are more (mentally) freed to use other data structures to guide your control flow besides just stacks. 11:08:58 I am talking about how you choose to use forth's built in stacks. (or how your forth forces you to use...) 11:09:08 Ok, if I get what you're talking about -- the fact that Forth uses a stack for implicit parameter passing doesn't mean that now every data-structure has to be stack-based. 11:09:17 Do you think this is because that since Forth is a stack based language, people feel compelled to not use variables and allocated memory when they should be? 11:09:25 It's called a 'stack-based language', but that's not some kind of constraint. 11:09:40 I think that's a common perception error. 11:09:41 I did something like that to implement the "knight problem"... 11:09:59 Each sqaure had an xt in it to tell the knight where to jump next... 11:10:11 "how" you decide to approach programming is based on perceptions... 11:10:11 It's 'stack-based' because it uses a stack for implicit parameter passing between words. That's all. 11:10:18 and the xt would change the content of the square each time. 11:10:27 I'd use an AT now, myself. 11:10:30 They've gotten so cheap :) 11:10:37 heh 11:11:53 you know, the squares on the chess board..... 11:12:09 if a calls b which calls c which calls d, etc. and each puts parameters for the next on the stack and expects when the word it called returns for the stack to be as it was before (modulo question data replaced with answer data) then you basically have "C". 11:12:37 got the joke on AT/XT... you guys are so pathetic... :) 11:12:55 timlarson_, no, you have any procedural language that allows nested calls. 11:13:23 yes, and nested calls are a form of control flow... 11:13:35 If you kind of squnit, sure. 11:13:37 er, squint. 11:13:38 If "linear execution" is flow control, yea. 11:14:02 and choosing this (very usefull) form of flow control makes difficult the use of some other (also very usefull) forms of flow control. 11:14:11 It does? 11:14:42 yes, so much so that you cannot even see that it does (it limits your thoughts about programming). 11:14:44 GOTO? 11:15:00 goto will not fix what is on the stack. 11:15:25 No, but it can mess it up. :) 11:15:35 I fail to understand how it's flow control, unless there's a conditional of some kind. Otherwise, there's no "control" 11:15:43 I think timlarson is right; 11:15:51 Let's see. Non-local returns are available with CATCH/THROW, you can write a GOTO for just about any Forth, you can establish separate control-flow stacks for forward and reverse branches if you want them interleaved, you can write to jump-tables, finite state tables, or whatever comes to mind. 11:15:56 And conditional can mean something external changing CFA's or whatever, if you like. 11:16:15 for example, "d" must finish before "c" can continue...makes it hard for "d" to just say "yield but I want to continue later". 11:16:37 Now you're adjusting the parameters of your argument. 11:16:39 Co-routines can also be done in Forth. 11:16:44 Before, you just said a calls b calls c calls d. 11:17:03 There is no implication there is any form of decision occurring there. 11:17:35 I was trying to demonstrate that only using simple (deep) stacks implies that you can only have simple "a calls b calls c calls d" and that it rules out other flows. 11:17:42 It doesn't. 11:17:54 I am most definitely not saying that forth cannot do these other flows... 11:18:01 So then they're not 'ruled out'. 11:18:34 Which brings to mind something I really hate -- the phrase 'ruled in', which makes no sense whatsoever. 11:18:55 Why not? 11:19:00 I *am* saying that how you learn forth and how deep a stack your forth makes available is *very* likely to constrain whether or not (or how long until) you will be able to understand and use those other useful flow control techniques. 11:21:04 I am putting forth the theory (for comments) that very shallow stacks make you much more likely to consider these options sooner, and so make you likely to more quickly become a better, more flexible programmer, at least in this area. 11:21:07 timlarson_, I don't know. If you study programming you will quickly understand that stacks are only one particular construct, and that there are many others. You may try coding them in Forth, or in other languages. How long or short that process is varies by individual. 11:21:26 k4jcw, the origin of 'rule out' is to draw a line through something, to cross it off. 11:21:54 timlarson_, perhaps in some intellectual vacuum where a novice learns only Forth, and reads no books. 11:22:29 * tathi agrees with Quartus here, FWIW 11:22:53 Quartus: there are distinctly different levels of "knowing"..."I read a book about surgery and can fluently and with comprehension tell you all about it" versus "I have done that *and* I have performed this surgery 100 times before" 11:23:04 timlarson: in a system for intended for teaching, yes it makes sense, and it would prevent people from performing stack juggling also. 11:23:15 timlarson_, Sure. What relevance that has to this discussion, I don't know. 11:23:19 I am proposing that shallow stacks lead to that more useful type of knowledge sooner. 11:24:07 Strongly recommending that a student keep his stack utilization shallow is certainly a good idea. Shallow stacks make useful recursion impossible, though. 11:24:08 and if you learn this shallow-stack-inspired style, then hardware with shallow stacks would also make a lot of sense. 11:24:22 since they would match your natural programming style. 11:25:21 but how many people are ever going to wind up using hardware with shallow stacks? 11:25:38 *shrug* There is a cost to any constraint. I wouldn't want to give up the ability to code recursive routines just to make sure I don't forget that it's a good idea to keep my stack items manageable. 11:26:23 (Chuck's stacks are quite shallow) 11:26:25 The more important part of what I am proposing is that we (whoever we are) have been telling people for a long time, "keep your stack use shallow", but our only explanation for how to do so is, "try it for a while and it will eventually click in your head"...I am saying there is a more tangible way of making it click, of explaining to a learner what is different about the style. 11:26:53 Yes, check his work. If he's going too deep on the stack, hit his knuckles with a ruler. It helps if you're also a stern nun. 11:27:27 come on.... 11:27:35 I am suggesting that there is a "method to the madness"...it is not just something that has to mystically "click". 11:27:59 and we can teach the method to get quicker learning results. 11:28:03 So you're suggesting building a 'learner's Forth', and forcing all novices to use it? 11:28:10 than the mystical click approach can produce. 11:28:18 NO 11:28:25 I am suggesting... 11:28:25 Then what? 11:28:53 that we explain *what is different about shallow stack style compared with deep stack style*. 11:28:55 I think my ruler/knuckles idea is not getting fair consideration. 11:29:19 I am saying we can _explain_ it, not just say, "oh it will click after a while". 11:29:20 Quartus: that's because it's difficult to implement over the internet 11:29:35 Instead of one huge sequential stack machine, you want a thousand little stack machines that all interoperate in parallel. 11:29:42 But I did that about ten pages up. Use the data stack for parameter passing. Don't schlep data structures around on it. Keep the number of elements to four less wherever possible. 11:30:00 keep your stacks shallow because 1. it is more difficult to access deeper parts of the stack (nip, pick, etc instead of swap, dup, over) 2. a shallow stack means there is less for you to keep track of. .. aren't those good enough reasons? 11:30:01 'four or less', rather. 11:30:27 Yes, more than four or so is hard to juggle. More than four or so suggests you haven't thought about the problem enough yet. 11:30:47 i have a hard time keeping track of the order of things when there are more than 4 or 5 of them. 11:30:55 we do not need "reasons", any beginner can see and understand the reasons (they get confused when the stack gets too deep for them)...we need "how to". 11:30:57 timlarson's point is that sometimes, there are better alternatives than recursion. 11:30:58 If you find yourself using pick/roll, you've wandered off into the outer darkness. 11:31:17 oh i see. a how to. hrm. that would be interesting for someone to write up some techniques 11:31:25 The 'how to' comes of learning to factor. 11:31:41 'Thinking Forth' covers some of that ground. 11:31:50 well formalized how to, kind of like the art of computer programming would be rather interesting to see 11:32:24 I'm not sure it's a process that can be formalized to any great effect. Much involves good naming, which can't be automated. 11:32:25 and I proposing that the "how to" which has been said only comes from practice, can also come from non-mystical straight-forward explanation. 11:32:51 almost everything can be formalized, i've found. 11:32:52 There's nothing mystical about saying something comes of practice. But go ahead, explain it to us in straight-forward fashion. 11:34:03 well you can start by executing words sooner rather than later. 2 3 4 * + => 3 4 * 2 + .. umm. factoring helps too, but i can't explain why. 11:34:08 I am not saying that coming up with the explanation is easy (obviously, it seems few if any have managed yet)...just that it is possible, and when we have refined it, then it will not take as much time/practice for people to become fluent. 11:34:33 OrngeTide, the old Mark Twain quote, "The difference between the right word and the almost-right word is the difference between the lightning and the lightning-bug," -- how to formalize how to make that distinction? 11:34:35 but first we would need to come to the conclusion that an explanation is possible. 11:34:48 Quartus, very true. 11:35:17 and I am proposing that it *is* possible. 11:35:23 timlarson_, well an explaination is probably possible unless it is proven otherwise. :) 11:35:27 there is light at the end of the tunnel, and it is not a train. 11:35:36 TOOTTOOT 11:35:45 timlarson_, if you think so, get to it. 11:36:16 showing examples might be away to explain. 11:36:18 when I read c.l.f, the idea that there even could be an explanation is not even raised or considered, except by the newbies. 11:36:29 dont let someone who says something is impossible interrupt the person doing it. 11:36:47 * OrngeTide nods to juri 11:36:50 it is brushed aside with, "just go practice and you will get it"...which for many people has not worked yet. 11:37:22 it could be like riding a bike. you could give a lot of confusing explainations, but in the end it's just about practice. 11:37:34 Newbies want single-stepping debuggers, and active stack-reordering words (i.e. { a b c d e -- e a b c a }). It takes them time to discover that neither is needed. 11:37:45 causing there to be many people who hav brushed with an interest in forth for years, but never quite seem to get the nack for it. 11:37:45 informal learning like that is scary to computer science types though. 11:37:46 A whole bunch of newbies write the stack-reordering words. 11:37:48 that said, i'd be interesting to read. so go write it. ;) 11:38:28 well swap2 is about the most exotic thing i've ever used. seems more than suffecient. 11:38:43 OrngeTide, no -- I mean a word that reads like a stack diagram, but does the re-ordering. 11:38:44 I am working on an explanation via discussing the idea here, to see if anybody else can help come up with a "how to" 11:38:46 timlarson_, that would describe about 90% of the people at SVFIG 11:39:02 Quartus, i don't understand? 11:39:21 A stack( word, for instance. So, in use: stack( abcde -- dbac ) 11:39:28 It would re-order the stack as requested. 11:39:30 ohhh. okay 11:39:33 Avoiding pick/roll is hard if you don't allow >R R> 11:39:42 hey, that looks like an ideom from lisp caddr, etc. 11:39:54 that would be kind of fun to write, but i dunno what use it would be. it wouldn't be fast at least. :P 11:40:06 I said, examples; I for one think that sometimes explanations don't exist. You can only show. 11:40:20 and I think this is an exception to that rule. 11:40:21 It isn't fast, and it's wrong in a whole bunch of ways, but newbies often want it before they get to the 'click', as it were, where they understand how to factor. 11:40:28 madwork, yea. i allow >R R> :) 11:40:53 there's that mystical, time-consuming, people-turning-away "click" again. 11:41:12 Yes, it's an acquired skill, a knack. It's a hurdle, not trivial to overcome for a newbie. 11:41:13 Quartus, it kind of reminds me of those little puzzles like "reverse the letters in a string" sort of thing. 11:41:34 If a newbie is struggling with stack manipulation, he's got too much on there. 11:41:48 If he's having trouble writing Forth words, they're too long. 11:41:52 OrngeTide: I don't. ;) 11:41:54 that is a _reason_ not a _how to_ 11:42:04 I think that examples are like, a squech is better than a long essay. 11:42:24 A what? 11:42:29 I can know that I am making the stack too deep, or my words too long, but that does not guide me in how to fix it. 11:42:35 it just identifies the problem. 11:42:41 Having less on the stack, writing shorter words, along with good naming -- those are the three elements of proper factoring. 11:42:48 madwork, really? why not? i almost never use >R R> as temporary storage but if it makes a program simpler then i'm all for it. 11:42:57 and those are skill and time based... 11:42:58 sketch? 11:43:09 yes, skill and time-based. They require the study of well-factored code. 11:43:12 and with better explanations I think we can reduce the skill and time required. 11:43:22 OrngeTide: Well in my case, it's unsafe to allow it. I don't allow anything that could crash the VM. :) 11:43:23 BUT... 11:43:36 timlarson_, but you've got no idea how to explain it better? 11:43:37 there's nothing saying you can't have a separate stack and words to access that. 11:44:04 madwork, oh. can't the vm crash if you push an arbitrary number on the stack and use it as a string pointer? 11:44:06 you know how you can have a picture in your mind, but cannot seem to put it into words... 11:44:20 usually because parts of the picture are clear and parts are still fuzzy... 11:44:23 that is what I have. 11:44:29 OrngeTide: You can't do that, so no. 11:44:34 You get a string reference. 11:44:35 It 11:44:39 madwork, oh. i see 11:44:40 is not a mutable value. 11:44:46 your "forth" has types? 11:44:53 Yes. 11:44:55 timlarson_, if you think it can be codified, start trying. I don't believe it can be codified, except in a crude mechanical way, as in how you might teach someone how to write a haiku -- the structure of it is simple enough, but writing a good one comes of skill and practice. 11:45:04 My "forth" heh. ;) 11:45:06 not really forth then is it. :) 11:45:11 is this retro? 11:45:13 What makes a Forth a forth? 11:45:26 if it works like forth:) 11:45:30 Thou shalt not have typed data? 11:45:35 it works much like Forth. :) 11:45:36 my RPN calculator isn't forth either. 11:45:41 just remember that I am not trying to eliminate the need for skill and practice, just to lower the entry barrior. 11:45:44 a letter missing in the name? 11:45:46 :) 11:46:00 Well, that's why mine is "Forthy". ;) 11:46:11 madwork, don't get me wrong. i like stack oriented typed langauges. i'm a big fan of strongforth and retro. 11:46:11 so, welcome! :) 11:46:22 And since my Forthy is intended to extend C apps, it makes sense to ahve some basic types. 11:46:24 timlarson_, the point at which you've 'clicked' is the end result of a learning process. If you think you can accelerate that learning process through a better teaching method, go to it. 11:46:29 I was somewhat inspired from Lua as well. 11:46:32 Scripting, etc. 11:46:55 lua is fun. although i can't seem to do much in it other than write lots of c bindings for it. hehe 11:46:58 But, there's nothing stopping you from using my VM to make a purely integer-based Forth-like thing. 11:47:02 timlarson_, I suggest keeping discussions of tbt's out of it, esp. at the beginning. :) 11:47:05 ok, so I guess no help here...just a "go try it" which I am already in the process of anyways. 11:47:05 I do something like that and don't have types. 11:47:30 but thanks for letting me think out loud here. 11:47:31 The real "click" is when you learn to use begin/does 11:47:37 OrngeTide, yea... Lua does neat things with tables. i know a girl who's quite the Lua zealot, and has written a MUD in it. 11:47:38 my first forth vm didn't have types. it was very much like a traditional forth running inside a c-based vm. 11:47:54 --- quit: saon ("leaving") 11:47:57 madwork, awesome. my friend is working on a pay-to-play Lua mud right now 11:48:12 k4jcw, create/does, you mean? 11:48:26 er, yea. I'm doing three things at once :( 11:48:27 (not meaning to be bitter, just a little sad) 11:48:28 i put together some examples of storing lua objects in SQL in a flexible way, but my friend didn't like it. i might reuse it for my own project though. 11:48:33 OrngeTide: Yea, I am still considering doing a bytecoded forth for the retro appeal. 11:48:42 --- join: saon (i=1000@unaffiliated/saon) joined #forth 11:48:52 timlarson_, you want somebody else to grab your grand idea and do it for you? :) 11:49:02 OrngeTide, cool... Lua seems well suited for that stuff. 11:49:12 i'm tempted to write a forth for the Parallax Propeller microcontroller. 11:49:17 oooh, that would be pointless and vicious. Implement a forth that executes out of SQL tables. 11:49:25 madwork, yea. lua is a lot faster than the javascript mud i worked on before 11:49:33 no, just hoping someone(s) else would also be interested in working _together_ on it...community style instead of lone wolf. 11:49:39 Basically treat the SQL table as the memory. 11:49:49 How that works is you start, make it public, and then other people tell you what they think. 11:50:00 tim: i'll read it, as a forth newbie. i dont belong here. :) 11:50:06 :) 11:50:23 put it on a wiki. that's one way to get collaboration 11:50:43 I will do some experimenting with (enforced) very shallow stacks to try to clarify the ideas further first. 11:50:49 did i spell that right? hrm.. i need a spell checker for irc. 11:50:50 s/some/some more/ 11:50:54 OrngeTide, Last time I checked, my Forthy VM seemed to be comparable in speed to Lua. I think Forth would be quite suited for MUDs. Actually, there's a MUCK that uses Forth as its scripting language... 11:51:18 what is the shallowest stacks that are practical? like 4 cells? 11:51:35 madwork, yea, i've coded stuff in MUF before 11:51:49 Maybe instead of enforcing stack depth at the system level, enforce it at the word level. 11:52:05 lua gives you maps/tables that forth doesn't have though, so lua has the edge there. 11:52:25 the point of this exercise is the system-effects of a system-level limit. 11:52:44 a per-word limit completely misses the purpose of this. 11:53:10 OrngeTide suggested a 4 cell stack. That's clearly impractical. 11:53:13 because it still would imply a deep stack, just not looking at much of it at a time. 11:53:14 OrngeTide, that's next on my TODO list for Forthy... tables. 11:53:17 But unless you can force a novice to use a system-limited shallow stack...? 11:53:59 One important lesson for Forth newcomers is that Forth does not protect you from yourself. It's a sharp instrument. 11:54:02 i'm missing the point here. ;) 11:54:03 the system-limit is for helping the act of developing an explanation, not for forcing on people. 11:54:14 ok. theres a point. ;P 11:54:18 timlarson_, I'm afraid that makes no sense to me. 11:54:41 what is that forth-like that has threads, matrices, etc? 11:55:10 If you're explaining how to use the stack, you're doing it on paper. I would assume you won't be doing anything to trigger your imaginary Forth's stack-depth alarm. 11:55:15 it was done by someone in here. i think it starts with an R 11:55:46 by making a hard limit I enforce on myself a different style of programming, which I hope to help me become able to *describe* what is different about this different style. 11:56:03 OrngeTide, factor, or joy? 11:56:09 What's different is that it disallows recursion. k4jcw's notion of a per-word limit is the only one that makes sense. 11:56:20 (neither of which start with R, heh) 11:56:21 Though not a great deal of it. 11:56:29 madwork, oh i'm thinking of factor 11:56:42 factor is nice. why not use that for a mud? 11:56:46 it only disallows recursion using the primary data and return stacks, it does not disallow recursion in general...please do not make that statement. 11:57:21 you just have to use memory stacks for it. 11:57:59 that could be given as an exercice de style 11:58:14 timlarson_, I'm going to let you just think about your last two lines there for awhile, I'm sure the flaw will become apparent to you in time. 11:58:34 and may the student could understand tail recursion optimization that way. 11:58:35 Factor is very smart, but it seems rather big and Java-like for my tastes. 11:58:36 you try that thinking too, and I think it will become clear. 11:58:54 You're just shifting where data is stored. What's the point? 11:59:06 Nope. I'm putting this whole conversation completely out of my mind until and unless you actually write something, at which time I'll be happy to review it. 11:59:12 You could just as well create 300 general purpose stacks, limit them to 1 cell, and call them variables. 11:59:19 k4jcw: try thinking using only your long-term memory... 11:59:30 I blew that out in the 70's. 11:59:39 k4jcw, heh :) 11:59:54 bbl folks. 12:00:24 madwork, well it's smaller than java or .net in terms of memory usage. you could probably run factor on a 2MB system if yo wanted. :P 12:00:35 it's huge in terms of forth, but it's small in terms of everything else. 12:00:42 I am trying to come to a style that frees up the stacks for local operations, while allowing larger operations (such as recursion, tree walking, etc.) to work elsewhere (in main memory data structures (stacks, trees, arrays, etc.) instead of on the primary data and return stacks) 12:00:43 Seriously, tho. You have a few stacks. I'm not really clear how that shifts the problem domain. 12:00:49 It's a while since I checked factor out. 12:01:11 But anyway, I'd rather write a MUD in my own stuff. ;) 12:01:27 that's understandable. 12:01:41 i'd be fine doing it in lua, since there are books and things on lua for people to learn from. 12:02:00 kind of like how on a register machine you do not "stack" all of your a-calls-b-calls-c-etc. data in the registers. 12:02:32 yes, but you also generally don't teach newbies assembly-language programming, either 12:02:32 OrngeTide, yes... Lua is nice. Really, what I'm aiming for with Forthy is a thin language-malleable Lua. 12:02:43 my registers just happen to be accessed first-in-last-out instead of random-access. 12:02:56 So your supporting different register banks, in effect. 12:03:34 well, if you are using coroutines, then yes, different register bank for each coroutine. 12:04:03 That would actually seem to create more problems than it solves. For something like catch/throw, you now have to maintain stack frame pointers for all your stacks. Otherwise, it seems that it's going to very easy to become unsynchroized between stacks. 12:04:33 i think assembly langauge is extremely easy to teach to newbies. it only gets hard when you want to start doing complex constructs. 12:04:46 Eh, I don't agree with that. 12:04:56 But I may not be the person to ask, because I've been writing assembly for 20+ years. 12:05:05 as to how well asm concepts translates to other languages, i'd have to say not very well at all. 12:05:18 It's all about factoring. 12:05:29 who many forth implementers is there here right now? just curious 12:05:31 "factor factor factor" -- cm 12:05:35 asm is easy. you have 4 or so "variables" (registers) and you can do some simple operations on them. and you can jump to labels. 12:05:44 * JasonWoof raises his hand 12:06:01 I've written 3 forths 12:06:14 Well, "easy" is a relative word. When you start worrying about instruction execution, cache coherency and all that good stuff, it get s a little more complicated. 12:06:15 when you want to like build a all frame to pass to a system call, that's when asm gets hard for newbies to understand because they want to understand why they have to construct them in this very special way. or what did they choose 33h for the system call, etc. 12:06:25 so raise your three hands, JasonWoof :) 12:06:35 * tathi raises his hand 12:06:40 astrobe, my forth is not a real "forth". :) 12:06:47 * timlarson_ raises multiple hands 12:06:48 * madwork sheepishly half-raises hand 12:06:49 I've lost count, but nothing complete, just toys 12:06:53 but the very very basics of asm are easy to teach. i'm assuming you won't be getting into topics like position indepedent code, inter langauge compatibility, or data structures 12:06:56 timlarson_, it almost sounds like you need a private stack on a per-word basis, and the sytem stack. 12:06:58 raise your foot them madwork 12:07:05 OrngeTide: ok, I take it back :) 12:07:09 obvious a newbie student of asm can do a lot less than a newbie student of C 12:07:13 * madwork raises tail 12:07:21 How 'bout that? 12:07:38 * astrobe raises his hand 12:08:05 Now qualify it by asking how many have written a Forth that can actually do something useful... 12:08:14 heh 12:08:15 k4jcw: could you explain how you reach that almost-conclusion? I don't follow. 12:08:21 * madwork raises hand 12:08:28 * timlarson_ raises again 12:08:42 well, if you are using coroutines, then yes, different register bank for each coroutine. 12:08:46 * astrobe raises his hand 12:08:49 My Forth is used in a production environment, for automated remote testing of hardware. 12:08:50 Does that not in effect say that each routine has a private stack? 12:08:53 maybe for a loose definition of "useful" 12:08:58 i've written a forth that makes a useful calculator. 12:08:58 OoooOOOooooOOOoooOOOllla!!!!!! 12:09:25 k4jcw: each (co)routine yes, but that is a long way from each-word. 12:09:36 well i gotta go. seeya 12:09:43 I've written a couple for projects, but they're not interactive type Forths. Just stack based TILs. 12:09:50 madwork: you're lucky. impressive tail! 12:09:59 OrngeTide, heh... originally I was just making an RPN console interface for games when I started my Forth. :) 12:10:10 astrobe, :D 12:10:45 astrobe, yea they were none too happy about my choice of technology, heh, but our hardware designer convinced them of its merits and it's more than proved its worth since. 12:11:26 my tintin++ is used in production, at both my workplaces. does that make it as valid of a language as forth? ;) 12:11:26 I like Forths for bringing up new hardware. On a couple 8086 and '386 projects, I put a Forth in ROM with a serial port, and use it to debug hardware. 12:12:04 I use Camel Forth on my Z80 board as a BIOS, and to develop and debug the compact flash disk drivers. 12:12:05 juri_, a MUD client? 12:12:11 driving an in-development web site with my current one. 12:12:15 mad: you got it. i'm a contributor. ;) 12:12:41 juri_, cool! :D Is there Forth in it? 12:12:52 nope. like i said, i dont belong here. :D 12:13:27 i'm here cause me and OT go way back, and i could use a 'programmer channel' in my day-to-day irc. 12:13:58 k4jcw, yes, obviously Forth shines there. I use my Forthy "server" in a similar capacity (albeit at a higher level) on our terminals, for testing/poking at the hardware interactively. QA, hardware, development, and production all use it in varying degrees. Interactivity is king! 12:14:16 juri_, ahh. Well, are you familiar with MUF? 12:14:45 mad: no, i frequented just one mud during my entire mudding carreer: darkcastle. 12:15:12 Hmm. 12:15:33 I'd like to try an interactively programmed text adventure in Forth, or using Forth. 12:15:38 Sort of a MUD-like programming interface. 12:15:57 Walk around, create objects, rooms, set variables, etc. on the fly. 12:16:26 i use tintin as a testing framework, and as an automation tool, for managing products distributed across the wal-mart network. 12:17:13 How? 12:17:33 i write good tintin scripts. they react to the wal-mart network, by doing 'stuff'. 12:17:59 juri_, actually sounds similar to what I've done with Forthy. 12:18:12 most notable was the time i health-checked all the wal-mart wireless routers. shelled into 15000 computers in a single work shift. 12:18:20 :D 12:18:34 That's what I'm talking about. 12:18:38 takes careful programming, and a good engine. ;D 12:19:25 i'm good enough at it that they fired me, and a year and a half later, the people i worked with are at a different vendor.. and hired me on at TWICE the rate i was making before. 12:23:25 --- join: Quartus_ (n=Qb@209.167.5.1) joined #forth 12:24:06 hey, here I went and did and got a wireless irc client, and tim left?! :) 12:25:11 what if you think of it as "programming in the tiny" using the few data and return stack calls, "programming in the medium" using larger combinations of parts and larger in-memory stacks, queues, trees, etc. and "programming in the large" coordinating across a collection of machines? 12:25:23 oh there he is. 12:25:37 which you do all in the same program. 12:25:45 hi Quartus ;) 12:26:21 s/stack calls/stacks/ 12:26:51 so what we opened up with this technique is the "programming in the tiny". 12:26:57 what did I miss? What's with meaninglessly dividing programming tasks by size? 12:28:17 oh, somebody said along the lines of: if you have tiny primary stacks you cannot recurse, and I said tiny primary stacks do not prevent recursion because you can have larger secondary stacks, trees, etc. 12:28:55 Take it all the way. You can remove the stack entirely and do it all in memory structures. 12:29:05 and then there was the suggestion of stack-per-word (still confused how that idea came up). 12:29:26 tim, are you new to Forth? 12:29:29 but the tiny stacks are handy, just like short-term memory is handy. 12:29:35 no 12:30:26 analogies between human memory and Forth aren't especially useful. The data-stack isn't particularly analogous to 'short-term memory'. 12:31:12 we are not talking about what you can or cannot do (remember turing?) but what you can(not) or are likely(or not) to do based on how we set up our environment and tools. 12:31:52 so can(not) refers to easy or likelyhood of use, not absolute ability. 12:32:45 nevermind for a while, I'm going back to lurking for a while, perhaps. 12:33:37 k 12:33:59 --- quit: astrobe (Read error: 110 (Connection timed out)) 12:35:58 juri_, hah nice. Redeption! 12:36:28 mad: well, i gave them reason to fire me, it was my 'fault'. 12:36:45 failed a drug test. had 3 days to 'study'. ;P 12:38:26 Not enough drugs in your system? 12:38:35 Forgot to smoke that extra gram of crack? 12:38:49 wal-mart. `nuff said. 12:39:08 i've got another test for the new vendor on monday, but i'm going to pass it. i quit the moment they called and asked for me. 12:40:21 Pee, hair, or blood test" 12:40:23 ? 12:40:36 urine. i'm not worried, i'm 32 days clean. 12:40:38 juri_, woops. 12:41:31 What drug? 12:41:46 marijuana. 12:41:46 And well, it's not like you're operating heavy machinery, or running the 100 meters. So what gives? 12:42:04 well, i am automating the entire wal-mart network. so i can kinda understand. 12:42:27 with a mis-placed semicolon, i could kill wal-mart nation-wide. ;) 12:42:58 And do us all a favor. 12:43:05 Heh 12:43:17 yea, people keep telling me that. but i need the money. :) 12:43:36 i've got a tooth infection thats trying to kill me, so its litearly a life-or-death situation. 12:44:14 I go to Wal-Mart when I want to work on my Spanish speaking skills. 12:44:41 i enjoyed working on the japan support desk. my japanese has really diminished in the last year of no-wal-mart. 12:44:44 juri_, all you need is a figure skate and a big rock, and that tooth problem is history. 12:45:06 cualquier persona aqu? real saber qu? infierno ser doing? 12:45:18 madwork: A figure skate and a big rock? 12:45:19 --- part: Quartus_ left #forth 12:45:19 mad: only if i want my jaw to snap. i've got a bone infection. 12:45:28 other problems may result, but the tooth (and maybe teeth) problem would be history. 12:45:34 ungh... 12:45:51 its going to cost me $20K before all is said and done. four bone grafts.. and it gets more expensive every moment i sit here. 12:46:07 Hey, an $8 can of Bondo from Autozone, and we can fab you up a new jaw and teeth... 12:46:10 tathi, Castaway, Tom Hanks, 2000. 12:46:47 juri_, jeezus. That sucks, sorry dude. 12:47:08 it could be worse. i remind myself of that often. 12:47:21 --- join: astrobe (n=astrobe@c-real.rouen-wireless.net) joined #forth 12:47:26 madwork: ah, that explains it. can't stand Tom Hanks 12:47:33 heh 12:47:40 juri_, what's the scripting like in tintin++? 12:47:59 I may have to take a peep, trigger some new ideas... 12:48:05 So just out of curiosity and no judgement or anything, but why would A) risk the drug test failure, and, B) spend the money on weed, when you need this work done? 12:48:21 madwork: each line is sort of memorized by the engine. you have to write the serial nature into your variable checking and handling. the program executes from left to right, not top to bottom. 12:48:36 k4: i didnt need the work done a year and a half ago. :) 12:49:03 Wait, when was this test failure, then? 12:49:13 I thought it happened in the last couple days or something. 12:49:14 a year and a half ago. 12:49:17 This is why I brush and floss like a madman. Tooth infections suck. 12:49:18 ahhhh. 12:49:27 no, i have a test scheduled for monday. which i can and will pass. 12:50:00 wal-mart is actually my second job, and my first job dosent test. 12:50:37 <-- Software Prostitute 12:51:50 i only write GPL'd software. its a carreer limiting move. ;P 12:52:00 no kidding. 12:52:46 * madwork wants to do some shareware. 12:55:02 I'm wondering, did you ever late I night when you were tired, think about implementing a third stack? 12:55:45 I used a third stack for control flow. 12:55:53 And a fourth stack for vocabularies. 12:55:58 And a fifth stack for input. 12:56:16 And a sixth stack o' pancakes. 12:56:48 for control flow? how this? 12:58:03 (damn it's getting too hot and too wet here) 12:58:25 astrobe, to store markers and such, so that it frees up my data stack for proper data. 12:59:06 I had all of the control flow on the return stack for a while, but that was limiting me in other aspects, so I just gave it its own stack. 12:59:53 . 13:00:14 markers... like target address for jumps? 13:00:23 Yes, basically. 13:01:06 Really, there's no reason to not use separate stacks for logically separate things... at least for systems using in-memory stacks. 13:01:31 which is easier in building a dictionary, absolute addresses or relative-to-0 non-absolute addresses? 13:02:04 then did you implement something to get memory-based stacks "at will"? 13:02:11 I use absolute addresses. 13:02:22 astrobe, yes, I have stacks as a primitive data structure. 13:02:35 I remember a couple Forths from years ago that had a separate floating point stack. And I think one had a string stack. 13:02:36 Though, I need to optimize them. 13:02:48 hmm, fits well with what I was proposing...back to lurking. 13:03:18 Yea, separate float stacks are common. 13:04:05 so madwork already had the "click" ;) 13:04:30 if a float number is cell-wide and a double-length float is 2-cell'd, is a separate float stack really needed? 13:04:38 words are supposed to know what they require 13:04:55 it reminds me that IAPX has fp stacks (8087) and for instance Spark (iirc) has FP registers. strange. 13:04:59 Quiznos, depends on the hardware. 13:05:02 same with words that handle char-wide cells 13:05:06 I think the separate float stack may have been useful for ... sort of what astrobe said. 13:05:10 s/cells/info 13:05:12 And Quiznos, I use types, so one data stack is preferable for me. 13:05:17 But back when math processors where even slower, like the AMD9511. 13:05:23 some fp is async...separate stack helps deal with that. 13:05:24 Though, using optional stacks as storage is useful. 13:05:29 i'm considering types but i have to contemplate them first 13:05:34 well, RTTI 13:05:47 it has to integrate well or i'll not hesitate to dump them 13:05:53 that'll larn 'em! 13:05:59 Quiznos, ASM Forth, or C? 13:06:09 asm, iAPX 13:06:20 i'm starting with eforthl 13:06:24 that's an L 13:06:36 someone ported it to linux 13:06:41 v1.0e 13:06:42 One of Tings? 13:06:55 looks like it is; leme get the other name 13:06:57 Quiznos, I hear tell of some people using a separate type stack for such environments. 13:07:28 ting 90, Muench, Rideau, Hohensee 99 13:07:31 I rewrote his 8051 Forth years ago. Talk about slower than molasses in Anartica.... 13:07:50 heh 13:07:54 I think maybe 9 of the words were in asm. 13:08:14 madwork i'm not sure if RTTI will be good for stacking 13:08:41 maybe i'll do what perl and awk do with runtime translating of data 13:08:43 Depends on how it's done I s'pose. 13:08:45 I was in the process of rewriting the : word in asm, because it was just so slow. But I got sidetracked and never finished. I do remember speeding up some math stuff something like over 100,000 times. 13:08:45 iirc it was all about portability; multiply in hi level... it hurts a bit 13:08:47 coercion when needed 13:08:54 num <> string, etc 13:09:13 astrobe yea it is, that gets redone very soon 13:09:27 Yea, coercion is nice, but I'd keep with explicit conversion then in your case. 13:09:34 why? 13:10:20 To avoid the type stack. :) 13:10:28 You just have to know what data is what. 13:10:45 Here we... A comment from... 1991/01/12 13:10:47 ; Converting UM* to assembly resulted in an incredible speed up. The 13:10:47 ; test word of : TEST 0 20000 FOR $FFFF $FFFF UM* 2DROP NEXT ; took 4 13:10:47 ; minutes and 6 seconds. The recoded version of UM* resulted in the 13:10:47 ; word taking 5 seconds to execute. 13:11:10 ok i expected more :), i've been thinking on heap space, mallocing ram etc; my last core-dump was ~1meg in size 13:11:28 k4jcw ty 13:11:46 and i have to simple asm words to the core words 13:12:09 which iinm would be all the RISCy opcodes 13:13:19 What annoys me about most of these microcontroller Forths is moving a user application to it. Yea, you've got Forth in ROM. But no easy way to load programs. No mechanisms for converting downloaded words to something you can store in ROM, etc. So great, I can download a program via the serial port, via an attached PC. Why not just use the PC instead, then? 13:13:46 use better hw 13:13:50 There are a few that put programs in the EEPROM. Most of these EEPROMs are 256, 512, 1024 or 4096 bytes. And usually have hideous access times. 13:14:08 Yes, thank you. Using a ARM7 back in '91 was infinitely practical. 13:14:36 yw :) 13:15:28 the two things that are #1 and #1 on my list of things to do to Eforth are 13:15:41 1. finish the port to 32bit iapx; and, 13:16:00 Quiznos, which forth do you code? 13:16:09 1. write an unexec word to be able to generate a new bin 13:16:19 virwhich forth-language? 13:16:22 virl 13:16:30 age-wise? 13:17:34 I meant that forth system which you are currently coding 13:17:45 heh, eforth was mentioned above :) 13:17:55 v1.0e, specically. 13:17:56 eforthl 13:18:21 Hohensee has his name it the source code, 1999 13:18:31 i think it's newer than 1.0e 13:18:40 i need to bump the letter 13:19:10 i also wanna port the source to a different assembler that can do proper make-time threading 13:23:12 i also need to figer out from c-code how to write an ELF-format binary; i'm gonna use the tiny tools from linuxAssembly.org site 13:23:25 but that's not unexec()ing 13:25:13 Quiznos: let me know if you have trouble with the ELF thing -- I've done it a few times :) 13:25:58 going home now, thanks for the discussions. 13:26:05 tathi ty 13:26:07 nite 13:26:26 tathi i have more of a problem with figering out unexec() 13:26:36 --- quit: timlarson_ ("Leaving") 13:27:04 then after i get a regenerating eforth (or whatever i name this implementation) i want to incorporate libdl 13:27:14 or port code to do so 13:27:21 hmm 13:27:33 tathi are you familar with unexec? 13:27:38 no 13:27:40 k 13:27:50 you just saving out the memory image, basically? 13:28:01 or extracting just the bits you need, or something? 13:28:28 well, that depends on which binary format i go with; ELF, aout, coff, flat; those are the current choices on Linux 13:28:54 there's not currently an M$-format loader yet 13:28:58 :) 13:29:15 :) 13:29:21 with the info and tools from linuxassembly.org, i'll prolaby go with ELF 13:29:25 so what bit are you having trouble with? 13:29:29 just to keep it simple 13:29:53 atm i'm in pondering mode while I bring up the eforth core-code to a new minimum 13:30:06 http://qualdan.com/examples/linking/elf.s 13:30:10 better integration of kernel services 13:30:13 ok ty 13:30:13 that's the header I use, though it's for PPC Linux 13:30:22 ok 13:30:52 BSDs are a more picky and require section headers IIRC 13:31:33 yea; linuxassembly.org notes are good on describing what's not needed in a linux ELF binary 13:31:40 yup :) 13:31:42 i dont know if i'll do that much trimming tho 13:32:05 i do want to eventually share this work for what it'll be able to do 13:32:10 i have a dream 13:32:18 a two file distribution :) 13:32:20 heh 13:32:36 back to ``let's be smallllllll l l l'' 13:32:42 a two file distribution? 13:32:49 two install files 13:32:53 but that's the dream 13:32:58 and i might be dreamin 13:33:31 I don't think I understand what you mean, but OK :) 13:34:02 every distribution includes all the tarballs, rpm's, .deb's, etc that are required to be installed. 13:34:15 tens, hundreds of files 13:34:18 ah. 13:34:30 i'm thinking a dist of two-tarballs 13:34:31 so you want just the kernel and your forth binary 13:34:31 :) 13:34:40 which you will install as /sbin/init :) 13:34:42 man, you too bright for yer own good :) 13:34:44 heh 13:34:51 oh yea, i forgot about that 13:35:02 that would obv.ly come later 13:35:10 oh, two tarballs. that's much more realistic 13:35:34 a kernel binary to boot and forth to be all and everything else 13:36:06 that's the dream 13:37:29 "errie smoothness". Gracie? heh get a better fan :) 13:59:32 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 14:00:42 --- quit: astrobe ("Wow! What a great client! Bersirc 2.2 [ http://www.bersirc.org/ - Open Source IRC ]") 14:03:51 --- quit: virl ("Leaving") 14:28:36 --- quit: OrngeTide ("gone.") 14:42:26 --- join: crc (n=crc@pdpc/supporter/active/crc) joined #forth 14:42:26 --- mode: ChanServ set +o crc 14:43:45 --- join: madgarden (n=madgarde@Toronto-HSE-ppp3708723.sympatico.ca) joined #forth 15:07:48 --- part: crc left #forth 15:10:34 --- join: crc (n=crc@pool-151-197-229-145.phil.east.verizon.net) joined #forth 15:12:08 --- join: Quartus_ (n=Quartus_@209.167.5.1) joined #forth 15:12:17 --- mode: ChanServ set +o crc 15:13:00 So tim finally left? 15:14:10 ya 15:14:33 Too bad, he was mildly entertaining. 15:15:38 I look forward to him producing the most dense, impenetrable introductory guide to Forth imaginable. 15:16:41 * Robert finds a tape with Blazin' Forth. 15:17:59 wasn't that for the C64? 15:18:18 Yeah. 15:18:24 * Robert fires up his C128. 15:18:43 is it permissible to make a ELF binary with only one seg? 15:18:52 I still have ZXForth kicking around. 15:19:00 like a old format dos .com binary? 15:19:05 Quiznos: my linux box hasn't complained 15:19:22 tathi cool; got notes? 15:19:42 did you look at the .s file I posted a link to? 15:20:14 yes 15:20:31 that's about all I have written down, I'm afraid 15:20:33 saved it 15:20:35 ok 15:21:26 if you change the architecture and endianness, I think it should work on x86 15:21:39 ok 15:21:46 oh, and x86 segments only need 4K alignment 15:21:53 ok 15:21:59 I could kill the idiot who decided PPC needs 64K :( 15:22:07 heh 15:22:17 even though there are no existing implementations that actually require more than 4K 15:22:23 supper, bbiab 15:22:27 woot 15:22:31 for some reason the ppc instruction set seems awkward to me 15:25:29 --- quit: Quartus_ ("used jmIrc") 15:28:08 jmIrc, eh? I see. Didn't know it was called that. :) 15:30:33 AfterDeath ok, i see wht you did with "list" but for me IMO that word is non-intuitive for getting intro help. ie, help [opt] 15:30:43 !seen Quiznos 15:30:48 seen Quiznos 15:31:01 borkback bot 15:31:36 oops wrong win 15:31:37 heh 15:36:40 slava: more awkward than other RISC machines? or just coming from x86? 15:42:28 coming from x8 15:42:44 yeah, I can see that. 15:44:28 these days, anyway. 15:44:50 I switched from 286 to PPC, so I thought things like 16-bit conditional branch displacements were really cool :) 15:45:19 i'm worried the 14-bit branch distance will bite me one day 15:45:24 --- join: I440r (n=mark4@24-177-235-246.dhcp.gnvl.sc.charter.com) joined #forth 15:45:39 although its not likely that one word will compile to 16kb of code, its /possible/ 15:46:24 i think i know why isforths keyboard handling is a bit funky in some terminals sometimes heh 15:46:25 because Factor can compile specialized versions of things? 15:46:26 something auto-generated by a DSL, perhaps 15:46:32 ill be working on that this weekend :) 15:46:32 ah 15:46:56 tathi: i got bootstrap time down to 3:30 on my g5 15:47:15 i have a few more optimizations planned before the next release 15:47:38 i'd like it to take around one minute, eventually 15:47:40 nice 15:47:54 yeah, the UI is fast enough to keep up with my typing now :) 15:48:08 slava one minute to boot ? 15:48:09 why ? 15:48:17 I440r - to bootstrap. 15:48:20 i dont understand why a pc cant boot in 3 seconds 15:48:47 replace the bios 15:48:55 It's a worldwide zen conspiracy trying to teach you patience. 15:49:00 heh 15:49:14 Ever try to code a boot sequence that would bring up a modern OS in 3 seconds? 15:49:16 lol its not working :P 15:49:18 I440r: 'bootstrap' refers to factor's equivalent of isforth's 'extend' 15:49:25 replace the bios 15:49:35 I440r: actually, no, the sources are loaded by that stage, but its where everything in the library is compiled 15:50:14 Quiznos, if linux used forth soruces for its init scripts and everything else and if the kernel were coded in forth the bootstrap could load the isforth kernel and it could compile the entire system at boot in about 2 seconds flat 15:50:18 on ANY machine 15:50:36 You think the overhead in the init scripts is what slows things down? 15:50:40 yeah but it would run slowly once its loaded 15:50:54 since isforth isn't very fast :) 15:50:57 slava isforth applications arent slow :) 15:51:00 I440r the tcc compiler already compiles JUST about that fast 15:51:25 I440r: i'm not sure isforth could decode an mp3 in real time without high cpu usage, etc 15:51:43 Isn't isforth dtc or something? 15:51:43 neither can factor, but its a goal 15:51:48 Quartus: yes 15:52:10 slava it could do so when im able to recode parts of the extensions in assembler like i want to 15:52:22 direct threading isnt THAT bad lol 15:52:30 Miles away from native. 15:52:35 I440r: sure, assembler has less overhead than DTC. but its not high-level 15:52:52 slava why does it need to be ? 15:53:16 I440r: i like languages which are both high level and fast. this pretty much requires an optimizing compiler. different tastes, etc 15:53:58 --- quit: nighty_ ("Disappears in a puff of smoke") 15:54:07 slava im against compiler optimizations heh 15:54:24 i know you are. i'm against using assembly or C to write performance-critical sections of programs 15:54:25 but thats ok lol 15:54:36 i'm also against assembler because i develop on different CPU architectures 15:54:41 btw im working on an optimizing sub threaded forth for arm 15:54:54 why isn't isforth subroutine threaded? 15:54:58 porting assembler is TRIVIAL 15:55:09 because 15:55:13 not having to port at all is even more trivial 15:55:20 direct threading is more forthlike to me 15:55:30 and impossible 15:55:39 porting a portable program is trivial. 15:55:43 --- quit: Quartus (Read error: 104 (Connection reset by peer)) 15:55:51 you cannot take ANY pure sources of ANY high level language and "port" it as is 15:56:07 so you always have to put GLUE code in 15:56:10 always 15:56:20 --- join: Quartus (n=trailer@CPE0001023f6e4f-CM013349902843.cpe.net.cable.rogers.com) joined #forth 15:56:36 Well, of course. 'port' just means 'move' after all. We're talking about teleportation -- just points at which people are willing to do some work and then pretend they didn't do any work. 15:56:39 so why do all the factor programs i develop on my powerpc with mac os also run on x86 machines with linux, etc? 15:56:43 /not/ talking about teleportation. 15:56:54 without changes 15:57:36 slava applications written in isforth work identically on ppc and in fbsd if the port of ISFORTH is solid 15:57:44 good 15:58:07 what i'm saying is that all the portability glue should be part of the language runtime 15:58:15 by a broader perspective, slava, Factor is still quite a bit less portable than isforth. They still don't port through time very well :-) 15:58:35 but thats isforth. you compile isforth sources with anyone elses forth compiler 15:58:39 ayrnieu: factor runs on 3 cpus and 4 oses 15:58:42 unless you add a shitload of glue code 15:58:47 that's portable enough for me :) 15:58:56 does it run in dos ??? :) 15:58:57 hehe 15:59:05 i have a dos port of isforth ;) 15:59:06 slava - really? That's all you want? You don't care at all about running the same program you wrote yesterday, today? 15:59:25 ayrnieu: you're talking about backwards compatibility? i'll only worry about that after 1.0. 15:59:29 slava - you don't care about the ease of adjusting the program you wrote under yesterday's specification to run under the specification written today? 15:59:41 ayrnieu: that has nothing to do with 'portability'. and i do care about that 16:00:16 slava - if you go back and read what I've said, you'll understand the direction I've taken. 16:00:49 what you said didn't really make any sense. 'porting through time' is not the same as 'porting to different CPUs and OSes' 16:01:05 slava - I started five minutes ago, with "porting a portable program is trivial". 16:01:30 ayrnieu so, is it? 16:01:45 Quiznos - what's 'it'? 16:01:50 "trivial" 16:02:37 Quiznos - I've already said it twice. Why don't you ask a question that doesn't require a third repetition as its answer? 16:03:31 ayrnieu: i was obviously referring to porting between oses and cpus. you're just trying to be contrary 16:03:44 i'm lagged 16:04:14 it's I440r's contention that portability is completely impossible, therefore he is justified in providing no facilities to ease the process. 16:04:18 slava - no, I'm not. 16:04:27 Quartus - he hasn't contended that. 16:04:29 ayrnieu: see? 16:04:37 ayrnieu ok, so i'm contemplating the asm form of a Word's structure and i'm tryin to figer out how to restructure the four fields 16:04:51 using c structs {}; 16:05:15 ayrnieu, he most assuredly has, though perhaps not today. 16:05:17 slava - no. But I can guess that you find it easier to see people as 'opponents' who can be folded together and considered as constantly adversarial, rather than pay attention to what they say. 16:05:20 word { head, tail }; head { NFA, LFA }; tail { CFA, PFA }; 16:05:25 quartus i just dont believe the cruft you have to deal with in your sources to achieve it are worth the trouble when porting the code is trivial 16:05:54 porting forth from xyz compiler to abc compiler is a complete and utter non issue when the source source isnt full of bs visually cluttering duct tape glue code 16:05:56 where NFA, LFS, CFA, AND PFA are actual pointers to the name, link, code and parameter field-contents. 16:06:56 There are large blocks of very portable code that require no 'duct tape code'. 16:07:01 Quartus - OK. Given that he's now decided that subroutine-threaded forths are forths, I'm willing to forgive him for saying on other days that portability is impossible. Today, he's only said that it requires work, that porting certain things is trivial, and so on. 16:07:18 so that, when given a pointer to a field of a word, the *nf, it's simple cell+ or cell- to get to the other fields, then jump through the pointer to the actual content of the field 16:07:27 By portable, I mean they can run without changes on multiple Forth compilers. 16:08:13 ayrnieu, sub threading is harder to code than direct - and thus its far harder for a beginner to understand the code 16:08:13 --- join: Shain (i=steve@c-67-161-56-76.hsd1.ca.comcast.net) joined #forth 16:08:43 kernel writing is not for beginners; why would they be interested in internals? 16:08:45 the reason im doing a sub threaded arm forth is because its for a gba (actually a ds) and games need ALL the speed they can get 16:09:05 Harder to code? It's a painfully simple implementation strategy. 16:09:13 Quiznos, i wrote isforth so that forth beginners could understand it 16:09:28 and ive been told by alot of people that they have no problems reading my sources 16:09:28 cool 16:09:32 that was my prime goal 16:09:32 egselent 16:09:41 no one can comment on my posts? 16:09:43 I440r - GBA? Interesting. 16:09:51 gba or ds 16:10:03 im using an xport2 which cost more than the ds did heh 16:10:44 I440r - I take "gba or ds" to simply mean "GBA", with the subtext that you intend to use physically use a DS as your GBA. 16:14:45 actually theres alot different about the ds - i got the forth kernel running on the ds in gba mode but im going to port it over to running in DS mode (on both processors) 16:14:54 that opens up alot of neat hardware to me:) 16:14:56 like wireless 16:15:10 thats how i want to interface with the ds eventually 16:15:40 have some sort of telnet app running on the ds and have an application i linux (coded in isforth) that interfaces to it :) 16:15:49 thats kind of a pipe dream atm tho 16:20:57 do you really mean TELNET (http://www.faqs.org/rfcs/rfc854.html -- with, uh, comments)? People seem to say that like 'kleenex' or 'hoover'. 16:22:55 no but something LIKE it - just not as complex lol 16:25:29 oh, the IFPC is out. 16:30:25 also, ICFP 16:55:39 --- quit: slava () 17:01:23 ok, single barrel bourbon is NOT condusive to good coding 17:01:38 * ayrnieu drinking Gosling's Black Seal Rum 17:03:16 :) 17:24:08 --- join: Raystm2 (n=Raystm2@adsl-69-149-43-76.dsl.rcsntx.swbell.net) joined #forth 17:24:44 --- quit: Raystm2 (Remote closed the connection) 17:37:55 --- join: Raystm2 (n=Raystm2@adsl-69-149-43-76.dsl.rcsntx.swbell.net) joined #forth 17:42:06 --- join: snowrichard (i=snowrich@adsl-69-155-177-157.dsl.lgvwtx.swbell.net) joined #forth 17:44:42 --- quit: snowrichard (Client Quit) 18:30:50 --- join: lark (n=karl@cpe-66-91-235-165.san.res.rr.com) joined #forth 18:49:35 --- quit: I440r ("Leaving") 19:03:27 --- quit: uiuiuiu (Remote closed the connection) 19:03:29 --- join: uiuiuiu (i=ian@dslb-084-056-233-142.pools.arcor-ip.net) joined #forth 19:17:19 --- quit: Robert ("leaving") 19:32:59 --- quit: tathi ("leaving") 19:33:51 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-140-211.pools.arcor-ip.net) joined #forth 19:41:14 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 19:41:21 --- nick: snoopy_1711 -> Snoopy42 20:38:13 I've my ICFP code, so far, at http://sagacity.merseine.nu:8080/ (along with the codex). The comments on individual xts in OPERATORS indicate the number of times they get invoked before the system quits itself -- before it calls QUIT-UM ; it shouldn't do that :-) , so I've a bug. /me wanders off. 20:39:13 oh, except for QUIT-UM , everything else gets called 0 times. 20:41:10 you can start it with: gforth um.fs -e '"codex Why are you showing us your broken ICFP code? :) 20:51:03 it's interesting :-) 20:54:36 I get bogged down pretty early on reading it. 20:55:41 0plat and plat I follow, though I don't know why 8 isn't a named constant. 20:55:47 Nothing indicates why collection needs to be a deferred word. 20:55:48 I still see it as an exercise in writing to a spec, however. The "divide by the value in register C, if any" got by me. And apparently now part of my problem is that I haven't realized that the codex counts as a 'legacy "unsigned 8-bit character" scroll' 20:56:13 I have no clue why new-array returns an n2, nor what n2 might be. 20:56:47 The purpose of and reasons for naming of array and array' I don't get. 20:57:06 Quartus - collection is practically-speaking-unbounded, so I give it the entire remainder of the dictionary space. The comments at the end of the file say not to compile past that point, &c. 20:57:23 So I have to read to the end to understand the beginning? 20:57:40 I am unfamiliar with save-mem, is it gforth-specific? 20:57:50 well, you're expected to note \ see end of file when you wonder about the two words immediately preceeding 20:58:12 aye, gforth-specific. It returns an ALLOCATEd copy of a string. 20:58:36 But it isn't being passed a string, it's being passed an address. 20:59:09 oh. Good thing the program hasn't tried to do that, yet. 20:59:13 I have major issues with the namings of 0array!, array[n] and #array, but I can mostly follow what they do, though I firmly believe all should have comments. 20:59:33 Well, in lieu of any comments, for all I know the stack diagram is wrong, and not the code. 21:00:03 no, it's clear that ( a -- ) save-mem is wrong. 21:00:03 Add array and array' to the list of names I am bewildered by, and also to the list of those I don't follow. 21:00:10 Sure, if the stack diagram is right. 21:00:39 It's clear from reading the code that 1x1 outputs a character to a blank screen, but the name is awful. 21:01:30 It probably doesn't make sense to ever call that, anyway. 21:01:45 I'm guessing collection is some kind of constant value, later on somewhere? 21:02:08 I absolutely refuse to get out a pencil and sort out what the hell "dup >r count swap count swap count swap count nip 21:02:08 r@ c! r@ 1+ c! r@ 1+ 1+ c! r> 3 + c! 21:02:11 " is supposed to do. 21:02:14 Comments required. 21:02:32 the comments are right above that. 21:02:49 They do not describe the workings of that code in any way. 21:03:18 I think I follow 'spin', though there's no stack diagram for 'discharge' that I can see, and it's evidently defined later on as well. 21:03:49 The binary constants in the words that follow are a mystery. The reason for the definition of regA', I don't know. Why ' (prime? secondary?) 21:03:53 big long wierd comment about requiring big-endian, a ( c-addr -- ) stack comment, a conditional compilation that makes Is ]L yours, or a gforth thing? 21:04:14 gforth. ] LITERAL 21:04:32 So you're optimizing while writing the code. 21:04:56 You know gforth provides base prefixes. % is binary, as I recall. 21:05:00 No, that's just nice shorthand. 21:05:14 neat, I didn't know about %-prefix 21:05:34 Everything from \ Operators on down is an uncommented swamp of obtuse code. 21:05:40 Quartus - regA is /special/. Silliness in the spec. 21:06:30 Yes, that only makes sense with the spec on-hand. I'd think that it gets less obtuse by the definition of QUIT-UM -- also, all of those have the stack comment of ( x -- ) ... except for the ones that are helpers, and have their own stack comments 21:07:10 Stack comments are dandy, but they aren't descriptive. 21:07:41 I assume \ 67108864 is explained by some accompanying spec ? 21:07:48 no, that I explain above. 21:08:04 Uh, where? 21:08:37 in the channel. it's the number of times the associated operator gets looked up before the (universal machine) program calls QUIT-UM 21:08:50 as tracked by OPERATOR-TRACKING 21:08:53 IN THE CHANNEL? I suggest moving explanations to THE CODE, young man. 21:09:10 those comments are very temporary, of course. 21:10:22 One major complaint is that you defer definitions without any stack comment attached to the defer. 21:10:32 I have no idea what those words are intended to consume and produce. 21:10:54 \ see end of file just sends me on a goose-chase to find where you might be assigning a definition. 21:12:05 oh, I didn't think to put a stack comment on them. 21:13:07 You do not yet write code that is easily read by other Forth programmers. 21:16:16 I cannot sort out what and why array' and array are there for. 'collection' is evidently a VALUE that you're working as a DEFER which is then assigned a CREATE, which hurts my brain. 21:17:10 value collection 21:17:14 ... ( entire rest of program ) 21:17:28 No. 0 value collection ....... program....... here to collection 21:17:34 create beginning-of-point-at-which-no-more-compilation-can-happen 21:17:38 here to collection 21:18:00 no create required. align here to collection would do the trick, though I think gforth leaves it aligned anyway. 21:20:06 If you object to VALUE, as for some reason some do, make it a variable with a wrapper word that fetches it. 21:20:41 I don't object to VALUE 21:23:59 You defer discharge, but apparently without cause. spin is the only thing that uses it and spin could be defined further along. 21:25:11 true. 21:26:24 I'm unclear on "14 cells here swap dup allot 0 fill". 21:26:31 Are you trying to allot 14 cells and zero them out? 21:27:03 yes. Forgetting about ERASE , and not writing a 0allot even after I noticed the pattern. 21:27:10 If so, create operator-tracking 14 cells allot 21:27:16 operator-tracking 14 cells 0 fill 21:27:23 Would be endlessly clearer. 21:27:38 endlessly? :-) 21:27:43 Yes, without end. 21:28:17 --- join: tattrdkat (n=virsys@or-71-53-74-48.dhcp.embarqhsd.net) joined #forth 21:31:24 --- quit: virsys (Read error: 145 (Connection timed out)) 21:33:55 it turns out that I do need 8 as a constant 21:37:56 Have you seen IanOsgood's effort? 21:38:12 I haven't. 21:38:18 Worthy of study. 21:39:52 where is it? 21:40:13 http://forthfreak.net/index.cgi?ICFP 21:40:41 His decoding section is quite nice. 23:07:48 --- join: slava (n=slava@CPE0080ad77a020-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 23:33:46 --- part: lark left #forth 23:52:28 heh, I like marcel's implementation. 23:59:59 --- log: ended forth/06.07.21