4 ms·
I think it all depends of your goals, if you learn to cook in order to impress your friends, no you probably don't need chemistry lessons, but if you plan to wi
by antoinec 12y ago
I think it all depends of your goals, if you learn to cook in order to impress your friends, no you probably don't need chemistry lessons, but if you plan to win 3 Michelin stars for your restaurant, you probably need to.
Same for programmation, if you just want to ease your work, compute quickly some math formulas, etc, you can start with Python. But if you plan to write the next big OS, you better start with C...
- lbarrow 12y agoNo, you absolutely don't need to start with C. You need to learn C (or some equivalently low-level language) eventually.
- rectangletangle 12y agoI agree with this. I started with Python, then later learned C. Taking the top down approach has several benefits when learning. You can make programs that actually do things much more rapidly, incentivising continued learning; this can not be emphasized enough. Less time is wasted wrestling with the many subtleties of something like C. Although important, knowing about pointers and memory allocation is unnecessary when trying to get across very basic fundamentals like control flow. Python also acts as a model for good abstractions. If you start out working with Python's list type, lists are already a familiar concept when it comes time to implement a linked list, because you understand how it should* work. By the time the student is ready to learn something like C, they already have a solid grasp on how things are supposed to work, so understanding how they actually work becomes substantially easier. *CPython's list type is really a dynamic array, and it works better as a stack. However the interface is similar enough to a typical linked list, that it gets the point across.
- cellis 12y agoI don't even think you need to learn it eventually. For a similar argument, ask if most programmers need to learn assembly or further down the stack, EE, eventually. The answer is a resounding no. Extrapolating this even further, in the future "programmers" will be people who are just very good at issuing NLP commands to computers. They won't type strings of characters into consoles.
- RussianCow 12y agoReally? I would argue that every serious programmer needs to eventually learn those things, and most people I talk to agree with me. If you're a business person who wants to learn how to code, that's fine, you don't need a deep understanding of how your machine works; but to be a really good software engineer, I think you need to learn C and assembly, even if you never actually use those languages/concepts directly in your work.
- esbranson 12y agoI agree. We don't need to know instruction encoding, because we can use assembly, or assembly, because we can use C, or C, because we can use Python. What you need to know is, well, what's needed to use the particular language and system architecture to its maximum potential. And that's more of a training and conceptual thing than a C/assembly thing.
- recursive 12y agoDisagreed. You can easily go for a full career without ever doing any low level programming.
- Dewie 12y agoMy guess is that a lot of people who are getting an introduction to programming don't know what their future ambitions for programming are. "Oh, you want to learn the basics of programming, do you? Well okay, we have some different offerings; do you plan on programming micro controllers embedded in amphibious robots? Maybe you want to write an SMT solver? Or maybe writing software for caching HTTP responses for web servers is more in line with your ambitions..." You might as well start with the stuff that is common to most of (contemporary) programming.
- icebraining 12y agoI doubt there's any cooking course that starts with chemistry.
- grayclhn 12y agoTufts's "Gourmet Engineering" was close enough, I think: http://www.tufts.edu/as/tampl/en43 http://www.tufts.edu/as/tampl/en43