00:00:00 --- log: started forth/12.12.10 00:11:18 --- quit: Nisstyre-laptop (Ping timeout: 264 seconds) 00:12:36 --- quit: epicmonkey (Ping timeout: 250 seconds) 00:17:48 --- quit: ASau (Ping timeout: 264 seconds) 01:24:43 --- join: epicmonkey (~epicmonke@host-224-58.dataart.net) joined #forth 01:24:43 --- mode: ChanServ set +v epicmonkey 01:25:12 --- quit: epicmonkey (Remote host closed the connection) 01:28:10 --- join: Bahman (~Bahman@static.88-198-159-196.clients.your-server.de) joined #forth 01:28:10 --- mode: ChanServ set +v Bahman 01:56:10 --- join: epicmonkey (~epicmonke@host-224-58.dataart.net) joined #forth 01:56:10 --- mode: ChanServ set +v epicmonkey 01:57:23 --- quit: epicmonkey (Remote host closed the connection) 02:12:48 --- join: epicmonkey (~epicmonke@host-224-58.dataart.net) joined #forth 02:12:48 --- mode: ChanServ set +v epicmonkey 02:13:18 --- quit: epicmonkey (Remote host closed the connection) 02:43:25 --- join: epicmonkey (~epicmonke@host-224-58.dataart.net) joined #forth 02:43:25 --- mode: ChanServ set +v epicmonkey 02:45:15 --- quit: epicmonkey (Remote host closed the connection) 02:55:21 --- join: epicmonkey (~epicmonke@host-224-60.dataart.net) joined #forth 02:55:21 --- mode: ChanServ set +v epicmonkey 03:02:14 --- quit: I440r (Remote host closed the connection) 03:12:07 --- nick: yiyus_ -> yiyus 04:31:36 --- quit: epicmonkey (Ping timeout: 264 seconds) 04:46:05 --- join: epicmonkey (~epicmonke@host-224-58.dataart.net) joined #forth 04:46:05 --- mode: ChanServ set +v epicmonkey 06:29:36 --- quit: epicmonkey (Ping timeout: 252 seconds) 08:50:12 --- quit: Bahman (Remote host closed the connection) 08:56:06 --- join: Bahman (~Bahman@static.88-198-159-196.clients.your-server.de) joined #forth 08:56:06 --- mode: ChanServ set +v Bahman 09:08:23 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 09:08:23 --- mode: ChanServ set +v MayDaniel 09:13:00 --- quit: MayDaniel (Ping timeout: 241 seconds) 09:17:28 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 09:17:28 --- mode: ChanServ set +v MayDaniel 10:03:55 --- quit: MayDaniel (Read error: Connection reset by peer) 10:04:55 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 10:04:55 --- mode: ChanServ set +v MayDaniel 10:19:58 --- join: ASau (~user@46.115.105.148) joined #forth 10:19:58 --- mode: ChanServ set +v ASau 10:40:33 --- quit: MayDaniel (Read error: Connection reset by peer) 10:41:34 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 10:41:34 --- mode: ChanServ set +v MayDaniel 10:56:45 --- join: RodgerTheGreat (~rodger@71-13-215-242.dhcp.mrqt.mi.charter.com) joined #forth 10:56:45 --- mode: ChanServ set +v RodgerTheGreat 11:04:15 Any Forth masters in attendence? 11:04:50 I'm not really a master but there is a vague chance I could answer questions 11:04:58 what's up? 11:10:13 Nice to meet you Rodger, I don't have a specific question at the moment. 11:10:29 are you new to forth? 11:10:51 Just wanted to see if anyone actually checks the channel from time to time. 11:10:56 yes I am 11:11:02 it can be rather quiet 11:11:17 what kinds of things are you interested in doing with Forth? 11:11:43 I am a hobbyist programmer: played with basic, python and a little ruby 11:12:08 I'd like to explore microcontrollers 11:12:22 cool 11:12:36 there are a few people here who tinker with arm and msp430 chips 11:13:08 I see, anyone tried the greenarray chips? 11:13:27 I haven't, but I have read quite a bit about them 11:14:02 What do you make of it? :-) 11:15:03 do they seem like something worth trying? 11:15:04 the GA144 is a really, really cool piece of hardware searching for a problem 11:15:25 I think it would be interesting trying to emulate conventional CPUs on it 11:15:46 I'll bet you could emulate four or five MIPS cores on one 11:16:00 might even be more power efficient than a real one 11:16:09 I am not quite sure what attracted me to Forth, the Jupiter Ace probably had something to do with it. 11:16:37 That's an interesting thought. 11:16:50 What do you use Forth for? 11:16:54 I like playing with compilers and VMs, and I enjoy the fact that writing a Forth is often easier than writing an assembler 11:17:04 I like to use forth to write compilers and video games 11:17:52 Are you from the UK? 11:18:06 nope, I'm from the US 11:18:15 Judging by the spelling of Rodger, oh ok. 11:18:25 I'm from Sweden 11:18:44 this planet keeps getting smaller 11:19:01 What kind of games have you written in Forth? 11:19:18 Haha, I hear ya; blame the net. 11:19:34 a number of arcade-style things and a few slightly longer form things 11:19:41 https://github.com/JohnEarnest/Mako 11:19:41 Cool 11:20:05 for some reason github thinks .fs files are F# 11:20:24 if I recall correctly my project is something like the #13 "F#" project on github 11:21:20 lately I've been doing a lot of tinkering with a Logo implementation written in Forth: https://github.com/JohnEarnest/Mako/tree/master/demos/Loko 11:21:41 I've been using it to teach introductory programming to middle-schoolers 11:21:59 Nice, I'll check it out when I get off my couch. 11:22:00 we started with BASIC, now Logo and perhaps eventually I'll teach 'em Forth 11:22:17 haha nice name for it 11:22:46 cool, could be something for my daughter down the line. 11:23:53 how old is she? 11:23:56 I'm on my ipad atm (which could use a port of Forth) but I'll check the games out later tonight. 11:24:01 2 years 11:24:24 haha- yeah, probably not ready for programming just yet. :) 11:24:45 to build my toolchain and everything you just need java and ant 11:24:49 I guesa she should learn to read and write first ;-) 11:24:56 let me know if you have any trouble 11:24:57 what is ant? 11:25:10 ant is a build tool for java, sort of like make 11:25:11 --- quit: ASau (Remote host closed the connection) 11:25:17 I'm on OSX normally 11:25:20 oh ok 11:25:41 --- join: ASau` (~user@46.115.105.148) joined #forth 11:25:41 --- mode: ChanServ set +v ASau` 11:25:45 macs have java and ant installed out of the box, although it may need to "install" javac the first time you use it 11:25:49 should be pretty painless 11:25:51 How long have you been a Fort devotee? 11:25:53 I'm on OSX as well 11:26:01 maybe two years or so? 11:26:31 What languages did you use before that? 11:26:48 mostly Java- it's still among my favorite languages 11:26:59 :-) 11:27:09 Java is not beautiful, but it's sturdy. Good cross-platform support, good libraries, good tooling 11:27:18 I have never used it but java looks awful 11:27:23 yeah 11:27:29 it's not for everybody 11:27:56 I guess Java and c++ are two of the most used programming languages oit there 11:28:06 s/oit/out 11:28:17 most likely 11:28:54 I enjoy the fact that I can (and do!) write code in Java and have it work on android devices, macs, linux machines and even some toy mp3 players 11:29:28 Yeah, that's one of Javas strengths 11:29:45 IHave you played Minecraft? 11:29:49 yes 11:30:10 a good example of how in the right hands Java can be great for writing games, too 11:30:11 I was blown away when I learnes it was written in Kava 11:30:15 Java 11:30:21 yeah 11:30:30 the other big Java game was RuneScape 11:30:41 damn touch keyboard 11:30:57 Oh that was Java too huh 11:31:10 used to play it with my kid brother 11:32:32 So, back to Forth. which version should I use? 11:32:55 I found one called pforth that built without and problem 11:33:09 couldn't get gforth to build 11:33:12 I have heard people say good things about that 11:33:33 I use gforth on my machine, but it's been a while since I updated 11:33:41 I installed it via darwinports 11:33:47 er 11:33:47 oh 11:33:47 macports 11:33:58 I tried to build from src 11:34:02 myself 11:34:27 if you have a package manager it can save you a lot of hassle 11:34:42 hmm, I'd better get my ass upstairs to my mac. gimme one minute 11:34:52 * RodgerTheGreat starts a timer 11:35:05 gotta pee too 11:35:14 cancel that timer! ;-) 11:38:13 there 11:38:21 Finally a real keyboard :D 11:38:36 glorious 11:39:22 What attracted you to Forth? Are you an old-timer or are you a young person? :D 11:39:30 I am 31. 11:39:37 I'm 24 11:39:42 "young" 11:39:50 1F in hex according to forth :D 11:40:37 I like forth because I appreciate simplicity 11:41:05 Same here, I sometimes appreciate doing something within a terminal because of the simplicity and power. 11:41:21 Nothing against a fancy GUI but sometimes it's nice with a scaled down environment to work in. 11:42:02 you'd probably like loko too, then 11:43:36 the examples at the bottom of the Loko page looks a lot like Forth. 11:43:42 to my untrained eye that is... 11:44:02 well, logo is prefix whereas forth is postfix 11:44:07 I have actually been thinking that I should teach my daughter programming from an early age, and that Logo would be my first choice. 11:44:40 logo is good because you can use the turtle to get beginners to reason from the computer's perspective 11:44:59 it's easy to imagine yourself as the turtle, following instructions one at a time 11:45:04 Yeah 11:45:16 and then gradually you can work up to fairly sophisticated stuff 11:45:23 it is, after all, a lisp on the inside 11:45:34 I wish my dad was interested in computers when I was a kid. 11:45:44 he went with pure electronics instead. 11:45:54 HAM radio and stuff. 11:45:57 I started my classes with a TinyBASIC because it is syntactically and semantically even simpler than Logo 11:46:25 I think exposing them to a variety of genuinely different ideas will provide a better base for the real skills of programming 11:46:49 learning to program and learning a specific language are almost entirely orthogonal, they just tend to be taught at the same time 11:47:10 Yeah 11:47:18 I can program in my head 11:47:26 but sometimes a languages syntax get in the way 11:47:56 I think Forth could be a good beginner's language, but I am concerned that some of the kinds of mistakes you're allowed to make would be too punishing/confusing 11:48:03 like C, I had to look up everything all the time. No time for me to focus on what I was trying to accomplish(print some words, fetch some words and compare them to an array etc). 11:48:26 I have been toying with the idea of creating a forth dialect specifically meant for beginners 11:48:37 with more run-time checks and more detailed error messages, etc 11:48:42 Yeah 11:49:06 Perhaps being able to turn that mode on and off. 11:49:27 So when you get more advanced you can just turn it off and not be bothered by it if you want to do more advanced stuff. 11:49:45 yeah 11:49:46 but I guess it would be hard since Forth doesn't seem to have much of a syntax to begin with. 11:50:52 I think it's a tractable problem 11:51:19 had to look that word up ;-) 11:51:29 mainly I want to prevent things like accidentally overwriting part of the dictionary, catching potentially infinite loops, etc 11:51:36 yeah 11:51:41 many general classes of errors have simple means of prevention 11:51:57 but I assume you can't crash the host via random writes to memory? 11:52:04 like you could on a machine with no OS on it. 11:52:33 I was thinking I'd just implement a simple memory protection mechanism 11:52:59 so that ! and @ would internally do some checks before doing anything 11:53:23 it would slow the system down quite a bit, but forth is way faster than it needs to be for beginners anyway 11:53:29 True 11:53:43 uhm but are check neccessary for @? It only fetches data right? 11:53:46 --- quit: MayDaniel (Read error: Connection reset by peer) 11:53:48 *noob warning* 11:53:57 correct, @ only fetches data 11:54:06 ! is the real danger 11:54:16 so putting the checks only on ! would negate some of the slow down. 11:54:35 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 11:54:35 --- mode: ChanServ set +v MayDaniel 11:54:35 I am just thinking out loud here, not meant to disrespect you. 11:54:48 I'm in no way offended 11:55:02 but in general I'm not at all concerned about performance 11:55:35 How fast or slow is Forth on a modern computer? 11:55:50 depends on the forth but in general pretty damn fast 11:55:52 delurk: there are a lot of integers that could pass for pointers though, so i don't see how such checks could be made reliable without some sort of tagged word system. 11:55:54 it won't beat C or C++ ofc but… compared to Python, Java or something like that 11:56:01 much like modern computers in general 11:56:13 koisoke_: my thoughts exactly 11:56:48 that's why I was thinking about writing a VM with a tagged architecture rather than trying to extend something like gforth 11:57:48 then you could even do things like tag rstack values for calls to allow you to easily unwind the stack directly and differentiate between temporary values and the calls 12:01:16 tagging everything one ends up with a colorforth that extends the tags from compile time into runtime, which is somthing that has been on my todo list for longer than i care to admit... 12:01:41 --- nick: ASau` -> ASau 12:03:17 koisoke_: the two main uses I've come up with for meta-bits are distinguishing between values and pointers, and making "symbols" (as provided in many scripting languages) which cannot be accidentally confused with numbers 12:03:22 I'm sure there are many more 12:03:53 the rudiments of a type system without dragging in too much baggage 12:05:06 and then you just need a pair of primitives for splitting a value into the "meta" half and the "value" half, and combining a pair of values to go the other way 12:05:33 to go the other way? 12:05:48 smashing a desired set of meta bits onto a value 12:06:16 should only be necessary for ffi if everything in the world is tagged? 12:06:56 and very occasionally in places like compiler internals 12:08:15 basically I'm imagining a system where every word in memory or on the stack has meta bits which are persisted around transparently and generally ignored, but which can be queried or set for special purposes 12:09:51 "memory protection" mechanisms and so on built in this fashion would not be secure per se but could be made much more resilient to human error 12:10:12 the latter, I think, has some value 12:15:22 koisoke_: see what I mean? 12:18:59 yes. have toyed with the idea of splitting up the tags and non-meta parts of each word, so eg for each 4kB page on a 32-bit arch there would be 768 8-bit tags, 256 bytes for GC scratch area or whatever, and 768 words (non-tag parts) 12:19:41 that's an interesting approach 12:22:03 this probalby premature optimization, but i have also toyed with interleaving the tags bits, so the first byte of a tag word would have the low two bits of four tags, so for the most common cases the types of the next four words would be apparent from one byte, which is small enough for a jump table 12:22:36 hmm 12:23:19 have not implemented this yet so i'm not confident saying it works efficiently in actual practice 12:31:13 *building gforth via macports* 12:32:14 blech: Error: org.macports.build for port gtkspell2 returned: command execution failed 12:42:16 So, while I sort out the macports issue: Any good tutorials for Forth that are reasonable up-to-date or current? 12:43:00 And is there any software written in Forth that one should know about - not counting embedded stuff. 12:50:43 --- join: I440r (~zhiming@21.sub-70-194-83.myvzw.com) joined #forth 12:50:44 --- mode: ChanServ set +o I440r 13:38:33 --- join: tathi (~josh@dsl-216-227-118-13.fairpoint.net) joined #forth 13:38:33 --- mode: ChanServ set +v tathi 13:52:20 --- join: rbarraud (~rbarraud@118-92-86-179.dsl.dyn.ihug.co.nz) joined #forth 13:52:20 --- mode: ChanServ set +v rbarraud 14:18:53 --- join: Nisstyre-laptop (~yours@oftn/member/Nisstyre) joined #forth 14:18:53 --- mode: ChanServ set +v Nisstyre-laptop 14:32:07 --- join: Onionnion (~ryan@adsl-68-254-160-140.dsl.milwwi.ameritech.net) joined #forth 14:32:07 --- mode: ChanServ set +v Onionnion 14:35:59 --- quit: tathi (Quit: leaving) 14:39:00 --- quit: MayDaniel (Read error: Connection reset by peer) 14:40:42 --- quit: rbarraud (Read error: Connection reset by peer) 15:20:38 --- join: epicmonkey (~epicmonke@188.134.41.172) joined #forth 15:20:38 --- mode: ChanServ set +v epicmonkey 15:41:48 --- quit: epicmonkey (Ping timeout: 264 seconds) 15:53:33 --- quit: Onionnion (Remote host closed the connection) 16:01:49 --- quit: karswell (Read error: Operation timed out) 16:07:47 --- join: karswell (~coat@93-97-29-243.zone5.bethere.co.uk) joined #forth 16:07:47 --- mode: ChanServ set +v karswell 16:36:55 --- join: ASau` (~user@46.115.54.12) joined #forth 16:36:56 --- mode: ChanServ set +v ASau` 16:40:10 --- quit: ASau (Ping timeout: 250 seconds) 18:41:58 --- join: Onionnion (~ryan@adsl-68-254-160-140.dsl.milwwi.ameritech.net) joined #forth 18:41:58 --- mode: ChanServ set +v Onionnion 19:30:42 --- quit: Nisstyre-laptop (Remote host closed the connection) 19:37:13 --- join: Nisstyre-laptop (~yours@oftn/member/Nisstyre) joined #forth 19:37:13 --- mode: ChanServ set +v Nisstyre-laptop 20:22:24 --- quit: Onionnion (Remote host closed the connection) 20:31:08 --- quit: RodgerTheGreat (Quit: RodgerTheGreat) 23:16:14 --- quit: Nisstyre-laptop (Ping timeout: 250 seconds) 23:44:56 --- quit: Nisstyre (Quit: Leaving) 23:55:12 --- quit: ASau` (Ping timeout: 240 seconds) 23:59:59 --- log: ended forth/12.12.10