Andrea Griffini wrote: > On Sat, 11 Jun 2005 21:52:57 -0400, Peter Hansen <[EMAIL PROTECTED]> > wrote: >>I think new CS students have more than enough to learn with their >>*first* language without having to discover the trials and tribulations >>of memory management (or those other things that Python hides so well). > > I'm not sure that postponing learning what memory > is, what a pointer is and others "bare metal" > problems is a good idea. ... > I think that for a programmer skipping the > understanding of the implementation is just > impossible: if you don't understand how a > computer works you're going to write pretty > silly programs.
I'm curious how you learned to program. What path worked for you, and do you think it was a wrong approach, or the right one? In my case, I started with BASIC. Good old BASIC, with no memory management to worry about, no pointers, no "concrete" details, just FOR loops and variables and lots of PRINT statements. A while (some months) later I stumbled across some assembly language and -- typing it into the computer like a monkey, with no idea what I was dealing with -- began learning about some of the more concrete aspects of computers. This worked very well in my case, and I strongly doubt I would have stayed interested in an approach that started with talk of memory addressing, bits and bytes, registers and opcodes and such. I won't say that I'm certain about any of this, but I have a very strong suspicion that the *best* first step in learning programming is a program very much like the following, which I'm pretty sure was mine: 10 FOR A=1 TO 10: PRINT"Peter is great!": END And no, I don't recall enough BASIC syntax to be sure that's even correct, but I'm sure you get my point. In one line I learned (implicitly at first) about variables, control structures and iteration, output, and probably a few other things. More importantly by far, *I made the computer do something*. This should be everyone's first step in a programming course, and it doesn't take the slightest understanding of what you call "concrete" things... (though I'd call these things very concrete, and memory management "esoteric" or something). If I had been stuck in a course that made me learn about memory management before I could write a program, I'm pretty sure I'd be doing something fascinating like selling jeans in a Levis store... -Peter -- http://mail.python.org/mailman/listinfo/python-list