00:00:00 --- log: started forth/14.09.04 00:02:42 --- quit: MrMobius (Disconnected by services) 00:02:55 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 00:11:01 --- join: nighty^ (~nighty@hokuriku.rural-networks.com) joined #forth 00:13:09 --- quit: MrM0bius (Read error: Connection reset by peer) 00:13:44 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 00:38:32 --- quit: ASau (Ping timeout: 260 seconds) 01:05:23 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 01:05:23 --- quit: MrMobius (Disconnected by services) 01:15:46 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 01:16:11 --- quit: MrM0bius (Ping timeout: 240 seconds) 01:22:18 --- quit: MrMobius (Disconnected by services) 01:22:30 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 01:29:38 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 01:31:36 --- quit: MrM0bius (Ping timeout: 255 seconds) 01:38:31 --- quit: MrMobius (Disconnected by services) 01:38:43 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 02:22:28 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 02:24:05 --- quit: MrM0bius (Ping timeout: 276 seconds) 02:58:27 --- quit: MrMobius (Ping timeout: 255 seconds) 03:28:54 --- quit: protist (Quit: Konversation terminated!) 03:32:53 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 03:47:02 --- quit: jyfl987 (Ping timeout: 272 seconds) 04:02:45 --- quit: ErhardtMundt (Ping timeout: 268 seconds) 04:07:57 --- join: ErhardtMundt (~quassel@93-43-152-73.ip92.fastwebnet.it) joined #forth 04:33:36 --- quit: proteusguy (Remote host closed the connection) 04:46:59 --- join: Tod-Autojoined (Tod@50-198-177-186-static.hfc.comcastbusiness.net) joined #forth 04:51:55 --- join: Adeon_ (shannon@sukima.trankesbel.com) joined #forth 04:52:18 --- quit: Adeon (Ping timeout: 260 seconds) 04:52:19 --- quit: TodPunk (Ping timeout: 260 seconds) 05:06:26 --- join: saml_ (~saml@pool-71-190-8-37.nycmny.east.verizon.net) joined #forth 05:22:08 --- nick: Adeon_ -> Adeon 05:42:46 --- quit: rollertrump (Read error: Connection reset by peer) 06:21:11 --- quit: saml_ (Ping timeout: 240 seconds) 06:30:54 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 06:46:17 --- join: proteusguy (~proteusgu@ppp-110-168-229-146.revip5.asianet.co.th) joined #forth 06:57:22 --- quit: mr-fooba_ (Quit: Leaving...) 06:59:38 --- join: kumul (~mool@adsl-64-237-238-27.prtc.net) joined #forth 07:10:01 --- join: Kyle_ (~Kyle@74-92-47-81-NewEngland.hfc.comcastbusiness.net) joined #forth 07:10:25 --- nick: Kyle_ -> Guest85035 07:15:33 --- join: C_Keen (~ckeen@pestilenz.org) joined #forth 07:18:22 --- quit: kylert (*.net *.split) 07:18:23 --- quit: C-Keen (*.net *.split) 07:38:21 --- quit: MrMobius (Disconnected by services) 07:38:34 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 07:55:16 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 07:56:37 --- quit: MrM0bius (Ping timeout: 252 seconds) 08:04:29 --- quit: MrMobius (Ping timeout: 268 seconds) 08:07:09 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 08:09:05 --- join: mr-foobar (~mucker@49.206.19.125) joined #forth 08:12:04 --- quit: MrMobius (Disconnected by services) 08:12:17 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 08:33:15 --- quit: Zarutian (Quit: Zarutian) 08:57:41 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 09:01:09 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 09:03:12 --- quit: MrM0bius (Ping timeout: 276 seconds) 09:12:38 --- quit: MrMobius (Disconnected by services) 09:12:51 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 09:22:30 --- join: ErhardtTheWhite (~quassel@93-43-152-73.ip92.fastwebnet.it) joined #forth 09:24:34 --- quit: ErhardtMundt (Ping timeout: 255 seconds) 09:30:39 --- quit: bbloom (Quit: Textual IRC Client: www.textualapp.com) 09:32:34 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 09:34:31 --- quit: MrM0bius (Ping timeout: 268 seconds) 10:06:41 --- join: dys (~user@2a01:1e8:e100:8296:21a:4dff:fe4e:273a) joined #forth 10:08:01 --- quit: MrMobius (Disconnected by services) 10:08:14 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 10:09:48 --- nick: Guest85035 -> kylert 10:10:40 --- join: xyh (~xieyuheng@2001:250:3002:5550:6ea1:cc0f:bcb2:b187) joined #forth 10:25:53 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 10:27:10 --- quit: MrM0bius (Ping timeout: 246 seconds) 10:39:07 --- quit: MrMobius (Disconnected by services) 10:39:20 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 11:04:36 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 11:06:32 --- quit: MrM0bius (Ping timeout: 260 seconds) 11:14:17 --- quit: DGASAU (Remote host closed the connection) 11:15:27 --- join: DGASAU (~user@p50993595.dip0.t-ipconnect.de) joined #forth 11:16:20 --- quit: dys (Ping timeout: 260 seconds) 11:22:08 --- quit: MrMobius (Disconnected by services) 11:22:21 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 11:41:55 --- quit: DGASAU (Remote host closed the connection) 11:42:06 did the impl of LL used cache the tail (or insert at the head)? my first guess is an algo fail (linear search to end of list each insert) - though that seems too obvious and i'd still expect it to finish in under 11hrs 11:42:20 --- part: robdubya left #forth 11:43:08 --- join: DGASAU (~user@p50993595.dip0.t-ipconnect.de) joined #forth 11:43:34 how (un)common is it to meld C and forth in a system? i'm a little daunted at the thought of trying to code a FFT in forth - and I know there are good C impls I can use 11:44:47 so people generally do ABI interfaces, or have one (forth/c) master for the other (I guess this is almost the same thing as ABI)? or code in C and use something like ATLAST for the forth-ish parts? 11:45:02 do* people... 11:59:44 --- quit: DGASAU (Ping timeout: 252 seconds) 12:02:29 --- part: kumul left #forth 12:04:10 --- join: DGASAU (~user@p50993595.dip0.t-ipconnect.de) joined #forth 12:12:27 --- quit: MrM0bius (Ping timeout: 245 seconds) 12:29:36 --- quit: DGASAU (Remote host closed the connection) 12:31:01 --- join: DGASAU (~user@p50993595.dip0.t-ipconnect.de) joined #forth 12:55:02 --- join: ASau (~user@46.114.6.123) joined #forth 13:03:54 if you use gforth, then you can SWIG https://github.com/GeraldWodni/swig maybe. I haven't tried yet 13:24:52 --- quit: mark4 (Quit: Leaving) 13:32:52 --- quit: xyh (Remote host closed the connection) 13:45:19 --- quit: nighty^ (Remote host closed the connection) 14:21:01 thanks for the pointer. i'll check it out. 15:11:21 --- join: Mat3 (~Mat@91.65.76.247) joined #forth 15:11:33 hello 15:34:52 h'lo 15:35:08 hi Zarutian 15:44:50 --- quit: Mat3 (Quit: Verlassend) 15:46:44 --- quit: Zarutian (Quit: Zarutian) 16:32:21 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 16:53:10 --- quit: DKordic` (Read error: Connection reset by peer) 16:53:23 --- join: DKordic` (~user@91-150-115-51.dynamic.isp.telekom.rs) joined #forth 16:57:47 --- nick: Tod-Autojoined -> TodPunk 17:20:17 --- join: saml_ (~saml@pool-71-190-8-37.nycmny.east.verizon.net) joined #forth 17:33:04 --- quit: saml_ (Ping timeout: 268 seconds) 17:44:09 --- quit: MrMobius (Disconnected by services) 17:44:21 --- join: MrM0bius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 17:45:17 --- quit: joneshf-laptop (Ping timeout: 245 seconds) 17:45:43 --- join: saml_ (~saml@pool-71-190-0-123.nycmny.east.verizon.net) joined #forth 17:51:43 --- quit: saml_ (Ping timeout: 240 seconds) 17:51:54 --- join: joneshf-laptop (~joneshf@98.208.35.89) joined #forth 18:04:27 --- join: saml_ (~saml@pool-71-190-0-123.nycmny.east.verizon.net) joined #forth 19:07:46 --- join: jyfl987 (~papapa@59.108.97.201) joined #forth 19:47:13 --- quit: MrM0bius (Ping timeout: 240 seconds) 19:49:01 --- join: MrMobius (~Joey@c-98-223-189-47.hsd1.in.comcast.net) joined #forth 19:50:08 --- quit: danfinch (Quit: WeeChat 0.4.1) 19:50:54 --- join: danfinch (~danfinch@69.59.125.205) joined #forth 19:51:46 --- quit: danfinch (Client Quit) 19:54:27 --- join: danfinch (~danfinch@69.59.125.205) joined #forth 20:07:35 --- quit: proteusguy (Ping timeout: 260 seconds) 20:26:33 --- quit: I440r (Quit: Leaving) 20:27:53 --- quit: MrMobius (Ping timeout: 245 seconds) 20:37:23 --- quit: saml_ (Quit: Leaving) 21:24:25 So, I'm at the stage in my Forth where I want to reinvent the dictionary. 21:24:39 I think the linked list approach to dictionary is badwrong. 21:24:51 yes, i have considered that 21:25:00 I'm thinking of perhaps using a PATRICIA (radix trie) instead. Any other data structures that are promising? 21:25:04 but many manual depend on it 21:25:29 I don't care about manuals. Or standards for that matter. :) 21:25:47 So what other data structures could be at the heart of a Forth dictionary? 21:25:49 good, you're not like those guys in comp.lang.forth :] 21:26:14 I think the ANSI Forth standard missed the entire point of Forth. Which is fine because I also think most Forth programmers miss the point of it. :) 21:26:38 first, trie is just good for speed up searching 21:26:44 If you're using Forth for a project that has more than, say, four people working it or whose end product will be larger than, say, 64KB, you're doing it wrong (IMO). 21:26:49 and it require many repeat prefix 21:26:57 Not a radix trie. 21:27:11 Radix tries don't repeat prefixes. 21:27:26 That's kind of their identifying characteristic. 21:27:34 no, i mean the data stored in it needs to have many prefixes so that it could be reduce 21:27:51 Oh, right. 21:27:56 I think Forth words count for that. 21:29:35 but i saw many words dont have a common prefixes, so that trie structure might degenerate to one words per prefix 21:29:38 Another option would be hash tables, but those don't really do well in constrained spaces. 21:29:47 then its just a common 1 depth hash 21:29:56 maybe worser than that 21:29:57 Right. Degenerate case is a 1-depth hash. 21:30:08 >R >F > ... 21:30:14 I'm seeing prefixes in common. 21:30:22 Just in that one character. :) 21:30:36 why not we fetch some project's sourcecode and do a testing? 21:31:31 also what about import a namespace like concepts? 21:31:41 which will reduce the searching 21:31:55 like you first search the base address of the target namespace 21:32:11 then start from there, continue searching sub words 21:32:14 Most of the time vocabularies build up on dictionaries. 21:32:20 In the end you get a composite dictionary anyway. 21:32:38 Each one is going to be smaller than a project-wide one, obviously. 21:32:57 But my main problem with the linked-list approach is that it makes any attempt to do metaprogramming in Forth really grossily inefficient. 21:33:08 Because you now have to start hitting the dictionary searches at runtime. 21:33:30 At compile time it really doesn't matter how long a dictionary search takes. 21:33:38 then your problem is how to improve the speed of compiler finding the target address of a word from its name 21:33:43 You define a new word, it doesn't matter much if it takes 15µs or 15ms. 21:34:02 If you start using the dictionary at runtime, however, this is a major issue. 21:34:14 So I'm trying to find a faster alternative that keeps roughly the same semantics. 21:34:30 This would then allow me to start exploring higher-order programming in Forth. 21:34:46 i think you dont need to destroy the tradinaion linked list based dictionary 21:35:03 but you could add a cache layer for your word which do the FIND job 21:35:52 That starts increasing complexity and space. And caches thrash. 21:36:14 If you hit the magic number you spend more time servicing the cache than you would spend in even a linear search. 21:36:16 by using a black-red tree to caching the map relation of `wordname -> wordaddress` 21:37:54 no, this is not a complexity solution, you dont destoy the trandition, if you want it and the environment could accept it, then you open the feature 21:37:58 Hand-coding a red-black tree in assembler would not be my idea of a Fun Time™. 21:38:15 if you dont want it or the target enviroment are very limited, then you just close the feature 21:38:23 really? 21:38:30 A PATRICIA in assembler would be trivial. 21:38:38 A red-black ... not so much. 21:42:57 then use a simple binary search tree? 21:43:22 I think for the specific case of searching for textual keys that a PATRICIA is a better fit. 21:43:42 O(k) (where k is maximum key length) instead of O(logN). 21:44:12 Especially since at the end of a binary tree you have to do a key compare anyway so it degenerates to O(logN+K). 21:44:58 I've used PATRICIAs in network routing exercises and in making (real word) dictionaries. 21:45:13 They're pretty easy to code and have attractive characteristics. I want to experiment. 21:45:29 And ... as a nod to tradition, there's nothing preventing me from adding a link field to a word anyway. 21:45:32 --- join: dys (~user@2a01:1e8:e100:8296:21a:4dff:fe4e:273a) joined #forth 21:45:34 ok, let me know the improvement part 21:45:35 For people who want to follow a chain. 21:46:14 So the actual dictionary as used by the engine (and by higher order words) can be a PATRICIA while the old-style is still accessible to legacy code. 21:48:39 and what about the insertation time costs of PAT tree? 21:49:14 O(k). 21:49:25 Pretty much all costs on a PATRICIA are O(k). 21:49:58 Like various balanced trees, etc. you've got a slightly higher constant factor when inserting at a point that mandates a split, but it's pretty trivial. 21:52:30 will try that later 21:55:22 Actually thinking about it the hybrid approach may be best. 21:55:42 Strictly for the ease of porting old code. 21:55:53 It costs me a pointer per word, on the negative side. 21:56:06 But on the positive it makes porting older, more funky words easier. 22:01:18 well, while you old guys (uncle or grandfather to me) are consider using forth on very limited enviroment like mcu soc 22:01:28 i am more interesting on another limited enviroment 22:01:46 which is massive service programming 22:02:16 As long as it's constrained space, etc. Forth is a good fit. 22:02:17 i think i dont care one more pointer cost on storage 22:02:32 but i care about the response time 22:02:33 Forth is not so good a fit in an environment that demands large, complicated applications. 22:03:01 like i told you, redis is a good case for forth 22:03:05 but they use lua currently 22:03:33 Lua isn't a terrible choice. 22:03:38 our compnay's redis server has hold 60 G in RAM data :] 22:03:51 which is about 20 M keys 22:03:54 A terrible choice would be, say, Python or Ruby. :) 22:03:59 2000,0000 22:04:12 20,000,000 22:04:17 English isn't myriad-based like Chinese. ;) 22:04:29 i know, but i think you could understand 22:05:06 under a high load case 22:05:07 True. I've had to hammer the differences between the numbering systems into well over 2000 heads by now. :) 22:05:29 a redis server would response about 10k-20k query per seconds 22:05:52 lua's own overhead is a problem in such case 22:06:34 also , big website often use a template tech which transtlate from data+template to finally HTML file 22:06:59 the translate happens too often , just think about facebook and twitter 22:07:38 it would be a good case for forth, since the enviroment wont require too complex logic while require exteme time cost 22:16:40 Forth as an embedded language for task-specific stuff would actually be awesome. 22:16:51 Writing the interface layer would be a bit of a bitch, but only a bit. 22:42:58 --- quit: mr-foobar (Quit: Leaving...) 22:44:43 --- quit: jyfl987 (Ping timeout: 252 seconds) 22:54:29 MUF. 22:59:40 --- join: jyfl987 (~papapa@59.108.97.201) joined #forth 23:36:26 --- join: mr-foobar (~mucker@49.205.73.166) joined #forth 23:59:59 --- log: ended forth/14.09.04