00:00:00 --- log: started forth/04.08.30 00:04:44 --- join: Serg[work] (~z@212.34.52.140) joined #forth 00:16:50 damn cows. 00:16:50 09:16:21 IdleBot@#idlerpg@freenode: qFox was attacked by a rabid cow. This terrible calamity has slowed them 0 days, 04:10:37 from level 43. 00:25:35 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 00:25:42 --- mode: ChanServ set +o kc5tja 00:25:51 Back briefly. 00:26:08 gone for a few days. back wednesday or thursday. later 00:26:17 Hehe :) 00:26:22 see you qFox :) 00:26:24 intro camp uni 00:26:25 :D 00:26:27 bye 00:26:34 --- quit: qFox ("gone for a few days") 00:32:44 --- join: crc (crc@27-pool1.ras11.nynyc-t.alerondial.net) joined #forth 00:32:46 re 00:32:47 crc 00:32:51 oops 00:32:54 Hi kc5tja 00:32:56 you get the idea. :) 00:33:00 :-) 00:33:06 ENTER, Space, it's all the same. :D 00:33:14 right 01:12:52 off to bed. 01:12:59 --- quit: kc5tja ("THX QSO ES 73 DE KC5TJA/6 CL ES QRT AR SK") 01:30:07 --- join: proteusguy (~proteusgu@66.168.185.144) joined #forth 01:42:15 --- join: mur_ (~mur@smtp.uiah.fi) joined #forth 01:53:02 --- quit: mur (Read error: 110 (Connection timed out)) 02:53:10 --- quit: mur_ (Remote closed the connection) 02:53:42 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 04:20:47 --- quit: crc (Client Quit) 04:23:06 --- join: mur_ (~mur@mgw2.uiah.fi) joined #forth 04:34:56 --- quit: mur (Read error: 110 (Connection timed out)) 04:49:21 * Tomasu is away: night 04:49:29 --- nick: Tomasu -> TomasuDlrrp 05:22:28 --- join: mur (~mur@smtp.uiah.fi) joined #forth 05:34:18 --- quit: mur_ (Read error: 110 (Connection timed out)) 06:19:44 --- join: mur_ (~mur@smtp.uiah.fi) joined #forth 06:30:56 --- quit: mur (Read error: 110 (Connection timed out)) 06:31:43 --- join: I440r_ (~mark4@216-110-82-203.gen.twtelecom.net) joined #forth 06:47:52 --- join: zruty (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 07:03:15 slava 07:03:21 i know whats wrong with ./isforth 07:21:14 --- quit: I440r_ (Read error: 110 (Connection timed out)) 07:21:23 --- join: I440r_ (~mark4@216-110-82-203.gen.twtelecom.net) joined #forth 07:24:09 --- join: mur (~mur@smtp.uiah.fi) joined #forth 07:34:59 --- quit: mur_ (Read error: 110 (Connection timed out)) 07:53:58 --- join: Herkamire (~jason@h000094d30ba2.ne.client2.attbi.com) joined #forth 07:53:58 --- mode: ChanServ set +o Herkamire 07:58:30 --- quit: Serg[work] ("going home...") 08:27:41 --- quit: zruty ("Lost terminal") 09:14:05 --- join: kc5tja (~kc5tja@66-74-218-202.san.rr.com) joined #forth 09:14:12 --- mode: ChanServ set +o kc5tja 09:40:29 --- join: mur_ (~mur@uiah.fi) joined #forth 09:41:23 --- quit: proteusguy (Read error: 104 (Connection reset by peer)) 09:42:03 --- join: proteusguy (~proteusgu@66.168.185.144) joined #forth 09:46:52 I'm begining to think that getting herkforth to bootstrap from source is more trouble than it's worth 09:48:08 --- quit: mur (Read error: 110 (Connection timed out)) 10:12:03 What do you mean? 10:15:21 --- join: tathi (~josh@pcp02123722pcs.milfrd01.pa.comcast.net) joined #forth 10:22:54 I440r_: I told ya you should add a .bss section... :P 10:36:08 * kc5tja thinks he found his problem. 10:36:12 * kc5tja tests... 10:36:32 hi 10:37:40 FOUND IT!!! 10:37:49 The -IF word was generating the wrong opcode. 10:37:50 :) :) :) 10:37:55 $7A instead of $79. 10:38:27 which is what? 10:40:14 Apparently, the $7A opcode tests *PARITY* and not sign. 10:40:34 All is well again. 10:41:01 oh maan 10:41:07 well, at least you found it 10:41:23 Yep 10:41:48 * tathi goes to try mowing the lawn again. 10:41:52 I440r, did you fix it? 10:42:36 I knew my word parsing code wasn't b0rked. :) 10:42:45 So now it can properly parse words. 10:42:58 kc5 then why does... 10:43:00 mov eax, 1 10:43:03 sub eax, 2 10:43:03 bash-2.05b$ ./a.out 10:43:03 FTS/Forth System 2 for Linux 10:43:03 Copyright (c) 1989-2004 Falvo Technical Solutions 10:43:03 Type `license' to see license. 10:43:09 NOT generate any sign flag ? 10:43:11 ok> This is a test.This 10:43:11 is 10:43:11 a 10:43:11 test. 10:43:21 It does. 10:43:50 kc5tja, :) 10:44:27 Parsing Forth words: 7 lines of code. 10:45:04 I was pretty sure that I was going insane yesterday evening. Good grief. 10:45:12 lol 10:45:24 thats how isforth devel is all the time with fbsd 10:45:40 first a syscall doesnt behave as its supposed to. then another. then another 10:45:50 heh 10:45:53 and this last one... the syscall was 100% correct! 10:45:55 libc4life 10:46:07 I mean, I've coded the x86 platform since the 8088 -- I knew that the SUB instruction properly set the flags. 10:46:09 freekin bsd needing a bss in order to do a break 10:46:10 duh! 10:46:58 I440r_: That's good to know -- I'll be sure to remember that when I get to that point in the Linux version of FTS/Forth. 10:47:30 linux was easy - linux will do a sys brk even if you have no bss - linux is a little smarter - fbsd is a bit more anally retentive about it 10:47:41 I440r, its a "real unix" :) 10:47:53 lol 10:48:16 yea its a "lets see how many times we can fsck up a coders sanity" unix 10:48:41 lol 10:49:02 kc5tja: :) that explains why you were getting different results from -1 than -2 10:49:13 Yes. 10:50:11 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 10:50:27 Damn -- listening to Rochmonov right now, and this music is just plain awesome. There are no other words that can describe it. 10:50:32 --- join: futureX (identity@d197.wildapache.net) joined #forth 10:50:38 Rochmonanov rather. 10:51:41 Anyone know why forth doesn't fare so well on this page: http://www.bagley.org/~doug/shootout/craps.shtml ? 10:53:20 bigforth 10:53:21 nuff sed 10:53:39 i thought bigforth was fast 10:54:02 they should do that test using marcel hendrix's iforth 10:54:03 bigforth...hmm 10:54:27 that would prolly put the score closer to gcc 10:54:32 maybe even better than 10:54:34 But forth can't get faster than C, would that be accurate? 10:54:44 It actually fares rather well, considering how gforth actually compiles its code. 10:54:46 it depends on the forth 10:55:28 futureX, why not? 10:55:43 esp. if your C is gcc :) 10:55:48 futureX: It depends on the Forth, of course, but it is also true that most CPUs today are optimized for C performance, not Forth performance. Therefore, it is a good approximation at the big-picture level. 10:55:56 futurex how long does it take you to compile yoru linux kernel ? 10:56:01 I don't know. You guys are the forth programmers. I'm just asking questions :) 10:56:11 if linux were coded in forth my compiler would compile it in 3 seconds and it would be a hell of alot smaller 10:56:17 :) 10:56:26 futureX, is that your page? 10:56:30 no 10:56:33 ok 10:56:33 However, Forth's claim to speed is purely coincidental. It was never really intended to run as fast as it actually does. It's purely a side effect. 10:56:59 Forth's beauty is how much more productive a programmer becomes (once you're comfortable in your Forth environment that is) versus, say, a C programmer. 10:57:04 I just saw that page and I was wondering, because I had the impression that forth is more low-level than C. 10:57:06 Much of this has to do with the succinctity of Forth source. 10:57:54 it is and it isnt 10:57:54 futureX: It's about the same level as C. But its execution model is markedly different. 10:58:00 Here's bigforth: http://www.bagley.org/~doug/shootout/lang/bigforth/ 10:58:02 forth can be lower level than c and higher level than ada 10:58:23 ada is not high level its just crap 10:58:24 A lot of red numbers. 10:58:35 slava: Ada has a LOT of NICE features in it. 10:58:43 lol 10:58:54 kc5 thats the problem with ada 10:58:56 featureitis 10:59:33 lisp pulls of featureitis with style 10:59:34 I440r_: In a sense, yes. But they were put there for a reason. Ada strongly favors formal methods for software verification, and it CAN statically determine the correctness of a very large number of programs you throw at it. 11:00:01 slava: More accurately, Lisp implements a framework with which all features employ and interoperate with. 11:00:21 kc5tja, well i meant CL in particular 11:00:45 a CL implementation is in the order of 100,000 lines of code at least, just to implement all the fetaures in the spec. 11:00:48 but its a very nice language. 11:01:07 slava: That's why I like Scheme. 11:01:15 It's nice and small, well, compared to Lisp. 11:01:20 But Lisp is the more practical language. 11:01:51 yes. 11:02:00 personally i don't like scheme lumping functions and variables in one namespace. 11:06:26 lines of code is so arbitrary 11:06:49 the gforth fib code is all spread out with like 1 to three words per line, and another languages implementation is 3 long long lines 11:07:18 Herkamire, yes but if something is written in 100,000 of dense lisp code, there's no way to squash it to, say, 5000 lines 11:09:34 Suddenly, I don't feel so bad about ANSI Forth anymore. >:) 11:10:58 just seems silly 11:10:59 --- quit: tgunr (Remote closed the connection) 11:11:09 they could have done bytes of code (excluding comments and indentation 11:11:38 what's ackerman's function 11:11:39 ? 11:14:39 its generates huge numberes very quickly 11:14:58 i can see NO practical use for it what so ever 11:14:59 as quickly as 1 1000 << ? 11:15:04 tho - im told there are some 11:15:15 ( 0 ) 1 1000 shift . 11:15:16 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376 11:15:22 lol 11:16:00 * slava calculates 1 100000 shift and fills up screen with random digits 11:16:09 lol 11:16:12 whoa its like 10 pages 11:16:15 http://www.cs.washington.edu/homes/klee/misc/slashdot.html#reasons 11:19:21 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 11:20:55 Man, I couldn't agree more with that article. 11:21:04 * kc5tja will post a link to that site on my page later today. 11:34:33 anybody know how deep ackermann recurses for ackerman(3,8) ? 11:35:30 No idea, maybe wikipedia will tell you? 11:37:07 --- quit: mur_ (Remote closed the connection) 11:37:43 --- join: mur (~mur@smtp.uiah.fi) joined #forth 11:37:55 --- quit: tgunr (Remote closed the connection) 11:38:30 I like this reason the best: #3. Gullible editorial staff continues to post links to bogus pseudoscience articles by crackpots. 11:39:17 I like #3 and #7. 11:39:26 But they're ALL damn accurat.e 11:39:28 accurate. 11:39:31 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 11:43:22 I'm not a slashdotter, so I wouldn't know. 11:44:40 There's a magazine over here specializing in crackpot theories. Sad part of the story is that it's the most popular "popular science" magazine in the country. 11:44:45 So I guess it's a general trend :) 11:53:24 ahh, ok, so the result of the ackerman thing is how deep it has to recurse 12:13:49 recursion is fun 12:16:08 --- quit: tgunr (Remote closed the connection) 12:16:22 Yes :) 12:17:48 just wrote this: : string++ b-@ 1+ dup b!a $3a <; $30 b!a string++ ; 12:18:02 takes a pointer just past the end of a string in the 12:18:06 Address register 12:18:12 hi 12:18:24 the string has a number on the end, and this word adds one to it 12:18:29 hi slava 12:19:10 I use it to generate a new filename for herkforth on bootstrapping 12:27:03 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 12:27:21 Herkamire: I found out how Linux passes commandline arguments to processes for x86 versions of Linux. 12:27:49 It passes the number of parameters and a character array on the stack. 12:28:10 It's up to the process to pack this array into argv[]. 12:28:21 Also anything beyond the last argv[] is the environment variables. 12:29:18 kc5tja: same on PPC, if I understand you right. 12:29:37 --- join: madwork_ (~madgarden@derby.metrics.com) joined #forth 12:29:40 tathi: Herkamire says that Linux passes CLI arguments in CPU registers. 12:29:46 nope. 12:30:31 on entry to your program, you have argc on top of the stack, followed by pointers to the command-line arguments. 12:30:41 followed by 0, then pointers to environment strings. 12:30:47 Nope. 12:30:50 Not what I'm talking about. 12:30:53 That's how C does it. 12:31:09 I'm talking about how the *kernel* interfaces to the process (assume C hasn't been invented) 12:31:13 that's how the linux kernel does it on PPC 12:31:19 kc5tja: I never ever use C anymore. 12:31:23 never did, much. 12:31:35 On x86, there is precisely one argc, and precisely one pointer to the parameters. 12:31:39 The parameters are kept in a byte array. 12:31:40 the strings themselves are actually allocated on the stack to. 12:31:44 too 12:32:10 so the strings are just there, one after the other? 12:32:15 Yep 12:32:20 Separated by $00 bytes. 12:32:57 gotcha. 12:33:04 You have to build the argv[] array manually in x86-Linux apparently. 12:33:11 CLI args, followed by environment? 12:33:16 Yes 12:33:44 interesting. 12:34:17 PPC Linux puts the strings on the stack like that, but then puts pointers to everything on the stack as well. 12:34:34 funny that x86 doesn't. 12:40:58 --- quit: tgunr (Remote closed the connection) 12:41:53 http://qualdan.com/misc/ppc-linux-stack 12:43:21 the freebsd java port is pathetic: 12:43:22 > Math.pow(-1.1,3) 12:43:22 1.3310000000000004 12:45:41 #1. Two words: Jon Katz. <-- is this guy in any way at all related to the pkzip guy ? 12:45:49 phill ? 12:46:37 i mean the linux jdk gives the correct result how could they possibly fuck up pow() while porting 12:46:39 i mean FUCK 12:46:44 retards 12:47:00 lol 12:47:05 itsd fbsd 12:47:07 its evil 12:47:10 hehe 12:48:14 --- join: mur_ (~mur@kyberias.uiah.fi) joined #forth 12:49:24 I440r_: No. PKZip is Philip Katz. 12:50:36 yea 12:50:38 same last name 12:51:02 what did phil katz die of ? 12:52:09 On April 14, 2000, Phil Katz was found dead in a Milwaukee motel room. An empty bottle of peppermint schnapps was still clutched in his hand, and five more empties were scattered about the room. It was a miserable, lonely end for a man who had created a product now in use by millions of people; 12:52:29 are you serious? 12:52:32 yes 12:52:33 peppermint schnapps overdose? 12:52:38 heh 12:58:15 that's too bad x86 doesn't give you pinters for the argv array 12:59:22 --- quit: mur (Read error: 110 (Connection timed out)) 12:59:53 Herkamire: Not for me; I'll just reference the byte array directly in Forth. :) 13:00:02 I consider NULLs to be spaces in ParseWord anyway. 13:02:03 slava: In case you haven't noticed, many extremely bright people were found dead as a direct result of corporate strong-arming. Gary Kildall, author of both CP/M and of GEM, commited suicide because of Microsoft. 13:03:19 HE was a fool though. when IBM went to go see him about a new OS he was too busy playing golf 13:03:25 he dropped the ball 13:03:29 unfortunatly :( 13:03:34 HE HAD NO IDEA IBM WAS TO SHOW THAT DAY. 13:03:39 NONE. 13:03:46 IBM came completely unannounced. 13:05:30 anyway, I'm off to get some food. Be back in a bit. 13:14:06 * TomasuDlrrp is away: for real this time 13:23:33 --- quit: mur_ (Remote closed the connection) 13:24:08 --- join: mur (~mur@smtp.uiah.fi) joined #forth 13:26:16 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 13:26:51 heh, I'd say he would be a fool to never play golf on the off chance that IBM might show up unannounced 13:27:13 I assume that large corperations usually call ahead... 13:32:17 --- quit: tgunr (Read error: 104 (Connection reset by peer)) 13:34:10 --- join: tgunr (~davec@vsat-148-63-4-107.c001.g4.mrt.starband.net) joined #forth 14:00:30 --- quit: tgunr ("Leaving") 14:25:24 back 14:25:56 Yeah, me too. 14:25:57 :) 14:26:00 I know I certainly do. 14:28:11 --- join: FlamingRain (Ecoder@c-24-129-95-254.se.client2.attbi.com) joined #forth 14:45:59 --- quit: FlamingRain ("Leaving") 14:46:19 heh, I really need to make an undo feature in herkforth 14:46:31 sometimes weird things happen if you hit the wrong key 14:49:20 --- quit: mur (Remote closed the connection) 14:49:52 --- join: mur (~mur@mgw2.uiah.fi) joined #forth 15:04:41 Herkamire: Yeah, I've more than once accidentally damaged a block of source that I wish I could just type "UNDO" and have it work. :) 15:04:57 programming without undo is painful 15:05:09 slava: Puts hair on your chest. :) 15:05:11 i have 1000 levels of undo/redo, as well as a kill ring for bringing back deleted text 15:05:54 kc5tja, :) 15:06:09 All the more reason to have a humane editing environment. 15:06:36 * kc5tja is trying to hack the ALD debugger so it prints PC-relative addresses with their proper target addresses 15:14:57 slava: ahh, but you didn't write your editor :) 15:15:07 Herkamire, but i did! 15:15:30 slava: you did? I thought you were just working on a plugin for jedit 15:15:44 no, i wrote most of it 15:15:53 check jedit.org if you don't believe me :) 15:16:14 so, have you been working on jedit for a long time before you started on factor? 15:16:19 yea 15:16:24 it was the first 'real' app i wrote 15:16:30 cool 15:16:34 before jedit, i made a calculator applet 15:16:41 its not even online anymore 15:17:46 I have an undelete 15:17:54 but no general purpose undo 15:17:54 is that like undo? 15:17:58 oh 15:18:00 only for deletions 15:18:19 e.g. if you enter a word, then hit undelete, it will paste in the last thing you deleted 15:18:33 undo is pretty easy, really. especially with OOP -- have an abstract Edit class with undo/redo methods, and Insert and Remove subclasses. make instances of this, etc. 15:18:41 and in forth its similar too 15:18:50 you could create/does> some words i gues 15:18:55 does herkforth have create/does>? 15:18:59 no 15:22:19 Let's be a little bit more abstract here. CREATE/DOES> is pretty limiting. 15:22:25 What you want is a "Command Pattern." 15:24:07 I think my undo will be implemented as a circular stack containing pairs of words. 15:24:21 --- join: warpzero (~warpzero@mi031.dn189.umontana.edu) joined #forth 15:24:25 each pair will contain a word of data, and an execution token 15:24:44 undo will just pop these onto the stack and execute it 15:24:51 cool. 15:24:53 one other minor thing jedit does with undo is 'compound undo'. eg, replace-all is wrapped in beginCompoundEdit()/endCompoundEdit() calls, so it can be undone as one step. 15:25:00 this is just a nested undo list 15:25:40 my design does not handle all kinds of editos. 15:25:42 idets 15:25:45 edits 15:25:49 sheesh 15:25:52 :) 15:26:17 eg if there is more data than fits in 32 bits, (such as a rename) 15:26:44 ahh rain :) 15:26:48 maybe it will finally cool off a bit 15:27:25 perhaps I could have variable length data on the undo stack 15:27:45 there'd just have to be a count or something in there so I could tell I have the whole thing still. 15:28:23 whatever. I'll tackle that later 15:32:03 hmm... I can't have an undo that works for executing words 15:32:35 eg, if they type drop and hit enter 15:33:03 when i make a stepping debugger for factor, it will have rewindable execution for code that doesn't side-effect heap objects 15:33:15 so you'll be able to 'undo' a drop (in the debugger, not the general case obviously). 15:33:26 but not undo storing into an array. that's too much 15:33:34 --- quit: proteusguy ("Leaving") 15:34:03 ok 15:34:59 I don't need it to do everything. I just want a simple way to undo things I did by hitting the wrong key. 15:35:12 this would be especially useful and comforting for people who don't know herkforth as well as I do. 15:35:18 yup. 15:35:27 eg, if you don't know what happened, you probably won't be able to figure out how to put it back 15:37:36 right now I'm working on code to change the color of existing words. 15:37:57 I've got the simple green/yellow (execute/compile) token change 15:39:20 I think I'm now going to add support for changing the type of a word (eg constant <--> variable) by changing the color of the defining word. 15:40:06 it annoys me that the java crowd gets off so much on IDEs that generate code with templates. 15:40:34 but I don't think I will go as far as making it so you can change a word from a normal word to eg a lit (which would involve changing all source tokens that reference that dictionary entry from eg compile-call color to lit color 15:40:49 brb dinner 15:41:03 most anything having anything to do with java annoys me :) 15:46:42 I can only think of one java program that I've been at all happy with 15:46:42 --- quit: madwork_ (Read error: 104 (Connection reset by peer)) 15:48:18 on the occation when they actually work at all, they are always slow, and almost allways have horrible horrible user interfaces 15:50:27 have you actually tried java progams other than freenet? 15:54:14 yeah 15:54:52 magnus is the best juggling simulator I could find that works on my computer 15:56:31 --- quit: warpzero ("Tried to warn you about Chino and Daddy Gee, but I can't seem to get to you through the U.S. Mail.") 15:57:30 I've tried a bunch of java stuff over the years 16:02:35 --- join: mur_ (~mur@uiah.fi) joined #forth 16:08:14 ok, enough herkforth for now 16:08:37 time for... herkC! 16:08:47 riiight 16:08:55 herkPL/I 16:09:11 time for work 16:12:34 heh, making calls goes sooo fast when nobody answers 16:12:54 --- quit: mur (Read error: 110 (Connection timed out)) 16:22:42 lol pl/1 lol 16:22:50 that cant even get true/false right! 16:23:02 0 = false, 1 = true, 2 = false, 3 = true 16:23:03 lol 16:23:08 hehehehe 16:23:09 lol 16:23:11 damn 16:23:30 that's a neat system. 16:23:42 : not 1 + ; ? 16:23:51 er : not 1+ ; 16:23:52 lol 16:23:53 : or + ; 16:24:04 no because false + flase is still false :) 16:24:10 : and * ; 16:24:23 I440r_: false or false is still false too 16:27:34 --- quit: tathi ("leaving") 16:28:46 :) 16:30:43 --- join: TheBlueWizard (TheBlueWiz@pc33dn1d.ppp.fcc.net) joined #forth 16:30:43 --- mode: ChanServ set +o TheBlueWizard 16:40:03 TheBlueWizard 16:43:08 slava hiya 16:46:43 re TheBlueWizard 16:47:04 kc5tja hiya 16:48:47 PL/1 is actually a neat language. 16:48:56 I really wish people would just stop blindly dismissing languages. *sighs* 16:49:12 i wasnt dissin it actually 16:49:35 but the 0/1/2/3 thing is kinda humorous :) 16:49:43 Maybe not (sure came across that way though), but there are too many who do. 16:50:19 You know, if you logically extend it in the reverse direction, it fits with the -1=true, 0=false system. :) 16:50:30 :) 16:51:17 hmm? 16:51:17 -1 is odd whether you look at the bits as signed or unsigned 16:52:50 I440r_: Hey, I made some changes to my ALD disassembler -- PC-relative addressing modes now display the target address in parenthesis. However, the address is still "wrong" because the data buffer the disassembler library uses isn't loaded at the same address as the executable being debugged apparently. 16:53:09 * kc5tja is going to try and get some information from ALD's maintainer to see if he knows of a way around this. 16:53:29 is he "maintaining" it still ?> 16:53:38 if he would just finish the damned thing i would be much happier 16:53:51 Last site update was 2004, so yes. 16:53:53 he was upset when i told him i used gdb to debug isforths kernel 16:53:57 (not too long ago either) 16:54:06 thats the web page - not the util 16:54:18 I have version 0.1.6 16:54:33 thats the latest 16:54:49 ald.sf.net says so anyway 16:55:01 Well, I'm sure that if people actually contributed, hint hint, it might get done a bit faster. :) 16:55:01 that was the version i looked at when i started isforth 16:55:32 i cant read his sources. i have almost no ability to read c sources 16:55:36 its like write only 16:55:52 Most recent version: 0.1.6 (23 July 2004) 16:56:09 His C sources are not write only. 16:56:13 You're just making excuses. 16:56:37 no - that might have a new date on it but its the same version i was looking at 3 years ago 16:56:54 and i cannot read c sources - or it takes a HUGE effort on my part 16:57:17 i can't read assembly ;) 16:57:17 any language that takes that ammount of effort to read isnt worth reading. i can read any assembler no matter how badly coded 16:57:20 same as forth 16:57:25 bullshit 16:57:36 i can show you some assembly that you have no idea what it does, i bet 16:57:48 ive never seen any assembler code i couldnt read and understand with just a little effort 16:58:06 ive seen single c functions i could not understand after hours of study 16:58:21 i can write c. if i write it i understand it 10 years later 16:58:45 oh. part of the reason i never used ald is because he never finished the curses mode 16:59:40 err this has a GTK user interface 16:59:50 man i KNOW i was looking at 0.1.6 way back but it didnt have gtk 17:03:11 --- join: slava_ (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 17:03:13 That's funny, because C is just a re-organized PDP/7 assembly language. 17:03:15 Literally. 17:03:35 c is just ALL WRONG!!!! 17:03:41 I440r, no its not 17:03:45 my mind shuts it out 17:03:49 I can read C without problems. And ALD's source is not in any way write-only. There is a methodical convention used throughout the source -- something I don't often find in C sources. 17:03:49 --- quit: slava (Nick collision from services.) 17:03:53 --- nick: slava_ -> slava 17:04:00 it takes a HUGE effort for me to understand c sources 17:04:11 I440r, "for me" are the key words there 17:04:22 slava lol 17:05:04 Print(ws, 17:05:04 P_ERROR, 17:05:04 MSG_PTERR, 17:05:04 strerror(errno)); 17:05:04 17:05:06 like 17:05:12 what the fuck is with that formatting 17:05:12 its 17:05:13 like 17:05:14 if 17:05:24 i 17:05:24 talk 17:05:24 to 17:05:24 you 17:05:41 what does that have to do with C? 17:05:41 like 17:05:41 this 17:05:48 everything i see C coders do my mind just screams "god i hate this" at me 17:05:48 I440r_: That's how your Forth code looks though!! 17:06:08 I440r, C is the only choice for many applications 17:06:11 not everybody wants to rewrite assembler for each cpu 17:06:23 you cant disassociate c from the way people write it 17:06:24 kc5 no 17:09:38 i also dont like the way im seeing people align ( ) stuff 17:09:43 if ( ..... 17:09:50 ) 17:09:57 erm undent that by 1 heh 17:10:03 I440r, hush now 17:10:12 it just fragments up the display and scatters everything all over 17:10:18 making a huge visual cluster fuck heh 17:10:40 if (x < 10) || (y > 5)) 17:10:48 that looks much better. MUCH easier to read 17:10:58 Then I never, ever, ever want to hear you complain about how it's "improper" to not divide the screen into two rough columns, one for comments, one for source. Because, well, it just creates one big visual cluster fuck. 17:11:28 i managed to reuse this file written many years ago and now i understand it almost fully, if it was assembly i'd have no chance: 17:11:28 does it fuck 17:11:29 http://cvs.sourceforge.net/viewcvs.py/factor/Factor/Factor/native/s48_bignum.c?view=markup 17:11:31 code over here comments over here 17:11:40 you can scan either one withotu the other one interfearing 17:12:16 slava - i would never ever ever be able to read your sources. not in a million years 17:12:23 that file is not my sources 17:12:25 I440r_: Sorry, sir, but that is horridly interfering. The code already tells me what it does. I am not paying my electric bill to waste half my monitor's screen real-estate. 17:12:49 that's my point, it was written by others, in C, and i understand how it works 17:12:51 ((BIGNUM_ZERO_P (x)) 17:12:51 ? (BIGNUM_ZERO_P (y)) 17:12:51 : ((! (BIGNUM_ZERO_P (y))) 17:12:51 && ((BIGNUM_NEGATIVE_P (x)) 17:12:51 ? (BIGNUM_NEGATIVE_P (y)) 17:12:51 : (! (BIGNUM_NEGATIVE_P (y)))) 17:12:53 && (bignum_equal_p_unsigned (x, y)))); 17:12:56 Unless you have something really nifty to tell me, I don't want to see comments. Period. 17:12:59 err thats obfuscated 17:13:01 no its not 17:13:13 use an editor that matches brackets and its quite clear what's going on 17:13:20 too many ? : statements in one line lol 17:13:23 I can read that even WITHOUT such an editor. 17:13:24 That's easy. 17:13:30 i would have to study taht for atleast a couple of hours to understand it 17:13:37 that's your problem not C's 17:13:59 if X is zero, then return whether or not Y is zero, otherwise, return whether or not Y *isn't* zero. Likewise for the negative senses. 17:13:59 rewrite it in assembler and i doubt i would have any problems understanding it 17:14:42 its 4000 lines of assembly, after gcc -S 17:14:54 that would be quite hard to understand 17:14:58 slava you have one function here with at least 8 different exit points lol! 17:15:07 I440r, and? 17:15:14 slava asm output from c compiler is NOT assembler 17:15:17 its c lol 17:15:23 I for one find the "? :" code I440r_ just posted fairly clear (nice lineup and indentation) 17:15:46 my only problem with that code is it was written in a slightly older style of C with char* instead of void* etc 17:15:47 slava do you follow the GNU coding standards 100% ? 17:15:55 I440r, no, i write with 8 spaces per tab 17:15:56 your using bnu bracing here too 17:16:05 I440r, i didn't want to mess with that file's formatting 17:16:12 not asking you to 17:16:14 i want to be able to import new versions from scheme48 with minimal changes 17:16:30 if you look at the other files in http://cvs.sourceforge.net/viewcvs.py/factor/Factor/Factor/native/ you'll see i use linux kernel coding style 17:16:57 linux kernel doesnt indent the braces from the statement and then indent the body from the braces 17:17:10 and neither do I 17:17:11 kernel doesnt indent the braces at all. it indents the body 17:17:13 only the bignums code does that 17:17:22 thats not yours ? 17:17:23 because i don't want to redo the formatting each time the scheme48 people update it 17:17:25 no 17:17:29 oh 17:17:30 s48_bignum.c is scheme48 code 17:17:33 i said that like 5 times 17:17:34 GNU's bracing policy is this: 17:17:35 void 17:17:37 foo(..) 17:17:38 { 17:17:39 { 17:17:42 } 17:17:44 } 17:18:39 thats good 17:18:44 do you do the... 17:18:47 i prefer \t to spaces 17:18:50 if ( ) { 17:18:51 } 17:18:52 ? 17:18:53 ick 17:19:03 i do 17:19:04 if(foo) 17:19:05 { 17:19:09 aaa 17:19:09 } 17:19:20 and i avoid nesting more than 3 levels or so 17:19:20 linus uses the k&r bracing 17:19:31 No, I do this: 17:19:35 if( ... ) 17:19:36 { 17:19:37 ... 17:19:37 } 17:19:46 "Becahse as all right thinking people know K&R are right and k&r are right" he says 17:19:48 ick 17:19:56 thats how i brace if statements 17:20:02 i also brace ALL if statements 17:20:08 if (x=1) 17:20:11 for (...) 17:20:16 switch (foo) 17:20:19 fucking stupid 17:20:31 lol 17:20:45 i notice you dont brace your slingle line If's slava 17:20:46 If the context is trivial, I won't brace, but I normally do brace everything. 17:20:47 i don't brace one line if's 17:20:50 i bet kc doesnt either 17:20:54 I also explicitly brace if nested conditionals are used too. 17:20:55 I440r, yes 17:21:01 I440r, i avoid what they do in the s48 code though: 17:21:02 if(foo) 17:21:05 while(...) 17:21:07 slava single line if's can contain single line statements 17:21:12 taht contain single line statements 17:21:15 ad infinitum 17:21:19 no, i don't do that either 17:21:24 if(foo) 17:21:27 bar(); 17:21:33 but for nested if's i brace 17:21:36 There is no need to brace a single-line if statement. 17:21:38 do you do 17:21:42 while (1); 17:21:42 or 17:21:46 while (1) 17:21:47 ; 17:21:57 None of the above. 17:22:00 why would i have ; after while? 17:22:02 #define forever while(1) 17:22:03 ... 17:22:05 forever 17:22:05 for(;;) 17:22:05 { 17:22:07 ... 17:22:09 } 17:22:18 kc5 slava is that as efficient as while 1 ? 17:22:20 same ? 17:22:23 Same. 17:22:24 who cares? 17:22:38 i use a profiler to tell me where the bottlenecks are 17:22:47 "ineficiency is ok" is part of my problem with c 17:22:56 * TheBlueWizard hides in a little quiet corner 17:22:56 that's not what i said 17:23:02 i optimize code that is important to performance 17:23:07 if you have a statement that's executed once only 17:23:14 it doesn't matter if it takes 1 micro or milli second 17:23:47 * kc5tja agrees completely with Slava. 17:23:50 ill build a profiler into isforth eventually 17:23:56 kc5 yes. i didnt disagree 17:24:03 but the one thing i wont do is 17:24:07 for (;;) 17:24:10 FTS/Forth's code production is HORRIBLE as far as even naive native code Forths are concerned. But it's still "fast enough" for me. 17:24:13 what the hell is wrong with for(;;)? 17:24:15 in one place and then a while (1) in another 17:24:18 slava nothing 17:24:19 oh sure 17:24:20 be consistent 17:24:39 i never do while(true) because back in 1998 java was actually faster at for(;;) than while(true) since it would check if true was true at each iteration lol 17:24:41 and the habit stuck 17:24:47 even in C and modern java 17:24:47 I440r_: That's why you spend an hour or two pouring over the code you're working with to get a feel for the coding conventions used. If there are none, make one. 17:24:48 slava ive used BOTH before - i was just asking if the for statement was as/more/less efficent than the while 17:25:30 kc5 you can spend a lifetime reformatting other peoples sources 17:25:32 lol 17:25:37 I440r_: Then do it. 17:25:42 I440r, or use an automated tool 17:25:44 no - i chose to NOT do 17:25:52 Then that's not our problem. 17:25:54 i have no interest in touching any c 17:26:00 then don't bitch about it 17:26:01 its not MY problem either 17:26:02 Then don't. 17:26:04 you're just appearing ignorant right now 17:26:09 i don't bash x86 asm beacuse i don't know it 17:26:17 err. i didnt say i dont know c 17:26:25 i said that everything i learn about it makes me hate it more and more 17:26:33 then don't learn about it and don't bitch about it 17:26:34 specially the way people format it 17:26:39 i don't spend time learning COBOL 17:26:58 slava this is both a free country and an open channel :P 17:27:15 I440r, its true, but bitching about what amounts to personal preference is kind of futile 17:27:26 if you have legitimate concerns about C, voice them, but if its formatting... well 17:27:28 i was asked. i answered 17:27:34 But it IS your problem. You're slamming ALD because it's "not maintained," but you won't contribute the effort to submit patches yourself to make it better for your needs, because it's written in write-only C. Whatever. I'm 90% done with the code hack, and I've e-mailed the author asking for help in resolving one last technical issue on what needs to be done to fix it (which I would have done if it were written in Forth too). 17:27:40 slava. formatting is only PART of it 17:27:56 kct ok. YOU submit patches to that 17:28:00 and every other util you use ? 17:28:05 or... 17:28:11 concentrate on your own projects ? 17:28:14 I440r_: Yes. It's what open source is all about. :) 17:28:34 I need a feature X to work on my project Y, so by spending time on X, I make development of Y faster in the long term. 17:29:19 (The logic is sound: if I need feature X, and am willing to hack the code to enable it, then I will obviously need to use it more than once. Hence, the time is well spent.) 17:29:59 * kc5tja would like to point out that the RONJA optical networking system is entirely open source hardware, made entirely with open source EDA tools. 17:30:18 I know for a fact that only a few years ago, gEDA couldn't even render an AND gate without segfaulting. 17:30:26 So yeah, sometimes submitting patches is a good thing. 17:30:28 :) 17:33:24 whenever you run accross the situation where a pice of free software that you like doesn't do what you want it to, you should always consider fixing/adding-to it 17:33:52 herk i wouldnt have any time left lol 17:34:18 I said consider 17:34:21 which is part of the reson for isforth 17:34:30 obviously choose the ones that are worth your time 17:34:32 isforth is so i can develop for linux without going anywhere near any c sources 17:34:47 This was a significant-enough feature that I thought it was important to have. It was the first thing I noticed when debugging the result of the FTS/Forth compiler. 17:34:57 call +0xffffffe8 17:35:04 kc5tja: heh 17:35:07 Yikes! I have no idea what address that is. 17:35:20 It's nice to see what the relative offset is, especially in jump-table situations. 17:35:41 But realistically speaking, having a real, target address is more helpful. So, I now have it displaying a real target address like this: 17:35:45 the IDE that comes iwth my little 8051 board has a disassembly window 17:35:55 TOTALLY not symbolic disassembly 17:35:57 call +0xffffffe8 (0x40078abc) 17:36:05 i asked the developers if they would ever make it symbolic 17:36:09 their response... 17:36:15 "whats symbolic disassembly?" 17:36:17 hahaha 17:36:23 I440r, come on its the 8051 17:36:25 what do you expect 17:36:35 when i explained it to them they sayd nah.. i dont think were gona add that 17:36:40 Well, symbolic disassembly for me isn't at all important, especially since I simply don't have any symbol tables to speak of in my ELFs. 17:37:01 assemble it with a -g :) 17:37:08 of corse... that only works for kernel.com with me 17:37:16 after fsaving its TOTALLY stripped heh 17:37:17 I440r_: The cross compiler is written in GForth. It goes from raw source to raw binary. 17:37:20 Instantly, too. 17:38:39 hrm. if i put a -j REJECT of an ip in my firewall and then ping -f it ? 17:38:40 lol 17:38:45 do i "reject" all the replies ? 17:38:46 lol 17:40:31 Without more information, I can't answer that question. 17:58:21 --- quit: slava (Remote closed the connection) 18:02:39 it was a joke (the -j reject i mean) 18:20:13 --- quit: mur_ (Remote closed the connection) 18:20:45 --- join: mur (~mur@smtp.uiah.fi) joined #forth 18:37:12 --- quit: I440r ("Leaving") 18:41:17 --- quit: [Forth] (Read error: 104 (Connection reset by peer)) 18:50:40 --- join: I440r (~mark4@216-110-82-59.gen.twtelecom.net) joined #forth 18:58:01 --- join: madgarden_ (~madgarden@Toronto-HSE-ppp3707020.sympatico.ca) joined #forth 18:58:54 --- quit: madgarden (Nick collision from services.) 18:59:00 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 18:59:03 --- nick: madgarden_ -> madgarden 19:40:24 --- join: Robert__ (~snofs@c-bf5a71d5.17-1-64736c10.cust.bredbandsbolaget.se) joined #forth 19:41:54 --- quit: Robert (Read error: 104 (Connection reset by peer)) 19:53:07 --- quit: slava ("Leaving") 19:56:46 --- join: mur_ (~mur@uiah.fi) joined #forth 20:00:37 --- join: slava (~slava@CPE00096ba44261-CM000e5cdfda14.cpe.net.cable.rogers.com) joined #forth 20:00:46 yo 20:02:46 wb 20:03:01 re 20:03:09 hi 20:04:37 xc 20:04:38 up 20:04:40 aq 20:05:02 eh ? 20:05:19 wtf 20:05:51 eof 20:05:51 FORGET jDoctor 20:05:55 : jDoctor i440r ; 20:06:11 : slava "the weird one" print ; 20:06:16 that's not forth 20:06:23 : jDoctor ." should learn it" ; 20:06:28 slava, thats not forth 20:06:31 haha 20:06:32 that is 20:06:50 that isnt. this isnt either. its english 20:06:56 * jDoctor sticks his toungue out 20:07:36 : slava ."the weird one" slava ; 20:07:57 that's not forth either, unless you DEFER slava first :) 20:08:16 in forth a definition cannot refer to itself 20:08:19 unless you take extra steps 20:08:22 must have space after ." 20:08:24 it cant do that? man. 20:08:25 that too 20:08:35 jDoctor, : slava ." the weird one" RECURSE ; 20:08:47 : slava ." blah " recurse ; 20:08:59 recursion! 20:09:04 do it itterativly 20:09:08 lol 20:09:11 normal forths don't actually stick the word in the dictionary (at least the search path) untill the ; 20:09:16 : slava begin ." blah" again ; 20:09:22 that wont overflow the return stack 20:09:29 : care? ." no, I don't " recurse ; 20:09:32 I440r, some forths have tail call optimization 20:09:41 I440r, Herkamire's does 20:09:46 Herkamire, : recurse last @ , ; immediate 20:09:47 :) 20:10:10 yeah, I don't think that feature is worth it. 20:10:18 recurse? 20:10:20 or tail call op? 20:10:29 I think it is, if it was used from the foundation 20:10:33 and not too late 20:10:33 slava: I'm reffering to the thing about not putting a word in the search path until ; 20:10:35 recurse doesnt give you anything you cant do without it 20:10:38 Herkamire, oh yeah 20:10:52 I440r, iteration doesnt give you anything you can't do without it 20:11:01 herk forth does taht to stop you including an incomplete definition in the dictionary 20:11:05 I like being able to recurse by using the word's name 20:11:12 yeah 20:11:19 slava 99 times out of 100 the itterative method is faster 20:11:19 and I like being able to use ; in the middle of a definition instead of having two different words for exit 20:11:29 and recursion can be a complete bitch to read 20:11:39 it is incorrect in society to do that though, you know.. like in a Dictionary, it shouldnt use the word to describe the word 20:11:46 * jDoctor gets hit by a book 20:12:03 I440r, colorforth only has recursion 20:12:08 I440r, and factor too 20:12:11 : : create ;uses nest ] ; 20:12:18 wtf? 20:12:26 jDoctor: hehe :) 20:12:28 :) 20:12:43 jDoctor: iteration in a dictionary is not useful. (but happens anyway) 20:12:53 itteration in code can win fabulous prizes 20:13:01 yah. I just noticed that 20:13:12 it nullifies the entired definition in a dictionary 20:13:17 yet it doesnt to a computer 20:13:19 now why? 20:13:26 what the hell are you on about? 20:13:36 nothing. 20:13:44 :) 20:13:56 I440r: yeah, it's true in a lot of cases that recursion is slower. (even in herkforth until I get it optomized) but it doesn't have to b e 20:14:04 but I hate when in a dictionary, a word says look at the other word, and the other word says to look at the first! 20:14:42 for now I just went with the quick "make it work". I've been pushing my "optomize later" rule a lot in an attempt to make herkforth useful 20:14:49 oh, so I see my answer now. a Dictionary is pure information. in programming, its pure command. the dictionary does tell you to do anything 20:15:00 FTS/Forth has recursion and only recursion. 20:15:02 I'd rather dick around with stuff trying to make it fast, but that wouldn't be terribly useful 20:15:37 in herkforth I have one counted loop 20:16:39 if implemented well, these imo should compile to the same code: : foo begin ... again ; and : bar ... recurse ; 20:16:57 They do in my cross compiler. 20:17:07 kc5tja: nice :) 20:17:33 Herkamire: I've been depending on recursion for looping for . . . about a year now. Where have you been? ;-P 20:17:38 * slava ponders working some more on the docs. 20:18:03 * jDoctor goes back to making his bot work on irc 20:19:23 kc5tja: yeah, I know. you're cool :) 20:20:32 --- quit: mur (Read error: 110 (Connection timed out)) 20:21:45 Hehehe -- the cool part is debatable. 20:21:52 Most people think I'm just plain a geek. 20:21:54 But I digress. 20:23:31 not in here 20:23:39 in here we think you're cool 20:23:56 geeks are cool, man 20:24:28 and there's girls that like geeks too :) 20:24:40 lol 20:24:42 perhaps not enough such girls... but they do exist 20:24:44 i want two 20:25:17 I didnt see those on getYourChickOnline.com .. 20:25:18 two? to better the odds of getting married? 20:25:27 I440r: heh, I'm not sure they come in packages of two 20:25:27 --- join: zruty (~chuck@64-121-15-14.c3-0.sfrn-ubr8.sfrn.ca.cable.rcn.com) joined #forth 20:25:46 lol 20:25:51 damn 20:26:20 angelina jolie played one 20:26:37 I was like wow... she said " 28.8 k modem" 20:27:16 .o( leave it to a forther to say she said QUOTE SPACE ... 20:27:53 wow. you really caught onto the subject fast 20:28:16 gotta go...all bye 20:28:22 --- part: TheBlueWizard left #forth 20:28:23 * zruty ponders making .o( a forth word, pepper my source with thought bubbles 20:28:41 oh THATs what that was 20:28:55 I thought it was a guy with a big nose and a missing eye 20:29:05 zruty, did you get anywhere with your factor experiemtns? 20:29:06 heh 20:29:16 certainly make sense that he didnt have a smile on his face 20:29:21 slava: keep getting interrupted every time i sit down to start using it 20:29:32 by what.. irc? 20:29:40 work and gf 20:29:49 gf ! teach her factor 20:29:58 ye gads 20:30:09 I taught mine ti-83 BASIC 20:30:10 she's a PL/SQL developer 20:30:18 oracle? 20:30:18 you think she's gonna learn forth? 20:30:20 yep 20:30:47 I didnt even know that was a developer type 20:31:00 from my perspective, it isn't 20:31:25 page after page of bureaucratic crap. the real skill is in the business analysis stuff, figure out where all the domain specific rules in the db are, etc 20:31:27 but , hey, she might just be geeky enough to catch onto forth. you just gotta put it on her hallmark cards and stuff 20:31:40 awful stuff for me, i'm a perl hacker by trade 20:31:51 high level language guy. like forth because it's orthogonal mostly 20:31:58 perl is like.. I dont even know the words to say 20:32:15 swiss army chainsaw with built in dvd player and cheesemaker 20:32:25 that sum it up? 20:32:25 yah. something like that 20:32:40 and I once only knew how to use perl to filter several text files 20:32:43 now I use unix 20:32:44 it's better than awk 20:33:18 i tend to use perl for shell scripts that have gotten too big 20:33:24 well, I dont have big jobs of filtering anymore, but ya. I keep perl in mind for it 20:33:31 my shell scripts always run faster tho because i go nuts with pipes 20:33:44 me too, dude 20:33:46 big pipelines on a 8 cpu box is a win 20:33:59 whoa.. you really have this? 20:34:04 not at home 20:34:08 oh. lol 20:34:15 at work. that's a downgrade, used to work with 24 cpu boxen 20:34:26 I have two 600mhz's in the closet. its a computer just for burning cd's. 20:34:39 what do yall use at your work? sun? 20:34:41 my home box is a 600 mhz vaio laptop 20:35:09 nope, pc's. never use the 8 cpu box anymore tho, it's purely a db server 20:35:23 use a dual HT xeon now 20:35:26 so 4 cpu's sorta 20:36:05 cool. cool. for home, I conclude to apple winning 20:36:16 * jDoctor is on one now 20:36:19 I like FOR/NEXT loops. 20:36:20 zruty, damn im jelous 20:36:32 i want to get some of those dell servers with dual xeon's in em 20:36:34 madgarden, i just made mine twice as fast 20:36:35 would love a mac, but the price point just isnt there for me 20:36:40 thery are only 3000 usd + 20:36:48 slava, your FOR/NEXT loop? 20:36:57 what? no 20:37:00 madgarden, its called times, but yeah 20:37:02 --- join: Sonarman (~matt@ppp-66-124-255-188.dsl.snfc21.pacbell.net) joined #forth 20:37:03 mine was 1,200 20:37:06 FOR/NEXT? foo, RECURSE 20:37:07 Cool... what changed? 20:37:21 factor does tail recursion elimination, right? 20:37:23 madgarden, its implemented recursively, and not as a while loop which is implemented recursively 20:37:26 zruty, yes 20:37:37 oh heck it has continuations, i forget :p 20:37:39 zruty, loops are actually higher order functions that recurse and call their arguments 20:37:59 Well, I'm fairly happy with the speed of my for/next loop/ 20:38:14 are there creating and parsing words ala CREATE..DOES> and the like? 20:38:44 there's parsing words, and creating words but they're different than forth 20:38:58 cool. will have to read more of that manual i guess :) 20:38:59 its closer to lisp 20:39:05 macros? 20:39:18 no, just how the code is constructed from cons cells 20:39:56 if you have a number on the stack, [ + ] cons now gives you a quotation on the stack that adds that number to the top of stack when executed 20:40:13 3 [ + ] cons is [ 3 + ] etc 20:40:30 wow so it's like currying 20:40:56 [ and ] input a list literal. they are parsing words, similar to forth 20:42:05 noticed that, [ ] for lists, { } for vectors 20:42:11 any literal syntax for hashtables? 20:42:23 no 20:42:37 you can have a literal association list, and turn it into a hashtable though 20:42:44 they are like.. binded and edited, right? 20:45:21 --- quit: ChanServ (ACK! SIGSEGV!) 20:46:21 OK, my changes to ald are done, and submitted. They'll appear in ALD 0.1.7. :) 20:46:35 --- quit: jDoctor ("leaving") 20:46:42 --- join: ChanServ (ChanServ@services.) joined #forth 20:46:42 --- mode: irc.freenode.net set +o ChanServ 20:48:14 why is ChanServ actually in this channel 20:48:25 i never see it in other channels 20:51:08 its an option :) 20:51:22 whats the benefit? 20:51:30 err.... errr.... 20:51:36 ill get back to you on that one 20:51:39 heh 20:52:35 -ChanServ- When GUARD is enabled, ChanServ will join and sit in your channel. 20:52:35 -ChanServ- One advantage to this is to keep your channel occupied when 20:52:35 -ChanServ- the last user leaves. 20:52:41 err 20:53:57 oh yea 20:54:00 topic is retained 20:54:04 oh 20:57:40 hm, how do i make the factor docs? 20:58:00 been so long since i've made anything from a .tex 20:58:14 should just be latex devel-guide.tex right? 20:58:24 then dvipdf devel-guide.dvi 20:59:44 pdflatex devel-guide.tex 21:01:22 sc 21:01:48 chanserv also guards ops 21:01:59 correct 21:02:04 bleh. debian screws up latex permissions in font cache 21:02:16 * zruty makes it world writable. live dangerously 21:02:23 when a chan is empty, then the first one there gets ops, and can do whatever they like with it (eg password protect entry) 21:02:33 too bad i can't make fbgs work 21:02:35 I440r: Hey, if you want, I can send you the copy of ALD 0.1.7pre that I have, with my mods in it to properly display eIP-relative addresses. 21:02:47 kc5 sure lol how u get that ? 21:02:49 fbi and company dont like my neomagic fb 21:03:25 I440r: Like I said, I e-mailed the author and submitted a patch. It didn't quite fit first try, some things had to be changed to make it work with the 0.1.7 version. But I have it fixed, and it actually works better than before on 0.1.6. 21:03:42 Anyway, he sent me the pre-release of 0.1.7 to integrate my changes in. 21:03:52 cool 21:03:56 what ws your change ? 21:04:09 how can you do that 21:04:25 i can study c sources for WEEKS and not know enough about them to make any inteligent chages 21:04:35 --- quit: mur_ (Remote closed the connection) 21:04:42 here he goes again :) 21:05:15 --- join: mur (~mur@kyberias.uiah.fi) joined #forth 21:05:17 --- quit: Herkamire ("bed bed bed") 21:05:17 but im totally stumped that anyone can look at c sources and make head or tail of them 21:05:47 I440r: Well, like I said, I helped maintain about 700MB of C and assembly code for Hifn, so . . . it's very doable, however ugly the code may be. :) 21:05:55 huh the dvi renders less chunky than the pdf oddly 21:05:57 When coding in C, you just gotta think like a C programmer. 21:06:06 thats part of the reason i hate c. its the only language i know taht has that affect on me 21:06:14 I440r: Anyway, /msg me your e-mail address so I can send it to you. 21:06:22 im incapable of doing that lol 21:07:19 most C++ using heavy templates has that effect on me 21:07:28 I can't stand templates. 21:07:39 touch anything and the linker will spit at you with venom and hate and errors 21:07:50 Not that I don't know how they're used or anything, but I just think that people use them reflexively instead of thinking of cleaner, more efficient alternatives. 21:07:59 oh templates are fine, C++'s implementation of them just sucks 21:08:40 probably 95% of template use is better served with a language that has real algebraic types 21:09:14 and metaprogramming with a real macro system 21:09:20 On its way. 21:09:37 Scala's "type parameters" blow "templates" clean out of the water. 21:09:37 or something like openc++ which gives you real metaprogramming, not a macro hack 21:09:43 Templates are, as far as I'm concerned, NOT fine. 21:10:26 well, ML is hitting the big time with stuff like mldonkey 21:10:37 The problem is that types need to be first-class objects when making a language that has true parametric polymorphism. 21:10:41 tho mldonkey doesn't exactly help ocaml's reputation concerning documentation :p 21:11:10 kc5tja: well first class or a separate language, there's no between 21:11:16 ML uses a separate language 21:11:27 coq uses first class types. 'course coq isnt turing complete 21:11:28 See, I have major issues with "separate languages." 21:11:44 it's actually something of a separate language in C too 21:11:53 got it 21:12:04 Multiple languages in the same source file leads to nasty, nasty syntax and often results in ugly kludges. 21:12:25 coq is just a terribly rude name 21:12:28 not with ML 21:12:33 "hey man i'm programming some coq" 21:12:35 "cock?!" 21:12:37 "no, coq" 21:12:40 you know what's a type declaration and you know what isnt 21:12:42 "cock?!" 21:12:49 pronounced "coke" i believe 21:12:50 "see oh que!" 21:12:55 kct what about asm and forth in same source file 21:13:10 saying it's a separate langauge isn't like it's an embedded language 21:13:12 err kc5 even 21:13:17 it means it doesn't touch runtime semantics 21:13:18 Since the assembler is valid Forth, you're coding Forth all the way. 21:13:26 Especially if it's an RPN Forth. :) 21:13:30 lol 21:13:31 ML declarations look like ML, they're just compile-time only 21:13:46 zruty: Can you give a brief example? 21:13:56 lemme switch over 21:14:23 give you the canonical haskell quicksort. cheating a bit, since haskell is the prettiest of the ML family 21:15:26 fooey, it's not annotated 21:15:29 I personally disagree; I like ML's syntax the best. But, whatever you're comfortable with. 21:16:11 how do you get the GTK user interface up ? :) 21:16:17 or is that like the curses one 21:16:19 vaporware 21:16:22 chmod -R a+w /var/cache/fonts 21:16:25 damn 21:16:39 can't copy and paste between console and X 21:16:44 i really hate *nix sometimes 21:17:16 I440r: ? 21:17:27 length :: [a] -> Int 21:17:29 ald 21:17:41 the curses version of ald was always disabled cuz he hadnt finished it 21:17:42 that's a type declaration. it's actually a separate language in its own right 21:17:44 it never worked 21:17:53 data constructors are another 21:17:53 I440r: I never knew it had a GTK interface. 21:17:54 i see a ui directiry in here 21:18:00 data Maybe = Just a | Nothing 21:18:07 er Maybe a that is 21:18:19 zruty: OK, I do not consider that a separate language at all. I consider that an intrinsic part of Haskell. 21:19:06 it is intrinsic, but it's a separate language, so it gets verified first, then everything else is verified against it 21:19:11 thers only two command line switches 21:19:14 -h and -v 21:19:23 so the gtk interface is still vaporware 21:19:35 so you get parametric polymorphism without first class types 21:19:35 and the curses interface looks to have been totally removed 21:19:48 the lack of the curses interface is disappointing 21:20:03 i would like to see registers in a windows on the screen 21:20:06 disassembly 21:20:13 and a highlighted like for IP 21:20:25 and a display of the top few items of the stack 21:20:31 speaking of interfaces, does factor have a C interface for stuff like SDL, curses, etc? 21:20:43 i'm interested in SDL 21:20:51 ill go single step some isforth code and take a look 21:20:52 I440r: None of this is even documented on the ALD website. Not sure where you've seen this before. 21:21:10 kc5 3 years ago. the curses code was enabled with a -c 21:21:28 but all it did was say "the curses interface has been disabled because blah blah" 21:22:02 a continuously scrolling display after each single step is a horrible interface for a debugger 21:22:16 anywa 21:22:21 thats not a disqualification 21:22:24 tho 21:22:32 * I440r goes to single step some code 21:22:36 I440r: It's the only kind of debugger I've ever used, right back to the Commodore PET days. :) 21:22:39 actually the man page is next to useless 21:22:51 kc5 got a dos box handy ? 21:22:55 get d86 21:23:10 its the debugger i measure all debuggers against. and it has some HUGE flaws 21:23:20 No, I don't. I have used MSVC's debugging environment, which was nice, but damn, it took up too much screen space. 21:23:36 msvc debugger hehe 21:23:43 It's actually very good. 21:23:47 no d86 is a dos based asm debugger 21:24:03 MSVC does 32-bit assembly too. 21:24:06 kc5 msvc++ also has a damned good code optimizer 21:24:14 and i dont care what the gcc people a 21:24:16 and it's a zippy compiler 21:24:25 MSVC is a good product. 21:24:28 gcc's optimizer wont even come close to vc++ 21:24:42 MS should make more stuff like msvc 21:24:51 However, I've never experienced an MSVC program going significantly faster than a GCC program, or vice versa. As far as optimizations are concerned, I'd say they're both at the same level more or less. 21:24:54 'course compilers were ms's thing before they were into OS's 21:25:02 you could say msvc is like MS's original product 21:25:10 that and BASIC 21:25:15 ok heres my BIGGEST critisism of gdb 21:25:22 you cant debug till you start to run 21:25:33 and you CANNOT put a breakpoint on the entry point 21:25:54 I440r: More accurately, you CAN, but it'll break GDB. :) 21:26:00 (or worse, be completely ignored) 21:26:03 now for a HUGE flaw in ald 21:26:22 you dont see a disassembly of an instruction until AFTER you step it 21:26:29 Not true. 21:26:34 thats an automatic disqualification right there 21:26:42 i jsut did ald isforth 21:26:50 and it didnt disassemble the first instruction 21:26:51 i said 21:26:52 step 21:27:01 and it executed and disassembled the first instruction only 21:27:08 i dont get to see it till ive executed it 21:27:15 or tell me what im doing wrong 21:27:16 No, not true. 21:27:21 because the man page doesnt tell me shit 21:27:24 nor does -h 21:27:27 What you're seeing is the instruction *about* to be executed. 21:27:39 Yes, it doesn't show the very first instruction. 21:27:43 the one about to be executed AFTER i told it to singlestep once 21:27:56 But after you step it, it shows the *next* instruction to be executed, which is correct behavior. 21:28:03 so the first "step" is "disassemble first instruction" 21:28:12 and the second step is "step first instruction" 21:28:15 ? 21:28:34 err no 21:28:38 i can see tahts not the case 21:28:43 from blank screen you say 21:28:54 step and it steps the first instruction but doesnt show it 21:28:59 im now on the second instruction 21:29:05 disassembled 21:29:06 a.out: ELF Intel 80386 (32 bit), LSB - little endian, Executable, Version 1 (Current) 21:29:09 ald> disas 21:29:12 0800044F 89E6 mov esi, esp 21:29:15 08000451 81EC00040000 sub esp, 0x400 21:29:17 08000457 E87AFEFFFF call near +0xfffffe7a (0x80002d6) 21:29:20 ... 21:29:21 ald> s 21:29:21 eax = 0x00000000 ebx = 0x00000000 ecx = 0x00000000 edx = 0x00000000 21:29:21 esp = 0xBFFFF9F0 ebp = 0x00000000 esi = 0xBFFFF9F0 edi = 0x00000000 21:29:21 ds = 0x0000002B es = 0x0000002B fs = 0x00000000 gs = 0x00000000 21:29:23 ss = 0x0000002B cs = 0x00000023 eip = 0x08000451 eflags = 0x00000346 21:29:26 Flags: PF ZF TF IF 21:29:28 08000451 81EC00040000 sub esp, 0x400 21:29:31 ald> 21:29:33 As you can see, the first instruction is mov esi,esp. 21:29:54 kc5 you NEVER get to see the first instruction - my first instruction is a call init_mem - ive stepped it and im seeing the disassembly of the first instruction of that subroutine 21:29:56 Yet, after hitting "s" and ENTER, the instruction that is displayed is the second instruction -- the instruction that has yet to execute, which is sub esp,0x400 21:30:00 you do not get to see the first 21:30:09 right 21:30:10 So disassemble it. 21:30:15 this is forgiveable 21:30:19 but will need to be fixed 21:30:26 * kc5tja shrugs. 21:30:26 when i say ald blah 21:30:36 ald should auto disassemble the first instruction 21:30:40 i think 21:30:49 * I440r continues 21:31:01 Well, I'm not prepared to make that change. It works well enough for me. 21:31:02 :) 21:31:16 Flags: PF ZF TF IF ID 21:31:21 err which flags are set 21:31:29 not ALL of thse surely 21:31:56 it should display the names of all the flags in lower case and uppercase the ones that are set - or it should highlight th eones that are set 21:31:58 or something 21:32:31 and there could be an option in here to NOT display selectros 21:32:36 If you see PF ZF TF IF ID, etc, then yes, those flags are currently set. 21:32:47 its very very very unlikely that anyone is ever going to be using ald in ring 0 21:32:57 their presence is just noise 21:33:07 I disagree. 21:33:33 What if you're like me, who enjoys working on operating system software, and is using ALD over a serial port at the kernel level (as with tethered-GDB)? 21:33:50 i said very very very unlikely 21:33:53 and "an option" 21:34:08 i doubt ald CAN be used to debug in kernel space 21:34:19 so those registers are superfluous 21:34:28 you cant change them except from ring 0 21:34:31 Neither can gdb, technically, but yet, gdb has support for tethered mode. 21:34:47 (and has been, and is, being used for that purpose.) 21:34:54 also, ald is still disqualified until it does symbolic disassembly 21:34:56 which it doesnt do 21:35:02 Whatever. 21:35:22 you try single stepping thru isforth dood without any symbols 21:35:31 I somehow doubt your generated ELFs have debugging symbol information in them anyway. 21:35:44 Well, that's not my problem. 21:36:02 My goal is to get FTS/Forth to a point where I can do automated unit testing, so that I no longer *need* ald to begin with. 21:36:24 gdb might be a pile of crap but its acutally easier to use for debugging my kernel simply because it displays symbol names 21:36:42 gdb is the most difficult to use debugger to use. 21:36:52 ive seen worse hehe 21:36:52 (for assembly) 21:36:56 No, I haven't. 21:36:56 not many... but some 21:36:59 i have 21:37:01 And I've used many. 21:37:07 but yes. gdb is a pile of crap 21:37:19 ever use an nec 75x in circuit emulator ? 21:37:26 you DONT get to see an instruciton till you step it 21:37:27 No, and I have no need to. 21:37:38 you break on the instruction FOLLOWING the breakpoint 21:37:40 if at all 21:37:50 Umm...well...an in-circuit emulator normally works that way anyway 21:37:56 you cant put a breakpoint on the first instruciton of a routine (nor can you in gdb) 21:38:26 put a breakpoint ont eh first line of a c function and it wont break there 21:38:29 it will stop on the second 21:38:33 or not at all 21:38:45 I've set a breakpoint on the first line of a C program PLENTY of times. 21:38:58 First line of main(), works just fine. 21:39:20 Note: obviously, you can't set a breakpoint on a variable declaration, since it technically isn't executable code. 21:39:22 maybe they have fix3ed that then 21:39:29 thats not code :) 21:39:33 not unless its 21:39:36 char x = 1; 21:39:38 I440r: I've done it since Linux 1.3.8. :) 21:39:43 Yes, you can break on those. 21:40:07 kc5 3 years ago you could NOT put a breakpoint on the entry point 21:40:15 Sure could. 21:40:20 nor on the first instruction (valid instruction) of a function call 21:40:45 Because main() is, contrary to popular belief, not the entry-point of a program. Never has been. It is called by libcrt.(s)o. 21:40:46 i was emailing the developers of gdb and they were like "who cares" 21:40:57 err i know that 21:41:12 im talking about the ENTRY point of the program 21:41:28 gdb has this silly notion of "is executing" 21:41:36 i.e. you have to "run" before you can stop 21:41:49 and you cannot RUN and STOP on the same instructon 21:41:51 That's because the debugged program runs in another process. 21:42:16 Of course you can't. That's contradictory. 21:42:33 well why doesnt gdb automatically START the process being debugged yet NOT execute any of it 21:43:01 well it means you cannot debug your entry point without doing trickery like making your first instruciton a NOP 21:43:02 lol 21:43:07 Because you may need to do additional configurations. You can specify command line arguments via the "run" command, you can (IIRC) change environment variables, etc. 21:43:20 which is bad because your bug might be related to location of a specific instruciton 21:43:24 and the nop might move oit 21:43:39 you can change env vars inside 21:43:43 while executing 21:44:10 ald has one thing going for it tho 21:44:14 its a hell of alot faster 21:44:15 lol 21:44:24 but it doesnt show the freekin stack 21:44:43 --- quit: zruty ("Lost terminal") 21:45:13 it would also be nicer if it DID display all flags even ones taht arent set - that way your eyes would become used to the location of specific flags 21:45:19 OFF flags can be in lower case 21:45:23 or ON flags can be in bold 21:46:30 no symbols makes things very difficult tho 21:46:32 you cant say 21:46:46 break mung_data_fudgificator 21:46:52 and then run 21:47:12 and single stepping to the part you want to debug can take years lol 21:47:29 it would take an hour to single step through my header relocation 21:47:39 unless you just hit s and held cr down 21:47:43 but then you might overshoot 21:48:47 but i guess im talking to myself 21:51:17 Nahh 21:51:31 My coding style tends not to rely on the presence of a debugger. 21:51:55 Like I said, I use unit testing, and in some cases, even formal verification methods. 21:52:06 I think today was the first time I've used a debugger in over 2.5 years. 21:52:16 unit testing just tells you "something is wrong here" 21:52:24 debugging can tell you "what is wrong" 21:52:35 Not true. 21:52:40 Not even close to being true. 21:52:47 sometimes a debugger is a very usefull tool 21:52:51 Sometimes. 21:53:01 But proper coding practices can minimize its use. 21:53:23 anyone who RELIES on a debugger or ai ICE should go find another career field tho lol 21:53:29 yes 21:53:33 Unit tests tell you what is wrong, and by definition, its rough location too. Specific location is often determinable by visual context. 21:54:13 Using partial ordering of unit tests (so that all lower-level tests run before higher level tests), you can pin-point bugs by process of elimination, and often, down to individual lines of source. 21:54:37 And the nice thing, they're repeatable, so as you refactor your code, you can keep running those tests, to see if you have inadvertently broken anything. 21:54:40 It's wonderful. 21:55:22 Anyway, I think I've had a wonderfully productive day of coding. 21:55:44 So since it's nearing the end of the day, I'm going to commit my changes to FTS/Forth's cross compiler, and go play a game. 21:56:06 I promised a site update today, but I'll do that tomorrow. I need to hack on my resume anyway, so lumping all my editing stuffs together seems to make some sense. 22:07:52 :) 22:08:02 i need to work on my power down mode :) 22:10:45 kc5 why didnt you simply get rid of the silly branch disassembly showing offsets and just replace it with disassembly showing target address 22:11:10 i dont care that this jnc is brancing 15 bytes back! - thats useless info 22:11:20 your ( ) info should simply replace the offset 22:11:26 THATS usefull info 22:11:38 that was anotehr thing i didnt like about ald 3 years ago 22:12:33 grr i dont even care about the OBJECT code of the instruction being displayed 22:12:46 or its address - unless its a target 22:13:08 if i need to know the instructions addres i look at IP 22:17:07 --- nick: Robert__ -> Robert 22:18:50 --- quit: Sonarman ("leaving") 22:22:02 --- join: Serg_penguin (~z@212.34.52.140) joined #forth 22:22:19 hi serg lol 22:22:28 you always come by right when im going to sleep hehe 22:24:04 Hehe 22:24:12 * Robert is going to school in a while 22:24:17 Mmm... 1 hour of travelling. 22:24:29 OOOH i just invented a new programming language like brainfuck and whitespace hehe 22:24:36 im gona work out the details tho first@ 22:24:44 :D 22:24:47 What's it like? 22:24:51 but itll be naturally obfuscated {:) 22:24:51 I mean, the general concept 22:24:53 not tellin! 22:24:57 Bah 22:25:00 heh 22:25:03 gimme a day or 2 22:25:04 Not until your patent is approved? :P 22:25:07 and ill write it up 22:25:10 lol 22:25:24 damn.ya got me 22:25:29 im gona make BILLIONS off this! 22:25:30 hehe 22:25:46 ;) 22:26:24 neway 22:26:26 nite nite 22:26:38 way past my bed time 22:26:56 Hehe 22:26:58 Night :) 22:27:34 hi 22:27:49 Hi serg 22:27:59 * Serg_penguin just loaded film into my new toy ;)) 22:28:20 half-frame full-mechanic automatic camera 22:30:35 and writing an article on XML engine for static homepages 22:32:46 Fancy ;) 22:33:31 * Robert is coding a few things for an article he found yesterday: http://en.wikipedia.org/wiki/Surreal_number 22:43:47 --- join: mur_ (~mur@uiah.fi) joined #forth 22:53:58 --- quit: mur (Read error: 110 (Connection timed out)) 22:56:51 kc5tja, ping 22:57:06 kc5tja, on x86, are 32-bit addresses encoded in instructions always 32-bit aligned 22:57:15 kc5tja, in jumps even 22:57:18 not all instructions 22:57:59 kc5tja, ie, if i have a memory zone containing compiled code, can i do a simple iteration through each 4-byte word and do conservative gc 23:24:11 --- quit: mur_ (Remote closed the connection) 23:24:43 --- join: mur (~mur@smtp.uiah.fi) joined #forth 23:56:06 --- join: proteusguy (~proteusgu@66.168.185.144) joined #forth 23:59:44 slava: No. 23:59:51 Instructions can appear anywhere in memory. 23:59:59 --- log: ended forth/04.08.30