What is different with Python ?

Peter Hansen peter at engcorp.com
Mon Jun 13 03:52:12 CEST 2005

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


More information about the Python-list mailing list