00:00:00 --- log: started forth/04.01.21 00:01:41 --- quit: Serg () 02:18:45 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 03:17:05 madgarden: you might be right 05:15:49 --- join: fridge (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 05:17:00 Gong hee fot choy! 05:19:19 What. 05:19:42 happy chinese new year! 05:19:51 Oh okay. 05:27:51 --- quit: qFox ("if at first you dont succeed, quit again") 05:35:29 fridge speaks chinese ? 05:35:30 heh 05:36:58 --- quit: I440r ("Leaving") 05:37:14 What. 05:37:21 Don't quit I440r 05:41:17 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 06:14:38 heh im here 06:14:53 hadzta go to werk 06:16:15 yay 06:16:18 * warpzero hugs mmanning 06:16:51 I still can't decicde wether to use bit-packed or fully byte-aligned bytecode. 06:54:38 hrm try both 06:54:40 then decide 06:54:59 lol no hugging unless ur a cutensexy single chixybabe :P 06:55:17 yes. hugging. 07:22:16 --- quit: qFox (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: fridge (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: ayrnieu (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: scope (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: cmeme (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: madgarden (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: mmanning (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: skylan (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: ianp (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: chandler (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: Robert (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: TreyB (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: warpzero (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: ooo_ (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: ChanServ (brunner.freenode.net irc.freenode.net) 07:22:16 --- quit: mur (Remote closed the connection) 07:22:39 --- join: ChanServ (ChanServ@services.) joined #forth 07:22:39 --- join: mur (~mur@smtp.uiah.fi) joined #forth 07:22:39 --- join: qFox (C00K13S@cp12172-a.roose1.nb.home.nl) joined #forth 07:22:39 --- join: fridge (~hovil@CommSecureAustPtyLtd.sb1.optus.net.au) joined #forth 07:22:39 --- join: ayrnieu (~julian@206.61.132.55) joined #forth 07:22:39 --- join: chandler (~chandler@d-84-77.dhcp-149-159.indiana.edu) joined #forth 07:22:39 --- join: scope (~junk@njd.paradise.net.nz) joined #forth 07:22:39 --- join: madgarden (~madgarden@Kitchener-HSE-ppp3576567.sympatico.ca) joined #forth 07:22:39 --- join: mmanning (~mmanning@saturn.vcsd.com) joined #forth 07:22:39 --- join: cmeme (~cmeme@216.184.11.30.unused.swcp.com) joined #forth 07:22:39 --- join: Robert (~snofs@c-9d5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 07:22:39 --- join: skylan (~sjh@vickesh01-4878.tbaytel.net) joined #forth 07:22:39 --- join: ianp (ian@inpuj.net) joined #forth 07:22:39 --- join: ooo_ (o@virgo.bombsquad.org) joined #forth 07:22:39 --- join: warpzero (~warpzero@dsl.142.mt.onewest.net) joined #forth 07:22:39 --- join: TreyB (~trey@cpe-66-87-192-27.tx.sprintbbd.net) joined #forth 07:22:39 --- mode: brunner.freenode.net set +o ChanServ 07:34:58 warpzero: Is code size a big issue? 07:35:22 maybe. 07:35:33 it will be used as a network protocol too 08:22:30 eh, I wouldn't deal with bit-packed for network 08:27:12 The thing is codes need like 2-3 bits. 08:27:47 nibble aligned then? :-) 08:28:00 ? 08:28:02 Whats that? 08:28:32 nibble is four bits 08:28:52 so two instructions per byte 08:29:09 Its more markup-type stuff than instructions. 08:29:14 oh 08:32:35 in 2/3 contexts it need a whole two bits 08:36:11 Yah nibble aligned sounds damn good. 08:42:20 chandler: thanks for the idea man 09:33:19 wisconsin supremem court is hearing final arguements on the permanant injunction to the concealed carry law today. the hope is that they will lift the injunction (they should and the judge that made it should be impeaced). 09:34:13 missouri will be having a vote today to override the gov's veto of THEIR concealed carry law - they might override it (fingers crossed that they do) 09:34:23 Hehe 09:34:38 impeached grr i cant type 09:34:43 supreme grrr 09:34:48 More guns for the mental patients! 09:34:53 yes! 09:34:58 specialy the sane ones 09:35:02 :D 09:35:06 like me 09:35:09 *twitch* 09:35:12 Exactly 09:35:15 ! 09:35:20 * Robert ported his VM from one microcontroller to another 09:35:53 And found the PIC is pretty efficient after all. About 50% of an AVR running at the same clock frequency 09:36:02 For a Forth VM with a simple benchmark program :) 11:12:46 --- join: kc5tja (~kc5tja@66-91-231-74.san.rr.com) joined #forth 11:12:47 --- mode: ChanServ set +o kc5tja 11:13:13 Well, I recoded that stupid performance test such that J always had a vector of 32-bit integers. 11:14:04 I didn't realize previously that J resized vectors as appropriate, and a vector of all 0's occupied only 4KB of memory, 32KB once an element exceeded 255. 11:14:14 Technician: "What a bad day! The PC is not working well, the phone is out of order, and I wounded my fingers when trimming the network plug with a knife to fit the PC hole." 11:14:16 Re-running the test, I found J took 55 minutes to complete the test. 11:14:33 I then fixed my FS/Forth source code (NO modifications to the compiler itself) for the same test. 11:14:42 I eliminated one loop and, hence, one conditional. 11:14:46 The test ran in 33 minutes! 11:14:54 FS/Forth wiped the floor with J! w00t! 11:15:24 4x performance improvement in Forth code, and twice the performance of J, by re-arranging code to eliminate one conditional and one loop. 11:16:10 There is hope for FS/Forth yet. 11:16:49 kc5 can i have the source for that test? - would it compile under isforth ? 11:17:02 if isforth is faster than j then j sux heh 11:17:20 isforth is by NOOOO means what so ever a "fast" forth 11:18:28 kc5tja: Can I get the general form of that test? C will do. 11:22:53 kc5tja: where can you get a j implementation? 11:23:26 also, what benchmark are you using? 11:24:18 |: v vector [ 16384 allot | 11:24:18 |: v+ 1 over +! 4 + ; | 11:24:18 |: +1 v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ ; | 11:24:18 |: +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 ; | 11:24:18 |: +3 v +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 drop ; | 11:24:19 |: t' ? if +3 1- t' ;; then drop ; | 11:24:22 |: t [entry-point] 16777216 t' bye ; | 11:24:30 Oops, it skipped the top line. 11:24:33 : vector r> ; 11:24:35 yipes 11:25:29 chandler: The benchmark is my own, based on a specific project-related need for one of my clients (I think it's a sure bet at this point that he'll rely on my software development services. *YES!*) 11:25:45 chandler: http://www.jsoftware.com 11:25:54 kc can i have a job ??? :) 11:25:55 heh 11:26:36 mmanning: Not at this time. There's no way this job will even supplant my In-N-Out income. Only if word-of-mouth and repeat business happens will I be able to ditch that job. 11:27:20 i wasnt serious, im good here for now - at least till the end of the month 11:27:24 do you have a web site for your professional services? 11:27:37 chandler: A *slightly* out of date version is http://www.falvotech.com 11:27:44 * kc5tja really has to go through and update the site. 11:27:58 cool 11:29:52 I'm going to target custom software development for Linux boxes, especially embedded applications. 11:30:18 And you can bet that FS/Forth will be a prominent/prominant/(however you spell it) player in my strategy. 11:30:46 Heh. 11:31:05 My current project has to be written in C++, unfortunately. 11:31:06 When I get AF into orbit you will bet I will do the same thing. 11:32:35 kc5tja: We come from the opposite ends though... FS/Forth is meant to be tiny for embedded applicatoins, and AF is meant to scale infinitely. 11:32:52 I intend on writing world-class desktop applications in FS/Forth too. 11:33:07 Even so. 11:33:43 I mean I will be happy if the AF bytecode interpereter goes faster than Java. 11:34:18 i dont understand the definition for v or vector. - why isnt v defined as |: v r> [ 16384 allot - and what happens when v is executed ? 11:34:32 ooh 11:34:51 vector just prevents v from actually running ! 11:34:57 Because r> will pop the return address, and then will promptly start executing "instructions" in the alloted buffer. 11:34:59 so the r> HAS to be in a call 11:35:24 why cant v be create x allot ? 11:35:46 Because (a) I don't have create, and (b) it produces *exactly* the same run-time code anyway. So I'm going to stick with what I have now. 11:36:46 I will probably implement CREATE later on in FS/Forth's development. 11:36:50 ok 11:36:51 But for the time being, I have to do it by hand. 11:37:11 kc5tja: So I decided on nibble-aligned bytecode. 11:37:15 thats clever actually, you could make some really obfuscated forth doing this hehe 11:37:26 mmanning: It's plain as day to be. 11:37:31 ColorForth uses this technique all over the place. 11:37:58 kc5 no im not calling the above obfuscated, im saying you COULD use the technique to create some obfuscated forth :) 11:38:01 In this case, I'm defining (:) v to be a vector, with 16384 bytes. 11:38:11 what is [entry-point] ? 11:38:15 kc5tja: Can you DCC me the .c? 11:38:22 warpzero: What .c? 11:38:39 kc5tja: You said you benchmarked this in C... 11:38:44 [entry-point] is a word that (a) sets the ELF entry-point address, and (b) inlines code to configure the data and return stacks. 11:38:51 aha got it 11:39:16 warpzero: I already posted the C sources yesterday. Check the IRC logs. 11:39:27 It's only 21 lines long. 11:40:00 Man, I just can't believe that making that slight change caused FS/Forth's performance to quadruple. 11:40:13 Suddenly, Jeff Fox's claims of 10x this and 10x that has a lot of validity. :D 11:40:20 16777216 <-- this is some address ? 11:40:26 mmanning: No. It's a loop counter. 11:40:42 whats ? then ? 11:40:54 ? compiles an OR EAX,EAX instruction to make sure the flags are set. 11:41:17 words can just refer to self ? 11:41:20 Yes. 11:41:23 ok 11:41:29 Both ; and ;; do proper tail-call optimization. 11:41:56 that definition confuses me, i cant figure out what ;; does either heh 11:41:57 don't let the schemers infest your vocabulary 11:42:02 say "space-safe tail-calls" 11:42:04 ive no idea how to convert that to isforth 11:42:08 : ;; POSTPONE EXIT ; IMMEDIATE 11:42:22 aha 11:42:29 why not just use "exit" 11:42:37 why have a special word to compile in an exit for you ? 11:42:48 Too wordy, hard to type compared to just ;;, and I use it so often that it deserves a shorter name. 11:43:01 i can accept that :) 11:43:02 mmanning: Because it does the job of ; without actually terminating the definition. 11:43:20 yes - i got that part, the definition isnt "terminated" just teh execution of the definition 11:43:26 Frankly, I'm rather surprised that EXIT hasn't had its own shorthand a long time ago. 11:43:52 like "and" "or" "xor" renames im thinking of implementing for isforth 11:44:01 & | ^ etc 11:44:02 & | and ^? 11:44:05 * kc5tja nods 11:44:07 yes 11:44:24 isforth.clss.net details it a little - im not FULLY decided to do this yet 11:44:37 Apparently, the APL community, even those who regularly use J and K, appear to prefer explicit symbols for all the major keywords, verbs, adverbs, etc. 11:44:47 what flags is "?" checking ? 11:44:59 mmanning: See OR EAX,EAX to find out what it does. :) 11:45:04 oh lol 11:45:10 eax is top of stack ? 11:45:17 IF compiles a JZ instruction, and -IF compiles a JNS instruction. 11:45:20 Yes 11:45:23 ok 11:45:50 ok, i think ive converted this to isforth 11:45:51 And I don't know what is wrong with Chuck Moore, but he claims he rarely, if ever, uses -IF. 11:45:56 how long does it take in j ? 11:45:59 I, however, use it a good 3* as much as IF! 11:46:26 xxxxx not if .....then <-- very common 11:46:36 If I set a=:4096#0, it takes about 25 minutes. But if I set a=:4096#65536, it takes 55 minutes. 11:46:45 mmanning: I just reverse the IF/ELSE clauses in that case. 11:46:53 Tail-call optimization makes it easier to do productively. 11:46:59 assuming there is an else 11:47:10 i do the same unless it affects readablilty 11:47:30 mmanning: I just document the implementation detail in the shadow comments. 11:47:50 The original FS/Forth code took 126 minutes to complete the test. 11:47:52 (!!) 11:48:05 The new FS/Forth code takes 31:56 (minutes:Seconds). 11:48:06 kc5tja: So you say you are going to make powerful desktop apps with FS/forth, how are you planning on doing IO networking etc etc. 11:48:23 warpzero: I'm going to hook into C libraries as needed. 11:48:24 well i think it just ran in a few seconds on isforth 11:48:28 i cant believe that 11:48:33 musta did sumthing wrong 11:48:39 mmanning: What is your processor speed? 11:49:02 ohhh yea lol - im running it on a dual processor on the server at work lol 11:49:03 phone... 11:49:42 no - i didnt run it in a few seconds 11:49:51 it ran for a few seconds and then segfaulted lol 11:49:54 theres a difference :P 11:50:00 LOL 11:51:11 that 4+ is making my code run beyond the end of the allocated buffer for sure 11:51:56 either that or im getting a return stack overflow 11:52:07 kc5tja: What was your speed for C? 11:52:34 im certain its a return stack overflow, i dont have a 16777216 cell return stack 11:54:09 warpzero: I have an 800MHz Athlon, so I have two timings. One without CPU-specific optimizations, 18 minutes. One with optimization (-march=athlon -O3 -fomit-frame-pointer), 3 minutes. 11:54:32 The K language took 9 minutes, but I set a:4096#0. I'm trying it again with 4096#65536, just to make its comparison match that of J's. 11:54:36 Thats uh... alot faster than J. 11:54:57 warpzero: Remember: the J I downloaded is a binary, and is not at all compiled for my box. 11:55:11 In fact, the 'free versions' of J, I'm pretty sure, are deliberately speed-wise crippled. 11:55:25 how big is your return stack kc ? 11:55:26 You have to pay $450 at least for a commercial version of J, and even then, it's ONLY for Windows or PocketPC. 11:55:30 mmanning: 4KB. 11:55:51 then how can you have t' recurs that many times 11:55:58 16777216 <-- 11:56:05 mmanning: Are you attempting to use recursion?? Good lord, don't; my Forth is built specifically to handle looping by recursion. For you, you will want to use BEGIN/WHILE/REPEAT or BEGIN/AGAIN. 11:56:18 ok lol 11:56:18 mmanning: You DO know what tail-call optimization is, right? 11:56:24 i was attempting to not overly modify your code 11:56:29 lol yes 11:56:32 :) 11:56:34 Just making sure. :D 11:56:38 How high do these numbers go? 11:56:50 warpzero: I don't care about wrap-around. 11:56:50 Like I'm getting a count of somesort on my screen... 11:57:05 warpzero: Oh, the progress indicator goes to 4096. 11:57:07 kc5tja: No I'm running the C one. 11:57:27 i should probably run it with time eh 11:57:29 : t' begin +3 1- until drop ; 11:57:29 : t' begin +3 1- until drop ; 11:57:29 : t' begin +3 1- until drop ; 11:57:29 : t' begin +3 1- until drop ; <-- ? 11:57:37 argh why did that past 4 times 11:57:50 no thats definatly wrong lol 11:57:55 mmanning: Because you're corrupting the stack. :) until consumes the argument. 11:58:13 : t' begin dup while +3 1- repeat drop ; 11:58:38 Or, more closely to what I have, 11:59:06 : t' begin dup 0= if exit then +3 1- again ; 11:59:13 ill use that one 11:59:54 running - hope nobody notices the 100% cpu on the server heh 12:00:01 Maybe I'll introduce another primitive ~if and +if, which are logically negated forms of if and -if. 12:00:12 mmanning: Are you running it with 'time'? 12:00:25 timer-reset t .elapsed 12:00:33 Awesome. 12:00:33 its not turnkeyed 12:00:42 * kc5tja will probably have to rip your code for that, because I want that facility in FS/Forth too. 12:00:52 this is with isforth on an "i dont know how fast" dual something or other 12:01:08 You use direct threading, right? 12:01:13 yes 12:01:16 mmanning: what kind of server? 12:01:20 what proc that is 12:01:20 GForth took 47 minutes on my 800MHz Athlon. 12:01:36 you hereby have full permission to rip any pieces parts of isforth that you think you might want lol 12:01:54 (which surprises me in retrospect; GForth is *fast* for a direct-threaded Forth. It beat J's second test run.) 12:02:01 HAHAH! 12:02:05 erm i cant run this at 100% cpu for an hour NOW!! ill have to kill it till later 12:02:17 When I changed K's test to ensure a maximally wide vector, K actually ran faster than it did before. 12:02:18 ill run it on my laptop 12:02:22 1800 mhz athlon 12:02:23 8 minutes. 12:02:54 FS/Forth? 12:03:02 can you paste the non-fsforth version (gforth maybe) at http://www.common-lisp.net/paste/new - select the channel "#ifdef" 12:03:05 warpzero: No, K. 12:03:09 Ah. 12:03:20 create v 16384 allot 12:03:20 : v+ 1 over +! 4 + ; 12:03:20 : +1 v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ v+ ; 12:03:20 : +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 ; 12:03:20 : +3 v +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 drop ; 12:03:21 : t' begin dup 0= if exit then +3 1- again ; 12:03:23 : t 16777216 t' ; 12:03:25 eh, ok 12:03:27 I'm only up to 2500/4096 12:03:28 thats what ill be using in isforth 12:04:41 I haven't updated GForth's code to the new explicit looping code yet. 12:04:45 Do you want the old code, or the new code? 12:05:22 mmanning's version works 12:05:27 dunno how to do timed execution in mops 12:05:43 Stop watch? 12:05:57 kc5tja: Why is this thing accelerating as it goes? 12:07:04 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 12:07:11 warpzero: It runs constant speed in my system. 12:07:21 I suspect it's because your environment manages yoru cache or virtual memory differently. 12:07:26 real 9m28.149s 12:07:26 user 8m1.237s 12:07:26 sys 0m0.181s 12:07:40 Thats unoptimized. 12:07:54 You have a 1.4GHz box, right? 12:09:00 my 1800 mhz athlon is now running it in isforth 12:09:03 I'm retesting on gforth now. 12:09:20 mmanning: Cool. 12:09:45 i dont know what processor it uses heh 12:09:46 I already got the numbers I needed to fill out my proposal to the client, so now this stupid benchmark (and it is stupid), is just plain fun to toy with. 12:09:51 the server i mean 12:10:33 kc5tja: No Its a 1.7 but its competing with lots of stuff on here. 12:10:48 Yeah, I ran my tests while IRCing last night, and playing CDs. :) 12:10:57 lol 12:11:03 optimized in 1:50 12:11:12 fs will be faster than isforth - i can guarantee it 12:11:16 so will gforth probably 12:11:20 mmanning: That was deliberate. I *should* have also included playing four or five MPEGs while it was running too, but I don't have any MPEGs that last that long. 12:11:27 if j is slower ill be very supprised heh 12:11:38 I wouldn't be. 12:11:41 kc5 i do :) 12:11:44 no - not pr0n 12:12:09 If only I had a DVD drive, then I could rip a movie, then attempt to play one off the DVD, and the other off the harddrive. 12:12:20 lol 12:12:26 Serious. 12:12:33 it segfaulted :/ 12:12:48 I can't go into details about the project, but let's just say it requires a lot of data movement between different things. 12:13:11 mmanning: ?? 12:13:16 yup. kaboom 12:13:29 There's nothing to cause a segfault in the program. :( 12:13:32 neway - back to werk 12:13:36 How big is your return stack? 12:13:52 thers no recurson in there so thats not the issue 12:14:03 le me check size 12:14:10 Yeah, I just wanted to make sure it's not something like 16 bytes. :) 12:14:18 1K ought to be *plenty* for this. 12:14:21 Way overkill in fact. 12:14:29 PowerMops 260.63s user 0.71s system 82% cpu 5:16.61 total 12:14:33 whoa 12:14:40 user 0m48.701s 12:14:43 but that number's probably high 12:15:03 $4000 bytes 12:15:06 5 minutes on a PowerPC. What speed PPC? 12:15:14 OH hey! 12:15:15 2Ghz G5 :-) 12:15:20 * warpzero gets out his G3 12:15:47 kc5tja: I went from 1:50 to :48 12:15:50 $1000 cells 12:16:07 chandler: Do you know if MOPS is direct-threaded or native code compiling? 12:16:10 mmanning: Plenty. 12:16:22 native code compiling 12:16:34 chandler: Hmm...that's not nearly as good as I would have expected then. 12:16:43 ok, just letting it sits there racks up about 2s in user runtime. I'm going to try it loading from a file 12:17:25 kc5tja: one g3 700Mhz benchmark coming up 12:17:27 You know, I should implement that nefarious "A" register in FS/Forth and rerun the test with THAT. :D 12:17:38 A? 12:17:53 warpzero: The address register in Chuck's MISC chips and MachineForth implementations. 12:18:05 ah 12:18:26 kc5tja: Rerun the C one on your system with -march -O3 -funroll-loops 12:18:38 Many people have major issues with it because it represents a global variable in an otherwise stack-based architecture. 12:18:59 warpzero: Later; gforth is still churning on the program. :) 12:20:41 --- quit: Nutssh (Read error: 104 (Connection reset by peer)) 12:21:07 is it ONLY for addresses ? 12:21:15 or can it be general purpose 12:21:38 PowerMops 258.73s user 0.99s system 95% cpu 4:32.45 total 12:21:41 ok, so same deal 12:21:49 4 mins 20 seconds 12:22:11 what kind of times are you getting on what speed proc? 12:23:43 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 12:24:50 * mmanning had the drop missing on the end of +3 12:24:52 running again 12:26:54 chandler: I'm getting 33 minutes on an 800MHz AMD Athlon with subroutine threading with inlined primitives. No compiler optimization at all, except for tail-call optimization (required to do the loops). 12:28:41 kc you should publish the benchmark on clf :) 12:31:25 mmanning: Heh 12:31:30 It's not a terribly useful benchmark. 12:31:37 Others are substantially more interesting and useful. 12:32:02 WTF 12:32:11 Fucking computers 12:32:15 --- quit: Nutssh ("Client exiting") 12:32:46 kc5 bullshit - there isnt a SINGLE benchmark out there that acutlly serves any usefull purpose except for fun :) 12:33:04 well not quite true 12:33:48 isforth has two versions of teh same benchmark - one using variables, the other using vars - it simply benchmarks the difference between the to WITHIN isforth 12:34:01 Of course. All benchmarks have a context. 12:34:32 In my case, I'm attempting to compare vector operation performance. 12:34:37 Forth is failing miserably. :D 12:34:42 run benchmark x on different computers or under different compilers and it tells you next to nothing about either :P 12:34:54 shhh! 12:35:38 shhh my butt. J, FS/Forth, ColorForth, K, and C, in that order. 12:35:40 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 12:35:47 ColorForth ran in 13 minutes on my box. 12:37:09 how long did it take J ? 12:37:15 kc5tja: can you paste the j version? 12:37:23 25 minutes best case, 55 minutes worst case. But remember that the J binary isn't optimized. 12:37:31 chandler: Yep. Gimme a second. 12:37:34 neither is isforth lol 12:37:38 What're you testing? 12:38:21 a=:4096#65536 12:38:21 inc=:3 : 'a=:a+1' 12:38:21 (inc^:16777216)'' 12:38:21 (2!:55)0 12:39:09 Nutssh: Just a stupid benchmark, that is yielding interesting comparisons between languages. 12:39:25 and implementations thereof heheh 12:39:45 mmanning: That *sucks* that your code crashed....I really want to see the timings. 12:40:14 its not crashed since inserting teh missing drop in +3 12:40:16 its still running 12:40:36 kc ill bet you $948562986592 that your forth is faster than mine :) 12:40:36 mmanning: Oh. 12:40:50 You're on. Pay up, buddy. :D 12:40:57 its like Howlin Wolfs song... built for comforth not for speed :) 12:41:08 mmanning: Ditto for me. 12:41:12 * mmanning injects some extra loops here and there..... 12:41:17 *snicker* 12:41:18 I'm expecting to get higher throughput/performance by exploiting vectors. 12:41:36 But I won't do that until I actually have a real assembler for it. 12:41:51 I sure as hell am not going to hand-code machine language to deal with vectors. :D 12:41:55 kc5tja: How do you mean? 12:42:04 whats wrong with that assembler you wrote a while ago ? 12:42:14 mmanning: Nothing, except that it was a 16-bit assembler. 12:42:19 oh yea 12:42:20 lol 12:42:22 I'm going to start over from scratch for the 32-bit version. 12:42:33 me 2 :P 12:42:35 some day 12:42:44 Why not just use nasm/gas? 12:42:51 err no thanx 12:43:02 warpzero: The assembler is for coding Forth primitives. 12:43:12 warpzero: My Forth is written in Forth itself. 12:43:18 warpzero: Ergo, nasm/gas won't work. :) 12:43:30 Meh. 12:43:45 Is there a forth that just acts as a gcc/binutils frontend? 12:44:14 No, because then it wouldn't be Forth (one of Forth's traits is that it is an interactive development environment; gcc is anything but interactive.) 12:44:36 And FS/Forth is?!? 12:46:31 kc5 - yes gcc is interactive, it has 29486592386598274 pieces parts all interacting with each other through pipes during compile!!!! 12:46:34 does that count ? 12:46:35 hehe 12:48:41 lol 12:51:51 kc5tja: heh, no, it could call out to gcc for every colon definition 12:53:20 Okay folks anyone want to give me some feedback on my bytecode specification? 12:55:10 OK, gforth is going on 45 minutes, so the change in code didn't make GForth go any faster at all. 12:55:25 Anyway, I need to get out of here. I have to get my hair cut again, and then I need to meet someone for lunch. 12:55:38 kc5tja: G3 results are pending hold on a sec. 12:56:21 kc5tja: Optimized: 3:33 12:56:30 warpzero: what forth? 12:56:39 chandler: gcc? 12:57:00 isforth still running test 12:57:16 mmanning: how far is it? 12:57:45 i got no idea how far it is hehe 12:57:55 ill tell you how far it is when its finished :P 12:58:01 Oh. The C version prints out how far it is. 12:58:19 which will skew the c results 12:58:28 Uh 12:58:38 system time is .163 seconds i dont think so 12:58:46 lol 12:58:59 Yes, .163 seconds versus *minutes* is more than two orders of magnitude. It's noise. 12:59:24 kc5tja: So colorforth is winning the forth battle? 12:59:32 I used to have it in Forth too, but then I took it out because you can't redirect stdout when running with bash's time. 12:59:37 warpzero: Yes. 12:59:55 And I did *not* use the A register to implement the vector walk either. 13:00:01 I wonder how long it'd take using the A register. 13:00:27 kc5tja: Where do I get colorforth? 13:00:37 I use XcolorForth. 13:00:50 You can google for XcolorForth and that should give you Mark Slicker's website. 13:01:05 Er uh well nevermind. 13:01:11 Otherwise, you can get Chuck's original copy at http://www.colorforth.com 13:01:23 When will FS run on PPC? 13:01:33 However, note that Chuck's version doesn't boot on 99% of the computers out there, so . . . :) 13:01:49 warpzero: When someone donates a PowerPC for my use. :) 13:02:01 (or when I can afford to purchase a PowerPC box on my own) 13:02:01 kc5tja: Is shell fine? 13:02:37 Sure, but it'll take some time to finish. 13:02:59 Besides, I'd like to actually finish FS/Forth for x86 first. 13:03:10 >:( 13:03:17 I'm going to develop AF in tandem on both. 13:04:04 Well, there are very real differences between the PPC architecture and x86, which means I would need to spend some time learning all about them. 13:04:13 Some things may be incompatible with how I have FS/Forth now. 13:04:43 PPC isn't a whole lot different from other big-endian 32-bit RISC instruction sets like MIPS or whatever. 13:06:07 True, but I'd like the opportunity to start fresh with a new port. 13:06:23 I've learned many things which would make writing FS/Forth easier if I were to start over from scratch. 13:07:18 --- quit: fridge ("Leaving") 13:07:56 I think its time that I write a utility that will take AF code and transform it into bytecode, and a utility that will do the opposite. 13:08:21 warpzero: Maybe. We'll definitely see. Both yourself and Herkamire has expressed interest in a PowerPC port of FS/Forth, so a port is definitely probably in order. :) 13:08:38 Anyway, I need to get in the shower. Back in about an hour or so. 13:08:41 * kc5tja is away: errands. 13:08:42 kc5tja: I can give you a shell on a G3. 13:08:46 If you need. 13:16:24 50 minutes and 17 seconds 13:16:34 thats isforths time 13:16:45 mmanning: You don't win the race. 13:16:55 but i win my bet :) 13:17:04 You beat out gforth tho. 13:17:12 that supprises me 13:17:22 did i beat j ? 13:17:28 i forget j's time 13:20:28 Shit! I just realized I forgot something in my bytecode. 13:21:52 Good thing I left plenty of space! 13:23:05 mmanning: By five minutes, you beat out J's later generation code. 13:23:22 But remember, this is on MY box. 13:23:25 An 800MHz box. 13:23:39 So 50 minutes on a 1.4GHz box -- not good. :) 13:23:45 Compared to 55 minutes on an 800MHz box. :D 13:23:51 no a 1800 mhz 13:24:00 Oh, that's even worse. :D 13:24:01 Not good. 13:24:01 so its WORSE 13:24:11 i TOLD you 13:24:17 built for comfort :) 13:24:29 And it looks like you're slower than GForth too: the second test took longer: 65 minutes on an 800MHz box. :D 13:24:59 Which means that GForth has *crappy* subroutine-call overhead. :( 13:25:07 some folks are built like this, some folks are built like that but you see me baby now dont you call me fat cuz im built for comfort, i aint built for speed. but i got everything all the good girls need... 13:25:11 Howlin Wolf :) 13:25:14 GForth says its fast. But it lies. 13:25:37 kc5tja: Could you inline it? 13:25:48 warpzero: Not easily, but it is possible. 13:25:53 Lots of immediate words. :) 13:25:58 And text-expansion macros. 13:26:27 But I have to get going and get my hair cut and other things. I'll consider re-doing it later. 13:26:30 hrm lets see what it does if i make them m: definitions :) 13:26:38 ttyl kc5tja 13:28:53 is a unsigend long long 64 bits? 13:39:50 I believe that is a gcc extension. 13:40:08 Really? 13:40:46 I just made a program to check and its not giving me anything with -ansi 13:40:47 There's standard C, but a lot of compilers have extra features beyond it. Some features work on more than one compiler too. 13:41:23 The -ansi option does not cause non-ISO programs to be rejected 13:41:23 gratuitously. For that, -pedantic is required in addition to 13:41:23 -ansi. 13:41:44 longcheck.c:3: warning: ISO C90 does not support `long long' 13:41:55 :) 13:42:09 see Options Controlling C Dialect in the gcc manpage 13:42:34 So then how am I gunna support 64-bit unsigned big-endian integers. 13:42:45 er ? 13:43:28 It may not be possible to *portably* support them. That doesnt' mean that they don't exist on many/most platforms. 13:44:03 Well if it needs to be ported with #ifdef or whatever thats fine. I guess. 13:44:12 I'm not happy about it though. 13:44:33 Its outside the official ISO C90 standard is all. 13:44:39 -ansi 13:44:39 In C mode, support all ISO C90 programs. In C++ mode, remove GNU 13:44:39 extensions that conflict with ISO C++. 13:45:11 Well I'm not really expecting anyone to use anything but gcc. 13:45:19 Maybe sun's or ibm's CC. 13:45:33 Edit: screw sparc 13:45:50 Pedantically, what you want may not be possible. Practically, it is. Also, there are newere dialects of C that can be checked for. See the manpage. 13:46:50 Wait a sec, the preprocessor isnt ansi? 13:47:49 I don't think that C90 defines variable argument macro's even though GCC supports them. 13:50:35 See also: 13:50:37 Options to Request or Suppress Warnings 13:52:31 Yeah I used -Wall 13:52:51 See also: 13:52:53 -Wlong-long 13:52:53 Warn if long long type is used. This is default. To inhibit the 13:52:53 warning messages, use -Wno-long-long. Flags -Wlong-long and 13:52:53 -Wno-long-long are taken into account only when -pedantic flag is 13:52:53 used. 13:53:19 (And welcome to the world of C standards. :) 13:53:45 Please shot me. 13:54:16 I give you a dvorak keyboard and a scheme shell, and no way to change. :) 13:54:48 The Dvorak keyboard I am cool with. 13:54:57 I have no idea how to use scheme. 13:55:35 Anyways, I have to go for a bit. And I advise just using 'long long' and not worrying about the non-isoisms too much. 13:55:55 Worry about portability later lol. 13:55:58 --- quit: Nutssh ("Client exiting") 13:59:50 well by inlining some of the definitions it now runs in 14 minutes :) 14:00:06 is or g? 14:00:25 isforth 14:00:43 well make your function call overhead less then 14:01:07 cant 14:01:11 y not 14:01:18 how would i :P 14:01:35 you look at source for isforth and tell me how to without modifying the internal structure 14:01:41 which i dont want modified hehe 14:01:44 i dont know its YOUR forth 14:01:51 lol 14:03:50 lol the definition for +3 is almost 8k in size lol 14:04:11 what does +3 do? 14:04:22 its the +3 in kc's benchmark 14:04:31 oh right 14:05:05 +3 has +2 inlined - 2+ has +1 inlined and +1 has v+ inlined 14:10:15 screen scares the shit out of me 14:13:23 you could write an auto-inlining thing for your isforth? 14:15:14 no. not auto 14:15:29 or a hey inline this biaaatch word? 14:15:56 lol no - im not making the compiler smart enough to check your soruces to see what could/should be inlined 14:16:02 THAT is up to you :P 14:20:43 well i mean like 14:20:56 you could have an "inline" word? just like C? 14:21:38 i have m: and ;m to start and end a macro colon definition. this definition is inlined anywhere its used 14:21:47 so in a way... yes 14:23:47 oh well 14:23:50 there you go 14:24:00 what happens if you make those all m:? 14:24:54 i allow up to 8k of macro definitions - that inclueds both code and headers for macros - you can increase that if you like but +3 above almost fills 8k heh 14:25:14 So just change that limit real quick. 14:25:28 <-- at work "hardly working" :) 14:26:48 I'm sure that just like a hardcoded number 14:26:59 it is 14:27:03 so change it 14:27:06 and run it all m: 14:27:13 but it would mean edit, assemble, extend.... hehe 14:27:25 ill do it when i get home - i leave in half an hour or so 14:27:34 but i doubt it will be MUCH faster 14:27:37 ok 14:28:01 ill give 64k of macro hehe 14:28:44 so isforth is written in asm? 14:28:50 the kernel is 14:29:01 and the rest? 14:29:02 using nasm macros to create word headers etc 14:29:23 the extensions are written in isforth :) 14:29:57 whats the difference between nasm and gas? 14:30:46 gas is evil 14:31:26 how so 14:31:27 Haha, amen. 14:31:34 It's not even made for humans 14:31:45 Just as a backend to gcc... so its syntax is evil 14:31:56 I've only ever done asm in __asm__ macros. 14:31:58 And the error checking is said to be buggy 14:32:02 So I think thats gas. 14:33:58 Will nasm work as a backend for gcc? 14:34:03 Nah. 14:34:10 I mean can you gcc -whatever it is that outputs asm and then nasm it? 14:34:11 But you can link it with gcc programs. 14:34:21 No. 14:34:31 But yuriz in #nasm modified LCC to output NASM code. 14:34:37 why the hell not 14:34:42 i mean its all just assembly 14:34:46 No. 14:34:50 There is no standard. 14:35:00 So gas and NASM syntax is pretty different. 14:35:07 For example, everything is backwards. 14:35:20 oh gr8 14:35:26 Destination operands are LAST in gas, but FIRST in NASM. 14:35:28 No big deal 14:35:34 Just use NASM and you'll be fine :) 14:36:11 Does nasm work for PPC? 14:36:26 No 14:36:31 Well then wtf. 14:36:33 It's an x86 assembler. 14:36:41 ITS USELESS TO ME THEN 14:36:42 You'd have to rewrite the asm code anyway. 14:36:49 Hehe :) 14:36:52 Yeah i know. 14:37:01 Why didn't you tell me you're not using x86? ;) 14:37:11 I am just not all of the time. 14:37:29 Right now, I am on x86 but I also have PPC computers. 14:37:50 warp x86 Linux box ? 14:37:55 install isforth :P 14:38:13 not with your 8k macro BS! 14:38:30 mmanning: I don't really know forth :(* 14:38:34 8k is plenty 14:38:44 grab isforth and learn forth :) 14:39:33 im gunna grab your package here if you dont watch it 14:39:36 where do i get isforth 14:39:46 isforth.clss.net 14:40:09 8051? 14:40:40 mmanning: What linux do you use? 14:40:43 :) 14:40:48 gentoo now 14:40:57 i also have an unpublished 8051 assembler 14:41:10 oh do you want me to stick isforth in der portage tree 14:41:33 not yet, there are issues with where it should install too that i have to figure out 14:41:37 are you a gentoo developer ? 14:41:45 whois me 14:42:13 lol 14:42:34 when i get home maybe we can discuss how/where isforth would install 14:42:50 /bin/sh :P 14:42:52 i WANT it in portage but there are issues to resolve first 14:42:55 no 14:42:57 lol 14:43:07 probably /opt/isforth 14:43:15 thats coolies 14:43:19 * Robert doesn't even use /opt :) 14:43:23 and local copies in ~/bin 14:43:34 thats no go 14:43:35 the source would need to be in /usr/src/isforth or something 14:43:48 whats no go ? 14:44:10 there is no installing to ~ 14:44:14 * mmanning will write a GO game in isforth 14:44:23 are you serious? 14:44:41 nonono hehe - the user could make a totally new version of the isforth kernel for his own projects 14:44:42 /join #go 14:45:01 he CANT overwrite the one in /opt/isforth however 14:45:11 oh okay 14:45:12 will join #go at home 14:45:15 but if we do /opt 14:45:26 then it will more likely be /opt/isforth/src 14:45:56 no /opt/isforth/bin and /usr/src and maybe ~/isforth/bin 14:46:03 i cant decide - its a complex issue 14:46:13 well i hate to inform you this 14:46:18 but its more my decision 14:46:46 i will try and follow what you want but i have rules 14:46:47 :) 14:46:51 lol i know - but you have to have some background on forth before you make that decision or it will be the "correct linux" decision but the "incorrect forth" 14:47:50 how about the binaries in /opt/isforth and the sources in /usr/lib ? 14:48:05 that doesn't make any sense 14:48:18 it does when you realise that the extensions ARE libs 14:48:28 they are just not binary form 14:48:39 how about the binaries in /usr/bin 14:48:45 and the soruces in /usr/src 14:49:10 well ok - but theres two different source trees for isforth - theres the kernel sources and theres the extensions 14:49:25 how about just sticking it all in /opt/isforth 14:49:42 and the extensions would be broken down into assembler, debugger, editor, blah. foo, this, that, the-other.... 14:49:57 well. heres the issue 14:50:30 there needs to be a global version of the extended isforth but there doesnt need to be a globally visible version of the kernel itself 14:50:41 what 14:50:42 who extends the kenel - and where is the result placed 14:51:11 if root does the extend should the isforth executable go in ~/isforth or in /where/ever/we/install/to 14:51:27 theres just too many variables heh 14:51:46 i might have 10 different projects. each one uses a slightly different version of teh kernel 14:51:59 then how about you make a website 14:52:10 and if someone wants it they can download it from ther 14:52:12 i have a web site - its just empty(ish) lol 14:52:25 isforth.clss.net 14:52:42 lets say im making a commercial web browser in isforth 14:52:48 i create a custom version of kernel.com 14:53:13 okay 14:53:15 i use THIS to compile my web browser and do a turnkey. the resultant executable is released 14:53:30 but my other projects use different versions of kernel.com etc etc 14:54:03 i must be able to build my applicatioins on top of my own kernel - and NO - isforth projects will NEVER use gnu make 14:54:10 fuck make - its a fucking abomination 14:54:17 tell me about it 14:54:28 im going to write a perl script or something to make af 14:54:46 the way i see it working is i have a file similar to isforth.f (see sources) which lists all sources for my application 14:55:29 i would have the custom kernel fload that file - which would compile my application 14:55:30 OR 14:55:39 i could have my sources released AS SOURCES 14:56:09 to be installed into /usr/lib/application-dir 14:56:49 then i would have a +x forth source in /usr/bin which when executed would run /opt/isforth/bin/isforth -fload /usr/lib/application/soruce.f 14:57:13 #!isforth -fload 14:57:15 i.e. when you run the application it launches isforth and compiles itself onto it 14:57:16 yes 14:57:21 shebang 14:57:33 --- join: fridge (~fridge@dsl-203-33-164-15.NSW.netspace.net.au) joined #forth 14:57:41 but in a shebang you use #! /path/to/isforth -sfload 14:57:50 -sfload as opposed to -fload 14:57:56 orite 14:58:34 i dont think it would take long to put isforth in portage - would you need permission to actually add it to the main tree ? 14:58:41 or could you simply DO SO 14:59:01 no i can just add shit 14:59:06 cool hehe 14:59:12 i can get in trouble for it 14:59:25 how in trouble ? 14:59:27 can or cant ? 14:59:45 well if i put something in that breaks gentoo 14:59:51 i will get in trouble 14:59:54 lol 15:00:02 or if i do something legaly wrong 15:00:17 well considering theres NOTHING in gentoo that isforth uses and theres nothing in gentoo that uses isforth.... 15:00:17 but other than that i just have at it 15:00:20 oh 15:00:30 you MIGHT want to examine my license 15:00:44 i have r/w to the portage cvs tree 15:00:45 Which is now called "license" :P 15:00:48 its a MODIFIED lgpl 15:01:01 well penis 15:01:03 i know. i cant spell for shit :P 15:01:07 I am going to have to look up how to do that. 15:01:26 warp - the modification wouldnt make it unaceptable to gentoo im sure 15:01:27 mmanning: I have to crack down on SOMETHING, and I can't find anything in Isforth itself to complain about ;) 15:01:36 lol 15:01:55 im goin home... 15:01:59 OK, see you 15:01:59 mmanning: Well any licenense can be put in -- i mean we have pay per stuff like vmware 15:03:38 hey Roberto 15:03:50 You should examine my bytecode specification for fuckups. 15:04:09 warp be here when i get home so we can chat about a "real" release of isforth lol 15:04:22 yeah okay if i dont fall asleep first 15:04:25 see me as I440r when i log in 15:04:31 where are you located ? 15:04:33 YEAH I KNOW THAT 15:04:41 Montana, US 15:04:45 ok lol 15:04:48 stay awake :P 15:04:50 GMT-9 15:05:39 So it's 1400 there? 15:05:52 1600 15:05:58 Er... 15:06:01 that's GMT-7 15:06:03 It's 2300 GMT 15:06:08 Oh.. :) 15:06:22 GMT-9 is Alaska right now I think 15:06:27 Yeah... 15:06:28 wait 15:06:30 silly 15:06:31 maybe im wrong 15:06:35 you are wrong 15:06:38 what is MST? 15:06:41 :) 15:06:44 Mountain Standard Time 15:06:45 edit 15:06:48 what is MDT 15:06:55 mountain daylight time 15:06:58 yeah i know 15:07:01 what gmt- is it 15:07:02 you should be on MST right now 15:07:11 MDT is GMT-8 I think 15:07:18 er, GMT-6 15:07:19 wrong direction 15:07:53 MST is GMT-7, MDT is GMT-6, CST is GMT-6, CDT is GMT-5, EST is GMT-5, EDT is GMT-4 15:07:59 I'm in EST all year round 15:08:02 -7 15:08:03 okay 15:08:39 2300 1600 - . 700 ok 15:08:53 eya 15:09:09 Heh. 15:09:25 I told you I use gforth as a calculator. 15:09:59 heh, I use sbcl as a calculator 15:10:01 I use my head for stuff like that though 15:10:41 what is sbcl? 15:13:05 Steel Bank Common Lisp 15:14:10 (Lisp(is(a(pain(in(the(ass))))))) 15:15:15 Robert: plz? 15:15:23 oh, bah 15:15:25 What? 15:15:29 that's gotta be the weakest argument I've heard 15:15:42 Robert: [16:03:49] You should examine my bytecode specification for fuckups. 15:15:57 chandler: well I haven't actually used it. I just have things against that many parents 15:15:58 like "forth sucks backwards syntax of because" 15:16:04 heh 15:16:06 warpzero: Oh... I'm tired now, going to bed in a few minutes. 15:16:07 the parens are a non-issue 15:16:14 they are tho 15:16:24 i thought it was a RPN langauge 15:16:25 bah. write me forth code to sum 10 constant numbers 15:16:38 then i find out its just alot of parens 15:16:39 lisp? lisp is prefix 15:16:49 damn you are being obtuse about this 15:16:51 THEN WHY DOES IT HAVE SO MANY PARENS 15:17:13 BECAUSE IN FORTH TO SUM 10 CONSTANTS YOU WRITE 1 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 15:17:23 AND IN LISP IT'S (+ 1 2 3 4 5 6 7 8 9 10) 15:17:27 its not an infix language for the love of god wtf 15:17:32 Nobody sums 10 constants anyway 15:17:42 point is, in lisp you can do variable argument lists 15:18:03 anyway, the /reason/ for the parens is because of the structure of the code as data, not text 15:19:36 i do it in forth like 1 2 3 4 5 6 7 8 9 10 + + + + + + + + + + 15:20:25 what do you mean the code as data 15:21:20 brb, on phone (sorry) 15:22:53 the parens are an issue 15:23:38 fridge(do(you(really(think(so(?)))))) 15:24:54 Well, that's why you don't write lisp one-liners... 15:26:57 for god's sakes you don't put parens around everything 15:27:05 you do 15:27:07 i have seen it 15:27:11 WITH MY OWN EYES 15:27:12 heh, no, not every word 15:27:17 every function call 15:27:18 it is still an issue 15:27:25 fridge: in what context? for what reason? 15:27:30 it looks shit 15:27:32 every word is a function call 15:27:36 * fridge rests his case 15:27:53 heh. I won't argue with that argument. it's infallable! 15:28:06 warpzero: what are you talking about? lisp doesn't have "words" 15:28:08 lisp is not forth 15:28:14 [16:27:11] heh, no, not every word 15:28:22 uh 15:28:22 you say word i say word 15:28:28 you were writing in englihs 15:28:32 that's what I was referring to 15:28:46 oh 15:28:49 its still an issue 15:28:52 why? 15:29:05 first of all, there is a big benefit 15:29:08 lisp has uniform syntax 15:29:22 rather than dealing with special groups of punctuation with meaning you deal with lists of symbols 15:29:36 this means writing code-writing code is easy 15:30:02 in fact what you're looking at is just the textual representation of lisp 15:30:15 the lisp language is defined not on text, but on lists of symbols aka data 15:30:38 and the reader and printer just translate from and to printed representation 15:30:38 so is af 15:30:42 af? 15:30:50 mine language 15:30:58 http://wza.us/af/ 15:31:21 uh, show me some code in it 15:31:49 < $ af has % other kinds [ of brackets ] ? too > 15:32:08 wow thats wrong 15:32:13 < $ af has % other kinds [ of brackets ? too ] > 15:32:22 < do [ they ] have < special > random [ meanings ] > ? 15:32:38 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 15:33:09 yeah 15:33:14 thats wrong btw 15:35:07 well (a) you can define reader macros in lisp to do all sorts of crappy syntax if you want, and (b) that's what lisp really the opposite of 15:35:07 hmm i wonder on adding 10 constants 15:35:34 and I still don't see what the issue is with the parens; I don't think you've explained 15:35:41 you're expecting me to accept "parens are an issue" 15:36:46 holy shit 15:36:54 adding 10 numbers in af is a bitch and a half 15:37:09 really? 15:37:12 yea 15:37:52 im not sure if its possible 15:38:16 ? 15:38:54 er well 15:39:43 yeaaaa 15:40:10 ... 15:40:42 not possible 15:40:58 uh. you can't add ten numbers at all? 15:41:51 yea 15:41:59 no binary operators 15:42:23 doh 15:42:28 wait 15:42:35 im just not thinking about this right 15:43:40 --- quit: skylan (Read error: 54 (Connection reset by peer)) 15:43:47 sounds like your language isn't exactly complete :-) 15:48:14 right 15:48:19 okay time to implement binary operators 15:50:28 anyway consider coming up with a better objection to lisp than the parens... it sounds very illiterate 15:50:45 its used by a bunch of ai schmucks? 15:51:18 the parens is enough of a reason not to like lisp 15:51:24 ((((( )(0(()())()())((((()))) 15:51:26 worse than brainfuck lol 15:51:38 what does that do 15:51:42 it's an idiotic objection... if you're thinking about your code's structure the parens are natural 15:51:53 uh, I440r 's mass of parens does nothing 15:51:56 it's all structure 15:51:57 no data 15:52:02 uh, no one cares 15:53:21 chandler: uh i can't make my language have binary operators 15:53:53 why not? 15:54:04 because it doesn't work that way? 15:54:12 then how do you add two numbers? 15:55:18 I've only used elisp, theres nothing wrong with it really, I just find something aesthetically wrong with having so many parens 15:55:36 gagh, elisp is not a good lisp 15:55:55 but if you're hung up on syntax I guess it's the same as any other lisp 15:56:54 any language with syntax (or with no user defineable syntax) is nice 15:57:04 i find the braces in c to be fuggly 15:57:20 ( <> <> *int < $ *int a $ *int b [ ^ ^ [ *a ^ ] [ *b ^ ] [ 1 *a ] [ 2 *b ] > add \ ) 15:57:25 that adds 1 and 2 15:57:49 ugh, I /hate/ syntax 15:58:34 how cool is that 15:58:46 thats the biggest version of add 1 and 2 i have ever seen in my life 15:59:04 heh, the lambda calculus version is bigger (because it has no numbers) 15:59:14 this almost has no number 15:59:15 s 15:59:18 thats the problem 16:00:21 er 16:00:23 thats wrong 16:00:31 there should be a * in front of add 16:03:21 ( <> <> *int < $ 1 a $ 2 b [ ^ ^ [ *a ^ ] [ *b ^ ] ] > *add \ ) 16:03:25 thats shorter 16:03:43 and correct 16:06:52 ( <> <> *int < [ ^ ^ [ 1 ^ ] [ 2 ^ ] ] > *add \ ) 16:06:55 shorter 16:07:39 ( < [ ^ ^ [ 1 ^ ] [ 2 ^ ] ] > *add \ ) 16:08:01 thats as short as it gets 16:16:15 I just killed the channel, including I440r 16:16:57 * kc5tja is back (gone 03:08:14) 16:17:49 ? 16:17:59 * I440r checks 16:18:04 erm nopte 16:18:10 im still alive 16:19:18 kc5tja: check out the above awsome syntax for adding 2 numbers -_-;; 16:19:26 I can see it. 16:20:03 kc i ran the test again with v+ +1 +2 and +3 inlined and it did it in 14 minutes 16:20:13 but the definition for +3 was about 8k in size heheh 16:20:18 I440r: 14 minutes on a 1.8GHz box? 16:20:22 yes 16:20:24 I440r: :) 16:20:39 so MOST of my speed issues are related to nest/unnest 16:20:42 I440r: That's about as fast as my (non-inlined) FS/Forth performance on my box. 16:20:50 yup 16:20:57 so i still win our bet :P 16:20:58 Yeah, I figured as such. LIterally, that is THE issue with direct threading. 16:21:01 That's why I didn't go with it. 16:21:08 I440r: How so? 16:21:14 I haven't inlined FS/Forth yet. >:D 16:22:10 the bet was that isforth is slower than yours :P 16:22:10 i win :P 16:22:28 Ahh 16:22:37 I read your bet as being the reverse for some reason. 16:22:40 i doubt my inlining words will work in fs/forth 16:22:45 lol 16:23:00 I440r: Since FS/Forth exists purely in GForth at the moment, I can inline very easily. 16:24:01 lol 16:25:34 But I won't. 16:26:08 OK, now I'm off to work. 16:26:11 Back in about four hours. 16:26:13 (half-day today) 16:26:15 * kc5tja is away: work 16:38:56 --- join: matt__ (1000@adsl-66-124-255-151.dsl.snfc21.pacbell.net) joined #forth 16:38:59 --- nick: matt__ -> Sonarman 16:51:12 --- quit: qFox ("if at first you dont succeed, quit again") 17:14:40 --- join: Nutssh (~Foo@gh-1029.gh.rice.edu) joined #forth 17:56:48 * warpzero is away: Can you feel it? Can you feel the rythm? 18:19:55 --- quit: Nutssh ("Client exiting") 19:42:35 --- join: skylan (~sjh@nwc57-123.nwconx.net) joined #forth 19:47:44 --- join: Nutssh (~Foo@gh-1177.gh.rice.edu) joined #forth 21:28:56 --- quit: I440r (Excess Flood) 21:37:50 --- join: I440r (~mark4@12-160.lctv-a5.cablelynx.com) joined #forth 21:38:09 * kc5tja is back (gone 05:11:53) 21:39:20 wb 21:41:25 Hi. 21:41:51 Howdy 22:04:05 kc5 see pm ? 22:30:49 --- quit: Sonarman ("leaving") 23:59:59 --- log: ended forth/04.01.21