2024-05-10 04:36:09 Ah - this is a breath of fresh air: 2024-05-10 04:36:11 https://www.youtube.com/watch?v=dDUC-LqVrPU 2024-05-10 04:36:25 Finally someone talking about "maybe there's NOT going to be a singularity in AI." 2024-05-10 04:36:33 I find that MUCH more likely than "there will be." 2024-05-10 04:36:57 The argument in the paper he discusses is that diminishin returns set in. 2024-05-10 04:36:58 wikipedia had a section on "critics of singularity" last I looked a while back 2024-05-10 04:37:28 Honestly I think the whole idea violates the TANSTAAFL principle. 2024-05-10 04:37:57 When does ANYTHING become exponentially better without us having to continue to invest our energies in it? 2024-05-10 04:38:10 uh, "the market". next question. 2024-05-10 04:38:38 I think most of that can be associated with the industrial revolution and the master of electromagnetism. 2024-05-10 04:38:44 We get to do those things ONCE. 2024-05-10 04:38:59 Steam engine, chemistry, electromagnetics. 2024-05-10 04:39:44 Gravity is too weak, and the strong and weak nuclear forces are too short range. So we've already exploited the one that's really useful. 2024-05-10 04:40:00 nuclear, though those trend towards white elephant for various reasons 2024-05-10 04:40:13 I think we probably have a boon left in genetics. 2024-05-10 04:40:18 I'm not sure if there is anything after that. 2024-05-10 04:40:51 Yeah, I do think nucelar can help us out on the energy front. 2024-05-10 04:41:05 If the public can ever wake up and realize there's no dodging it long term. 2024-05-10 04:41:56 But that's kind of a limited exploitation - we'll get energy from it. But we won't find the myriad ways to use it that we did with electromagnetism. 2024-05-10 04:42:25 Genetics, on the other hand, has a whole lot of upside potential. 2024-05-10 04:43:26 Well, and downside potential too. 2024-05-10 04:43:28 :-| 2024-05-10 04:44:28 Anyway, I haven't looked at the paper itself yet. 2024-05-10 04:44:43 I've generally found the guy talking there to seem competent, though. 2024-05-10 12:41:52 do you think Forth is hard to debug? i mean, reading very long : .. ; can be misleading, because you can't keep the stack in mind for so long? 2024-05-10 12:43:15 There's more overhead debugging IMO but not prohibitively so 2024-05-10 12:43:33 You're encouraged by nature of language to test more and smaller functions as-you-go 2024-05-10 12:43:48 It's not any harder to debug than anyone might imagine 2024-05-10 12:43:56 Well, the main way I've debugged is by moving some kind of "visible effect word" (like a debug print, but when first bringing a system up it might just be an "exit") through my code until I locate where my problem occurs. I think Forth has the potential to support a very good debugging environment, but I've not written one yet. 2024-05-10 12:44:28 ^ +1 on being encouraged to factor and test in smaller increments. 2024-05-10 12:44:32 You've got more tools at your disposal for debugging than most languages give you out the box 2024-05-10 12:45:11 Stuff like ' DUMP and .S are quite standard 2024-05-10 12:45:19 There's a rule-of-thumb which says to try and keep definitions to between 7 and 10 words 2024-05-10 12:45:42 Everyone's got their own rules for that 2024-05-10 12:45:48 That rule of thumb seems to get violated quite a lot. 2024-05-10 12:46:20 I've seen it tied to the number of items we can hold in our short term memory effectively. 2024-05-10 12:46:40 Yeah 2024-05-10 12:48:37 What I want eventually is a fairly standard debugger that will let me set breakpoints, single step, monitor RAM, the stack, the call situation, etc. 2024-05-10 12:49:53 What would be extra nice would be if my code could run in one window and the debugger in a separate one. 2024-05-10 12:50:30 God's eye view :P 2024-05-10 12:50:57 One advantage of non-STC forths is you can swap out NEXT code for step debugging 2024-05-10 12:51:00 Exactly. 2024-05-10 12:51:15 STC forths you can use arch's debugging features 2024-05-10 12:51:18 To both of those comments. 2024-05-10 12:53:36 I quite like this idea from https://en.wikipedia.org/wiki/Pilot_(operating_system) 2024-05-10 12:53:36 "A typical Pilot workstation ran 3 operating systems at once on 3 different disk volumes : Co-Co-Pilot (a backup debugger in case the main operating system crashed), Co-Pilot (the main operating system, running under co-pilot and used to compile and bind programs) and an inferior copy of Pilot running in a third disk volume, that could be booted to run test programs (that might crash the main development environment)." 2024-05-10 13:44:19 I think the situation in e.g. Linux is good enough 2024-05-10 13:45:22 Where you catch/report what's catchable and write to a log before resetting, can run with a debugger attached if you want but most people don't 2024-05-10 13:45:43 This is possible because of a solid CPU architecture, older archs the Pilot situation might have been necessary(?) 2024-05-10 13:46:57 I don't think Pilot used hardware protection 2024-05-10 13:47:29 It was written in Mesa and was a single language system 2024-05-10 13:55:46 That's the sort of thing I was expecting 2024-05-10 13:57:02 Yeah, all the process separation was done in software 2024-05-10 16:07:20 re: forth debugging; I don't find it particularly difficult 2024-05-10 16:07:38 factoring definitions helps with keeping things readable, and it gets easier to keep track of the stack with experience 2024-05-10 16:07:53 (and use of additional stack comments in the definition can help if the stack permutations get tricky to follow) 2024-05-10 16:08:11 depending on the forth, you can have some reasonable debugging tools 2024-05-10 16:09:22 e.g., I have things for execution & stack tracing, disassembly / decompilation, watching variables, and single stepping 2024-05-10 16:50:30 I find once you become more familiar with stack movements, your brain easily holds onto at least 6 stack items. 2024-05-10 16:50:47 Which, is like 99% of cases is more than you'll typically mess with 2024-05-10 16:50:54 is/in 2024-05-10 16:51:12 I find myself using `hex .s bye` very often 2024-05-10 16:52:13 It'd be ULTRA cool if there were a forth that can backstep. 2024-05-10 16:52:34 Sure, it'll be less efficient. But developer time would go down. 2024-05-10 17:00:54 you have the power 2024-05-10 17:02:23 "Win - You've Got The Power" https://www.youtube.com/watch?v=hl4gPjyrnfI 2024-05-10 17:12:21 "your brain easily holds onto at least 6 stack items" not mine lol 2024-05-10 17:14:11 this is your brain. this is your brain easily holding onto at least 6 stack items. 2024-05-10 17:22:04 Most stack words operate on the top three items (or top three doubles) 2024-05-10 17:57:47 Wow - you're doing well to think of six items as "easy." 2024-05-10 17:58:14 I've had to deal with that many stack items (once I added command history to QUERY), but it wasn't particularly FUN. 2024-05-10 17:58:32 And standard Forth doesn't make it terribly easy, either. 2024-05-10 17:58:44 I added a new mechanism for coping with that. 2024-05-10 17:59:08 A very frowned upon one that lets me index into the stack. 2024-05-10 18:00:19 I first thought I'd index off of the stack pointer, but it changes every time you do something, which makes your items slide around in offset space. So I added a new "frame pointer" register for that purpose. 2024-05-10 18:00:39 It also can be used to allow one task to access data in another task's stack. 2024-05-10 18:00:53 Though that can bring up cache thrashing issues. 2024-05-10 18:01:07 So it's not something to over-use. 2024-05-10 18:01:37 But it's easy to have a child task get its own stack pointer but inherit its parents frame pointer. 2024-05-10 18:02:24 I think MOST stack words operate on the top one or two items, but yes, there are some standard words that work on three. 2024-05-10 18:38:10 ACTION thinks of 10.6.2.2292 TIME&DATE, which returns six values 2024-05-10 19:49:03 Oh, that's fun. Ok - no traditional Forths I'm familiar with. I'm really not up on the standard. 2024-05-10 20:07:38 I think the thing about TIME&DATE is you probably don't leave it as six values the whole time usually 2024-05-10 20:07:49 It's more about being very 'generic' 2024-05-10 20:08:02 Although you can 2024-05-10 21:06:57 Yes, you need to see things as basically in groups of 3 2024-05-10 21:07:01 to think farther 2024-05-10 21:07:04 in stack world 2024-05-10 22:37:55 Profound words 2024-05-10 22:43:22 i realize also rot / -rot is generally bad. it's worse than using >r >r if you can 2024-05-10 22:43:39 unless you can subsidize the cost of rot with the underlying hardware of course 2024-05-10 22:44:28 my own experiences is leading me to stick to swap, drop, dup, over, r> and >r. anything more seems to always lead to worse code, worse thinking, etc 2024-05-10 22:45:32 and everything more complex seems to be a variant of these 2024-05-10 22:45:37 2dup, 2swap, etc 2024-05-10 22:51:37 No love for nip and tuck? :P 2024-05-10 23:02:34 lf94> i realize also rot / -rot is generally bad. it's worse than using >r >r if you can 2024-05-10 23:02:37 why is that? 2024-05-10 23:03:34 zelgomer: rot and -rot end up using >r and r> internally usually 2024-05-10 23:03:42 usually, less efficiently if you end up using >r and r> directly 2024-05-10 23:03:50 "usually" ?? 2024-05-10 23:03:59 in the forths ive seen, yea 2024-05-10 23:04:05 i usually implement rot as a code word and -rot is "rot rot" 2024-05-10 23:04:12 > lf94 │ unless you can subsidize the cost of rot with the underlying hardware of course 2024-05-10 23:04:14 :) 2024-05-10 23:04:45 if your hardware has a "rot" instruction that has forth rot semantics... go for it 2024-05-10 23:04:59 what 2024-05-10 23:05:11 ? 2024-05-10 23:05:23 why do you require a rot instruction? 2024-05-10 23:05:29 *i* dont 2024-05-10 23:05:59 generally, i extremely rarely need rot (so far, I havent needed it.) 2024-05-10 23:06:14 (I have typed it a few times, but always end up removing it) 2024-05-10 23:06:19 nor do i. i implement it as a code word without an instruction in the isa 2024-05-10 23:08:25 is the code more efficient than >r swap r> ? 2024-05-10 23:08:35 er 2024-05-10 23:08:39 >r swap actually 2024-05-10 23:08:48 of course. it's one word instead of four. 2024-05-10 23:09:36 i think it'd really depend on the forth, instead of "of course" 2024-05-10 23:10:01 how do you figure that? 2024-05-10 23:11:04 how do you possibly imagine a forth in which a word implemented as an assembly primitive is less efficient than implementing it has a high level word composed of four other primitives? 2024-05-10 23:13:24 2 other primitives if your goal is to get at the 3rd stack item 2024-05-10 23:13:28 but lets say four 2024-05-10 23:13:37 there are optimizing forths man. 2024-05-10 23:13:55 also: those 4 words may be extremely efficiently written versus the rot 2024-05-10 23:14:04 like, holy man, there are a few ways you can imagine this ! 2024-05-10 23:14:10 not very imaginative I guess? 2024-05-10 23:14:46 lf94> there are optimizing forths man. -- and you think they wouldn't implement rot as an optimizing primitive? 2024-05-10 23:14:56 lf94> also: those 4 words may be extremely efficiently written versus the rot 2024-05-10 23:15:02 i think you don't understand what a code word is 2024-05-10 23:16:12 and you think they wouldn't implement rot as an optimizing primitive? <- no im saying that's a case where they could be equal. but objectively, >r swap is more efficient than rot at accessing the 3rd stack item. 2024-05-10 23:17:07 this is simply not true, both because it assumes the implementation of rot is a high level word and because it assumes my goal is only to "access the third item" and not to rearrange order 2024-05-10 23:17:52 i don't understand why you argue instead of choosing to learn 2024-05-10 23:18:17 arguing is learning 2024-05-10 23:18:30 i know why im arguing, because you wanted to :) 2024-05-10 23:20:07 i saw demonstrably false statements being made. just trying to help. 2024-05-10 23:22:24 from our little argument, it seems there's truth in what we both said 2024-05-10 23:22:48 a code word is a word written in assembly, isnt it? 2024-05-10 23:24:09 yes. >r, r>, and swap are usually code words. 2024-05-10 23:28:29 but rot ? it seems it's hit or miss 2024-05-10 23:28:40 that's just based on my minimal exposure to 2 forth systems 2024-05-10 23:29:15 LOL 2024-05-10 23:32:02 I know I know :) But it's also based on reading standard-forth.org or whatever's comment in ROT 2024-05-10 23:32:16 Where the "minimal implementation" uses >r r> swap 2024-05-10 23:32:35 So like, how many /other/ people are using this 2024-05-10 23:35:11 what did you find in your "minimal exposure" for rot? 2024-05-10 23:35:26 I mentioned it already :p 2024-05-10 23:35:42 rot: usually better to use r> swap and >r as needed. 2024-05-10 23:35:49 that's been my experience 2024-05-10 23:37:27 you saying it's better doesn't answer my question. is that what the z80 forth you were talking about before uses? 2024-05-10 23:39:09 the minimal implementation doesn't necessarily mean the best implementation btw