5 ms·
If you want to teach computer science to people then a good first language for them to learn is C, because it will help them think about and understand what the
by arctangent 15y ago
If you want to teach computer science to people then a good first language for them to learn is C, because it will help them think about and understand what the computer is actually doing.
- danenania 15y agoThat's an argument for learning C, but not for learning C as a first language. Studying assembler or chip design or even particle physics will also help you understand what the computer is 'actually doing', but it doesn't mean that's the best place to start learning how to program.
- arctangent 15y agoI didn't claim that C was the best language for learning how to program. John Resig's article above is about "teaching Computer Science" rather than teaching students how to program. These are very different things. That's why I recommended C - because it is very much a language that will teach the theory about how computers work. I agree that there are other languages better suited for learning how to program.
- danenania 15y agoOk, I see your point. But perhaps one can learn Computer Science much more efficiently after already knowing how to program? It doesn't seem likely that you'll be very open to learning data structure design and asymptotic complexity when you're still wrestling with for loop syntax, the difference between assignment and reference, what the hell recursion is, etc. You have to learn to walk before you can learn to run, and while jumping in the deep end may work for some, I'd guess most would find a more programmer-friendly introductory language a quicker path to comprehending basic CS concepts and would subsequently be in a much stronger position to tackle C.
- eonwe 15y agoTo quote Dijkstra: "Computer science is no more about computers than astronomy is about telescopes." While learning how computers work has its place in computer science, I think computation and manipulating information are better teached on a language where you can concentrate on those concepts instead of secondary issues such as memory management.