Re: What is different with Python ?

Andrea Griffini wrote:
On Sat, 11 Jun 2005 21:52:57 -0400, Peter Hansen <peter@xxxxxxxxxxx>
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...