00:00:00 --- log: started forth/13.01.27 00:01:35 --- join: tgunr (~davec@cust-66-249-166-11.static.o1.com) joined #forth 00:56:51 --- join: epicmonkey (~epicmonke@188.134.41.175) joined #forth 01:13:19 --- quit: Nisstyre-laptop (Ping timeout: 246 seconds) 02:11:31 --- quit: tangentstorm (Ping timeout: 240 seconds) 02:24:35 --- join: tangentstorm (~michal@108-218-151-22.lightspeed.rcsntx.sbcglobal.net) joined #forth 02:32:27 --- quit: tgunr (Quit: Nity nite) 02:36:42 --- join: JDat (JDat@89.248.91.5) joined #forth 03:32:49 --- join: MayDaniel (~MayDaniel@unaffiliated/maydaniel) joined #forth 03:38:10 --- join: t4nk833 (569c928d@gateway/web/freenode/ip.86.156.146.141) joined #forth 04:03:55 --- quit: epicmonkey (Ping timeout: 256 seconds) 04:14:34 --- quit: karswell (Read error: Connection reset by peer) 04:15:37 --- join: karswell (~user@93-97-29-243.zone5.bethere.co.uk) joined #forth 04:27:22 --- quit: Bahman (Remote host closed the connection) 04:44:52 --- quit: t4nk833 (Ping timeout: 245 seconds) 05:02:51 --- quit: ASau (Ping timeout: 256 seconds) 05:32:35 --- quit: tangentstorm (Ping timeout: 256 seconds) 05:45:36 --- join: tangentstorm (~michal@108-218-151-22.lightspeed.rcsntx.sbcglobal.net) joined #forth 05:46:31 --- join: ASau (~user@46.115.52.76) joined #forth 06:21:35 --- join: kbmaniac (~dave@host86-182-38-231.range86-182.btcentralplus.com) joined #forth 06:22:13 --- quit: kbmaniac (Client Quit) 06:22:40 --- join: kbmaniac (~dave@host86-182-38-231.range86-182.btcentralplus.com) joined #forth 06:30:59 --- quit: kbmaniac (Ping timeout: 252 seconds) 06:56:30 --- quit: protist (Ping timeout: 240 seconds) 07:13:58 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 07:39:14 --- join: IAmHere_ (~IAmHere@c-75-70-11-91.hsd1.co.comcast.net) joined #forth 07:42:23 --- quit: IAmHere (Ping timeout: 256 seconds) 07:42:24 --- nick: IAmHere_ -> IAmHere 07:46:02 --- join: ncv (~quassel@89.35.216.197) joined #forth 07:46:02 --- quit: ncv (Changing host) 07:46:02 --- join: ncv (~quassel@unaffiliated/neceve) joined #forth 07:55:16 --- join: IAmHere_ (~IAmHere@c-75-70-11-91.hsd1.co.comcast.net) joined #forth 07:57:38 --- quit: IAmHere (Ping timeout: 255 seconds) 07:57:38 --- nick: IAmHere_ -> IAmHere 08:18:21 --- join: RodgerTheGreat (~rodger@71-13-215-242.dhcp.mrqt.mi.charter.com) joined #forth 08:31:35 --- join: proteusguy (~proteusgu@ppp-58-8-103-13.revip2.asianet.co.th) joined #forth 09:09:39 --- quit: protist (Ping timeout: 276 seconds) 09:43:14 --- join: tgunr (~davec@cust-66-249-166-11.static.o1.com) joined #forth 09:45:49 whatever happened to a nannie I wonder 09:46:00 er anannie 09:51:19 I was kinda wondering that too 09:51:25 I think she was on like a week ago 09:55:06 --- part: kc5tja left #forth 10:07:59 --- join: Nisstyre-laptop (~yours@oftn/member/Nisstyre) joined #forth 10:38:51 --- quit: proteusguy (Ping timeout: 264 seconds) 10:42:22 --- join: Onionnion (~ryan@adsl-68-254-167-191.dsl.milwwi.ameritech.net) joined #forth 10:51:41 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #forth 11:31:41 --- quit: Nisstyre-laptop (Read error: Connection reset by peer) 11:54:52 --- join: I440r (~zhiming@220.sub-70-194-131.myvzw.com) joined #forth 11:54:52 --- mode: ChanServ set +o I440r 12:11:31 --- quit: Onionnion (Quit: Leaving) 13:09:53 --- join: kbmaniac (~dave@host86-182-38-231.range86-182.btcentralplus.com) joined #forth 13:10:30 --- join: kumool (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #forth 13:12:45 --- quit: kumul (Ping timeout: 260 seconds) 13:30:50 --- quit: kbmaniac (Ping timeout: 260 seconds) 13:59:20 --- join: Onionnion (~ryan@adsl-68-254-167-191.dsl.milwwi.ameritech.net) joined #forth 14:02:50 --- join: protist (~protist@125-237-130-19.jetstream.xtra.co.nz) joined #forth 14:04:10 --- join: nys (~YXWX@blk-142-60-139.eastlink.ca) joined #forth 14:04:45 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #forth 14:07:35 --- quit: kumool (Ping timeout: 260 seconds) 14:09:55 --- quit: kumul (Ping timeout: 260 seconds) 14:23:01 --- quit: MayDaniel (Read error: Connection reset by peer) 14:28:56 ok 15:16:13 --- quit: JDat (Quit: Rīt uz darbu mļē!) 15:27:27 --- quit: ncv (Remote host closed the connection) 17:24:02 Trying to learn Forth but somehow struggling with the usage of pointers and the return stack.. 17:26:54 dont think of ANYTHING as a pointer 17:26:57 its just an address 17:27:12 its not like on C where pointers are a complete and utter nightmare 17:27:14 its very simple 17:27:22 where areyou haveing problems 17:27:35 and which forth are you using 17:27:43 if your using gforth then THAT is your problem 17:28:01 you dont stand a snowball's chance in HELL of ever learning how forth works by using gforth 17:28:10 not in a million fucking years 17:30:46 I440r, oops :P 17:31:03 blame RodgerTheGreat, he said it's fine 17:32:02 its not fine. the things you need to learn in order to FULLY understand the language are BURIED inside obfuscated horrendously bloated C sources 17:32:49 I440r, so what do you suggest I use? 17:32:51 you will never learn forth using gforth. you might learn how to do "hello world" or do loops or bigin/until etc etc but you will NEVER learn the internal workings of a forth system 17:33:09 i would suggest my own forht compiler and turn your back on the ans standard for good 17:33:17 yeah I'm on Chapter 5 of Starting Forth 17:33:33 i highly recommend that anyone learning forth STOP using any forth written in C, and stop using any ans forth system 17:34:10 why? Isn't ANS just like a standard? 17:34:40 ans forth is a camel. i.e. a horse designed by a committee 17:34:54 i have far far far too many gripes with the ans standard to state here 17:35:05 but we can begin with postpone and invert 17:35:29 was that a typo, I440r ? or is your forth compiler called forht ? 17:35:36 what's to gripe about invert? 17:35:40 i look at ans forth sources and within a few seconds my mind rejects them in the same way my mind rejects C sources 17:36:09 the 79 standard had a broken definition for the word NOT. the definition for not was identical to the definition for 0=. i.e. not was NOT a 1's complement 17:36:15 the 83 standard FIXED THIS 17:36:31 the ans team refused to define NOT because that would break one or other source base 17:36:35 dumb 17:36:41 isforth 17:36:51 i cant type for shit lol 17:37:12 isforth is your compiler? heh I just looked at different compilers like that one a sec ago 17:37:21 invert is a limp wristed "we dont want to make anyone have to actually EDIT their sources" 17:37:24 isforth is mine 17:37:40 What is it written in? 17:37:44 assembler 17:37:59 nasm x86 assembler for the forth kernel 17:38:42 my biggest peve against ans however is "postpone" 17:38:48 read my sources to see why. 17:39:02 its another exscuse to relieve you of any responsibility of learning the language 17:39:11 and its a flawed concept from the start 17:39:22 its to help you not have to know what words are and are not immediate 17:39:34 because the ans standard refused to define which woulds should and should not be immediate 17:39:56 in a flawed attempt to make all ans sources portable 17:40:02 which they CAN NOT BE 17:40:38 which is why any "portable" forth sources are chock full of conditional compilations, duct tape "this is missing in these forths" definitions 17:40:43 and are totally un fucking readable 17:42:05 --- join: kumul (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #forth 17:42:10 I'm taking a look at isforth now 17:42:26 im working on fixing the debugger for isforth 17:42:29 not so yu can debug 17:43:02 the primary reason for its existance is so that a beginner can see visually exactly how forth sources work. 17:43:07 at run time i mean 17:43:18 also, it will be very good for actually debugging code :) 17:44:31 I440r, I followed the readme, I do have nasm installed and running make and ./extend went just fine but it crashes on opening 17:44:51 what distribution are you running 17:45:04 i need to add a new section to my readme about this 17:45:24 it crashes when you type ./isforth ? 17:45:31 I440r, be ashamed at me but Xubuntu (the only *buntu I find actually decent good) 17:45:31 yes 17:45:35 any error messages about "uniknown terminal" ? 17:45:44 yes: Unknown TERM: /usr/share/terminfo/x/xterm 17:45:47 I do have xterm, though 17:45:51 mv /var/lib/terminfo/* /usr/share/terminfo/ 17:46:18 mv? sounds dangerous. why not just cp 17:46:33 debian based distributions STUPIDLY refuse to move the most common terminfo database files OUT of /var/lib and into their correct location of /usr/share/terminfo 17:46:47 their rationalization for this is "We want terminfo to work when /usr is not mounted" 17:46:55 well. its not POSSIBLE to not mount /usr 17:47:03 has not been a few years 17:47:14 because theres no reason not to move them 17:47:34 they should not be in /var/lib, they should be in /usr/share. 17:47:44 There is no terminfo/ in /var/lib 17:47:50 erm 17:47:57 not /var/lib 17:48:19 let me get the right path i can never rememer what it is 17:49:05 crap i cant launch my vm i hate this shit virtualbox breaks every time update anything. kinda sucks gimme a min or 2 i know the fix 17:49:36 it might be /lib/terminfo 17:49:39 does that exist? 17:49:42 if so 17:49:50 mv /lib/terminfo/* /usr/share/terminfo/ 17:49:58 then isforth will work for you 17:50:37 yup got it 17:50:47 working 17:51:10 you can try ./isforth -fload src/examples/dots/wmdots.f 17:51:18 or ./isforth -fload src/examples/wintst.f 17:51:40 for dots you would run main and for wintst i forget but ill look 17:52:24 guess both of them are main 17:52:46 heh this is nice, yeah definitely better than gforth 17:52:57 but how does it make a difference with using pointers and the return stack 17:53:01 and when you look at the soruces for a given definition 17:53:06 the chances are the SOURCES ARE COMMENTED 17:53:20 what dont you get about the return stack 17:53:24 explain your confusion 17:53:35 in gforth when you have : blah xxx yyy zzz ; 17:53:51 on entry into blah you CANNOT ever guarantee that the top of the return stack is the return address from blah 17:54:07 you can always guarantee that it is the return address in isforth 17:54:49 wintst is a reference example for how to use my text user interface for your applications 17:55:10 including a full windowing system and pulldown menus and scrolling of windows in ANY direction 17:55:30 huh 17:55:36 overlapping movable windows. something you cannot very easilly do with ncurses if at all 17:55:51 so basically gforth handles pointers horribly 17:55:58 stop calling them pointers 17:56:11 thats just adding extra confusion factor 17:56:35 address*? 17:56:39 yes 17:56:52 forth uses various addresses like CFA = code field address 17:56:59 the cfa of a word is its entry point 17:57:09 NFA is its name field address 17:57:12 etc etc 17:57:22 those are the two primary ones yu need to understand for now 17:57:45 in isforth all colon definitions are arrays of addresses of words. i.e. arrays of CFA's. 17:57:54 do you know x86 asm? 18:00:06 yes? no? maybe? 18:00:08 no, the language I know most and started with is Python and I'm trying to jump into others now, Forth to help with concepts such as good engineering and design 18:00:41 well if you read the sources to isforth you wont have too much trouble understading them 18:00:45 even without knowing x86 18:00:54 but i can give you some background 18:01:06 forth has 2 different types of word (not like data types) 18:01:18 the first word type is one called a coded definition 18:01:25 a coded definition is written in assembler 18:01:52 I440r, good commenting in the source, nice 18:01:54 usually an asm subroutine ends with a RET (meaning return) opcode. in isforth all coded definitions end in whats called a NEXT 18:02:04 all coded definitions end in NEXT 18:02:43 if you think of all forth words ALL forth words as "assembler opcodes for a virtual machine" then NEXT is "execute the next virtual opcode" 18:02:58 ok. so an example of a coded definition is + (plus) 18:02:59 code + 18:03:04 pop eax 18:03:07 add ebx, eax 18:03:09 next 18:03:24 in isforht EBX is a cached top of parameter stack. its an optimization i use 18:03:48 pop eax collects the second item on the parameter stack. then adds that to ebx (the top item) and then we do a next 18:03:57 which ill explan in a second 18:04:13 the second type of word is a COLON definition. because its defined using the word : (colon) 18:04:19 : foo xxx yyy zzz ; 18:04:29 a colon definition also has a CFA. an entry point. 18:04:40 the CFA of all words no matter what type is always asm 18:04:58 for a colon definition its a 1 liner opcode. a single opcode 18:05:03 foo: 18:05:06 call nest 18:05:08 dd xxx 18:05:12 dd yyy 18:05:15 dd zzz 18:05:18 dd exit 18:05:37 all colon definitions start with a call to nest and ill explain nest in a second 18:05:58 so.. forth uses one of the x86 registers as an opcode pointer. 18:06:09 dd xxx is one of the opcodes compiled into the definition of foo 18:06:22 IP (the interprative pointer) points to the dd xxx. 18:06:49 the word NEST made it point to that because it is the next thing in memory after the call to nest 18:07:07 so IP points to the xxx execution token as it is called 18:07:18 XTs can be though of as forth vm opcodes 18:07:26 NEST then executes a "next" 18:07:41 what next does is fetch the XT pointed to by IP and bumps IP to the next xt 18:07:55 sp we fetched the opcode for xxx and now IP points to the opcoe for yyy 18:07:59 we then JUMP to xxx 18:08:21 lets say xxx is a coded definition. it does what ever it does and then executes a NEXT 18:08:36 which fetches the YYY and points IP at zzz 18:08:45 lets say YYY is another COLON definition 18:09:12 this means that when we jump to YYY we execute the 1 liner assembler at the top of YYY 18:09:16 which is a call to nest 18:09:19 what nest does is this 18:09:29 1: push forths current IP onto the return stack 18:09:49 the POP the return address of the "call nest" opcode off the parameter stack (which is the processors stack) 18:09:49 a 18:09:56 and put this address in IP 18:10:17 so we execute each token of YYY till we get to the last token of yyy which is an EXIT token 18:10:28 exit pops the return address off the return stack back into IP 18:10:38 so now IP once again points to the token for zzz 18:11:04 wait how do I load files, like include foo.fs 18:11:10 * RodgerTheGreat is no longer afk 18:11:20 fload path/to/file.fs 18:11:26 i usually prefer just .f for forth files 18:11:37 nobody uses fortran anyway so im stealing that extension 18:12:05 but .fs will work because isforth requires you give the file name AND the extension 18:12:07 you can do 18:12:09 ./isforth 18:12:12 fload blah.fs 18:12:15 or you can do 18:12:24 ./isforth -fload blah.fs 18:13:41 so does Onionnion understand that every LOW level coded definition executes a NEXT so that the "next forht opcode is executed" is part of forths vm 18:14:02 I440r: I still vehemently disagree with your assertion that it is a good idea to teach someone new to forth with your weird and nonstandard forth. GForth is perfectly acceptable for all the material in Starting Forth and all the words in gforth work as described in Starting Forth 18:14:05 and that every COLON definition saves forths IP on entry into the definiton and then restores it on exit from the definition 18:14:36 RodgerTheGreat, 2 weeks spent learning MY forth does not prevent you later learning any ans forth 18:14:43 sure 18:14:57 6 months of hard study of gforth will teach you FUCK ALL about the internal workings of ANY forth system 18:14:59 but any confusion caused by differences between your forth and the book is not conducive to learning 18:15:09 be it direct, indirec, subroutine or whatever threading 18:15:22 the book is not THE book 18:15:31 the ans standard is NOT the be all/end all of forth 18:15:37 somebody reading starting forth doesn't need to know a goddamn thing about threaded code 18:15:46 bullshit 18:15:57 you are massively delusional 18:16:14 anyone learning forth will be as sucking at forth as everyone is at C 18:16:25 simply for not knowing how forth works internally 18:16:33 forth has NO SYSTEM> NO USER. it has FORTH 18:16:36 there is no spoon 18:16:47 ans forth separates forth into system words and user words 18:16:58 something i am diametrically opposed to. 18:17:32 a complete understanding of every aspect of ever word in EVERY FORTH dialect is not that big a deal 18:18:00 http://xkcd.com/386/ 18:18:07 5 years of studying the Gforth sources will probably not help you one iota to understand how forth works 18:19:03 gforth was NOT written for a beginner forth user. if you are an experienced forth user gforth is fine. if you want to learn forth and learn it WELL gforth is useless to you 18:19:21 isforth primary reason for existing is to help a beginner in forth learn the ins and outs of the language 18:19:34 learn how forth operates internally. something you CANNOT learn by reading fucking C sources 18:19:36 period 18:19:42 fuck eveyr forth compiler ever written in C 18:19:47 every 18:20:26 isforths sources are clean. clear, well commented and easy to fucking read 18:20:43 you don't even believe it's possible to use C as a language to bootstrap a forth which is silly 18:20:56 its possible. its stupid 18:20:58 it obfuscates 18:21:07 it's portable 18:21:12 or can be 18:21:36 meanwhile your forth can't even run on a different *nix kernel than the one you developed against 18:21:44 and its NOT necessary 18:21:53 and your point is? 18:22:21 it was designed to be a master of ONE system. not a jack of all 18:22:28 i.e. i took the SIMPLEST solution to the problem 18:22:36 what a beginner needs is a forth which uses the same vocabulary as the documents they are using to learn and the forth has to be able to run on their computer, period 18:22:46 not a bloated pile of shit obfuscated can of wormds gordian knot "i work everywhere" source tree 18:22:53 JS-Forth and GForth both do a great job of suiting both of those needs 18:23:30 and like i said. they will learn for/next/begin/while/repeat/do/loop and all the easy peasy biggner stuff 18:23:39 they will not learn a damned thing about how forth works 18:23:40 writing some code in forth is important before learning all the internals will even help 18:23:59 and my point is who gives a shit 18:24:02 gforth is a horrendously over engineered pile of bloated shit 18:24:15 you want to use gforth go ahead knock yourself out 18:24:23 you want to learn forth use something thats easy to read 18:24:30 it's like saying "oh, you want to program a computer? Well first you're gonna need to learn about doping silicon to make transistors. Otherwise you won't understand anything." 18:24:33 fucking FPC for dos is superior to gforth in that regard 18:25:01 turns out programming doesn't have jack shit to do with transistors or silicon- they are an implementation detail 18:25:11 RodgerTheGreat, close. i have said for over 20 years that if iwere dictator of the unverse the first law iwould enact would require that ANYONE wanting to be a computer programmer 18:25:34 must first serve an apprenticeship of 10 years minimum during which time they may not code in any language other than pure assembler 18:25:48 haha oh lord 18:26:14 understanding how the processor works being the point 18:26:25 well as an educator who teaches introductory programming classes I'm glad you will never be a dictator of the universe. 18:26:50 learning assembly has value, but is not vital to understanding how to program any more than any other language 18:26:57 right. go ahead and teach things like java to the beginners so they learn BAD programming practices from the get-go 18:27:09 and never have any understanding of how computers work 18:27:11 the language doesn't fucking matter 18:27:16 the computers don't fucking matter 18:27:17 says you 18:27:26 How computers work? Which computers? 18:27:32 learning to program and learning a language are orthogonal 18:27:56 Not *quite* orthogonal, RodgerTheGreat, but very close. 18:28:11 ttmrichter, pic. avr, 8051, 6502, z80, 8086/8088, 386, pentium, i7, amd, whatever 18:28:37 So a very limited set of computers, then. 18:28:40 ttmrichter: learning a concrete language, ANY language, is helpful to learning the way of thinking involved in programming, but I don't think particular languages are very important 18:28:46 no. my list was not exhaustive 18:28:48 --- join: jdavidboyd (~user@72.185.97.240) joined #forth 18:28:50 RodgerTheGreat: There I agree. 18:29:08 I440r: You're talking only about digital computers built on the Von Neumann model. 18:29:15 BASIC, Pascal, Prolog, FORTRAN, Java, C, Forth, even PHP can be a gateway to learning to program 18:29:36 Mine was BASIC, RodgerTheGreat, but I'm teaching a couple of teens Prolog as their first language. 18:29:46 sounds like a challenge 18:29:47 --- join: Nisstyre (~yours@oftn/member/Nisstyre) joined #forth 18:29:53 my first language was BASIC 18:29:55 Actually they took to Prolog instantly. 18:30:08 I've had pretty good experiences teaching kids with BASIC 18:30:16 I think the declarative subset of Prolog is a better choice for a first language than BASIC. 18:30:24 they outgrow it in a few weeks and start wanting something more powerful 18:30:56 BASIC is very easy for beginners to read and execute by hand, and it operates at a fairly low level of algorithmic/data abstraction 18:31:13 it gives a sense of how simple the things are that computers know how to do on their own 18:31:18 ttmrichter, the 8051 is harvard architecture not von neumann 18:31:36 and x86 is now also harvard architecture almosy 18:31:38 almost 18:31:41 Harvard is a modified Von Neumann. Same family. 18:32:20 --- quit: Nisstyre_ (Ping timeout: 252 seconds) 18:33:10 I also think BASIC can be a good way to teach structured programming 18:33:38 in my opinion the best way to get kids not to write spaghetti code is to allow them to write some and see for themselves how confusing it becomes 18:33:51 it makes the lesson more concrete than just saying "don't do this because it's bad" 18:34:04 I tend to agree with letting them learn by (controlled) error. 18:34:09 RodgerTheGreat, i disagree. example by bad example is not a good teaching method 18:34:13 show the GOOD way first 18:34:19 then show the bad way and let them see why its bad 18:34:27 they won't see why it's bad 18:34:36 which is why you are there 18:34:44 let them encounter a problem, think about it, and then present a new approach or tool to solve that problem 18:34:50 teaching by bad example does nothing but propogate the bad examples 18:34:56 wrong 18:35:03 people learn their first examples 18:35:39 I have taught structured programming first, and then my students spend the rest of the course getting confused by blocks 18:35:50 --- quit: Nisstyre (Ping timeout: 255 seconds) 18:35:55 if they do not understand why X is bad and Y is good then showing then X just makes them code like X. show them Y and give them nothing but GOOD example code 18:36:14 I have taught line numbers and gotos first, and in those classes when we get to a curly-bracket language the purpose and nature of the constructs is clear to every student 18:36:33 It's always fun watching people who think students can learn from the mistakes of others. 18:36:39 there is nothing wrong with line numberes OR goto 18:36:49 line numbers are addresses. gotos are just jumps 18:37:02 --- join: Nisstyre (~yours@oftn/member/Nisstyre) joined #forth 18:37:07 its the doing nothinb but goto x goto y goto z all over the place that makes goto bad 18:37:09 ttmrichter: it's not about showing them a bad way and then fixing it. It's about allowing them to find a bad way and then showing them a better alternative 18:37:39 teaching them to explore and evaluate alternatives 18:37:41 RodgerTheGreat: I know. I was directing that comment at I440r with his religious belief in people learning from only being shown the right way. 18:37:57 * ttmrichter is an educator too, RodgerTheGreat. ;) 18:38:16 In my very first class of every first-year course I tell them that one of the rules of my class is "make mistakes". 18:38:23 ttmrichter, go out on the net and download ANY c based source file/project. in 99.999999999999999% of the cases i would call the downloaded source files VERY bad example code 18:38:30 Not "mistakes are permitted" or "mistakes are OK" but that they MUST make mistakes. 18:38:31 if/and/but loops nested to the umpteenth level 18:38:37 ttmrichter: alright, I just wasn't really clear if you were agreeing with me or not so I was clarifying 18:38:37 unfactored code 18:38:44 mega sized functions 18:38:45 no comments 18:38:55 clusterfuck source formatting 18:38:58 bad examples 18:39:08 where do most people learn to code? from shit they downloaded 18:39:11 I440r: And this has absolutely nothing to do with how they learnt but, rather, that they DIDN'T LEARN. 18:39:12 ttmrichter: if you don't make mistakes, you do not truly understand the mistakes and thus you will not avoid them 18:39:31 ttmrichter, how can they learn. there are no examples of good practices 18:39:52 Of course. There's no examples of good practices. 18:39:54 RodgerTheGreat, how do you know they are mistakes unless someone explained it to you 18:40:09 its not like shooting yourself in the foot, thats instantly painful and you know it was a mistake 18:40:16 You're kind of missing the point here, I440r. 18:40:16 bad code looks file to the uneducated 18:40:26 when I learned BASIC, I read about how you didn't need line numbers but I liked them 18:40:28 You let the students make their mistakes. THEN YOU SHOW THEM WHY IT'S A MISTAKE. 18:40:35 then I wrote a 4000 line program and spent weeks debugging it 18:40:37 This is the WHOLE FUCKING POINT of the term "education". 18:40:51 We're not talking about "let the students make mistakes unto perpetuity". 18:41:04 We're talking about "let the students make mistakes so they can see WHY it's bad and WHY the alternative is better". 18:41:14 See the (not very fucking) subtle difference here? 18:41:15 and not just see but understand 18:41:27 hearing and understanding are different 18:41:46 if you tell people that X is bad, and that's all, at BEST they will memorize what you said 18:41:47 lol which is why 99.9999999999999% of the sources out there, SPECIALLY the ones created in acadamia are chock full of obfuscatted uncommented cluster fuck source files nested with if.and/but loops to the umpteenth level 18:41:48 right 18:41:54 they get taught why thats bad alright 18:42:20 if you do not understand how the processor works internally how the FUCK can you determine what is and is not a good practice 18:42:22 you cant 18:42:27 There is no fool as foolish as the one who refuses to learn. 18:43:10 ttmrichter, i challenge you to read the bible from which you are paraphraising and explain every single verse therein,,,, 18:43:24 you wont be able to even though you seek to learn you CANT without help 18:43:41 programming is not about CPUs for crying out loud. programming is about explaining how to do something precisely. 18:46:07 programming is about problem solving. learning to program is about learning to solve problems efficiently 18:46:43 either in the smallest space possible, shortest time possible or... most easilly understood/readable solution 18:47:05 people concentrate on the first two to the exclusion of the 3rd 18:47:24 when coding isforth my primary concern was the third. being easilly understood 18:47:29 gforth will never be that 18:47:43 its not its intent to be. its a reference forth for the ans standard 18:47:46 THATS IT 18:49:49 --- join: Nisstyre_ (~yours@oftn/member/Nisstyre) joined #forth 18:50:49 one of the things that makes forth as powerful as it is is the ease by which it can be totally learned. 18:51:01 a complete forth kernel can fit in 2k of code if its lean and mean 18:51:39 --- quit: Nisstyre (Ping timeout: 252 seconds) 18:52:18 pointing beginners towards gforth is doing them a disservice 18:53:53 but I'm just trying to learn Forth, that's all, not x86 yet and nor do I have the interest to learn the internals of Forth yet because I barely know it yet. Yes I will definitely do that when I want to possibly write my own forth in the future to learn how it works and such but for now, these extra things are irrelevant to my needs as a beginner learning just the language. 18:54:24 Onionnion, yes and no. you should be exposed to them while learning the basics 18:54:44 you cannot be exposed to them with gforth because gforth masks their workings inside C functions 18:55:12 you should not concentrate on how forth works internally, just USE forth to learn the basics and while being exposed to the internal workings thereof 18:55:24 using gforth will never give you that 18:56:05 if you do not know how forth words work internally you can never program in forth 18:56:15 because programming in forth is about EXTENDING forth 18:56:47 if you dont understand how the stuff that already exists works how the hell are you ever goint to be able to create your own creating words. your own does> words 18:57:24 gforth hides internal workings from you because a) its coded in C and b) because the ans standard separates user words from system words 18:57:32 isforth does not 19:04:45 --- quit: Onionnion (Quit: Leaving) 19:07:14 --- join: Onionnion|Eee (~ryan@adsl-68-254-167-191.dsl.milwwi.ameritech.net) joined #forth 19:38:59 --- join: cataska (~user@210.64.6.233) joined #forth 19:41:26 --- quit: Nisstyre_ (Ping timeout: 255 seconds) 19:42:44 --- join: Nisstyre (~yours@oftn/member/Nisstyre) joined #forth 20:25:00 --- quit: Nisstyre (Ping timeout: 260 seconds) 20:27:03 --- join: Nisstyre (~yours@oftn/member/Nisstyre) joined #forth 20:27:21 --- quit: nys (Quit: quit) 20:41:16 --- join: Nisstyre_ (~yours@oftn/member/Nisstyre) joined #forth 20:42:08 --- quit: Nisstyre (Disconnected by services) 20:42:16 --- nick: Nisstyre_ -> Nisstyre 20:46:47 --- quit: Nisstyre (Ping timeout: 252 seconds) 20:46:51 --- join: Nisstyre-laptop (~yours@oftn/member/Nisstyre) joined #forth 20:49:41 --- quit: Onionnion|Eee (Remote host closed the connection) 20:53:46 --- join: kumool (~Kumool@c-76-26-237-95.hsd1.fl.comcast.net) joined #forth 20:57:40 --- quit: kumul (Ping timeout: 260 seconds) 21:01:36 --- join: Bahman (~Bahman@bba141175.alshamil.net.ae) joined #forth 21:15:34 --- quit: jdavidboyd (Remote host closed the connection) 21:17:43 --- join: proteusguy (~proteusgu@180.183.51.66) joined #forth 21:20:24 --- quit: kumool (Quit: Leaving) 21:21:34 --- quit: proteusguy (Read error: Connection reset by peer) 21:23:12 --- join: proteusguy (~proteusgu@180.183.51.66) joined #forth 22:03:23 --- quit: RodgerTheGreat (Quit: RodgerTheGreat) 22:40:32 --- join: kbmaniac (~dave@host86-182-38-231.range86-182.btcentralplus.com) joined #forth 22:47:56 --- join: Nisstyre (~yours@oftn/member/Nisstyre) joined #forth 23:33:25 --- quit: kbmaniac (Ping timeout: 260 seconds) 23:38:16 --- quit: karswell (Remote host closed the connection) 23:59:59 --- log: ended forth/13.01.27