00:00:00 --- log: started retro/07.07.04 00:18:40 --- join: nanstm (n=Ray_stma@adsl-68-95-161-155.dsl.rcsntx.swbell.net) joined #retro 00:44:58 --- part: nanstm left #retro 01:06:02 --- join: nanstm (n=Ray_stma@adsl-68-95-161-155.dsl.rcsntx.swbell.net) joined #retro 01:15:48 --- part: nanstm left #retro 01:18:33 --- join: nanstm (n=Ray_stma@adsl-68-95-161-155.dsl.rcsntx.swbell.net) joined #retro 01:18:57 --- quit: nanstm (Client Quit) 02:37:43 --- join: Cheery (n=cheery@a81-197-54-146.elisa-laajakaista.fi) joined #retro 04:13:35 --- quit: Shain (Remote closed the connection) 05:03:26 --- join: Cheery_ (n=cheery@a81-197-54-146.elisa-laajakaista.fi) joined #retro 05:15:05 --- quit: Cheery (Read error: 110 (Connection timed out)) 06:19:46 --- quit: Cheery_ (Remote closed the connection) 08:35:09 --- quit: virl ("Verlassend") 09:41:33 crc: its tomorrow, have you read it yet! 09:41:34 :P 10:12:49 it does look like an interesting way to approach OOP 10:27:23 * crc still has no motivation to work on any "real" oop in forth 10:41:20 --- join: snoopy_1711 (i=snoopy_1@dslb-084-058-131-016.pools.arcor-ip.net) joined #retro 10:49:35 --- quit: Snoopy42 (Read error: 145 (Connection timed out)) 10:49:51 --- nick: snoopy_1711 -> Snoopy42 12:24:11 --- join: Cheery (n=cheery@a81-197-54-146.elisa-laajakaista.fi) joined #retro 13:54:25 --- quit: Cheery (Remote closed the connection) 16:54:41 --- join: virl (n=virl@chello062178085149.1.12.vie.surfer.at) joined #retro 17:26:09 --- join: Shain (i=steve@adsl-75-30-112-206.dsl.pltn13.sbcglobal.net) joined #retro 19:05:24 --- join: Quartus (n=neal@CPE0001023f6e4f-CM001947482b20.cpe.net.cable.rogers.com) joined #retro 20:25:21 crc: hmm, if you used Ruby, you'd see how nice oop can be.. i.e. not ugly and crappy like it is in C/C++/Java 20:26:09 oop is pretty nice in smalltalk 20:29:28 in ruby its so nice, there's no types, but everything is an object, so "123".to_i would convert that to a number 20:29:33 provided it has that method 20:29:46 "123" being an object of the string class 20:30:20 and ruby is so compact 20:30:26 and readable 20:30:29 heh 20:30:43 anyways, i thought that a delegation-based oop would fit forth really well 20:30:58 and perhaps really inspire more forth development 20:31:33 perhaps the best way to do delegation-based oop would be to have every object be a micro-forth implementation 20:31:39 within the overall forth 20:31:42 if you get what i mean.. 20:31:46 dunno if thats the best approach 20:32:03 but the whole message passing 20:32:44 the microforth implementation could be common to all the objects, so its not duplicated all over the place 20:32:46 I would like message passing + lightweight forth threads...reflecting erlang features 20:32:53 yeah 20:33:06 erlang is the other thing that inspired the microforth idea 20:33:28 or i guess forth threads is the proper way of thinking about it 20:34:54 I am not at the point of implementing those features yet, but am having fun implementing a forth version of term-rewriting from the Bertrand language :) 20:35:07 ...and using it also as the parser. 20:36:17 timlarson: how 1X forth is your forth 20:36:44 could you expand on that question? 20:36:54 do you know about the 1x forth concept ? 20:37:09 how 1xish is your forth 20:37:11 I am not exactly implementing a "forth", just something that happens to swallow forth features. 20:37:45 http://www.ultratechnology.com/1xforth.htm 20:38:09 actually ignore that shit 20:38:22 I have read it but had to review to remember what the term refered to 20:38:31 worrying about complexity/perfectionism like that can stall a programmer ;) 20:39:12 Don't Complexify 20:39:12 Simplify the problem you've got or rather don't complexify it. I've done it myself, it's fun to do. You have a boring problem and hiding behind it is a much more interesting problem. So you code the more interesting problem and the one you've got is a subset of it and it falls out trivial. But of course you wrote ten times as much code as you needed to solve the problem that you actually had. 20:39:18 Ten times code means ten times cost; the cost of writing it, the cost of documenting it, it the cost of storing it in memory, the cost of storing it on disk, the cost of compiling it, the cost of loading it, everything you do will be ten times as expensive as it needed to be. Actually worse than that because complexity increases exponentially. 20:39:24 10x Code 20:39:26 10x Cost 20:39:29 10x Bugs 20:39:31 10x Maintenance 20:39:36 I am putting certain purposefully-kept-simple mini-paradigms together so I can use the strengths of each: e.g. term-rewriting, functional, and imperative 20:39:40 10x has an overall cost of 10000x 20:40:33 timlarson: is it a good approach to build all the paradigms separately and hook it together? or to have 1 central idea that makes it easy to be multiparadigm 20:40:45 forth, lisp, ruby, smalltalk, they're all multiparadigm 20:40:52 are you familiar with toka's "quotes"? 20:40:55 but built on one idea, more or less 20:40:56 nope 20:41:20 you write code like this: [ abc def ghi ] is froggy 20:41:46 code between [ and ] is an anonymous function, which you can name if you wish 20:42:26 I just use [someword ... ] differenciated quotes to express the different paradigms, 20:42:32 all sharing the same datatypes, etc. 20:42:49 each type is simple and can embed the others 20:42:59 i think that the best programming language is the most readable one 20:43:11 a readable language forces conciseness 20:43:20 in toka, quotes are used for definitions, program flow (loops, conditionals), etc. 20:43:21 and forces a lot of other requirements 20:43:59 wheres the quote 20:44:05 [ ] is the quote? 20:44:22 sounds like its teh same thing as : ; 20:44:24 yes, a code-quote rather than just a string-quote 20:44:34 so a quote is a word 20:44:45 yeah 20:45:03 foucist, quotes can be nested 20:45:12 so it's not quite the same as : ; 20:45:23 is toka forth ? 20:45:25 * crc does have a small forth implemented in toka 20:45:35 I don't consider toka to be a forth 20:45:47 it's like forth in some respects, but differs in others 20:45:53 oh, you coded toka 20:46:09 forgot about toka 20:46:22 see http://charleschilders.com:9812 20:46:26 yeah i'm there 20:47:42 why is toka not a forth? 20:48:06 going into forth and renaming all the primitives and getting rid of : ; and creating [ ] does not change the fact that it is a forth 20:48:34 altho i guess the name change is for convenience ? 20:48:46 trying to make a better forth with better names? 20:48:50 better terminology? 20:49:06 writing another syntax with another paradigm does not make your language not be a turing complete language ;) 20:49:10 pointless argument 20:49:14 trying to make a forth-like language that meets my current needs (which include portability) 20:50:22 consider it forth if you like 20:50:40 k 20:50:41 or postfix lisp, or ... 20:56:38 sorry for my sour attitude...just saw so-so fireworks with kids saying "this is boring" and them being right :( 20:56:47 I will try to sweeten up :) 20:56:58 timlarson: if the implementation is both an interpreter and a compiler, can be easily done in 5 kilobytes, is easily understood by one programmer, and is stack-based, would you call it a lisp? :P 20:57:19 even a postfix lisp? 20:57:31 foucist, if that's what it was... :) 20:57:36 you need some list handling then 20:59:41 actually, i really would like a better language than forth, something that is stack-based, reveals the machine like forth does, and is very simple in implementation 21:00:31 any ideas? 21:00:46 by better i mean, more readable, easier to code 21:01:11 I hope mine will be, but don't hold your breath waiting for a finished implementation ;) 21:01:33 something to make it easier to work on my evolutation ideas, to evolve an evolutation system that adapts to taking full advantage of the machine 21:01:52 goodnight 21:01:57 crc: night 21:02:02 scared you off eh 21:02:04 I searched for what I wanted and just flat out could not find it, hence this effort 21:02:06 gn crc 21:02:39 the term-rewriting/constraint-language aspect looks like it will be a big help towards this. 21:03:23 sorry you cannot find much good info online about the Bertrand constraint language...I had to interlibrary loan a book about it. 21:03:31 can you give me an example of term-rewriting 21:04:17 bertrand does it roughly like this: 21:04:22 head { body } 21:04:42 the head is a pattern with variables that the system tries to match, 21:04:57 and when it matches then it replaces it with the body 21:05:39 you can do things like tell it the formula for converting temperatures from C to F and from F to K, 21:06:21 and then give it a temperature in any one of these scales and it will give it back to you in either of the other two as requested. 21:07:17 you can also have the body portion write code, the book gives examples of generating both lambdas and assembly code 21:08:29 think of it somewhat like fancy functional code, except it lets you usually eliminate having to tell when to call which function because the system figures this out on its own via pattern matching. 21:09:52 the language consists of just three things: a pattern matcher, an instantiator (replaces the matched data with the of a rewrite rule), and a namespace manager for types and values. 21:10:12 the book has a sample implementation written in scheme 21:10:24 pretty short code as languages go 21:11:35 sounds pretty neat 21:11:51 pattern matching is a big deal 21:11:59 unfortunately forth sucks ass in that respect 21:12:05 a serious limitation 21:12:11 yes, but you pretty much need the book to get the full picture...online info is pretty scarce 21:12:29 well no worries 21:12:40 this stuff ain't exactly a priority for me 21:12:48 "Constraint Programming Languages: Their Specification and Generation" by Wm Leler 21:12:48 except for the evolutation stuff 21:12:55 k 21:13:11 maybe i'll check that out for ideas for coding evolution-based stuff 21:13:19 dunno 21:13:35 i guess the hard part is coming up with a language to solve my problem 21:13:44 I mentioned it because I am working on it and because it seems it would be a benefit to evolutation efforts. 21:13:49 yeah 21:14:28 and since it can *very easily* generate either functional or imperative code it makes a nice match to a forth-like system 21:15:08 and you can flip it around easily as well to have forth-like code build up rewrite rules also. 21:16:02 tying two very simple-implementation and simple-expanation languages together that have very different strengths, to compliment each other. 21:16:03 cool 21:16:28 timlarson: what are you implementing this forth-like thing in ? 21:17:03 with this plus erlang-style message passing and lightweight threads for resilient distributed processing and I think I will have a winner. 21:17:08 coding it in C 21:17:38 because if you're implementing this in C/C++/Java, that is going to bias you, in a bad way.. 21:17:49 and with term rewriting it is *very* easy to make DSL's 21:18:28 I am using call threading (a word is mainly an array of C function pointers) 21:18:36 for example i haven't seen any good forths that were coded in C, they've all been quite bloated 21:18:47 its probably more a bias than the C language 21:19:04 but i think every language has a bias 21:19:07 and I found a way to code most of the logic in the being-created language syntax from within C. 21:19:52 with this technique it is almost like ... not coding in C :) 21:20:22 most forth implementations in C are kinda done in that style already i believe 21:20:29 so becareful ;) 21:21:10 c("forth-word-name"); // compiles a call to a forth word into the currently-being-compiled word 21:21:38 p("forth-word-name"); // similar but compiles a postponed execution of the word 21:22:26 and drifting toward something like toka's word-classes, where c() and p() know whether to call a word as a macro or compile it for later, etc. 21:23:16 if I want to do an asm implementation later I will probably use the term-rewriting system to generate auto-optimized asm code for me. 21:28:32 time for me to sleep, good dreams to all in a similar sleep cycle :) 21:55:26 --- quit: Shain (anthony.freenode.net irc.freenode.net) 22:09:44 --- join: Shain (i=steve@adsl-75-30-112-206.dsl.pltn13.sbcglobal.net) joined #retro 23:59:59 --- log: ended retro/07.07.04