4 ms·
I’ve been programming professionally for over ten years, and when I have to look at Java code that other professionals have written, I am constantly irritated b
by sethg 15y ago
I’ve been programming professionally for over ten years, and when I have to look at Java code that other professionals have written, I am constantly irritated by how the actual point of the code is buried in… mquader’s “OO ceremony” label elsethread is an apt phrase, although “Java ceremony” might be more fair. It wouldn’t surprise me at all if high-school students learning Java as their first language got confused much more readily than students learning Python (which was, after all, originally designed as a language for teaching OO concepts).
Of course, the College Board, in its infinite wisdom, has decreed that the AP Computer Science tests be given in Java. I suppose we should be grateful that they no longer do it in C++.
- tikhonj 15y agoI think that just starting out with the assumption that OOP is the "one true way"--AP CS really comes across that way--is flawed. A languages like Scheme would be a much better choice for an intro CS class.
- sethg 15y agoWorse than “OOP is the one true way” is “OOP is the one true way and Java’s style of OOP is the one true OOP”. I’ve heard of a CS curriculum that starts by teaching Scheme and ends with a segment on “OK, now you know how to program in Scheme, here is how to do it in Java”. I don’t know if that can fit in one high-school class, though.
- archgoon 15y ago>>... Python (which was, after all, originally designed as a language for teaching OO concepts). This isn't quite right. The teaching language was ABC, a different project that Guido worked on. Python was his own language, created for the Amoeba project (an OS research project), inspired and influenced by, but not the same as, ABC, which was not object oriented. Guido says that the purpose of python for the Amoeba project was to: "bridge the gap between C and the shell" http://en.wikipedia.org/wiki/ABC_%28programming_language%29 http://en.wikipedia.org/wiki/ABC_%28programming_language%29 http://python-history.blogspot.com/2009/01/personal-history-part-1-cwi.html http://python-history.blogspot.com/2009/01/personal-history-... However, if you have additional information, I'd love to hear about it. I've heard the "Python was originally a teaching language" several times, but as far as I can tell, that's not actually true.
- rayk 15y agoYou actually write very little code for AP Computer Science. If I recall correctly, the test tries to bring OO abstractions into the standards using Java's classes and wrappers, which should be a pretty good filter for dumb unpatterns like 'Car inherits from Garage'. So there are questions like 'How do you design this class hierarchy?' or 'Trace this code, what are the values of x...' I don't think there was ever any of the boilerplate required to make a Java program actually run. When I took the exam, I'd never compiled a single line of Java in my life (yep, there are far better ways to get things done).
- teach 15y agoI'd bet $100 that the AP exam will switch to Python within ten years. And probably not much more than 5. (No sooner than that though, or they'd have to have announced it already; major changes in public education need a LOT of lead time.) However, I'll disagree that Python would be that much easier than Java for a beginner's course. It's lower-friction, to be sure, but the VAST majority of student difficulties are with precise logical thinking, not with the syntax. Decomposing a problem into discrete, correctly-ordered steps is the core difficulty. This is unrelated to syntax.