Registered: Feb, 2002
Re: Do IDEs spoil beginners?
Posted: Jun 18, 2003 1:24 PM
> These are all things that require you to think about
> bytes, and they affect the big top-level decisions we make
> in all kinds of architecture and strategy. This is why my
> view of teaching is that first year CS students need to
> start at the basics, using C and building their way up
> from the CPU. I am actually physically disgusted that so
> many computer science programs think that Java is a good
> introductory language, because it's "easy" and you don't
> get confused with all that boring string/malloc stuff but
> you can learn cool OOP stuff which will make your big
> programs ever so modular. This is a pedagogical disaster
> waiting to happen. Generations of graduates are descending
> on us and creating Shlemiel The Painter algorithms right
> and left and they don't even realize it, since they
> fundamentally have no idea that strings are, at a very
> deep level, difficult, even if you can't quite see that in
> your perl script. If you want to teach somebody something
> well, you have to start at the very lowest level.
I agree with this in a subjective way. That is, I have the experience of having learned computers and software from the lowest on level up. I started out in EE, learning the analog stuff, then digital circuitry, then machine code, assembly, C, C++ and on up over the years to Java, C# and Python. I feel like the path I've taken allows me insights I wouldn't have if I'd started out with a language like Java, C# or Python. However, I don't have any hard data to support this feeling, because I really only have one data point (moi). I might be completely wrong about it, too. It would take a very large and lengthy double-blind test to try and conclude one way or another and the results would probably still be inconclusive.
I have enjoyed the process of discovery as I progress up the ladder of programming languages; each one has more elegant ways of addressing the frustrations of its lower level counterpart. At the same time, being able to imagine how this is done (for instance, a C/C++ programmer can easily imagine how a Java String might be implemented in Java, or how virtual methods work, or even the JVM itself) seems to make it easier to understand and less mysterious.
However, it also seems to me that the vast majority of people learning programming are not really all that interested in the science (I use that term loosely :-). With all the glitzy eye candy available these days, I think only the most determined people (a small minority) who are really interested in how computers work will be interested in taking such a long path to programming. I'm not saying that this is "bad," I just think it is reality. Trying to foist low-level knowledge and understanding on people who are not really interested in it is probably ultimately a waste of time and effort for both parties. (For those few who are interested, on the other hand, it is an exciting and fun learning process).
> It's like Karate Kid. Wax On, Wax Off. Wax On, Wax Off. Do that
> for three weeks. Then Knocking The Other Kid's Head off is
That got an audible chuckle out of me.
On the subject of text editors vs. an IDE, I think it is foolish to take the digital-neo-Luddite stance of only using a text editor. You should certainly have a quick and powerful editor in your toolbox (I am revolted when I see someone use Notepad on their own machine!), but that's no reason to rule out the use of many useful IDEs. Having only one way of editing code is almost as bad as knowing only one programming language -- it goes back to the old "if your only tool is a hammer all problems look like nails" thing (what is that exact quote, anyway?).