2022-07-04 06:21:20 KipIngram, you there? 2022-07-04 06:24:19 imode, 2022-07-04 06:24:31 https://github.com/rrthomas/pforth 2022-07-04 06:24:35 will this work with starting forth? 2022-07-04 06:24:53 I'm expecting it to work like python, where I start the interpreter and work from there, this book has no mention of how to work it 2022-07-04 06:32:31 thrig, can I get some help? 2022-07-04 06:35:19 https://github.com/rrthomas/pforth will this forth work? 2022-07-04 06:40:02 dinklebink: i'm just reading the readme on github, it looks like that is for something called "Bee" 2022-07-04 06:40:35 dave0, what forth would work for starting forth? 2022-07-04 06:41:23 dinklebink: idk sorry, but if you're on linux or unix, you could try gforth (gnu forth) 2022-07-04 06:41:45 alright 2022-07-04 06:41:54 just use it until something doesn't work? 2022-07-04 06:42:54 yeah that should work 2022-07-04 06:43:11 http://ftp.gnu.org/gnu/gforth/ 2022-07-04 06:43:28 it says it's standard forth 2022-07-04 06:44:35 i wouldn't expect starting forth to go into funny places where forth's might differ 2022-07-04 06:44:56 there's a couple of standards over the years, the latest standard is 2012 2022-07-04 06:46:49 starting forth uses some old words in a few places but for a computer book from 1981 to work that well is pretty amazing 2022-07-04 06:47:34 okay, right now I'm on Windows, maybe I'll get it on my FreeBSD laptop 2022-07-04 06:47:44 but what is it, an interpreter that I boot into? 2022-07-04 06:48:41 dinklebink: once you have compiled gforth, you run it and it presents you with an interpreter 2022-07-04 06:48:49 okay, just making sure 2022-07-04 06:50:10 you can immediately write some code and it will respond .. you can also immediately start compiling words and running them interactively 2022-07-04 06:50:47 it's one of the features that makes me like forth and is completely different to C 2022-07-04 06:50:58 it's interactive 2022-07-04 06:51:21 the way program languages should always be lol 2022-07-04 06:52:35 interactive = interpreted? 2022-07-04 06:52:44 this book uses the term interactive 2022-07-04 06:53:19 interactive is when you type in a command and the computer responds immediately 2022-07-04 06:53:57 it is different to c where you typically edit your source code, then compile the code, then run the code, then edit some more, compile, run 2022-07-04 06:54:30 interactive gives you immediate feedback 2022-07-04 06:54:36 i so missed it 2022-07-04 06:56:06 so, like python, right? 2022-07-04 06:56:07 or lua? 2022-07-04 06:56:09 or basic? 2022-07-04 06:56:17 that's just interpreted, I'm just making sure we're talking about the same thing 2022-07-04 06:56:30 basic is interactive 2022-07-04 06:56:38 i don't know python or lua 2022-07-04 06:57:03 interpreted is when your program is "executed" by another program, as opposed to converted to machine code which the computer directly executes 2022-07-04 06:58:08 forth can do both 2022-07-04 06:58:51 when you create a word in forth, it is compiled to more-or-less machine code (the difference is subtle) 2022-07-04 06:59:28 but if you just type in 5 4 + . forth itself executes that 2022-07-04 07:02:33 the code might be compiled to some VM and not machine code, depending 2022-07-04 07:05:23 yeah two different things 2022-07-04 07:05:25 neat 2022-07-04 08:39:29 dave0, anything that I can just download on windows? I don't want to fiddle with my BSD laptop rn, and I can't figure out how to install retroforth 2022-07-04 08:42:55 dinklebink: sorry i don't know :-( 2022-07-04 08:43:04 that's fine 2022-07-04 11:08:36 dinklebink: There is a variable, usually called STATE, that tells Forth what to do with the words it parses out of the input stream and looks up. If STATE is zero, then it immediately executes them. If STATE is 1, it places their address in a list that it's building. : and ; turn STATE on and off. So words in between : and ; get looked up and added to a list, which is the definition that you're defining 2022-07-04 11:08:38 at the time. 2022-07-04 11:09:00 KipIngram, neat 2022-07-04 11:09:12 I do need a Forth that will work for me on Windows though 2022-07-04 11:09:26 That list becomes a new word you can execute later. And as dave0 said, that definition is sometimes actual machine code and sometimes something subtly different, but in any case the point is that you don't have to look up every word in that list when you execute the new definition later - you can get at them "quickly." 2022-07-04 11:09:38 I'm sure there is a GForth for Windows. 2022-07-04 11:09:44 I'm not a Windows guy myself, though. 2022-07-04 11:09:52 ( there is also "STATE-smartness -- why it is Evil and how to exorcise it" ) 2022-07-04 11:10:10 Yes, global state of any sort has some undesirable aspects. 2022-07-04 11:10:48 Doing it that way is a concession to convenience more than a solution that's "computer science optimum." 2022-07-04 11:11:20 Some words have a flag in their header set, that makes them "immediate." Those words get executed right away even if they're in between : and ; 2022-07-04 11:11:36 That feature can be used to implement control structures like IF ... THEN and so on. 2022-07-04 11:12:24 If IF and THEN appear in a definition, they execute right away, and together they bring about a usage of conditional branching that implements the proper structure. 2022-07-04 11:12:47 IF knows it might need to branch forward, conditionally. 2022-07-04 11:12:59 But it doesn't know how far - the system hasn't seen the coming code yet. 2022-07-04 11:13:24 So IF compiles a conditional jump with a space for the jump target, and puts the address of that space on the stack. 2022-07-04 11:13:38 Later, THEN, which knows where the jump needs to be to, will fill in that target slot. 2022-07-04 11:13:54 The Forth stack turns out to work really well for implementing that sort of thing. 2022-07-04 11:14:52 KipIngram, help me with something 2022-07-04 11:15:32 I'll try. 2022-07-04 11:15:46 That sort of stuff I just described, btw, is the stuff that Forth Fundamentals explains. 2022-07-04 11:22:19 KipIngram, I typed it in the wrong chat 2022-07-04 11:22:23 https://www.retroforth.org/ 2022-07-04 11:22:34 this page has something that should be for Windows, "retro.c" 2022-07-04 11:22:41 do they just want me to compile that file? 2022-07-04 11:22:51 retro is crc's project. He hangs out here. 2022-07-04 11:23:02 I've never used it, but he'll be able to take good care of you. 2022-07-04 11:23:30 I mostly just write my own Forths - I don't know as much about the "implementations in the wild" as some of the other guys that hang here. 2022-07-04 11:23:53 As far as I can tell, though, retro has a lot going for it. 2022-07-04 11:24:03 And definitely appears to be a labor of love. 2022-07-04 11:24:30 One of these days I'll share mine, but I want to finish it off a bit more first. 2022-07-04 11:47:05 crc? 2022-07-04 11:55:34 yes? 2022-07-04 11:59:14 what is this retro.c? I'm trying to use retro on Windows 2022-07-04 11:59:19 do I just compile this file? 2022-07-04 11:59:35 well nvm you said it won't work for starting forth anyway 2022-07-04 11:59:44 I've not done a recent build on Windows. Some information on this is in the manual (see forthworks.com:8000/file?name=doc/book/building/windows&ci=tip). 2022-07-04 12:01:16 For following Starting Forth, gforth is probably a safe bet, or maybe the evaluation copy of SwiftForth from Forth, Inc. 2022-07-04 12:04:20 Forth, Inc has an online copy of Starting Forth at https://www.forth.com/starting-forth/ that's been update to work with their system (and probably other ANS compliant Forths) 2022-07-04 15:38:35 So upon further reading about qucs (a graphical circuit design environment for Linux), I realized that (at least I think) it's *not* a "front end* for ngspice. I think it has its own simulation engine in it, and I have no idea how much to trust it. 2022-07-04 15:38:50 ngspice is a quite mature application, and I have pretty high confidence in it. 2022-07-04 15:39:03 What I thought I was getting when I installed qucs was a front end for it. 2022-07-04 15:39:11 But now I don't think so. 2022-07-04 19:43:04 KipIngram: Yes, I recall QUCS has its own sim engine, one of the reasons I didn't really go with it when I was exploring EDA software. 2022-07-04 19:44:43 Yeah, I don't think I can drum up the faith I'd need to go with that. SPICE has an established reputation. 2022-07-04 19:44:59 A lot of miles on its odoemeter. 2022-07-04 19:46:07 Slightl annoyed this afternoon - supposedly KiCAD is supposed to interface with nspice (among other spices). Looked really nice and integrated - I saw an online demo where you could probe your schematic in KiCAD and the simulation graphs would just update immediately. Very nice. 2022-07-04 19:46:08 But... 2022-07-04 19:46:15 It doesn't work. 2022-07-04 19:46:33 When I go to trigger it I get an error message about an unfound shared library. 2022-07-04 19:46:54 At least spice netlist exports from KiCAD seem to work, so I can get there that way, but it's not as sleek. 2022-07-04 19:47:18 I'm not very familiar with KiCAD - historically I've used gEDA. 2022-07-04 19:47:48 But I'm not sure it's maintained very well; I tried to build it this afternoon and ran into errors that implied badly out of date code. 2022-07-04 19:48:35 I never really loved the gEDA schematic editor that much anyway. But I did *really* like the PCB package that they paired with it (which was an independent project, actually, just called "PCB"). 2022-07-04 19:48:47 PCB is a fairly professional looking setup. 2022-07-04 19:49:28 I always thought the gschem user interface was kind of amateur looking, but the PCB interface was nice and clean. 2022-07-04 19:50:15 I did install PCB, and it runs fine and looks as good as ever. But if I use KiCAD for schematics then I'll probably want to use its integrated PCB tool as well. 2022-07-04 19:50:40 KiCAD does look like it's more "well integrated" than gEDA; it just imposes a learning curve on me. 2022-07-04 19:52:43 PCB's been around a long time, too - I first used it back around 2002, when I was consulting. Man, venturing into Linux in those days was an adventure - things weren't NEARLY so stable as they are now. 2022-07-04 19:54:37 The sheer volume of libraries that KiCAD seems to have is almost overwhelming. I guess that's a good thing, but right at the start it slows things down, because for each new component you want to place you have to search that long list of libraries for the right one. 2022-07-04 19:55:03 I presume that will get better with time, because it does present "recently used libraries" in a way that lets you get to them quickly. 2022-07-04 19:55:15 So once I get that list populated to suit me, it'll probably feel a lot smoother. 2022-07-04 19:56:13 And honestly, when I first set out to draw a schematic, I'm not thinking at that deep of a detail level. I just want the right looking images on the schematic - I don't care WHICH resistor that one is vs. this other one. 2022-07-04 19:56:27 I've always turned my attention to that after I've got the whole thing drawn. 2022-07-04 20:10:05 https://en.wikipedia.org/wiki/Entity_component_system 2022-07-04 20:10:09 how hard would this be to do in Forth 2022-07-04 20:10:44 go toy with erlang. 2022-07-04 20:10:49 :P 2022-07-04 20:11:26 an ECS sounds way easier to do in Forth than Erlang... 2022-07-04 20:11:42 if the idea is "lots of tiny things happening at once", erlang's your guy. 2022-07-04 20:11:43 no way is it easier in Forth. 2022-07-04 20:11:47 >garbage collected 2022-07-04 20:11:48 never 2022-07-04 20:11:56 it runs on more critical hardware than forth does. 2022-07-04 20:12:08 literally design for telephony. 2022-07-04 20:12:10 Erlang is *the* critical language. 2022-07-04 20:12:13 *designed 2022-07-04 20:12:15 RIP Joe Armstrong 2022-07-04 20:12:19 rest in power. 2022-07-04 20:12:24 wish I met him. 2022-07-04 20:12:51 Knowledge spilled out of that man like a faucet 2022-07-04 20:13:03 it's criminal he's gone. :\ 2022-07-04 20:13:10 thankfully he knew the value of preserving everything. 2022-07-04 20:13:31 I'm glad he put me on to TiddlyWiki too. 2022-07-04 20:15:36 if you want what we "ought" to be doing, we ought to be embracing massively concurrent programming, shrinking it down to size, making it generally available (not just to critical applications), and plotting it on hardware. 2022-07-04 20:22:16 Based on what I know about erlang, I'd agree. Seems like it was thoroughly optimized for that kind of application. 2022-07-04 20:22:32 uh, for an ECS? 2022-07-04 20:22:41 "Lots of small things happening at once." 2022-07-04 20:22:50 that's... not a great description of an ECS 2022-07-04 20:23:07 Sorry - I'm catching up. 2022-07-04 20:23:16 you're right, that's not a great description of ECS. 2022-07-04 20:23:19 'cuz ECS sucks. 2022-07-04 20:23:22 ECS is approximately, "instead of a C++-like object system, identify objects with integers, and use them as indices in other data structures to look up fields" 2022-07-04 20:23:29 a poor approximation of a concurrent system. 2022-07-04 20:24:10 I haven't ever reached for ECS when I wanted concurrency; more when I wanted a way to have a "sufficiently flexible" object system without CLOS / MOP 2022-07-04 20:24:34 I've never felt like Forth is particularly oriented toward object-like systems. I mean, you can - you CAN do anything in Forth, just about. But it's never felt particularly elegant to me. 2022-07-04 20:24:34 for concurrency, I agree that Erlang-like actors with links and monitors are a nicer model 2022-07-04 20:24:36 mmmmm. 2022-07-04 20:25:11 but ECS is like, vaguelllly parallelism-enabling but even that isn't necessarily an intrinsic part of the model 2022-07-04 20:25:19 (and ofc, parallelism != concurrency) 2022-07-04 20:26:10 The only thing I use ECS for would be game dev projects. And even then.. 2022-07-04 20:26:54 compositional traits are really nice, just that the way you usually phrase it in most languages isn't uh... friendly. 2022-07-04 20:26:58 let's call it friendly. 2022-07-04 20:27:57 ECS seems like it's designed for TCL 2022-07-04 20:27:58 we've used something like it for a larger project at work, where nobody (4 companies) could agree on a schema, so instead you register a "pattern" for objects that your tool/whatever processes, and your tool can produce new objects / attributes on them 2022-07-04 20:28:25 something partway between ECS, a blackboard system, and an HTN planner, kinda 2022-07-04 20:28:47 do we work in the same place? that's what I'm working on. :P 2022-07-04 20:29:20 Although I guess TCL doesn't really do objects, but almost feels like you ought to be using TCL internally for message passing. 2022-07-04 20:29:23 lol, is your employer minneapolis-based? 2022-07-04 20:30:00 they're.. everywhere based, I guess. 2022-07-04 20:30:02 Amazon. 2022-07-04 20:30:10 ah 2022-07-04 20:30:50 https://www.sift.net/ for me 2022-07-04 20:33:04 amazon has a lot of.. let's call it interesting opportunities. it's almost like a giant vault of petri dishes. 2022-07-04 20:33:05 BTW - I've decided the KiCAD schematic symbols are MUCH nicer than gschem's were. 2022-07-04 20:38:01 ecs is good if you have a billion mostly identical game objects (structs with various flags) to loop over 2022-07-04 20:45:47 Flannel: Tcl used for Entity Component System. Hmm perhaps each system part lives in seperate [dict] or something 2022-07-04 21:24:50 are there any good IRCs for talking about games 2022-07-04 21:24:53 I'm sick of discord 2022-07-04 21:26:05 be the change you want to see in the world. 2022-07-04 21:26:17 whoops, I asked in the wrong IRC again I keep doing that lmao 2022-07-04 21:28:47 isnt discord where al the n-cels congregate? 2022-07-04 21:28:53 all* 2022-07-04 21:29:12 yes 2022-07-04 21:29:33 (n-cel encompasses both incels and cancels btw) 2022-07-04 21:29:44 cancels? 2022-07-04 21:30:28 those who want to cancel everything and everyone 2022-07-04 21:30:56 purity spiral worshippers the lot of them 2022-07-04 21:36:34 "my ontology has less historic baggage than yours!" kind of thing. Ontology btw that makes 1984 newspeak downright meladulusly expressive. 2022-07-04 22:11:34 I take no repsonsibility for those who came before me. 2022-07-04 22:11:46 The world was what the world was - that's just a set of facts.