[snip]
So if I can presume some “nubys” out there think and experiment and
learn the way I do, I’d imagine IRB would be perfect for them as a
learning tool (perhaps, as has been noted, with --simple-prompt :).
…But, I don’t know what percentage of total nubys these people
represent.
An important point to note: when I said ‘nuby’, I was referring to people
who were both new to Ruby, and new to programming in general. (see topic of
this thread)
Ruby being your 4th or 5th (or more?) language, I just don’t think you
apply! You definitely aren’t my target audience… I’m afraid you’re
over-qualified for the position, sir. 
Well… yeahbut.
I was trying to focus on my 1st two languages
being of the interactive variety. I’ve long held the belief (or, at
least, strong suspicion) that programmers who don’t begin programming
in an interactive language, rarely seem to fully realize how many of
their questions can be answered while coding, just by “asking the
language”… because it’s 'way too much trouble to write little programs
to ask the question in a non-interactive language… And those habits,
from what I’ve seen, seem to be fairly tenacious…
In fairness, Ruby wasn’t my first language, either. I am basing this more
on my experiences teaching Ruby. As I said, confidence is a huge part of
successful learning, and understanding everything that’s going on is a huge
part of confidence. (I doubt either you or myself had any trouble with
confidence when learning Ruby.)
For the past couple weeks, off and on, I’ve been helping someone
learn Ruby, who is a novice programmer who a year or so ago had
taught herself enough Perl to write a 3000-odd line program, which
she doesn’t understand anymore… I’ve also been helping her with
some new Perl code she’s been writing. In both cases, Perl and
Ruby–she’s receptive to ideas such as coding unit tests first,
but the transition has so far been gradual–rather; she tends to
get stuck thinking she needs to test her whole program manually,
after having added some new lines of code to it. Well, the program
makes a socket connection and connects to a chat-like server and
acts as a little “bot” to auto-respond to people or various
transpiring events. The point is: I think, because she hasn’t
learned the utility of being able to treat an interactive language
interpreter as a sort of “Oracle” to which one can make inquiries
about whether the code one wants to write is correct, she thinks
she needs to add/modify her parser in the context of her whole
program, adding some new regexp that she (understandably) might
have some trouble arriving at the correct syntax - and the only
way she thinks she can test it is to run the whole program and
log it onto the chat room and try to have someone generate the
appropriate circumstances to get her regexp to trigger… and
then it doesn’t work. . . . . And I’ve been encouraging her to
leave an IRB window open, and hoping to persuade her it might
be worthwhile to test out her regexp syntax (for example) there
in IRB, since she can get so much more instant feedback about
whether it even works… And yet this interactive capability is
such a foreign concept to her that she regularly spends hours
sometimes (we correspond largely by email) testing her not-
correct code in the cumbersome context of running her entire
program. Something that she could have just tried in IRB and
seen didn’t work instantly.
So my point is that experiences such as these (not just with
beginners - professional college-educated programmer newbies
will often spin their wheels similarly) has suggested to me
that not starting programmers out in an interactive language
environment as beginners can do them a disservice by instilling
habits that are biased toward trial-and-error solutions, and
spending more time in the debugger. And for some reason, these
habits have consistently seemed difficult to un-teach…
Thus my bent towards preferring an interactive environment for
beginners…
Regards,
Bill
···
From: “Chris Pine” nemo@hellotree.com
----- Original Message -----