5 ms·
I've read this article before, and I somewhat agree with it. However, java is a much more practical language to program in than c unless you're doing work where
by jchonphoenix 16y ago
I've read this article before, and I somewhat agree with it. However, java is a much more practical language to program in than c unless you're doing work where c is absolutely necessary. Programming speed is usually preferable.
What I don't agree with is pointers and recursion making people's heads explode. Pointers are just another language construct and with enough practice anyone will get used to them. Recursion is a mathematical concept. Thus, for all its elegance and simplicity, people still find it difficult in the same way they find mathematics difficult.
The real weeder classes that I've seen are generally theory and discrete math classes. The truly challenging systems and programming related classes usually aren't offered until the latter years of a student's CS career (such as OS, Distributed Systems, etc).
Disclaimer: My experiences come only with my university - Carnegie Mellon, and chatting with friends from others
- electronvolt 16y agoTo be fair, Joel makes that point. He claims that: "It may be a fine language to work in, but that's not today's topic. I would even go so far as to say that the fact that Java is not hard enough is a feature..." In my experience at UVa, the weeder class is where they introduce pointers, re-introduce recursion, and do basic data structures, and start people with a language other than Java (C++ and x86 assembly; there is also an option to do the first class in Scheme, but that is only open to some people). Someone here was obviously listening to Joel. ----- I think that the perils of a "Java school" are reasonably similar to the perils of a "C School" or a "Lisp school", though: you are only learning one programming language. As a CS student who has written nontrivial programs in 5-6 languages, I do not believe you can produce even reasonably competent computer scientists who are limited by the one language they know and cannot think outside of that limitation on their conceptualizing of problems. Although the individual issues with, say, C might be different (you -will- understand pointers), your thought processes are still limited to the one language that you know. Disclaimer: I don't claim to be exceptionally experienced in those languages, but enough to have hit the "I get how to do basic things in this language" point. I'm reasonable with really 2 languages, and nowhere near mastery of programming.
- 16s 16y agoRecursion in C++ is really cool until you add threads or too many items and blow the stack and start getting random seg faults. I speak from experience. I tend to avoid it now and iterate instead.