00:00:00 --- log: started forth/14.11.18 00:06:39 --- quit: pgomes (Ping timeout: 255 seconds) 00:23:24 ErhardtMundt, what? 00:24:21 bl word does not usually return a counted string 00:24:36 it usually stores the parsed string somewhere 00:25:18 you also cant really do that in interpret mode 00:25:34 Bullshit, in standard Forth you can. 00:25:53 : blah bl word hhere count type cr ; 00:25:56 blah foobar 00:26:01 works in isforth 00:26:09 thers no fucking such thing as "standard" forth 00:26:14 There is. 00:26:43 ErhardtMundt, look at how "word" is defined in what ever forth you are using 00:27:06 what is its stack comment. if its not ( --- addr ) it does not return an address 00:28:14 it may parse the token to pad or as isforth does to head space 00:29:14 --- quit: nox (Read error: Network is unreachable) 00:29:37 --- join: nox_ (sid3872@gateway/web/irccloud.com/x-lmcvvcimnksghbkf) joined #forth 00:33:40 ErhardtMundt: the correct answer is that Forth doesn't perform REFILL before it has interpreted the input. 00:34:52 Thus, you could have used "parse-name" (or whatever it is called nowadays) that doesn't copy string to some internal buffer (which may not be "pad" for standard Forth). 00:42:32 and it does not NEED to perform refil. the string he tried to parse was on the same line and therefore still in tib 00:42:43 bl word PARSETHIS ... . .. 00:43:20 problem is the next work "count" in his example overwrites the string he wanted to echo 00:43:50 --- join: nighty^ (~nighty@hokuriku.rural-networks.com) joined #forth 00:44:27 the correct answer is STILL look at how "word" works in what ever implementation he is using 00:44:56 : blah bl word hhere count type ; blah foobar <-- works in isforth 00:46:11 "bl word foo count type" works in standard Forth. 00:46:33 no. that works in one standard forth you might be using 00:46:50 it OBVIOUSLY does not work in the forth he is using. who is to say the forth he is using is not ans compliant 00:46:53 Works in FICL, apForth, pForth, and gforth at least. 00:46:59 other than there are no ans compliant forths out there 00:47:10 you can nit pick any one of them into non compliance 00:47:21 but i wouldnt expect a forth hater to understand that 00:47:24 If you would read his question, then it is about why the code works. 00:47:30 So, obviously it works for him. 00:47:33 * DGASAU shrugs. 00:47:55 err. ! 00:47:58 kinda missed that 00:48:14 i would bet it still wont work on 100% of all "compliant" forths 00:48:17 * DGASAU is not surprised. 00:48:28 You lose. 00:48:45 It would work if it is standard Forth. 01:54:16 "You lose" are we now in kindergarden? 01:55:03 fantazo: Any time you're dealing with someone who hangs out in a channel for a language he hates SOLELY so he can snipe at it, then yes you're in Kindergarten. 01:55:20 It genuinely does not get less mature than that without diapers getting involved. 01:57:50 +1 01:59:54 --- join: true-grue (~grue@95-25-84-185.broadband.corbina.ru) joined #forth 02:07:33 --- quit: impomatic_ (Ping timeout: 245 seconds) 02:08:02 --- quit: impomatic (Ping timeout: 244 seconds) 02:12:12 --- join: impomatic (~chatzilla@235.198.208.46.dyn.plus.net) joined #forth 02:19:19 --- quit: impomatic (Ping timeout: 265 seconds) 02:23:01 --- join: impomatic (~chatzilla@235.198.208.46.dyn.plus.net) joined #forth 02:29:13 --- quit: impomatic (Ping timeout: 264 seconds) 02:44:39 sorry, I was afk 02:44:46 well, I tried that in gforth 02:44:55 and obviously it works 02:46:14 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 02:56:17 --- quit: fantazo (Ping timeout: 245 seconds) 03:00:09 --- join: impomatic (~chatzilla@235.198.208.46.dyn.plus.net) joined #forth 04:09:34 --- quit: samrat (Quit: Computer has gone to sleep.) 04:38:23 --- join: fantazo (~fantazo@2001:858:5:3a41:99d8:b33b:fce0:c986) joined #forth 05:15:15 --- join: Azel (~Thunderbi@vig91-h03-89-84-5-35.dsl.sta.abo.bbox.fr) joined #forth 05:26:15 --- quit: Bahman (Quit: Leaving.) 05:54:17 --- quit: fantazo (Ping timeout: 265 seconds) 06:06:56 --- join: fantazo (~fantazo@2001:858:5:3a41:99d8:b33b:fce0:c986) joined #forth 06:11:36 --- quit: impomatic (Read error: Connection timed out) 06:12:47 --- join: impomatic (~chatzilla@235.198.208.46.dyn.plus.net) joined #forth 06:19:57 --- quit: Zarutian (Quit: Zarutian) 06:28:44 --- join: Mat3|coding (~Mat3@ip5b414c9f.dynamic.kabel-deutschland.de) joined #forth 06:28:56 hello 06:29:24 --- quit: impomatic (Ping timeout: 255 seconds) 06:40:33 --- join: impomatic_ (~chatzilla@235.198.208.46.dyn.plus.net) joined #forth 06:40:33 --- nick: impomatic_ -> impomatic 07:00:52 --- join: xyh (~xieyuheng@2001:250:3002:5550:6ea1:cc0f:bcb2:b187) joined #forth 08:36:10 --- join: PoppaVic (~pops@unaffiliated/poppavic) joined #forth 09:27:49 --- join: pgomes (~pgomes@ipb2182f12.dynamic.kabel-deutschland.de) joined #forth 09:27:53 --- quit: DGASAU (Quit: ERC Version 5.3 (IRC client for Emacs)) 09:38:04 --- quit: fantazo (Quit: Verlassend) 09:40:38 --- quit: pgomes (Ping timeout: 255 seconds) 10:13:41 --- quit: xyh (Remote host closed the connection) 10:30:12 --- join: proteusguy (~proteusgu@ppp-110-168-229-141.revip5.asianet.co.th) joined #forth 10:59:41 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:00:36 --- quit: Zarutian (Read error: Connection reset by peer) 11:00:49 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:23:20 --- quit: joneshf-laptop (Remote host closed the connection) 11:51:40 --- quit: impomatic (Ping timeout: 264 seconds) 11:53:45 --- quit: Zarutian (Quit: Zarutian) 11:54:15 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:55:03 --- quit: Zarutian (Read error: Connection reset by peer) 11:55:17 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:58:46 --- quit: Zarutian (Client Quit) 12:04:28 is it +1 or in this channel 1+ ? 12:05:09 seriously? 12:05:13 :) 12:05:21 no just a joke. 12:05:34 --- join: samrat (~samrat@123.236.183.195) joined #forth 12:12:45 --- join: fantazo (~fantazo@089144193151.atnat0002.highway.a1.net) joined #forth 12:35:21 --- join: Hakkavelin (~Polarina@fire-out.ru.is) joined #forth 12:36:53 I guess in this channel 1+ would fit better 12:39:26 why not 1UP ? 12:39:47 :) 12:39:59 --- join: pgomes (~pgomes@ipb2182f12.dynamic.kabel-deutschland.de) joined #forth 12:40:18 bonus points if you get your forth to play the mario coin sample each time it is used 12:59:13 --- join: impomatic (~chatzilla@235.198.208.46.dyn.plus.net) joined #forth 12:59:47 --- join: jabb_ (~grue@540097C9.dsl.pool.telekom.hu) joined #forth 13:02:36 hahaha 13:02:50 --- quit: jabb (Ping timeout: 244 seconds) 13:05:07 --- join: vanila (~user@unaffiliated/vanila) joined #forth 13:26:29 --- quit: nighty^ (Quit: Disappears in a puff of smoke) 13:29:38 --- quit: jabb_ (Quit: leaving) 13:36:18 1UP is very video gamey. 13:56:19 --- part: Mat3|coding left #forth 13:59:33 --- quit: bjorkintosh (Quit: Leaving) 14:12:39 I once knew one with that nick name, well he made the suicide fly. 14:15:27 --- quit: pgomes (Remote host closed the connection) 14:28:04 --- quit: fantazo (Ping timeout: 256 seconds) 15:32:04 --- quit: samrat (Quit: Computer has gone to sleep.) 15:44:42 --- quit: Azel (Ping timeout: 258 seconds) 15:46:39 --- join: Azel (~Thunderbi@vig91-h03-89-84-5-35.dsl.sta.abo.bbox.fr) joined #forth 16:00:11 --- quit: true-grue (Read error: Connection reset by peer) 16:22:00 --- join: joneshf-laptop (~joneshf@campus-017-118.ucdavis.edu) joined #forth 16:35:45 --- join: xyh (~xieyuheng@2001:250:3002:5550:6ea1:cc0f:bcb2:b187) joined #forth 17:03:09 --- join: lewis1711 (79494f86@gateway/web/freenode/ip.121.73.79.134) joined #forth 17:09:25 I'm reading about second generation stack machines. so from what I understand the first gen had a stackpointer as a register, and the stack itself in main memory. the second gen has the stack on the cpu, implemented with registers. so what's the real difference between a second-gen stack cpu and a register one? is it just that in a register one the instructiion set "exposes" the registers? 17:12:58 time/clocks 17:13:21 KipIngram would know better 17:14:16 --- join: DKordic (~user@93-86-236-10.dynamic.isp.telekom.rs) joined #forth 17:29:55 --- quit: vanila (Quit: Leaving) 17:41:34 --- quit: joneshf-laptop (Remote host closed the connection) 18:50:17 --- quit: lewis1711 (Ping timeout: 246 seconds) 19:19:44 --- quit: impomatic (Remote host closed the connection) 19:22:46 The register based stack is generally a lot faster. 19:33:30 Much faster, but not as flexible. 19:33:43 There's engineering tradeoffs all over the place in processor design. 19:40:59 --- join: samrat (~samrat@123.236.183.195) joined #forth 20:05:01 Yes - not as flexible. 20:05:23 You could hoop jump ways around it, but basically no random access, no easy context switching, etc. 20:07:21 Well random access is doable with an instruction that is "give me stack+offset". 20:07:39 But context switching will always be expensive. (Windowing the registers only buys you a bit there.) 20:07:55 Yes - hoop jumping. You'll have to have multiplexors to bring those registers to a common point to load from, etc. 20:08:10 And your stack will limit the shape of your code ... and while this *COULD* be viewed as a good thing, it still reduces flexibility. 20:08:12 That's what a RAM basically is - a bunch of storage points with a way of selecting one. 20:08:18 Fair enough. 20:08:27 I don't look at it from the implementation side. :) 20:08:44 How to build it is the first thing that comes to my mind. :-) 20:09:01 What gets me, though, is the trade-off of stack size vs. stack cost. 20:09:11 That said, my latest thoughts on my own processor do plan on a hardware stack. 20:09:13 If you make your stack too small, you limit recursion depth (among other things). 20:09:21 Yes. 20:09:32 heh 20:09:49 Certainly not arguing with your point that it's a tradeoff. 20:09:50 If you make your stack too large, you make it very complex to implement, very expensive in space on your device, and very costly in terms of switching contexts. 20:10:04 Yes. 20:10:06 You're kind of fucked either way. 20:10:19 That's one of the reasons, I think, that the various register-window systems never really took off. 20:10:24 I generally gravitate toward performance. 20:11:22 But that's definitely just a personal preference. 20:11:57 https://www.google.com/search?q=anton+forth+profiling+stacks&oq=anton+forth+profiling+stacks&aqs=chrome..69i57.15854j0j7&client=ubuntu-browser&sourceid=chrome&es_sm=0&ie=UTF-8 20:15:24 I am interested (in principle) in recursion, but I don't anticipate having much interest in context switching. 20:17:23 But if you planned to implement anything even remotely akin to a modern operating system then context switching is very important. 20:18:10 Of course, a pile of registers doesn't make for very efficient context switching either. A RAM based stack with a pointer you can save and restore is about the best you can do on that front. 20:18:34 Which is what most context switching on stack machines is. :) 20:19:02 Yeah. 20:20:44 Context switching is useful outside of the "modern OS" world too, mind. 20:21:07 Interrupts. You can mitigate the costs there, but not safely without a proper switch of context. 20:21:08 I didn't say that was the only application for it. Just one in which it's pretty darn important. 20:21:46 Well, an ISR can be expected to leave the stack balanced. It just uses "more stack." 20:21:53 And leaves what's below alone. 20:22:12 A general context switch can't have that expectation. 20:22:54 A stack machine (any stack machine) is better for interrupts than a register machine - it's on the register machine where it has to save a bunch of stuff and restore it. 20:23:29 --- join: joneshf-laptop (~joneshf@98.208.35.89) joined #forth 20:24:26 Register machine gives you the flexibility to choose your operands from any of many registers. But your instructions are bigger because they have to encode that selection, and again you have to have multiplexor logic to route your choice to its target. 20:24:59 A stack machine has one place the operands come from, so the instructions are small and the connetivity is very simple (and thus fast). 20:25:21 But then you have to noodle with the stack, which requires extra instructions. 20:25:59 --- join: saml_ (~saml@pool-71-190-3-251.nycmny.east.verizon.net) joined #forth 20:26:23 I haven't studied the literature heavily, but I'd imagine a well-designed register machine probably edges out a stack machine on overall performance, but not by as much as a lot of people seem to think. 20:27:28 --- quit: bbloom (Quit: Textual IRC Client: www.textualapp.com) 20:29:57 You can often mitigate a lot of the stack gyrations by giving a lot of thought to the design of your algorithm, but that... requires a lot of thought. :-) 20:31:05 You can't "think away" larger instructions and more complex signal routing - it's "in there" to stay. 20:32:54 --- quit: saml_ (Ping timeout: 272 seconds) 20:33:56 --- join: bbloom (~bbloom@cpe-68-175-72-82.nyc.res.rr.com) joined #forth 20:46:12 --- join: saml_ (~saml@pool-71-190-3-251.nycmny.east.verizon.net) joined #forth 20:47:04 well, purists be damned: I'll acess the stack any way I want 20:48:19 :-) If you can. I think that was one of ttmrichter's points. 20:48:29 hardware stack -> less flexibility 20:49:15 i won't use 'other' 20:50:26 What exactly is "other"? I'm not familiar with it. 20:52:41 --- quit: samrat (Quit: Computer has gone to sleep.) 20:56:03 KipIngram: You're asking programmers to think? Keep in mind this is an industry that still thinks C was a nifty thing... 20:57:20 :-) 20:57:50 Yes, thought is always a good thing. 20:58:42 loves my c, too ;-) 20:58:44 GOOD PROGRAMMERS PROGRAM FROM THE GUT! PLANNING IS FOR PUSSIES! 20:59:02 Whereas I think C is a destructive blight on the industry. 20:59:31 (This is why I don't hang out in ##c. Because I'm not insane and thus don't hang out in a forum where a language I despise is discussed.) 20:59:47 could be: might love jaba 21:00:08 ttmrichter: Teach that to DGASAU. 21:00:09 AAAAAAAAAAAAAAAAAAAARRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHH! 21:00:23 Sorry. You said something that very closely resembled the J-word. 21:00:30 #forth has dgasau - 21:00:32 Probably the worst result of the C blight. 21:01:02 javajava heh 21:01:06 What do you dislike about C? 21:04:21 what's to dislike? ;-) 21:14:23 --- quit: DKordic (Quit: ERC Version 5.3 (IRC client for Emacs)) 21:15:46 --- quit: proteusguy (Remote host closed the connection) 21:29:57 KipIngram: It's terrible at modularity. It has "do the dangerous, stupid shit" as default while "be sane and safe" is something you add. 21:30:17 And it has infected the industry to the point that people have internalized its stupidities as the norm. 21:30:30 "Of course indices start from 0! What else could they be?" 21:30:37 Well, they could be INDEXES instead of OFFSETS. 21:30:47 OFFSETS start at 0. INDEXES start at 1. 21:31:14 But because in C and array is just syntax sugar for pointer arithmetic, an "index" is really an offset. 21:31:20 s/and/an/ 21:32:01 Then we have retarded shit like fall-through cases in switch statements. Which have again been internalized as normal to the point that people are shocked when they encounter languages that do it right. 21:33:49 ttmrichter, you mean what happens if you forget the break in a case statement? 21:34:31 No. What happens when you're brain-damaged enough to design a language that requires a manual break in a case statement. 21:34:51 Don't blame the victim. Blame the perp. 21:35:25 ttmrichter, that's not exactly how it works. Try programming in something like basic and you will be thankful that you can leave the break out if you want to 21:35:43 ..? 21:35:45 surely you dont think you have to put the break in there because the language designers werent smart enough to figure out how to do it otherwise 21:36:08 * tangentstorm thinks they just made a really poor choice. 21:36:11 the break is for cases where you want several cases to have the same or similar results 21:36:11 MrMobius: No. I think you have to put the break in there because the language designers were too lazy in their own coding to design a language the right way. 21:36:29 MrMobius: How 'bout just multiplexing case statements? 21:36:34 case foo, bar, baz: 21:36:41 ^ vb.net has this 21:36:44 Or how 'bout doing case transfers: 21:36:56 what is a comma better than a new line? 21:36:59 case foo: do_this, xfer: bar; 21:37:02 i guess you do have to ype case two extra times 21:37:18 MrMobius: How many bugs have been found in C code because of forgotten case statements? 21:37:19 MrMobius: because then you don't need the break 21:37:24 3 21:37:33 (Hint: several MAJOR SECURITY FLAWS were a result of this.) 21:37:37 oh yeah. 21:37:40 6 21:38:05 The fall-through case statements have been a bug-generating problem in C for decades. 21:38:06 ttmrichter, thats another matter entirely then 21:39:51 Let's not forget the ambiguous if/else issue as well. That's been the source of bugs as well. Fixable by requiring people to type two extra characters (which many coding standards mandate anyway). 21:40:17 { } ? 21:40:18 --- quit: saml_ (Quit: Leaving) 21:40:19 Yes. 21:40:25 hehehe 21:41:05 So no modularity, no protection, badly-disguised pointers for everything, dangerously bug-generating statement syntax ... and we're barely scratching the surface here. 21:41:16 hrm. i've helped a few newbies debug while(whatever); why_doesnt_this_loop(); bugs 21:41:19 C is not a good language. C lived because of Unix. Unix lived because it was free. 21:41:32 but i prefer to drop the {} for one-liner loops. 21:41:45 but i also prefer to not use c, so what do i know? 21:41:58 tangentstorm: Another problem that would be solved by requiring {}. Two. Characters. People are lazing out over two characters. 21:42:03 * tangentstorm did make little micro-virtual machine in c though a while back... 21:42:15 tangentstorm: while(foo) { do_something(); } 21:42:24 that's fine with me 21:42:28 There's your one-liner. 21:42:30 --- join: samrat (~samrat@182.72.122.6) joined #forth 21:42:43 It cost you two characters typing, but it saved you potentially thousands of hours of debugging time. 21:43:29 https://github.com/sabren/b4/blob/master/go/b4.cpp ... 21:44:19 ttmrichter: I tend to include { } more or less universally. 21:44:25 It helps me read my code. 21:44:40 It just looks more "right" to me if I include it. 21:44:46 KipIngram: That's the fatal flaw of C. It was designed to optimize code WRITING. 21:45:00 Even though you read it an order of magnitude or more times as often as you write it. 21:45:07 Ok - that's a point I can nod to. 21:45:34 Your other points up there were fine too, but what you just said is *generic*. 21:45:39 I mean I've seen devs get into screaming hissy fits when they had to use a language that mandated begin/end instead of {/}. 21:45:57 And that had no shortcut like, you know, ignoring them. 21:46:09 ... 21:49:25 since learning forth and j, i've found that i now tend to prefer reading very dense, horizontal code. 21:49:51 in small vertical chunks 21:50:12 i really really like the concepts of screens in forth 21:52:10 but: i often get frustrated and derailed when i don't know the definition of one or two words.. and having an online hypertext help system would make huge difference in that department. 21:53:36 fpc 21:54:42 tangentstorm: I ll implement help system, I ll turn comment into fancy doc format. 21:55:00 tangentstorm: do you know some good GC s ? I am stealing GC ideas from other languages now. 21:55:30 yeah, that's why i was excited to see it, PoppaVic ... my own main project is a hypertext editor and graph database, so i'm hoping to learn from f-pc 21:55:40 * tangentstorm can't call it fpc because that's free pascal. :) 21:55:50 garbage collection? 21:56:35 https://github.com/JohnEarnest/Mako/blob/7e54ec5c6da88a0dd4cd0d721f39be3ee1115112/lib/Algorithms/Garbage.fs 21:57:33 or if you're still doing lisp-like stuff, maybe check out picolisp, where every piece of data is the same size 21:58:14 everything is a list of cons cells and you can just reclaim them without worrying about fragmentation. 21:59:17 * tangentstorm is pretty sure it's a stack machine under the hood. not sure if it's dual-stack, but it was originally bootstrapped in an rpn language 21:59:59 pretty sure crc also has a garbage collector in parable (his other language besides retroforth) 22:01:43 fpc predates free-paxcal, and no reason not to use an html browser - curses or gui 22:10:13 I have just readed the sources, picolisp is using an old mark-sweep-GC, mako is using copy-and-compress-GC, and I think none of them is incremental. 22:11:00 oh you want some fancy cutting edge stuff? 22:11:04 nim-lang.org 22:11:42 nim is considered cutting edge ? 22:14:07 considered by whom? 22:14:48 >>> {0,1,2,3}[0] # just curious what this does. 22:15:02 wrong channel. 22:17:02 maybe mako's gc is incremental :) 22:28:03 --- quit: samrat (Quit: Computer has gone to sleep.) 22:28:33 --- join: samrat (~samrat@182.72.122.6) joined #forth 22:42:21 --- quit: PoppaVic (Ping timeout: 245 seconds) 22:52:01 --- join: Bahman (~Bahman@188.159.27.208) joined #forth 23:59:59 --- log: ended forth/14.11.18