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