00:00:00 --- log: started forth/07.11.19 01:01:11 --- join: Al2O3 (n=Al2O3@75-162-130-186.slkc.qwest.net) joined #forth 02:15:55 --- join: neceve (n=ncv@dyn-85.186.138.32.tm.upcnet.ro) joined #forth 04:02:44 --- join: maht__ (n=maht@85-189-31-174.proweb.managedbroadband.co.uk) joined #forth 04:14:12 --- quit: maht_ (Read error: 110 (Connection timed out)) 04:30:43 --- quit: Al2O3 (kubrick.freenode.net irc.freenode.net) 04:30:43 --- quit: gnomon (kubrick.freenode.net irc.freenode.net) 04:30:43 --- quit: Deformative (kubrick.freenode.net irc.freenode.net) 04:30:43 --- quit: crc (kubrick.freenode.net irc.freenode.net) 04:30:44 --- quit: Quartus__ (kubrick.freenode.net irc.freenode.net) 04:30:44 --- quit: TreyB (kubrick.freenode.net irc.freenode.net) 04:30:44 --- quit: rbarraud (kubrick.freenode.net irc.freenode.net) 04:30:45 --- quit: nighty-- (kubrick.freenode.net irc.freenode.net) 04:30:45 --- quit: KragenSitaker (kubrick.freenode.net irc.freenode.net) 04:30:45 --- quit: arke_ (kubrick.freenode.net irc.freenode.net) 04:30:46 --- quit: segher (kubrick.freenode.net irc.freenode.net) 04:30:46 --- quit: cmeme (kubrick.freenode.net irc.freenode.net) 04:30:46 --- quit: swestres (kubrick.freenode.net irc.freenode.net) 04:30:47 --- quit: Fractal (kubrick.freenode.net irc.freenode.net) 04:30:47 --- quit: crest_ (kubrick.freenode.net irc.freenode.net) 04:30:47 --- quit: CyberSpace (kubrick.freenode.net irc.freenode.net) 04:30:47 --- quit: uiuiuiu (kubrick.freenode.net irc.freenode.net) 04:30:47 --- quit: JasonWoof (kubrick.freenode.net irc.freenode.net) 04:30:50 --- quit: madgarden (kubrick.freenode.net irc.freenode.net) 04:30:50 --- quit: warpzero (kubrick.freenode.net irc.freenode.net) 04:30:50 --- quit: Deformati (kubrick.freenode.net irc.freenode.net) 04:30:50 --- quit: timlarson (kubrick.freenode.net irc.freenode.net) 04:30:50 --- quit: mrsbrisby (kubrick.freenode.net irc.freenode.net) 04:30:50 --- quit: ccfg (kubrick.freenode.net irc.freenode.net) 04:30:50 --- quit: ecraven (kubrick.freenode.net irc.freenode.net) 04:41:34 --- join: JasonWoof (n=jason@unaffiliated/herkamire) joined #forth 04:41:34 --- join: rbarraud (n=rbarraud@gateway.quickcircuit.co.nz) joined #forth 04:41:34 --- join: nighty-- (n=nighty-@66-163-28-100.ip.tor.radiant.net) joined #forth 04:41:34 --- join: TreyB (n=trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 04:41:34 --- join: KragenSitaker (n=kragen@panacea.canonical.org) joined #forth 04:41:34 --- join: Quartus__ (n=Quartus_@209.167.5.1) joined #forth 04:41:34 --- join: Off_Namuh (i=GPS@gateway/tor/x-fb3ab7b185865534) joined #forth 04:41:34 --- join: Fractal (i=frax@i.got.the.skillz.to.pay.the.billz.org) joined #forth 04:41:34 --- join: swestres (n=Dev@Doc-14-47.veberod.com) joined #forth 04:41:34 --- join: cmeme (n=cmeme@boa.b9.com) joined #forth 04:41:34 --- join: segher (n=segher@82-217-247-28.cable.quicknet.nl) joined #forth 04:41:34 --- join: arke_ (n=arke@p54A7CCA4.dip.t-dialin.net) joined #forth 04:41:34 --- join: ecraven (i=nex@eutyche.swe.uni-linz.ac.at) joined #forth 04:41:34 --- join: crest_ (n=crest@p5489DCD9.dip.t-dialin.net) joined #forth 04:41:34 --- join: CyberSpace (i=HydraIRC@c-68-63-244-236.hsd1.ky.comcast.net) joined #forth 04:41:34 --- join: timlarson (n=timlarso@user-12l37rb.cable.mindspring.com) joined #forth 04:41:34 --- join: madgarden (n=madgarde@bas2-kitchener06-1096752101.dsl.bell.ca) joined #forth 04:41:34 --- join: ccfg (n=pitkajus@tuomi.oulu.fi) joined #forth 04:41:34 --- join: Deformati (n=joe@c-68-61-240-49.hsd1.mi.comcast.net) joined #forth 04:41:34 --- join: uiuiuiu (n=ian@schihei.net) joined #forth 04:41:34 --- join: mrsbrisby (i=nimh@nimh.org) joined #forth 04:41:34 --- join: warpzero (n=warpzero@208.74.136.138) joined #forth 04:41:34 --- mode: irc.freenode.net set +o JasonWoof 04:41:56 --- quit: Deformati (Killed by brown.freenode.net (Nick collision)) 04:42:01 --- join: crc (n=crc@pdpc/supporter/active/crc) joined #forth 04:42:01 --- join: Deformati (n=joe@c-68-61-240-49.hsd1.mi.comcast.net) joined #forth 04:42:01 --- join: Al2O3 (n=Al2O3@75-162-130-186.slkc.qwest.net) joined #forth 04:42:01 --- join: gnomon (n=gnomon@CPE0050eb372bdb-CM000f9f776f96.cpe.net.cable.rogers.com) joined #forth 04:42:01 --- join: Deformative (n=joe@c-68-61-240-49.hsd1.mi.comcast.net) joined #forth 04:42:01 --- mode: irc.freenode.net set +o crc 04:45:06 --- join: timlarson__ (n=timlarso@user-12l37rb.cable.mindspring.com) joined #forth 04:46:26 --- quit: mrsbrisby (Read error: 110 (Connection timed out)) 04:46:49 --- join: mrsbrisby (i=nimh@nimh.org) joined #forth 04:46:52 --- quit: timlarson (Read error: 110 (Connection timed out)) 05:16:58 --- quit: Quartus (Read error: 110 (Connection timed out)) 05:17:17 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #forth 05:17:17 --- mode: ChanServ set +o Quartus 05:41:16 --- quit: JasonWoof (Remote closed the connection) 05:43:21 --- join: JasonWoof (n=jason@c-71-192-28-153.hsd1.ma.comcast.net) joined #forth 05:43:21 --- mode: ChanServ set +o JasonWoof 05:55:58 --- join: timlarson_ (n=timlarso@65.116.199.19) joined #forth 05:57:34 --- join: madwork (n=foo@204.138.110.15) joined #forth 06:49:37 --- join: Captain_Thunder (n=root@cmu-24-35-47-21.mivlmd.cablespeed.com) joined #forth 07:11:16 --- join: KipIngram (n=KipIngra@c-98-196-82-10.hsd1.tx.comcast.net) joined #forth 07:11:41 --- nick: arke_ -> arke 07:14:06 --- quit: Off_Namuh (Remote closed the connection) 07:24:58 --- join: Off_Namuh (i=GPS@gateway/tor/x-16aed49d4794f9f4) joined #forth 07:28:42 --- quit: ecraven ("bbl") 07:35:43 --- nick: crest_ -> Crest 08:57:04 --- quit: Al2O3 ("Eggplant & SenseTalk: Driving Success Through Automation") 09:22:44 --- join: forther (n=forther@207.47.34.100.static.nextweb.net) joined #forth 09:24:40 --- join: Al2O3 (n=Al2O3@75-162-130-186.slkc.qwest.net) joined #forth 09:26:15 --- quit: Al2O3 (Client Quit) 09:34:00 --- quit: Off_Namuh (Read error: 104 (Connection reset by peer)) 09:45:17 "If every user of GNU/Linux gave $1 per year to the FSF, the FSF's financial resources would increase 40 fold." --affero.com 09:46:09 http://www.fsf.org/register_form?referrer=4579 11:02:53 --- join: forther_ (n=forther@207.47.34.100.static.nextweb.net) joined #forth 11:07:58 --- quit: forther (Read error: 110 (Connection timed out)) 11:37:25 If you were implementing Forth from the ground up, which words would you need to include as primitives in order to define the rest of them? 11:37:42 (ie, what does Forth minimally need to be Turing Complete) 11:56:11 --- quit: timlarson__ (Read error: 104 (Connection reset by peer)) 11:56:17 What primitives are needed to build it has nothing to do with its Turing-completeness. 11:57:54 There's a set of 20-30 primitives that you could use to build a Forth, if that kind of academic exercise interests you. The exact set depends on you, there are at least 10 that you could argue over. 12:02:17 an absurdly minimal set runs fewer than 10 primitives. 12:13:21 --- join: timlarson__ (n=timlarso@user-12l37rb.cable.mindspring.com) joined #forth 12:37:13 Hmmm. If you really wanted to get carried away couldn't you get all the way there with literal, store, fetch, bit rotate, and NAND? 12:59:12 --- join: doublec (n=doublec@202.180.114.137) joined #forth 13:00:04 --- quit: timlarson__ (Read error: 110 (Connection timed out)) 13:01:20 --- quit: Quartus__ (Read error: 104 (Connection reset by peer)) 13:08:24 --- join: ygrek (i=user@gateway/tor/x-34584e50dacf3025) joined #forth 13:28:40 --- quit: timlarson_ ("Leaving") 13:36:34 --- part: KipIngram left #forth 13:48:13 --- quit: ygrek (Remote closed the connection) 13:55:59 iirc someone implemented a forth in brainfuck 13:58:41 that has what 6 instructions? 13:59:39 --- join: Quartus__ (n=Quartus_@209.167.5.2) joined #forth 14:02:27 --- join: iano (n=iosgood@63.105.26.46) joined #forth 14:06:06 --- join: Al2O3 (n=Al2O3@75-162-130-186.slkc.qwest.net) joined #forth 14:13:16 --- quit: Al2O3 () 14:32:59 --- quit: iano () 14:33:13 --- join: iano (n=iosgood@sub26-46.member.dsl-only.net) joined #forth 14:36:27 --- quit: neceve ("Konversation terminated!") 14:37:40 --- join: Off_Namuh (i=GPS@gateway/tor/x-f22b5df58dc0c44f) joined #forth 14:49:29 Brainfuck has 8. 14:49:37 If you count IO. 14:49:55 it's a toy, though. 14:52:50 Quartus__: I felt I was reinforcing your theme. ie that you can implement forth on very few instructions, but that's stupid 15:01:00 --- join: crest_ (n=crest@p5489F640.dip.t-dialin.net) joined #forth 15:14:45 jason, I may have missed what you wrote 15:16:58 --- quit: Crest (Read error: 110 (Connection timed out)) 15:21:38 Quartus__: I felt I was reinforcing your theme. ie that you can implement forth on very few instructions, but that's stupid 15:21:51 --- join: tathi (n=josh@pdpc/supporter/bronze/tathi) joined #forth 15:21:51 --- mode: ChanServ set +o tathi 15:22:56 what is? Six instructions? Yes. 15:23:37 yeah, implementing forth in brainfuck is a nice example of it being possible, but not relivant or useful 15:23:49 (to implement forth (or anything for that matter) on very few instructions) 15:25:02 You want your compiler to run as close as possible to the real hardware, not on some arbitrarily-limited representation of an imaginary toy cpu. 15:32:44 I wouldn't go that far 15:33:05 I went with a virtual machine so my code would work on non-ppc machines also 15:33:56 on smaller devices I agree completely 15:34:11 on desktops I happily sacrifice some speed for compatibility 15:34:17 VMs have occasional applicability; parlour-trick novelty ones, not so much. 15:34:26 :) 15:34:43 I hope you don't resent me living in the comfort of my own computer generated reality :) 15:35:42 What you're doing bears little resemblance to brainfuck. 15:39:21 your vm seems to suffer of a parsimonious attitude to memory use, to the extent that it cannot generate PIC. 15:42:39 eh. It's not so much about the parsimonious attitude to memory use. 15:42:52 More just plain poor design decisions on our part. 15:43:06 no? I suppose it's an indirect effect. 15:43:27 PIC would just require relative branch offsets. 15:43:34 that wouldn't make any difference in the memory use 15:44:42 oops, gotta run. bbl. 15:44:44 I could do relative branches, I don't really care 15:44:56 It would help. I would guess that variable-length branch addresses make back-patching annoying, too. 15:58:11 what's back-packing? 15:59:43 back-patching 15:59:56 back-packing is going for a hike with a pack on your back :) 16:02:23 oh, patching 16:02:47 right, it helps if you use a predictable length when you're planning on patching it 16:03:11 : if op-pad here 0 branch, ; immediate 16:03:13 that sort of thing 16:03:19 right 16:17:31 --- join: nighty^ (n=nighty@sushi.rural-networks.com) joined #forth 16:23:46 --- join: timlarson (n=timlarso@user-12l37rb.cable.mindspring.com) joined #forth 16:57:34 --- join: TreyB_ (n=trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 16:57:34 --- quit: TreyB (Read error: 104 (Connection reset by peer)) 17:13:51 real toy CPUs might be more interesting than imaginary ones :) 17:14:37 Captain_Thunder: the usual set of primitives are the ones in eForth. There are about 28, but you could shrink them down a bit 17:15:13 Frank Sergeant wrote a fun paper about a "three-instruction Forth" on the 68HC11. The three instructions he starts with are read a byte, write a byte, and call a subroutine. 17:15:17 peek poke call. 17:15:29 of coures that assumes you know the instruction set ;) 17:16:24 eForth isn't an academic exercise; it is an exercise in ease of portability 17:17:17 but it's true in general that VMs are suboptimal. 17:17:58 gas supports variable-length branch addresses on the x86, and I don't know how it handles back-patching. 17:18:25 it seems to do a reasonable job with generating the nice short two-byte jumps even for forward jumps 17:20:30 I don't know what its strategy is 17:30:18 --- join: Deform (n=joe@c-68-61-240-49.hsd1.mi.comcast.net) joined #forth 17:30:53 --- quit: Deformative (Nick collision from services.) 17:31:29 Hmm,I thought I claimed "Def" 17:31:33 Apparently I didn't. 17:31:56 --- nick: Deform -> Deformative 17:43:25 the SeaForth processors are also quite minimal. 17:44:00 has anyone tried to write something for them? 32 opcodes, 512 18-bit words of ram 17:44:47 * Deformative wants a seaforth 17:45:18 They should make real desktops based on seaforth. 17:45:20 Would be cool. 17:45:24 VGA ports and everything. 17:45:34 Specialized seaforth for a gpu too. 17:45:43 --- quit: Off_Namuh (Remote closed the connection) 17:46:47 um, that was 512 words, not 512K words. It will never be a desktop cpu. 17:48:52 Can base a desktop cpu on the same concept, no? 17:51:23 yeah, but you could connect it to external memory 17:52:38 apparently there were some pretty neat demos of it at the SVFIG Forth Day 17:53:34 http://www.falvotech.com/blog/index.php?/archives/200-Forth-Day-Report.html 17:54:47 Wow, the forth community seems to be the most elderly of any other programming cliche from the photos I am looking at. 17:55:23 sure, just get a couple thousand of them. Bit like those little triangular tea sandwiches. 17:58:17 I'm guessing you're rather young, Deformative? 17:58:32 I am in high school. 17:59:02 FYI, it's 'clique'. 17:59:11 Ah, thanks. 17:59:20 My spelling is horrible. 17:59:28 Spell check doesn't even know what I mean most of the time. 17:59:41 If it's so horrible you come up with a completely different word, you might want to give it a bit of study & practice. 18:00:21 and American -- they're usually the only ones who are so proud of their ignorance. 18:00:30 I am not proud. 18:00:38 It comes across that way. 18:01:01 I wish I could spell, but I just feel there are better things to learn. 18:01:08 Um, no. 18:01:18 You're wrong. A proper command of the language is the most important thing you can have. 18:01:33 If you don't learn to spell, people aren't going to take you seriously. 18:01:58 I'll second both of those. 18:02:03 curse those 15th century illiterate printers for screwing up English spelling.... Other languages are much more rational 18:02:34 bah, English is pretty rational, it just has complicated rules. 18:02:48 most of the words that don't fit the rules are clearly from other languages. 18:02:56 Not so complex that a reasonably intelligent child of 12 can't manage very well. 18:03:00 * iano envies Samuel Falvo 18:03:02 True, but I don't really care what people think about me, if they don't take me seriously, I am pretty fine with that. 18:03:27 Hmm, but you should. 18:03:30 Deformative, a useless and typically adolescent attitude, that is. 18:03:56 Because if you come across as if you're a total waste of time, people will treat you accordingly, instead of helping you learn the things that you want to learn. 18:04:06 Quartus Probably, but caring what people think has been bad in my experience. 18:04:20 tathi: good point 18:04:23 Communicating well shows respect for others. If you fail to show respect for others, they will not help you. 18:04:33 Another good point. 18:04:43 Also working with other people is fun. 18:04:49 Bad point. 18:05:04 Heh. As usual, Quartus put it better than I did; I should just have waited. :) 18:05:05 Maybe you're not doing it right :) 18:05:06 It isn't "caring what people think", as doubtless you think you are marvellously original, unique, and precious -- it's about showing your regard for others. 18:05:31 And you can be way more productive that way. Even if it's not just a matter of helping you learn things.' 18:05:44 Also, *everything* is communication. 18:06:00 Not everything. Flowers aren't. 18:06:03 Quartus, I try to maintain respect, but if someone dislikes me, or something about me, I don't let it get to me. 18:06:09 Nor are neutron stars. 18:06:20 Just every part of human society. 18:06:32 Deformative, that is completely irrelevant to whether or not you should bloody well put some effort into learning to spell! 18:06:44 Intracommunication > Intercommunication 18:06:45 Quartus: He seems to be doing better now :) 18:06:46 :D 18:06:53 Quartus I should. 18:06:57 I have been getting better. 18:07:14 Throwing irrelevancies up in a reasonable conversation is another way of showing disregard! 18:07:19 Anyway, about programming cliques. 18:07:28 So, I noticed we don't talk much about Forth in here ;) 18:07:44 Captain_Thunder: We do if people ask actual questions about Forth... 18:07:50 Because spell check seems to know what I mean lately, it would help if kde had a half-decent spell check widget, there is no right-click correction. 18:08:39 Quartus: What, irrelevancies like misspellings? :) 18:08:41 Being unable to spell is not a handicap requiring a prosthetic device. Learn. 18:08:49 Admittedly I didn't know what he meant either. 18:09:02 I think the Fortran, S/360 assembler, and Lisp cliques are nearly of an age with the Forth guys. 18:09:56 Quartus, what do you propose I do? Sit and read a dictionary, or continue what I have been doing and just read the corrections as I type something irrelevant. 18:09:58 Deformative: Did you say you saw Forth Day photos? 18:10:15 KragenSitaker: The 2000 ones. 18:11:01 KragenSitaker: I disagree regarding lisp. 18:11:49 KragenSitaker: This is why I disagree: http://xkcd.com/297/ :D 18:11:55 Deformative: have you seen Greenblatt lately? And I think McCarthy is even older than Chuck Moore 18:12:21 Offete is out of business? 18:13:00 Deformative: :) xkcd rocks 18:13:14 Indeed. :D 18:13:21 haha, that's one of my favorite xkcds 18:13:52 I think Forth has the same kind of timeless quality to it 18:14:05 It does, but there are not as many texts about it. 18:14:08 Namely SICP 18:14:24 SICP is awesome; it really changed the way I thought about programming. 18:14:27 I started a page translating SICP to Forth 18:14:30 So did Thinking Forth, in a different way 18:14:40 I mean, SICP was my first introduction to programming, I only got through chapter 1 before going to an easier book, but that is besides the point. 18:14:43 yeah, the SICP-in-Forth wiki project is pretty cool too 18:14:57 I wonder if Thinking Forth is available on line now. 18:14:59 but lost energy around end of chapter one (lambdas don't translate well) 18:15:04 heh 18:15:05 KragenSitaker: It is. 18:15:24 I've been reading through C. H. Ting's "eForth and Zen" book 18:15:50 this is made somewhat more difficult by the fact that I have only found it online in a zip file 18:16:00 within which is a document in some ancient word processor format I don't understand 18:16:02 I think that the language I am making might be a useful educational tool, well, at the very least, I will learn from it. 18:16:21 Does anyone have any idea what word processor he might have been using? 18:16:54 There are 256 bytes of binary cruft at the beginning of the file; the lines inside the file are separated by ^M and the pages by ^L; and then there's a huge quantity of cruft including earlier versions of some of the text at the end of the file 18:17:05 Inside F-83 is available in the same format. 18:17:24 KragenSitaker, what file extensions? 18:17:45 no file extensions at all. 18:18:00 I've been going through and reformatting it with Emacs, but that leaves a lot to be desired. 18:18:00 Could be WordStar. 18:18:14 * iano wants a SeaForth 1GB thumb drive :9 18:18:36 KragenSitaker, link? 18:18:41 It's not WordStar; there are none of those hyphens and newlines with high bits set embedded in the text, nor are there dot commands (^L for page break, like I said) 18:19:00 http://www.canonical.org/~kragen/zen.eForth.txt 18:19:02 There were several late WordStar variants. 18:19:18 poser WordStars :) 18:19:40 I mean, a link to the original doc 18:20:16 oh sorry 18:20:20 um let's see 18:20:29 WordStar didn't use . commands as far as I recall. Control codes all the way. 18:20:37 --- quit: iano (Nick collision from services.) 18:20:42 http://www.forth.org/library/eforth_SOC/eforth_SOC_source/eForth1/zenforth.ZIP 18:20:56 heh, you must not have used WordStar much :) 18:21:02 On the contrary. 18:21:38 Ugh, I really need to do svn commits. 18:21:40 I guess it continued to be developed for like 15 years after the last version I used... 18:22:16 Deformative: maybe if you try using darcs it will lower the barrier to making commits :) 18:22:18 Says here it's an old MS Office doc. 18:22:21 What's holding you up? 18:22:27 really? Cool! 18:22:34 Presumably MS Office for Mac. 18:22:41 OpenOffice doesn't have a clue what to do with it 18:23:28 KragenSitaker: Well, the barrier isn't exactly caused by svn, it is that I haven't touched most of the code that I need to commit in weeks. 18:23:35 So I don't remember what I changed. 18:23:40 And what files need to be removed. 18:23:42 Cleaned up, etc. 18:24:34 svn diff will tell you what you changed ;) 18:24:43 Indeed. 18:25:08 But, I have like, 4 working coppies on 3 computers. 18:25:22 All changing the same projects. 18:25:34 So it will be like, a project spreading a few hours to do properly. 18:26:05 --- quit: forther_ (Read error: 110 (Connection timed out)) 18:26:16 you can make one commit :) 18:26:33 even if you don't feel up to all four 18:26:41 Heh, true. 18:27:16 --- quit: timlarson (Read error: 110 (Connection timed out)) 18:27:20 Quartus: not having any luck importing it into AppleWorks as "Word Mac 6" 18:27:26 are you successfully reading it? 18:27:30 But at the same time, I have homework to do, svn isn't top on the list in the back of my head of things to get around to. xD I need to be more organized so that this might stop happening. 18:27:58 if you wait until you're more organized to get stuff done, you might be waiting a long time 18:28:07 maybe you should find a way to muddle through regardless :) 18:28:25 :D 18:29:30 Hmm, my stack is weird, each element takes up 12 bytes, so I am having a hard time deciding on a size. 18:29:43 s/size/default size 18:32:49 KragenSitaker, yup, it's an old Word doc 18:33:04 I can convert them all if you like 18:34:01 Quartus: wow, that would be a huge service to the community. Also I would enjoy it myself :) 18:34:25 maybe not as big a service to the community as building one of I think two native programming environments for PalmOS, but still :) 18:34:43 Oh, I think doing a save-as would be a pretty minor service to the community; I'm not sure it's all that useful. But I can do it. :) 18:34:54 Thanks :) 18:34:55 * Deformative is confused. 18:34:56 (the other one I think was called LispMe) 18:35:00 What abotu palmos now/ 18:35:04 LispMe! 18:35:09 Deformative: Quartus wrote Quartus Forth 18:35:09 I have that on my palm. 18:35:19 which is a Forth programming environment for the Palm 18:35:37 http://quartus.net/zenforthrtf.zip 18:35:39 see how that works out 18:35:51 Quartus: do you want to take a look at Inside F-83 too? 18:35:53 --- quit: crest_ (Read error: 110 (Connection timed out)) 18:35:57 Link. 18:36:09 Awesome. 18:36:12 I need to find my palm then. 18:36:21 Wait, does Quartus forth work on os4? 18:36:25 and Quartus Forth and LispMe are the only programming environments I know of on the Palm that don't require a non-Palm computer to actually write programs. 18:36:26 Yes. 18:36:38 Cool. 18:36:42 * Deformative adds to todo list. 18:36:46 (back to the strange duality between Forth and Scheme :) 18:36:52 or Lisps in general I guess 18:37:15 Quartus: http://www.forth.org/library/eforth_SOC/eforth_SOC_source/f83/insidf83.ZIP 18:37:21 I actually do not like scheme that much, I always wonder how it became the leading scheme implementation. 18:37:32 Scheme seems very inconsistent to me. 18:38:07 the leading Lisp implementation? Well, everybody who wasn't doing Scheme got crippled by trying to implement Common Lisp 18:38:14 that's my take 18:38:23 you should ask my friend est 18:38:53 Hmm, lisp can be so much cleaner than it is. 18:38:55 :/ 18:39:14 Problem with that however, a lot more typing would go into writing code. 18:39:27 It might be too off-topic to ask what is inconsistent about Scheme here. 18:40:03 Oh, is this channel strict about topic? 18:40:23 I just thought it might be more on-topic on #scheme 18:40:25 --- quit: arke (Connection timed out) 18:40:30 It does help if it leans vaguely toward Forth, not least to you, as there are lot more Scheme people on #scheme 18:41:08 Yeah, but in #scheme I will be under attack for pointing out what I consider a flaw. 18:41:18 maybe. let's try it. 18:41:41 est says, "oh..I don't know. I tend to think of Scheme as a low-level VM these days." 18:52:29 Forth style question: If I have a structure, and am writing a creating word for it, is `: foo create , , , ;' ok, or should I do `: foo create here init-struct ;' so that it will (maybe) still work if I modify the structure? 18:54:28 er. that second one is wrong. 18:54:40 : foo create here sizeof-struct allot init-struct ; 18:56:04 it's more code that way, but if I add to the structure, the existing fields will still be initialized properly, because init-struct will refer to them by name, so it's better in that sense. 18:56:22 Anyway, just wondered if anyone had opinions on the subject. 19:00:07 Quartus: wow, this looks about 1000 times better than the .txt version! thanks! 19:00:19 Wow! It even has diagrams! 19:02:39 Sure. 19:04:42 No idea what format the inside docs are. 19:08:03 Wow, the part about using two of the chips to construct the stack is very weird. 19:08:27 Very interesting. 19:09:07 --- join: timlarson (n=timlarso@user-12l37rb.cable.mindspring.com) joined #forth 19:10:22 tathi, I'd go with the better factoring 19:10:44 and the greater decoupling 19:11:39 Quartus: thanks, that's the way I was leaning, but wanted a second opinion. 19:12:48 Ideally you should be able to change the data layout transparently. 19:14:01 Quartus: I thought they were in the same format 19:14:09 nope. 19:14:30 shoot 19:16:51 hmm, openoffice's xhtml export isn't that great 19:17:37 omits the diagrams and screws up some of the formatting, and doesn't have much semantic richness. although there probably wasn't much in the document to work with 19:18:33 So make a PDF. 19:19:49 am so doing 19:20:17 but i think i will also see if i can make a nicer HTML version 19:20:29 You might just read it once, and then throw it away. 19:20:42 It's not like it holds the secrets of the lost Incas or something. 19:21:18 Well, here's what I think is interesting about it. 19:21:22 Two things. 19:22:20 1. It's a complete interpreter for a fairly full-featured language, albeit one that doesn't need much of a parser. And it's a fairly clear, easy-to-follow exposition of how that interpreter works. 19:22:30 Every line. 19:23:28 Even though the implementation technique and language (MASM) are a bit old-fashioned. 19:23:39 2. It's a few thousand lines of well-written Forth in a relatively well-commented style. And it includes a fairly clear, easy-to-follow exposition of why that Forth is written the way it is, so it is a pretty interesting tutorial on Forth style. 19:24:08 I point as a contrast to Rich Jones's Forth that you were criticizing the other week, which he wrote as a way to learn Forth, and which therefore may not exhibit the best possible Forth style. 19:24:31 Do you have any examples of either #1 or #2 that are the same length or shorter? 19:24:33 Extremely old-fashioned. And I repeat, you don't learn Forth by writing a Forth, so he not only wrote a half-baked system, he wrote it for the wrong reason. 19:25:54 You might learn a little something by studying Minimal ANS Forth, which is a Forth written in Forth. 19:26:37 The above advice applies -- you don't learn Forth by looking at the inside of one -- but it would have some small value. Like a donut with walnuts, instead of just a donut. 19:27:02 Isn't a Forth interpreter in Forth just like any other program in Forth? 19:27:43 Is Minimal ANS Forth just a program, or is there an accompanying exegesis like this little booklet in Tinglish that you just helped me with? 19:28:04 It's commented source. There's some text accompanying. 19:28:19 All intepreters are programs in some language or other. 19:28:25 Indeed. 19:29:31 My point about JONESFORTH wasn't that his reason for writing it was good; my point was that he didn't know Forth when he wrote it, and so therefore it may not exhibit whatever virtues Forth has. 19:29:36 To their fullest. 19:30:53 I am curious how factor is inspired by both forth and lisp. 19:30:57 It's written in assembly. How could it exhibit any Forth qualities whatsoever? 19:30:57 I think JONESFORTH and this eForth book go beyond being "some text accompanying"; they both actually contain more lines of commentary than of actual source. 19:31:28 JONESFORTH? No, only the kernel is in assembly. Most of it is in Forth. Although not to the extent of eForth 1.0. 19:31:50 The kernel is the thing you're looking to study. Unless I'm not following. 19:35:31 ftp://ftp.taygeta.com/pub/Forth/Applications/ANS/ - maf1v02.zip and paf0v04.zip, also mpafread.me 19:36:52 Quartus: well, sort of. Not in the case of eForth, for sure, since it doesn't include words like : ; . and even in Jonesforth it doesn't include things like IF 19:36:58 tathi: thanks! 19:37:08 KragenSitaker, you lost me. 19:37:36 Quartus: the kernel is not a language interpreter by itself 19:38:01 tathi: I had downloaded maf1v02.zip earlier, but not paf0v04 or mpafread.me 19:38:03 Forth very nearly has no interpreter at all. 19:38:48 Sure, but the things that make it equivalently powerful to a normal language interpreter include a bunch of immediate words 19:38:57 Just a crude tokenizer, and an 'if it's not a word, it's a number' conditional, with a couple of twiddly state-based concerns mixed in. 19:40:09 Yes, but follow me: you should learn how to use it, not how to build it. Unless all you ever want to do is build another one. 19:40:26 ok, but it's still code, in Forth, which one could presumably learn something from, no? 19:40:40 Well, I listed two things I think are interesting about Ting's book. 19:40:46 Right now I'm talking about #1. 19:40:52 Tathi's talking about #2. 19:40:57 oh, never mind then. 19:40:57 Maybe a little. The words themselves are really primitive, no shock-- they're called primitives. :) 19:41:42 I'm interested in #1 because I want to learn more about implementing interpreters and compilers in general, with neither the host nor the target nor the source language necessarily being a Forth. 19:42:24 It's just that the smallest and simplest interpreters and compilers around --- and some of the best-explained, thanks to Ting's work! --- happen to be Forth interpreters and compilers mostly written in Forth. 19:42:28 Here's what can go wrong with trying to learn Forth by looking at the innards of one, especially only one, and an old one at that: you stand a good chance of believing that the implementation you study is the only way to do it. You'll have 30-year-old terms and memory layouts ingrained. 19:42:54 Threading techniques. 19:42:58 Oh, sure. 19:43:06 And after all that, you still won't know any Forth. 19:43:15 I also snarfed Pygmy Forth, but I haven't gotten to reading through it yet. 19:43:27 It's only 20 years old ;) 19:43:40 But the stuff you've filled your head with -- it'll actually slow you down when it comes time to learn Forth itself, as you won't be able to see the forest for the trees you think must be there. 19:44:33 But you don't have to worry that I'll only look at one Forth. I've already read through a bunch of F-83, and eForth, and Bill Muench's later eForth (which is only ten years old!), and Pygmy, colorForth, and RetroForth are on the list too. 19:45:07 And Jonesforth, of course, which I think is actually the one with the best-written explanation of the bunch so far. 19:45:16 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 19:45:36 Do you have other exemplary well-structured applications written in Forth to read through? 19:46:26 The other night I read some guy's Scheme interpreter in GForth, which I thought was way more complicated than it needed to be and had way too much repetition that could have been factored out into some more immediate words. 19:46:48 But again, that's not surprising, since it was a program he wrote in order to learn Forth. 19:47:45 So many of you just fiddle around, writing lousy versions of one tool you don't know how to use, using another tool you don't know how to use. It mystifies me. 19:48:14 Heh. 19:48:26 Quartus: that seems to be the case with most languages 19:48:29 Well, I can probably explain it. 19:48:38 Nobody seems to be up to the actual challenge of learning the bloody language. 19:48:43 See, I figured out a long time ago that most adults only do things that they're good at. 19:49:03 Which means they stop learning anything. 19:49:16 So I resolved to spend a certain amount of my time doing things I wasn't good at. 19:49:36 You could be good at learning. 19:49:42 So that I could keep learning. 19:50:12 Maybe, but I don't think I'm much good at learning yet. Better than most adults I guess. 19:50:22 Maybe better than most kids. But not very good on an absolute scale. 19:50:58 Well, if you're looking for the absolute, rock-bottom, lowest bar to clear in terms of writing a compiler, a half-assed incomplete Forth is an ideal choice. 19:51:07 Anyway, do you want to help me learn the bloody language? You don't have to hold my hand all the way through. 19:51:18 --- join: Al2O3 (n=Al2O3@74.sub-70-193-20.myvzw.com) joined #forth 19:51:21 But it would be nice if you could recommend an exemplary well-structured application written in Forth to read through. 19:51:47 I've been trying to help you; you're determined to carefully chew your way through ancient FIG and eForth listings, even eating the performations. 19:51:48 Otherwise fiddling around writing lousy versions of things with a tool I don't know how to use seems like pretty much the only way. 19:52:12 Well, you have helped me by pointing me at RetroForth, as I recall. 19:52:23 Only in that it's not ancient. It's still the wrong way to learn. 19:52:32 But I thought you were saying that higher-level Forth applications were a better thing to look at? 19:52:54 You learn by doing. What algorithms interest you? 19:53:28 Well, I have been learning by doing, of course. But having someone else's guidance doesn't help as much with that. 19:53:45 But if there's other stuff out there you can recommend I read, I'll be happy to. 19:54:02 It absolutely does. Pick an algorithm that interests you. Write it in Forth. Post it; listen to the feedback, take the advice, revise it. Repeat. 19:54:07 I'm probably most interested in text-processing, compiler optimization, and database query algorithms at the moment. 19:54:20 You mean on comp.lang.forth? 19:54:29 If you like. Here's probably a better choice. 19:54:43 put it in a pastebin and post the link here 19:54:45 Hmm, OK. 19:55:00 What do you think about platform? bigForth? 19:55:03 Quartus: I've been looking through papers on http://www.zetetics.com/bj/papers/mindex.html ... and the Moving Forth stuff seemed quite helpful... is there a better source of things like that? 19:55:10 (On Linux.) 19:55:12 Lesson one would be to stop reading implementation listings, if it were my course outline. 19:55:13 Gforth. 19:55:16 gforth 19:55:49 lucca, I've been raving on about how reading about implementation internals is the wrong way to go, and you ask me for more of them? :) 19:55:59 ...touche :p 19:56:07 * KragenSitaker installs gforth 19:56:22 Nobody needs another half-assed semi-Forth. Nobody. At all. Not even you. 19:56:47 lucca: there's the RTF zip file Quartus posted a bit ago also: http://quartus.net/zenforthrtf.zip 19:56:51 if that's still up 20:02:12 Quartus: well, I certainly appreciate your implied offer to critique 20:03:05 Well, take the offer. And try to take my advice. You can't learn to drive by studying engine design. 20:03:43 --- quit: tathi ("Goodnight all") 20:04:08 hm, this is very true 20:05:32 OK, let me see if I can hack together a quick inverted indexer in gforth 20:06:11 maybe by tomorrow? 20:06:16 Ok! 20:08:08 --- join: Al2O3_ (n=Al2O3@75-162-130-186.slkc.qwest.net) joined #forth 20:08:12 It's something I've done in C, Python, and bash, so I won't have to spend too much time wondering how to do it ;) 20:08:29 just how to harmonize with the spirit of the language 20:08:45 Should be a good exercise then. 20:20:46 --- quit: Al2O3 (Read error: 110 (Connection timed out)) 20:26:45 --- join: Off_Namuh (i=GPS@gateway/tor/x-a81b910bcfc49c23) joined #forth 20:35:32 --- quit: forther (Read error: 110 (Connection timed out)) 20:40:12 --- join: forther (n=forther@c-67-180-150-67.hsd1.ca.comcast.net) joined #forth 21:05:53 --- quit: doublec () 21:21:44 --- quit: nighty^ ("Disappears in a puff of smoke") 21:35:14 --- join: mem4tim (n=timlarso@user-12l37rb.cable.mindspring.com) joined #forth 22:09:54 --- join: arcus (n=ajt@203.173.187.131) joined #forth 22:17:09 hmm, forth.pastebin.ca appears to be down... 22:18:21 works from here 22:19:14 okay, I'll try again. 22:21:13 well, I can't seem to access it. I'm getting a 'site taking too long to respond' error 22:21:21 no idea. Probably temporary. 22:21:35 okay :] 22:21:49 I have just written the TPK algorithm in forth 22:22:03 I did that, it's up there from... not sure how long back 22:22:11 and the only reference I can find to another implementation is your one, Quartus... 22:22:25 yeah, I wanted to compare & contrast :] 22:23:52 http://forth.pastebin.ca/263119 22:23:55 if it ever works for you 22:24:01 ta. 22:24:14 I'm sure it will sort itself out eventually 22:24:43 I 'allot'ed the array in the dictionary 22:24:53 http://rafb.net/p/JF2cPl44.txt\ 22:24:55 oops 22:24:56 http://rafb.net/p/JF2cPl44.txt 22:25:24 after running the algorithm HERE is 4 bytes further along than what it was when it started. 22:25:39 I put it up on rafb. 22:26:45 okay, thanks. 22:27:00 ah, _that's_ how you put numbers on the floating point stack :] 22:27:13 ? 22:27:27 3e 22:27:34 ah 22:27:38 I was dong 3 s>d d>f 22:27:41 gah 22:28:08 I was pretty sure there must be a better way of doing it :] 22:28:35 yup 22:28:43 --- join: Crest (n=crest@p5489C985.dip.t-dialin.net) joined #forth 22:33:30 I've accepted the input to the pad 22:34:15 sure 22:34:22 is that good or bad? 22:34:40 for this little doddle, it hardly matters 22:35:21 I thought the pad was for things like this - processing a bit of input. 22:35:45 In so far as it has any purpose, I suppose that's it. 22:37:53 I like your farray thing 22:38:25 I'm just looping using the memory addresses as indices. 22:38:32 I prefer to abstract such things, makes the code read better. And that is a pretty common factor. 22:39:03 yes, it is a good plan. 22:42:37 I thought you had to falign before alloting float space. 22:43:31 a created space is aligned 22:45:10 oh. 22:45:23 * arcus goes to read up on create 22:46:14 Looking at it. The Standard advises alignment there -- toss in an falign if it puts your mind at rest. I haven't found a Forth that needs one. 22:48:00 I'm sure this shows me to be very ignorant of how computer programming languages are actually implemented in a hardware instruction set, but I'm not clear as to why alignment is necessary at all. 22:48:32 do floating-point numbers not fit into integral multiples of machine words? 22:48:40 Happens that different CPUs aren't happy unless certain instructions operate on aligned memory. Others don't fall over, but run more slowly on non-aligned addresses. 22:48:55 I can see why alignment is necessary with characters. 22:49:06 as they are only 8 bytes and machine words are longer. 22:49:59 oh, is this because the dictionary might just finish off 8 bytes into a machine word? 22:50:51 I think you may be confused as to what a machine word is, and what alignment is all about. 22:51:10 that's quite possible. 22:51:41 er, I think I meant 'bits' above. 22:52:18 Though there are some oddball cpus out there, for the most part every CPU can byte-address its memory. Certain machine instructions want aligned addresses, which means certain byte offsets -- 0, 4, 8, 16 ... for instance, or only reading 16-bit values from even-numbered addresses -- like that. 22:52:39 Whether the CPU cares about this at all, cares a lot, or only runs less efficiently if it's not there, depends on the CPU. 22:53:50 okay. 22:54:24 alright, I think I understand now. 22:54:57 Floats might be 8 bytes long, and therefore wanted only at addresses that are multiples of 8, for reasons of hardware efficiency. 22:55:44 and I guess there's no guarantee that floats take up the same amount of space as double integers, either. 22:55:51 right. 22:56:11 So the alignment words in a certain Forth might do nothing at all, or they may move HERE forward by some amount. 23:08:51 it is quite nice having the data and the code to access the data associated together, as you get with CREATE ... DOES> 23:11:10 thanks for your explanations, Quartus 23:11:23 and for showing me your code. 23:43:41 --- join: ecraven (i=nex@eutyche.swe.uni-linz.ac.at) joined #forth 23:50:30 --- join: arke (n=arke@p54A7C0E3.dip.t-dialin.net) joined #forth 23:50:30 --- mode: ChanServ set +o arke 23:59:59 --- log: ended forth/07.11.19