On Mon, 13 Jun 2005, Andrea Griffini wrote: > On Sun, 12 Jun 2005 20:22:28 -0400, Roy Smith <[EMAIL PROTECTED]> wrote: > >>> 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 think that if you don't understand memory, addresses and allocation > and deallocation, or (roughly) how an hard disk works and what's the > difference between hard disks and RAM then you're going to be a horrible > programmer. > > There's no way you will remember what is O(n), what O(1) and what is > O(log(n)) among containers unless you roughly understand how it works. > If those are magic formulas you'll just forget them and you'll end up > writing code that is thousands times slower than necessary.
I don't buy that. I think there's a world of difference between knowing what something does and how it does it; a black-box view of the memory system (allocation + GC) is perfectly sufficient as a basis for programming using it. That black-box view should include some idea of how long the various operations take, but it's not necessary to understand how it works, or even how pointers work, to have this. tom -- Think logical, act incremental -- http://mail.python.org/mailman/listinfo/python-list