On 2/24/06, Daniel Nugent <nugend / gmail.com> wrote:> I just think that it's possible to really get at the core of what> "Computer Science" really is without arduously teasing the nuances of> it out over the course of years.
Hmm... iteresting.  (I was just talking about teaching kids toprogram, not getting at the core of what CS really is.)
Perhaps the analogy to draw upon would me that programming (as I meantit:  getting the computer to do things for you) is like arithmetic andmaybe simple algebra:  it's how you get things done, and if you don'thave a good handle on these basics, it will be hard to move beyond it.
In this analogy, I guess that makes CS kind of like Math:  deep,subtle, hard to get at the core of it.
But (sticking with the math side of the analogy, since that's where myeducation is), I think it would be a mistake to begin by teachingpeople the field axioms (that is, expecting them to use them in proofsand such), or arithmetic base n (for n other than 10), or aboutgroups.  In some sense, these are more general or fundamental orsimple... but they're not, not really.  :)
Without a background of the basics, it's hard to understand the*significance* of more general or fundamental or simple solutions.  IfI don't know how to concatenate strings or show those strings on thescreen, what do I care if this way is the procedural way to do it, andthat way is the object-oriented way to do it?
So many things are common to (nearly) all languages.  Variables. Functions/methods/procedures.  Using numbers to do things other thansolving math problems.  These are so basic that we don't even thinkabout them anymore, but they are *not obvious* to new programmers.
So, getting back to the original question:  Is Ruby a good languagefor getting a handle on those basics of programming?
Absolutely.  (And *much* better than C for this.)
After Ruby, C is a reasonable choice as a next langauge.  As is Lisp. (Depends on where you want to go with your programming.)  But it sureis nice that you can stick with Ruby for most tasks.
(As an aside, I'm always skeptical of people who say you should learnlanguage X first, when that's not the language they prefer to usethemselves.  Usually, they have over-thought the problem.)
Chris