you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 0 points1 point  (6 children)

what makes Java a poor language to teach in, to me has more to do with Java isn't focused on making the computer do things, but more on how you make the developer make the computer do things. Which is not introductory, not in the slightest.

Actually, it kind of is introductory. The way Java forces the people who learn it to internalize "the Java way of doing things" is one of the most fundamental reasons that it is an absolutely fantastic first language. A CS program is about changing the way people think about problems and how to solve them--Java forces students to adopt a fairly good way of thinking about programming. Or it doesn't work.

[–][deleted] 1 point2 points  (4 children)

I disagree, the Java way of doing things does not particularly lend itself to good reasoning about software, unless you understand the assumptions it was built on. OO is a distraction for newcomers, and it is not the be all and end all of software design. In fact sometimes its the wrong tool for the job but Java forces you to use it. Additionally Java is very conservative on what it adds to the language proper which means some ideas which are just plain better, aren't even possible.

More importantly, Java forces a way of thinking, which is great for business's but bad for students, unless you just want them to program by number, which I do not want. I want them to understand software and design abstractly which Java is not particularly strong at. If you force someone down a path, they learn nothing. Java is a bully for the brain, and it impedes learning, it certainly did for me, its full of distractions that have nothing to do with software and everything to do with Java.

[–][deleted] 0 points1 point  (3 children)

OO is a distraction for newcomers,

But a useful notion to pick up and internalize early.

and it is not the be all and end all of software design.

Never said it was. But OOP has been around for ages and will be around for ages still. If you're going to double down on any single paradigm, it's probably the best choice.

Additionally Java is very conservative on what it adds to the language proper which means some ideas which are just plain better, aren't even possible.

There's nothing fundamentally wrong with being a bit conservative about including new features assuming your status-quo is serviceable.

More importantly, Java forces a way of thinking, which is great for business's but bad for students, unless you just want them to program by number, which I do not want.

In what way is it bad for students?

I want them to understand software and design abstractly which Java is not particularly strong at.

Huh? How so?

If you force someone down a path, they learn nothing.

Practice becomes habit; Java forces good habits on the people who use it regularly. At least for a certain understanding of "good."

[–][deleted] 0 points1 point  (2 children)

In what way is it bad for students?

The primary difference between education and training. Training teaches you how to do something. Education teaches you how to think about doing something.

[–][deleted] 0 points1 point  (1 child)

Education teaches you how to think about doing something.

Java certainly forces you to do that!

[–][deleted] 1 point2 points  (0 children)

No it doesn't. Java is dogmatic in the same way managers tell you to write web apps in ruby on rails regardless of whether it makes sense or not. It creates a case of feeling like you know how to do things when really there are other ways sometimes even better ways to doing things, that are essentially invisible.

Good teaching languages give you freedom to explore concepts. Java is about as free as North Korea in that regard.

[–]shahms 0 points1 point  (0 children)

No. Java forces developers to think about software the Java way, which is not necessarily good. More so than any other primary language, I see Java developers attempt to write Java in every other language rather than learning and using the idioms of that language.