What is different with Python ?
roy at panix.com
Mon Jun 13 02:22:28 CEST 2005
Andrea Griffini <agriff at tin.it> wrote:
> 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. Note that I'm not saying that
> one should understand every possible implementation
> down to the bit (that's of course nonsense), but
> there should be no room for "magic" in a computer
> for a professional programmer.
How far down do you have to go? What makes bytes of memory, data busses,
and CPUs the right level of abstraction?
Why shouldn't first-year CS students study "how a computer works" at the
level of individual logic gates? After all, if you don't know how gates
work, things like address bus decoders, ALUs, register files, and the like
are all just magic (which you claim there is no room for).
Digging down a little deeper, a NAND gate is magic if you don't know how a
transistor works or can't do basic circuit analysis. And transistors are
magic until you dig down to the truly magical stuff that's going on with
charge carriers and electric fields inside a semiconductor junction.
That's about where my brain starts to hurt, but it's also where the quantum
mechanics are just getting warmed up.
> Also concrete->abstract shows a clear path; starting
> in the middle and looking both up (to higher
> abstractions) and down (to the implementation
> details) is IMO much more confusing.
At some point, you need to draw a line in the sand (so to speak) and say,
"I understand everything down to *here* and can do cool stuff with that
knowledge. Below that, I'm willing to take on faith". I suspect you would
agree that's true, even if we don't agree just where the line should be
drawn. You seem to feel that the level of abstraction exposed by a
language like C is the right level. I'm not convinced you need to go that
far down. I'm certainly not convinced you need to start there.
More information about the Python-list