4 ms·
This is like saying that when teaching people how to cook, you should start with chemistry lessons. Sure, at some point you have to have some understanding of c
by lbarrow 12y ago
This is like saying that when teaching people how to cook, you should start with chemistry lessons. Sure, at some point you have to have some understanding of chemistry in cooking, but does that really mean you have to start out there?
Yes, every programmer should eventually learn about the things you're talking about. But C is a terrible first language.
- Cakez0r 12y agoI would disagree that you need an understanding of chemistry to cook... (although it doesn't hurt). However, if you want to teach somebody to cook, you don't teach them how to use the microwave :)
- grayclhn 12y agoI was about to disagree with this criticism of C, since I loved it as the introductory language in college. But then I remembered that Basic was my first programming language, and Pascal was the first language I was actually taught, and I'd been programming for a long time before actually getting to college. So I totally agree. Python probably makes sense if most undergraduates don't have programming experience any more. And the ones that do probably have experience in JavaScript.
- antoinec 12y agoI 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.
- 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