Hey, thanks. Yeah, I haven't yet fully explained all of the simulator.
0xfe is a random number - a new random byte is generated on every instruction.
0xff contains the ASCII code of the last key pressed.
My simulator is adapted from the one at http://6502asm.com/beta/index.html - that has a help screen with some more info. I mostly cleaned up the (atrocious) JavaScript and added a memory monitor and disassembler (and implemented a few instructions they'd left out).
I didn't get very far with it though - the combined issues of JavaScript's lack of tail-call optimisation and its verbose lambda syntax made building streams to painful.
This looks like an interesting approach, though you'll never get around JS's heavy lambdas (unless you use CoffeeScript or something).
Cheers. I guess you could call it an internal DSL, but I wouldn't call it an interpreter - all it's manipulating is the arguments object, it doesn't manipulate any strings. I'm sure string manipulation isn't the only thing that identifies an interpreter, but it doesn't seem like that to me.
I'd recommend coming back and reading it when you've learned a bit more Ruby then. If you've "just started" then you probably don't yet have the experience in Ruby to understand what it means.
I understand that at a first glance this looks like basic stuff that doesn't explain anything useful, but with a bit more experience you'll see that it's fundamental to understanding how Ruby will react in certain situations.
It's a bit like saying "I see a lot of women have jobs these days - does that mean that feminism is more than just a fad?" You're not going to get any helpful responses if you ask something inflammatory (and I think it shows maturity that no-one's flamed you).
Anyway, what would you gain from asking a bunch of Ruby developers whether Ruby is "just a fad"? This is hardly the best venue for that question.
Incidentally, I didn't downvote you, just thought I'd try to explain why nobody responded to you.
It's essential to know this stuff to really understand how Ruby works. If you want to know which method is going to get called then you need to grok the object model. Classes in Ruby are much more than "fancy structs with allocation", and thinking of them in that way means you'll be losing out on a lot of Ruby's power.
Completely OT, but when I saw your comment, I new I recognised your handle, but couldn't think why. I finally worked it out though - you answered my first ever Stack Overflow question in 2009! http://stackoverflow.com/questions/418465/is-a-preference-fo...
What an arrogant comment. If you'd read the post, you would have seen that I said it's often not the bottleneck, but there are times when you need to get stuff out of your head as quickly as possible.
This "typing is not the bottleneck" is such a cliché - I nearly wrote about it in the article. It presupposes that programming is some kind of pipes-and-filters activity where we're thinking and then typing and then compiling. I don't know about you, but when I'm programming I work in different states. Sometimes it actually is about getting the code into the computer as fast as possible. Not all the time, but sometimes.
It's probably worth clarifying here that touch-typing is different to typing-without-looking-at-the-keyboard-(much). As knowtheory said, many presume that they're the former, when they're actually the latter.
Haha I love "little laptop pixies" :) That's exactly what I was talking about.
I think I'm going to have to get this TECS book (no pun intended) - it sounds just what I'm after. Need to finish SICP first though :P Not enough hours in the day.
Interesting. Yes, I came a similar route - no CS background. I read ESR's TAOUT [0], which assumes quite a high level of Unix knowledge - I'd love a book at that level!
I've been toying with the idea of a series of blog posts (or possibly even a separate site) that give a bottom-up explanation of all the stacks we work with - starting with electronics => circuits => computers => programming languages. It would be a way of teaching myself the material and provide a useful resource to others.
Just so people know, I'm not talking Rails magic here - more the idea that there's stuff we don't understand that's going on that to all intents and purposes is magic. In other words:
> anything below your current level of abstraction that you don’t understand
0xfe is a random number - a new random byte is generated on every instruction.
0xff contains the ASCII code of the last key pressed.
My simulator is adapted from the one at http://6502asm.com/beta/index.html - that has a help screen with some more info. I mostly cleaned up the (atrocious) JavaScript and added a memory monitor and disassembler (and implemented a few instructions they'd left out).