On Wed, May 13, 2015 at 3:03 AM, Rob Gaddi
<rgaddi@technologyhighland.invalid> wrote:
> A firm grasp of C will make you a better programmer in any language, even
> if you haven't written a line of it in 20 years.  It's the ability to
> read a map.  A lack of C is the person blindly following their GPS and
> hoping for the best.

That's as may be, but I would still not recommend it as a first
language. It's possible to explain algorithmic complexity with a high
level language; Python's data types generally have predictable costs
associated with them, although a lot of them aren't actually language
guarantees (I could imagine a Python implementation using an O(log n)
tree instead of an amortized O(1) hash table for its dict, if other
tradeoffs make it worthwhile); at any rate, you can always just
construct your own fundamental data structures if you want to teach
what a linked list is good for, or what a splay tree can do for you. C
knowledge is good, but first get to know the broader art of
programming, and then get to know C. Learning low-level languages too
soon will end up binding your mind to a particular CPU architecture.
That happened to me in a big way; I got to thinking about everything
in terms of how an 80x86 CPU would deal with it, without any
comprehension of some of the modern aspects of low-level programming
like pipeline management and cache locality. It was quite the
eye-opener when I started hand-optimizing my C compiler's output on a
more modern chip, and found that my improvements... uhh, added about
50% to the run time. That's when I stopped doing any assembly language
work, and just let the compiler do its magic :)

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to