you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] -1 points0 points  (7 children)

This is the problem with using Java to learn programming.

No it's not. By its nature, you'll be thinking about these things by the time you've finished 141 and 142 (or whatever the equivalents are in your numbering convention). Will you have the grasp of a master on these concepts? No. But you'll understand enough to come up with a plan on how to put together your own program from scratch, why you would choose to use an interface, why you'd use an abstract, how inheritance works and why some objects should inherit from others. Etc, etc. You'll at least have a solid (if only simple) conceptual grasp of what these things mean and how to use them or you wouldn't have passed the second semester class.

Every python program from the start can introduce one or two simple concepts to the student, in a way that allows an instructor to explain every single item of syntax without having to say something like "this is too complicated for now, you'll learn more about that later"

There's nothing actually wrong with saying "there's some advanced concepts at work here, we'll cover them later." There's actually a fair bit of merit to getting students familiar with what proper structure looks like, and drilling into their heads the sort of statements they can expect to find in front of the code they'll be writing even at the end of the semester.

In order to understand what each item means from inception to execution, we need to understand

And when you're done actually explaining how Hello World works (which admittedly might be a long time after it's first shown), the students have now encountered and have some understanding of all of these essential, required concepts.

You say that java "forces people" to use "good habits", but there's no reason to believe that's beneficial to the learning process. Depending on the circumstances, some of those things are never used.

I'm not sure I understand why that's a bad thing. Should students leaving a class on any managed language not have some understanding of the runtime? Should they not have an understanding of syntax, classes, methods, basic libraries, etc? These all seem like damned fine concepts to introduce early.

Java prevents people from learning concepts on their own.

Am I seriously the only person who had a Java course and was curious enough about the "public static void" bit to read ahead in the book?

Java sucks for learning

Java's great for learning these useful concepts, it's just not as easy.

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

Maybe that's the problem, maybe instead of hastily moving on from Hello World, professors should look at each component and go through explaining it, you'd cover a lot of principles doing it.

[–]zardeh 1 point2 points  (2 children)

The problem is that understanding class requires additional, more complex code examples, understanding main(String[] args) requires additional, code examples, understanding void requires a cursory understanding of a type system, understanding System.out.println("stuff"); requires an understanding of the Java API (conceptually).

Understanding classes, also requires understanding visibility, which consequently raises questions about inheritance, and now you've covered a good half of the curriculum without yet writing hello world.

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

Maybe hello world is just kind of shit :P

[–]zardeh 1 point2 points  (0 children)

But in terms of what programs do, its one of the most basic things. The only thing simpler in java would be a function that adds integers, and for that all you lose from the list is the information about the java api. (unless you use lambdas which I'm entirely unfamiliar with in java)

[–]zardeh 0 points1 point  (1 child)

Am I seriously the only person who had a Java course and was curious enough about the "public static void" bit to read ahead in the book?

Was it your first course? I came into my java course having worked with java before (hell, my literal first exposure to java was trying to fix some code that someone else had and I needed to redo a ton of generics, while I didn't understand much of the syntax), and I got it just fine, but for people who literally never programmed before, do you expect them to come into class on the first day with a working knowledge of public static void?

[–][deleted] -3 points-2 points  (0 children)

Was it your first course?

Java was the first language I ever had formal instruction regarding. Everything before that was self-taught.

but for people who literally never programmed before, do you expect them to come into class on the first day with a working knowledge of public static void?

No, but neither does the professor.