00:00:00 --- log: started forth/16.09.12 00:26:18 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 00:27:21 --- quit: mnemnion (Remote host closed the connection) 00:28:57 --- quit: phadthai (Ping timeout: 244 seconds) 00:43:40 --- join: phadthai (mmondor@ginseng.pulsar-zone.net) joined #forth 01:12:33 --- quit: nal (Quit: WeeChat 1.4) 01:30:23 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:8cb9:5563:9719:e06e) joined #forth 01:30:40 --- quit: mnemnion (Remote host closed the connection) 01:30:53 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:8cb9:5563:9719:e06e) joined #forth 01:42:18 --- quit: mnemnion (Remote host closed the connection) 02:29:12 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f946:6500:ab4f:82b0) joined #forth 02:33:37 --- quit: mnemnion (Ping timeout: 250 seconds) 03:22:59 --- join: true-grue (~true-grue@176.14.222.10) joined #forth 03:47:08 --- quit: nighty (Quit: Disappears in a puff of smoke) 03:59:49 --- join: gyxile (~nick@cpc80309-grim18-2-0-cust167.12-3.cable.virginm.net) joined #forth 04:22:47 nerfur, you have a C64 or an emulator. 04:23:00 c64 04:24:07 with floppies, drive, cassette-"drive", network drive (:-D), some fastload carts and device for connecting drive to PC :-D 04:24:18 *network card 04:26:33 --- quit: gyxile (Ping timeout: 265 seconds) 04:47:32 network card? you got tcp/ip running on that thing??? 04:50:08 I guess it is RS232. 04:53:32 it is contiki based "cart" http://www.go4retro.com/products/64nic/ 04:54:46 so one day I probably can chat here from c64 :-D then I had enough free space on my table and spare TV ) 04:56:02 --- quit: proteusguy (Ping timeout: 264 seconds) 04:57:18 looks like he decided to move to c64 :-D 05:02:13 --- join: nighty (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 05:02:52 --- quit: karswell (Remote host closed the connection) 05:03:32 --- join: karswell` (~user@197.58.115.87.dyn.plus.net) joined #forth 05:30:41 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:a87b:9955:ab91:656c) joined #forth 05:35:11 --- quit: mnemnion (Ping timeout: 250 seconds) 05:54:42 --- join: proteusguy (~proteusgu@14.207.40.215) joined #forth 05:54:42 --- mode: ChanServ set +v proteusguy 06:02:35 hey, proteusguy 06:03:05 http://www.go4retro.com/products/64nic/ 06:03:18 idk got you my messages or not about c64 network ) 06:08:01 nerfur, must have gone out while I was riding home. Wow I had no idea these existed. 06:08:44 So a friend of mine has a new FPGA board he's put together that fully emulates a C64 with hdmi output. I think he also has network connectivity which is why I thought you were emulating. 06:23:46 wow, did he build it himself or bought? I heard that some projects like this exists (not only for c64) 07:19:01 He took an existing one and heavily revised it. Apparently does not have networking unfortunately. Just asked. 07:19:13 --- quit: M-jimt (Write error: Connection reset by peer) 07:19:27 nerfur, you can check out #flea86 and ask about it there if you're interested in such things. 07:20:12 ok, thanks 07:34:51 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f4e9:da4a:ef4f:12eb) joined #forth 07:39:07 --- quit: mnemnion (Ping timeout: 250 seconds) 08:02:21 --- join: M-jimt (jimtmatrix@gateway/shell/matrix.org/x-ozeshtzwnfrexrmz) joined #forth 08:48:29 John[Lisbeth]: you'll save a lot of your time, if you stop reading about Forth and read about Krivine machines instead. 08:49:02 John[Lisbeth]: probably, Leroy's "ZINC report" is interesting to you too. 08:50:26 The latter may give you understanding of relation between Krivine machines and functional programming languages. 09:00:54 --- join: nal (~nal@adsl-64-237-233-196.prtc.net) joined #forth 09:02:57 --- join: nal1 (~nal@adsl-72-50-87-229.prtc.net) joined #forth 09:03:33 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 09:04:30 --- quit: mnemnion (Client Quit) 09:06:16 --- quit: nal (Ping timeout: 260 seconds) 09:08:52 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:7903:64a9:bff9:758b) joined #forth 09:32:02 --- join: npr (~npr@198.46.224.244) joined #forth 09:43:22 --- quit: mnemnion (Remote host closed the connection) 09:43:57 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:7903:64a9:bff9:758b) joined #forth 09:48:15 --- quit: mnemnion (Ping timeout: 250 seconds) 10:01:30 --- join: mnemnion (~mnemnion@152.179.131.166) joined #forth 10:03:01 --- join: mnemnia (~mnemnion@152.179.131.166) joined #forth 10:05:47 --- quit: mnemnion (Ping timeout: 252 seconds) 10:06:02 --- quit: mnemnia (Remote host closed the connection) 10:06:17 --- join: mnemnion (~mnemnion@152.179.131.166) joined #forth 10:30:59 --- quit: pointfree (Ping timeout: 265 seconds) 10:35:42 --- join: backer (~backer@cowbell.employees.org) joined #forth 10:50:04 DGASAU: is a krivine machine just an easy way to implement lambdas or something? There's not alot about it online 10:50:20 rest of channel: What it strikes me as is this 10:50:30 in any given environment you can implement ans forth 10:50:58 but it is better to invent your own forth in that environment and then implement ans from within your own forth so you don't have to use ans if you don't want to 10:52:23 and then what you do is you write an interpreter for your own forth in portable ans forth 10:52:33 SO lets say I was using joy 10:52:41 and my basest environment was assembler 10:53:00 I would write joy in assembler, then write ans forth in portable joy, then write joy in portable ans 10:53:13 ANSI forth was a mistake and basically sucked the wind out of forth progress, IMHO. 10:53:32 I think ansi is just something that has to be used responsibly 10:53:49 people assume all ans code is portable which is not true 10:53:56 you have to write it portable all the way through except the very base of your interpreter 10:54:05 ANSI/ISO standards are great for C++ and the like. Completely pointless and against the very nature of what forth is. 10:55:17 For certain specific applications you need some kind of lingua franca 10:55:36 forth is about eliminating every bit of unnecessary complexity possible. it's the ultimate example of how you measure costs of complexity by "lines spent". ANSI standards inject a LOT of unneeded complexity for the task at hand in order to fix a problem that will never be encountered in real life. 10:55:59 True but in certain specific situations you don't have the liberty to implement it from scratch and need it to be portable 10:56:05 certain customers want it 10:56:10 John[Lisbeth], that's the DSL that you create for your application. NOT the forth dialect upon which you built it. :-) That's the key difference. 10:56:31 Sure you could port your DSL's over 10:56:41 You don't have to implement it from scratch - fine. But you absolutely do NOT need the forth to be portable. 10:56:43 I'd say though that even still some people require portable forth 10:56:53 in most situations you can write it on your own 10:56:59 You re-implement your DSL in whatever target computer you want to run it on. 10:56:59 but not all 10:57:29 Certain customers just want portability. Even if it adds bloat and confusion 10:57:55 by writing your forth so that it can be written portably, and writing a protable interpreter for your forth in ANS, you make it more viable 10:57:59 The worst thing you can do to a customer is give them exactly what they say they want. That's actually gross negligence. :) 10:58:27 No it really really really doesn't. Not in one single example of a forth system have I ever found that to be the case. 10:58:51 Maybe I am just lacking experience but I think my bosses will want certain mathemtaical guarantees that can't be provided by just a raw forth without any standard 10:58:58 and besides ans forth is like the de facto standard of forth 10:59:07 we just have one standard to worry about therefore 10:59:16 You wanna be as close to the hardware as possible whenever possible. ANSI takes you several layers away for absolutely zero value. 10:59:38 :) 11:00:01 Original forth is a language that you can learn in a weekend. ANSI forth takes weeks and weeks - and you MUST know a lot of new words or you simply can't use it. 11:00:41 --- join: pointfree (~pointfree@c-174-62-81-78.hsd1.ca.comcast.net) joined #forth 11:00:58 Stop thinking as your forth environment and the physical device is runs on as being separate or independent in any way shape or form. Once you've rejected that notion then you can build a good forth computer. 11:02:06 * proteusguy can't code ANSI forth. But I can write you a DSL in a local forth environment that'll run circles around it. 11:03:46 John[Lisbeth]: it depends on your point of view. 11:04:12 John[Lisbeth]: basically, if you're interested in RPN, and you want something sane, you're going to reinvent Krivine machine. 11:04:45 And it is better, if you learn how to do it with sane background than with technologies of mid-1960s. 11:08:26 I'll look more into the Krivine machine when I implement my own forth 11:08:36 I agree that domain specific languages are very powerful in languages like forth and lisp 11:08:37 * DGASAU shrugs. 11:08:47 Forth is not powerful at all. 11:08:52 But still you need some kind of common point 11:09:02 But if you want to learn the hard way, you're welcome. :) 11:09:30 DGASAU: somebody told me not to listen to you so I remain skeptical 11:09:50 Pf! 11:10:11 If you listen to some idiot, you're going to end with idiots. :) 11:10:26 Or take some long way around. 11:11:02 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 11:12:19 It's just it is such a small language and a small community I have time to learn the whole thing and learn all the facets 11:12:41 This is my plan: implement joy in a finite state machine in assembly 11:12:50 then implement ans as a DSL in joy 11:13:00 but in portable joy 11:13:04 not hardware specific 11:13:13 and then implement joy in portable ans 11:13:21 and finally I think I want to make an emacs lisp interpreter in portable joy 11:14:42 So then emacs will not only run in joy systems but in all ans systems 11:15:05 after that I guess I'll spend time rewriting emacs lisp funcitonality in joy 11:15:49 "ANS" as in "ANS Forth"? 11:16:06 John[Lisbeth], beware, DGASAU hates all things forth. Krivine machines are lambda calculus and functional in their foundation. Nothing wrong with that - just very different than forth. 11:17:37 John[Lisbeth]: personally, I find your plan pretty stupid. 11:17:48 If it involves Forth in any place. 11:18:18 About ANS. 11:18:19 If it is built around Joy, it may be somewhat better. 11:18:33 Let's compare. 11:18:44 Oberon07 Report: 17 pages 11:18:44 Scheme R5RS: 50 pages 11:18:44 Lua 5.1 Reference Manual: 112 pages 11:18:44 ... 11:18:44 ANS Forth: 210 pages ?! 11:18:45 Forth 200x: 371 pages (2016, Aug) ?!?! 11:20:18 true-grue, bingo. you can define core forth fully in 2 pages. 11:20:43 So one should conclude that Forth is not a simple language. Then, maybe, it's very powerful or has many different implementations in industry etc? That's why the text is so big, right? 11:21:02 ANS forth isn't simple at all. it's horrid! 11:23:01 John[Lisbeth], I don't understand if you wanna play with Joy why you would do something in forth. If you want an RPN language and you've already got a Joy implementation - then stick to it. Especially if you aren't trying to be tight with the hardware. 11:23:46 Or you can play with FP. Because Joy is mostly inspired by it and Postscript. 11:24:04 there is no ansi joy 11:24:06 there is ansi forth 11:24:28 It's a train wreck and I know no one who uses it. 11:24:47 DGASAU: why not implement krivine machines with a postfix syntax like forth? 11:25:00 proteusguy: joy is? 11:28:10 John[Lisbeth], joy is a fine programming language if you find it answers your domain. Honestly if you're not fairly tight with your hardware you probably shouldn't be doing forth unless the purpose is simply to learn how to reason with forth. 11:28:43 Well I am interested in forth because it provides a repl as functional as lisp for not very much overhead 11:29:14 --- quit: pointfree (Remote host closed the connection) 11:29:21 --- join: pointfree (~pointfree@c-174-62-81-78.hsd1.ca.comcast.net) joined #forth 11:29:26 functional programming certainly answers my style of programming 11:29:43 and sure it is less efficient than some other methods but it will still be pretty fast being at such a low level 11:30:09 Hardware is interesting and writing hardware specific forth would be nice in certain applications but that's not really what I work on or have been working on in the past 11:30:15 I am not a hardware guy I am a high level programmer 11:32:13 John[Lisbeth]: the language behind KM is already postfix, so I don't understand the question. 11:33:01 John[Lisbeth]: Forth isn't as functional as Lisp, that's the problem. 11:33:11 But if you want to learn it the hard way, you're welcome. 11:33:54 DGASAU, you've made your point. And no one asked to learn a "functional" language. You're trolling again... please refrain. 11:34:45 HWere I think you guys are tripping up is that there is sort of unspoken definition for forth and how it works 11:35:04 and it is wrapped up in low level programming techniques as well as low level tricks like using pointers or setting true to -1 and false to 0 11:35:12 whereas I use high level techniques and abstractions 11:35:40 Forth, Lisp... Even Pascal is functional. Just choose a proper language subset. Functionality is not about freedom, is about restrictions :) 11:36:34 programming purely functionally is a restriction but it's my favorite restriction 11:36:46 John[Lisbeth], you are talking about the higher level DSL that you build with forth. Forth is pretty simple and easy to describe. It's a concatanative stack oriented language with RPN syntax that focuses on efficient implementations on the hardware it runs on. 11:36:58 The way I see it DGASAU is I could use joy to rewrite the forth primitives and rip out the underneath and make it a krivine machine 11:37:04 while it was still running even 11:37:09 its a little fix 11:37:30 true-grue, there's actually subtle but critical differences between concatanative and functional languages. I would not call forth inherently functional. 11:37:59 well if all your words are defined with inputs and outputs I mean like with purely functional languages 11:38:04 words defined on words 11:38:11 every word has an imput and has an output every time 11:38:52 John[Lisbeth], where do those inputs show up? :-) 11:39:09 proteusguy: that's you who is trolling here. 11:39:19 The claim was about functional REPL. 11:39:20 DGASAU, pray tell how??? 11:39:21 John[Lisbeth], What is the point in Krivine machine? Will it help you make better programs? Surely no! There are lot of abstract machines around. As a regular programmer you don't need to think about this stuff at all. You need to think about expressivity, readability etc. 11:39:45 proteusguy: it's you who is the main person raising hate here. 11:40:18 DGASAU, I didn't say anything about hate. I'm trying to be helpful and responsive and ON TOPIC. You're trying to attack forth - again. 11:40:34 proteusguy, Real Forth is not a concate... I hate this term! .. language. But it's possible to build a functional Forth-like language with algebra of stack combinators. 11:40:55 proteusguy: is this on topic too? DGASAU, you've made your point. And no one asked to learn a "functional" language. You're trolling again... please refrain. 11:41:08 true-grue, why do you believe that? how is it not a concatanative language? 11:41:55 John[Lisbeth]: pay attention that this claim: "It's a concatanative stack oriented language with RPN syntax that focuses on efficient implementations on the hardware it runs on." - is a lie. 11:42:01 John[Lisbeth], is it your desire specifically to learn a "functional" language? 11:42:11 John[Lisbeth]: see papers after Ertl and from Lua community. 11:42:41 well at some point you get to assembly and the purely functional thing breaks down 11:42:56 but you create an environment which has bootstrapped purity and then implement monads 11:43:31 If you know Lisp or O'Caml, you know how they deal with "impure functional." 11:43:32 John[Lisbeth], is that a "yes" then? 11:43:40 I am going to largely ignore alot of the original forth syntax and style of doing things except for my portable joy ans implementation 11:43:43 proteusguy, Because it has WORD, it allow return stack/thread code manipulations and so on. It's stack based. There is no need to replace stack with something. Concatenative language is an ugly meaningless term. If you want to read a bit of Forth-related theory it's better to look at Henry Baker's works. 11:45:07 true-grue, clue me in because my understanding of concatanative languages is when you "stack" them all in a line and the natural output of one becomes the input of the next with the nameless stack as that go-between. What am I missing? 11:45:26 true-grue, I never suggested to replace the stack. 11:45:44 true-grue, absolutely forth MUST have a stack. At least two in fact. :) 11:47:33 proteusguy, I think, "concatenative" is a term from Factor/Joy/Cat community. And you will find no any serious textbook using it. For us, forthers, this term is useless. 11:47:56 John[Lisbeth]: well... That's one of points where you're likely to reinvent Krivine machines. 11:48:58 DGASAU: I am all for Krivine machines if they are better but what I am telling you is that if an entire forth system is reprogrammable at runtime then I can just ad hoc change it to a krivine machine while it's running 11:49:41 John[Lisbeth]: essentially, the only thing you might want to learn from Forth-as-technology is threading code. 11:50:08 But if you have ever studied code generation in compilers course, better stick to mainstream. 11:50:11 proteusguy, http://www.pipeline.com/~hbaker1/ForthStack.html 11:50:50 true-grue, I honestly don't understand your objection. Indeed forth was the very first concatenative programming language (and the best, imho). What aspect of "A concatenative programming language is language in which terms correspond to functions and in which the juxtaposition of terms denotes the composition of functions." offends you regarding forth? 11:51:26 John[Lisbeth]: you seem to have some Lisp background, so you can avoid a lot of obsolete and dead-end approaches that are tended here. 11:51:26 I may implement a very true and very minimal forth just as a base for joy 11:51:36 What's the point? 11:51:46 just for convenience 11:51:51 get out of assembly as quick as possible 11:52:01 then add purity as I go along 11:52:13 true-grue, from your link "FORTH IS A SYSTEM OF LINEAR COMBINATORS" - that is indeed a concatenative language. 11:52:40 John[Lisbeth]: You can implement KM or even... khm!.. SECD as well, and have a lot better foundation. 11:53:48 proteusguy, "Stack combinators" means much more for me than "concatenative" :) 11:53:55 DGASAU: you've sold me if your math checks out, but for now it is easier to learn forth and to THEN learn krivine 11:54:40 true-grue, thus far you haven't identified any conflict and I don't believe there are any. 11:54:40 John[Lisbeth]: I'd suggest that you do the other way around, but you seem pretty determined to do it the hard way. 11:54:56 DGASAU: there's barely documentation on forth. How am I gonna learn krivine? 11:55:56 proteusguy, Then I think you just prefer not to see my words. In addition: remember how IF/THEN works in Forth. Or .". 11:56:01 John[Lisbeth], best forth documentation - forth source code. :) haha jonesforth is particularly good (in terms of docs) although a lot of forthers don't care for its implementation much. I think it's absolutely perfect for what it was intended to do. 11:56:03 John[Lisbeth]: reading one or two papers of ca. 10 pages to get solid theoretical foundation brings a lot more benefit. 11:56:23 true-grue, I'm honestly curious. 11:56:24 who is ca? 11:58:00 ? 11:58:13 You can't expect me to find the papers from two letters 11:59:00 (If you can't find Xavier Leroy, you must be living in some other reality...) 12:00:07 John[Lisbeth], you now understand the "value" of DGASAU's advice. If you don't agree with him then you're doing it wrong. 12:00:09 What might be important to you, he is pretty deep into compilers and programming languages. 12:00:30 proteusguy: still on topic? ;) 12:01:02 There exist much better ways, but if you find Forth appealing, it is better to go with Krivine machines. 12:01:05 * proteusguy is. DGASAU is not. 12:01:46 translation "If you find forth appealing - ignore that and do what I say anyway which is don't use forth". 12:01:55 DGASAU, that is the very definition of trolling. Please stop. 12:02:11 proteusguy: no, it is not. What you are doing _is_ trolling. 12:02:41 For start, I don't put words into your mouth. 12:04:40 DGASAU: breh those initials arent' even CE 12:06:03 John[Lisbeth]: I don't understand you at all. Where the hell have you got "CE"??? 12:07:14 sorry ca 12:07:23 you said two papers of ca 12:07:42 I said "two papers of ca. 10 pages." 12:07:51 ??? 12:08:05 just read what you said you bugger 12:08:21 John[Lisbeth]: reading one or two papers of ca. 10 pages to get solid theoretical foundation brings a lot more benefit. 12:08:31 This is what I said exactly. 12:08:42 I don't understand what isn't clear here. 12:10:11 cause you said to read two papers without giving an author or the titles of the papers 12:10:49 It isn't important which paper you read exactly. The point is the concept. 12:11:15 You may want to read the whole "ZINC report" even, if you're into implementing programming languages. 12:13:20 trying to find these papers 12:15:37 I can't find anything about krivine machines on his webpage 12:17:59 DGASAU: you don't have to worry though krivine machines are on my radar, now 12:29:22 I'm on the hunt for the most lispy postfix 12:29:34 but I shall still use ans forth as my lingua franca 12:30:38 compared to a minimal and custom forth ans is pretty bloated 12:30:48 but compared to something I am used to like lisp or c or python ans is not very bloated at all 12:31:40 I can depend on ans to be fairly minimal and ported everywhere 12:35:19 I think it is weird what draws people to forth 12:35:34 many people get drawn to it for minimalism concerns because they do embedded 12:35:59 but I was drawn to forth for syntactic reasons alone and it just happened to lead to efficiency as I refined the syntax I wanted 12:36:51 Here we all in here know forth is a very good solution to programming. Even ans forth is a better solution than many high level solutions out there 12:37:06 you can write a domain specific language to accomplish whatever you want 12:37:12 make it very efficient and minimal 12:37:36 It's like there isn't a huge sacrifice for the power you get like with many powerful languages 12:39:10 most powerful languages make compromises between syntactic power, speed, reliability, and readability and so on 12:39:17 but forth seems to hit all of these sweet spots 12:39:40 I think it's syntax is easy to learn and you could teach the syntax to an amateur 12:40:06 and the syntax is also very powerful, you can get alot done with a litte. And you can produce very fast code even if you use relaly bad programming practices because it is so minimal 12:42:19 If you are very minimal and use very good forth practices you can make yourself basically an amazing assembly repl 12:42:37 and from that assembly repl you can do wonders with not much code 12:44:31 I've read of forths that get simple by making linguistic sacrifices such as using floating point or using even just one decimal place of precision 12:44:35 like 3.3 12:44:55 So part of my thinking is to implement a very very minimal forth 12:45:10 as dumbed down as I can make it so it is literally just a repl to my assembler 12:47:22 and then using that as my base for Joy/krivine machine simply because once I've got a very very basic forth it will be easier than writing a single line of assembly 12:51:19 even though it would be faster if I implemented the joy/krivine machine directly into assembly 12:51:36 I think building the most minimal forth is a better skill 12:52:01 imperative programming is faster. It just is. Largely because modern computers are designed for rapidly changing values in arrays plus some other reasons 12:55:41 John[Lisbeth]: you could implement the repl in anything 12:56:11 To me the repl is the most important thing of all 12:56:19 okay 12:56:22 but that's nothing to do with Forth 12:56:30 it is the repl plus postfix plus the stack that make it good 12:56:33 the Forth I use most doesn't even *have* a REPL 12:56:44 My forths will always have repls 12:56:47 okay 12:56:52 but you're getting hung up on that 12:56:57 do you understand threading yet? 12:57:03 getting there. 12:57:24 You needn't worry it'll all be explained to me once I complete jonesforth 12:58:13 there's no point getting hung up on anything else until you understand how that works 12:58:25 that is the single most important thing above all else 12:58:33 that is literally how Forth works 12:59:28 lol all in due time 13:00:21 okay 13:00:43 what you're trying to do is understand how to write a C compiler, without actually knowing what functions are for 13:00:57 well not a c compiler and perhaps 13:01:29 --- join: gyxile (~nick@cpc80309-grim18-2-0-cust167.12-3.cable.virginm.net) joined #forth 13:02:26 I'm throwing c out the window at this point. I think forth clearly beats c. 13:04:40 --- mode: ChanServ set +v bluekelp 13:04:47 --- mode: ChanServ set +o bluekelp 13:05:00 I'm just really excited about it is all. It's pretty much one of the biggest discoveries of my programming career 13:05:51 --- mode: ChanServ set +o proteusguy 13:07:22 John[Lisbeth]: not sure if i'm late to the game but after you understand jones - look at http://www.bradrodriguez.com/papers/moving1.htm; there are different threading models. not all forths are the same in how they implement threading. 13:07:57 but first understand jones (or any forth, really) 13:11:34 I am wondering if I can borrow from the threading of my kernel 13:12:30 your kernel? that might be a very different type of threading. the word is overloaded and the concepts are not the same. at all. 13:13:07 C and forth both have their uses. they're for different things, IMO. learn both. 13:14:20 nah c is bad I don't like it 13:16:41 can you do JIT compilation with forth? 13:27:02 https://github.com/anse1/firmforth 13:27:09 https://korte.credativ.com/~ase/firm-postgres-jit-forth.pdf 13:27:23 ^ JIT Forth 13:28:19 John[Lisbeth]: ah, yeah, sorry, threading in this sense is not like threading in the process sense 13:36:54 --- quit: reepca (Ping timeout: 244 seconds) 13:51:38 I am just so excited about it I can't tell you how excited I am 13:51:47 It's like finding the holy grail 14:10:21 * gordonjcp has visions of John[Lisbeth] typing some lines of 80C32 assembler and crumbling into dust 14:10:26 He chose... poorly. 14:14:56 how many assemblers could I possibly encounter as a high level programmer 14:21:52 probably none, the idea is that high-level languages abstract that away 14:28:35 --- join: ASau (~user@netbsd/developers/asau) joined #forth 14:52:19 --- join: groovy3shoes (~groovy2sh@unaffiliated/groovebot) joined #forth 15:27:53 --- join: reepca (~user@std-001.cune.edu) joined #forth 15:50:49 my goal each time should be implementing forth then finding the lowest level I can and nesting myself in it 15:53:22 I just feel like after finding forth that my ideas about how syntax should work have been validated 15:54:18 well assembler is the lowest level 15:54:27 I guess you could find a microcode-programmable CPU 15:54:40 and implement forth primitives right there as assembler instructions 15:54:56 and then you'd find that you've been beaten to it by some 30 years 15:55:00 RTX2000 and so on 15:58:36 --- quit: nighty (Remote host closed the connection) 15:59:18 John[Lisbeth]: my most minimal Forth is about 17 bytes long 15:59:23 for the inner interpreter 16:00:46 actually that's not quite true 16:00:57 17 bytes to get the first Forth instruction to run 16:01:29 DOCOL that actually runs a colon definition is a further 16 bytes 16:01:39 NEXT is four bytes, that's called at the end of every word 16:02:58 and ;S is 10 16:08:40 17 bytes holy shit 16:09:03 I wonder what is the most mathematical minimum 16:09:09 in terms of information theory 16:10:09 Build a forth inner interpreter into a processor and it's bytes to execute a definition 16:10:43 processor forth, huh? 16:10:46 it's genius 16:11:08 maybe you could make an assembler with forth syntax 16:11:45 If you look at what chuck moore did, he basically made processors with forth primitives as the instructions. So forth *is* the assembly-language for them. 16:17:28 --- join: nal2 (~nal@adsl-64-237-234-4.prtc.net) joined #forth 16:20:50 --- quit: nal1 (Ping timeout: 250 seconds) 16:22:18 I bet those processors aren't available anymore 16:31:12 --- quit: gyxile (Quit: Ex-Chat) 16:31:30 Philae has an RTX2010, which executes forth. It's available to anyone who wants to go get it. 16:31:56 meh 16:32:22 forth machines 16:32:26 I've never been so sure in my life 16:32:46 except perhaps the krivine machine instead who knows 16:34:40 what about forth microprocessors 16:34:49 the tiniest forth processor 16:34:55 could be a very small circuit 16:37:45 take a circuit like that and give it 16 gb of ram 16:38:05 that's sort of the idea behind Green Arrays 16:38:34 ooh I've seen this 16:38:45 http://www.greenarraychips.com/home/about/mgmt.html <-- anyone in this channel should recognize the name of the chairman 16:39:12 holy moly 16:39:22 The Moore himself 16:39:34 http://www.aholme.co.uk/Mk1/Architecture.htm John[Lisbeth], you might enjoy this. 16:40:17 I don't understand enough electrical engineering to read most of it but it is a forth machine I bet 16:40:28 that's really cool 16:40:44 All someone has to do is implement an operating system for it 16:42:00 Its forth is interactive. 16:42:52 interactive as in it has a repl? 16:43:00 yes 16:43:12 wow that's really crazy 16:43:30 I would love to get my hands on a chip like that 16:43:32 the 2nd figures shows a terminal session 16:43:49 meh you've got to port a unix system to it 16:43:54 or write your own unix 16:43:58 uh, no 16:44:06 uh, hell yes 16:44:09 why the hell not 16:44:24 ok. you first. 16:44:51 So that high levelers will start learning forth instead of dumb high level languages 16:44:59 cause they will trace it back to the root and find out it's forth 16:45:06 and once they learn forth they'll be addicted 16:45:17 and then forth will take over as the supreme language of all time 16:45:46 the boot loader on most PowerPC Macs, and on the OLPC XO, is something called OpenFirmware, which has a forth base 16:45:58 so I suppose you could say it's been done 16:46:37 nice trick but nobody cares about the bootloader in the high level world 16:46:45 * dzho shrugs 16:46:46 --- quit: dys (Ping timeout: 276 seconds) 16:47:05 does everything run on the bootloader? 16:52:11 also if not what about writing a forth assembly interpreter 16:52:52 you could interpret arm I bet 16:55:23 --- join: nighty (~nighty@d246113.ppp.asahi-net.or.jp) joined #forth 17:08:39 --- quit: Keshl (Read error: Connection reset by peer) 17:09:12 --- join: Keshl (~Purple@24.115.181.94.res-cmts.gld.ptd.net) joined #forth 17:10:25 --- quit: mnemnion (Remote host closed the connection) 17:11:01 --- join: mnemnion (~mnemnion@152.179.131.166) joined #forth 17:15:25 --- quit: mnemnion (Ping timeout: 244 seconds) 17:15:38 --- join: mnemnion (~mnemnion@152.179.131.166) joined #forth 17:19:33 --- quit: true-grue (Read error: Connection reset by peer) 17:20:17 --- quit: mnemnion (Ping timeout: 252 seconds) 17:25:47 --- quit: reepca (Ping timeout: 276 seconds) 17:30:54 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:cef:3c0c:ba2d:14a2) joined #forth 17:35:22 --- quit: mnemnion (Ping timeout: 250 seconds) 17:48:42 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:cef:3c0c:ba2d:14a2) joined #forth 17:49:02 --- quit: nal2 (Ping timeout: 244 seconds) 18:11:24 --- join: nal (~nal@adsl-64-237-235-172.prtc.net) joined #forth 18:17:05 --- quit: Zarutian (Quit: Zarutian) 18:19:04 --- quit: irsol (Ping timeout: 276 seconds) 18:20:58 --- join: irsol (~irsol@unaffiliated/contempt) joined #forth 18:33:25 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 18:37:36 --- join: nal1 (~nal@adsl-64-237-232-68.prtc.net) joined #forth 18:41:10 --- quit: nal (Ping timeout: 276 seconds) 19:03:23 how many forth programmers are there in the world? 19:07:04 like 19:07:06 10 19:08:26 yeah.. 19:08:44 Do you think I am employable knowing how forth works? 19:09:00 probably not 19:09:06 dang 19:09:29 IT seems there's that forth inc and then there's that company you showed me with the processors 19:09:45 I'd bet that encompasses most of the people 19:09:47 Learning the nitty-gritty details about computer systems is good. But forth experience is probably not going to get you a job. 19:10:08 Maybe if I just pester the people in those two companies 19:10:10 and just be like 19:10:14 breh I know forth let me in 19:10:39 Maybe if you do something with satellites or telescopes it would be useful. But the processors in those devices are improving (slowly, it still has to be rad-hard stuff generally), so they're running fancier languages. 19:11:13 Yeah but I mean forth is like a language made in heaven for my tastes 19:11:29 WHat are the odds that one of these people won't be like hey why not 19:11:45 I could be the next generation of forth coming up 19:12:11 Write some programs! Maybe it can be a big thing for you. 19:12:39 It's gonna take me a few months to get cozy in forth 19:12:58 I think I want to replace the gnu coreutils and init and x and a few other things 19:13:54 What I really want to die forever is the bash shell 19:15:13 That seems like half a dozen enormous projects. 19:15:55 Well my strategy for x is I will replace wayland instead 19:15:59 that will save me some headache 19:16:05 for init I think a dsl will do nicely 19:16:11 for teh shell a dsl will also do nicely 19:16:46 What sort of projects have you completed so far? 19:26:40 None really. I invented a dynamic finite state machine in javascript which I thought was pretty good 19:27:04 I spent too long worrying about what was the best language and eventually I ended up with lisp and was cozy there for a while 19:27:16 but forth seems to have put lisp to shame 19:27:41 Right now what I am technically working on is forth containers in the cloud for microservices 19:28:27 That's cool. 19:28:47 I started programming in c++ in visual studio and I hated it 19:29:03 Then I watched this video on the unix way: https://www.youtube.com/watch?v=tc4ROCJYbm0 19:29:26 I've always kinda liked C, but I like it less now that I know more about it. :) 19:29:28 And it inspired me with their concept of shell scripting and using unix pipes to string small programs together and achieve larger tasks with them 19:29:37 foo x | bar | baz 19:29:58 Then I learned functional programming and learned that with parentheses you could do (baz (bar (foo x))) 19:30:05 Ah. Yeah, that composibility and simplicity is the kind of elegance that draws people to forth as well, I think. 19:30:29 and finally I looked over the edge to see what reverse polish notation was about and I found a crazy surprise 19:30:41 the surprise wasn't x foo bar baz 19:30:50 that part was not surprising 19:30:55 what was surprising was how small it turned out to be 19:31:16 Clearly forth has got somethign right that other languages have got wrong 19:31:51 somebody just needs to hook it up to xfce and install firefox on it 19:31:52 It's like a lot of other things, in that it is less elegant when you dig deeper. But it's still a pretty darn cool approach. 19:32:59 When I studied the unix way they told me the shell was part of the answer 19:33:15 and so I learned the shell like nobody's business and I was horrified with what I found as a broken language not suitable for scripting 19:33:19 I'm enjoying it for embedded stuff, where I control the entire system and I don't have to care about how anybody else does anything. Working with an operating system is frustrating. Working on something where you can do things however suits you (and however the datasheet allows) is nice. 19:33:23 and I went out and looked for a better shell 19:33:26 forth is that shell 19:33:33 I guess I like forth because I hate computers. 19:33:46 (and I want to make them suffer, badum-tsh) 19:34:10 But really, I hate the complexity of modern computing. So... I avoid it. 19:34:54 This is one of the problems I have been trying to solve 19:35:02 is the complexity of computer systems for new programmers 19:35:18 I sought out lisp because lisp notation for arithmetic is very similar to highschool algebra 19:35:27 and polish notation is not really an exception to that 19:38:18 I don't think it's possible. We want fast, not understandable. Fast means lots of layers. It's not just your language, there are libraries. And then there is an OS. And then there is the hardware. And the CPU itself. And there's many layers of memory. Disk, RAM, caches. Cache lines, argh! And your CPU instructions take different amounts of time. And branches sometimes are fast and sometimes not. And maybe your 19:38:21 system treats multi-byte sequences as going in one direction or the other. Oh, and your CPU isn't actually what everyone says it is, it's really a different CPU that pretends to be the one you interact with. It's turtles all the way down! 19:39:02 but I think forth is very understandable compared to other languages 19:39:13 It is actually very easy to learn 19:39:13 So get a nice RISC-y CPU with a good amount of flash and SRAM and zero-wait-state access to both, and pretend nothing else exists. :) 19:39:35 I am not embedded though at least unless I get a forth job 19:39:40 I work on the cloud 19:41:03 I think high level tasks can be solved with forth 19:41:11 and in a way that is distributable 19:43:55 How might that work? 19:54:09 just copy techniques from lisp 19:59:43 --- quit: Uniju (Ping timeout: 250 seconds) 20:02:10 --- join: Uniju (~frog_styl@cpe-74-78-4-232.mass.res.rr.com) joined #forth 20:05:20 John[Lisbeth]: hi 20:10:52 what's up? 20:13:59 --- mode: proteusguy set +o proteusguy 20:19:28 yunfan: you still there? 20:19:44 nothing, just say hello, cause i saw you said you want to use forth to embeding to some other domain 20:23:26 John[Lisbeth]: what's your intereting of using forth on? 20:26:33 --- quit: neceve (Quit: Konversation terminated!) 20:28:28 --- join: DocPlatypus (~skquinn@c-73-166-108-48.hsd1.tx.comcast.net) joined #forth 20:32:49 Well I want to use it for systems programming first of all 20:33:11 THe reason I set out on this quest that lead to forth was is I wanted something that would replace bash shell as being both a good and easy repl and a good and stable scripting language 20:47:01 It bothered me that my ideal of programming was shel scripting through pipes only the people in #bash who were experts asserted that this was a bad way to program 20:47:46 To me forth is like the epitome of the philosophy of piping words together, although the syntax of it is a little different 20:51:02 but as I tried to replace the shell I found that what lisp offered me not only solved that but could be used for systems programming 20:53:02 I'm actually disappointed that Forth didn't really make the inroads it should have made in programming 20:53:08 it's like the language everyone forgot 20:54:26 I think part of it was people were dazzled by the unix system before there were ever more than 1 person who knew forth 20:54:31 and so c proliferated because of unix 20:54:44 and since everything got based on c it just sort of perpetuated 20:57:58 I think another problem if I am to understand Moore's recent work is that the current assemblers we have are really bad 20:58:33 If I am to understand the forth chips correctly they achieve a repl of forth at the outset of the comuter without any prior software written on it, which to me is a truly superior type of chip 20:59:15 assembler is such a weird language that you can almost be assured that a language wirtten in assembler is going to have some weird complex things about it 21:00:42 and so any language written in that language will have weird things 21:00:43 and so on 21:01:07 My friend was talking ealier about a job where their programs were running at 8-16 gb of ram for their applications 21:01:32 Forth allows such high level features in a low footprint that I am convinced that their problems could have been better solved with forth 21:04:25 although I know some of the 10 or so forth programmers will disagree, I think ans forth or some other kind of portable forth is an important thing 21:05:55 I think it is important to try to get xfce and firefox running in a forth system 21:07:41 these things open up dependencies though 21:07:53 and so I think a more reliable solution is to slowly replace linux and bsd utilities with forth utilities 21:09:49 I feel like forth is well suited to a piece of software like xorg because x does complex video rendering which requires alot of computational power 21:10:18 and I think init is a perfect example of something that could be accomplished with a domain specific language 21:10:21 a lot of people think that writing in assembler language is outdated 21:10:29 which it isn't, that's how you bootstrap things onto a new chip 21:10:58 nobody likes to write in assembler, and I think forth can replace it 21:11:21 a forth chip guarantees that even if there is no software that comes with the computer the programmer can begin their work 21:13:13 I never learned x86 assembler but maybe I should 21:13:37 from what I read you can write a dsl to help you write assembler faster 21:15:41 It just feels weird to come so far and to reach what I think is the perfect language and only 10 people use it 21:16:05 Now that I know forth I know that I can take any turing complete system no matter how aweful and make it a wonderful repl that solves my needs 21:17:31 I know now forth is the only language I could be truly happy using 21:22:01 I think forth could do web programming 21:22:37 hell there is already a forth implemented in javascript 21:23:10 forth has probably been implemented in every language that exists. 21:27:50 it's the most superior programming langauge I have ever encountered 21:38:19 I think where my programming can really shine is through apis to microservices that are accessed through http 21:38:44 It should be really trivial to write a dsl that will generate a url to say write to a database or get info from a database 21:43:04 in CS should be never is 21:43:21 one thing which makes me curious is forth's ability to process large amounts of data in a distributed way such as sorting it 21:43:25 or filtering it 21:43:36 I am also curious about ai applications of forth 21:45:03 4 days ago you were just interested in reverse polish notation 21:45:55 I hadnt' learned alot about it then 21:49:13 proteusguy: yes, and it attract me that it has a very thin layer 21:49:13 when I first learned about it for some reason I thought each function only took two arguments 21:49:39 for eg, if i want to implement a java on my daily useage language python, that would be too much heavy 21:49:48 but for forth, its very thin 21:51:18 according to moore's law (other moore), computers have got to double in speed every year 21:51:23 at least if we are to keep up with it 21:51:28 so it's like a race against time that each generation makes 21:52:12 I think forth consitutes an avenue for speeding up computers 21:52:25 providing high level features in a low level environment 21:53:46 am I crazy or am I imagining this high level potential 21:55:01 btw, does carrierIQ has activities recently? 22:03:13 --- quit: mnemnion (Remote host closed the connection) 22:19:41 John[Lisbeth], forth, as a language, is pretty compelling. However - it doesn't lend itself to team work so, while it's applications can scale, it's dev teams cannot easily. Thus is remains primarily regulated to embedded projects. But, for a very smart programmer, one guy can do the work of 10-25 in another language. 22:46:13 --- quit: pointfree (Ping timeout: 276 seconds) 22:48:03 --- join: dys (~dys@ip-109-44-1-95.web.vodafone.de) joined #forth 22:49:40 --- join: pointfree (~pointfree@c-174-62-81-78.hsd1.ca.comcast.net) joined #forth 23:19:59 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:cef:3c0c:ba2d:14a2) joined #forth 23:59:59 --- log: ended forth/16.09.12