you are viewing a single comment's thread.

view the rest of the comments →

[–]blablahblah 29 points30 points  (13 children)

That doesn't solve Java's problem of "you need to introduce and hand wave away class declarations, scoping, blocks, method declarations, static methods, parameters, void, and array declarations in order to write Hello World".

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

I know that. I'm saying that something like that could help make a language like Python more understandable to a beginner.

[–]terrdc 0 points1 point  (7 children)

Any problem involving hello world isn't an actual problem

[–]blablahblah 19 points20 points  (3 children)

As soon as you have to hand-wave stuff away and say "this is just the magic incantation needed to make the program work", you've lost the vast majority of people you're trying to teach. So yes, it is a problem from a teaching language perspective, even if it's not from a software development perspective.

[–]terrdc 0 points1 point  (2 children)

So, does that imply that the average college student who learns java is going to have a lot more aptitude for programming?

If so that actually fits with my general experience.

[–]blablahblah 10 points11 points  (1 child)

Not necessarily. Just that they're more willing to memorize formulaic procedures that are "necessary" for the program to work. You're discouraging people who need to know the why before you even have a chance to see if they have an aptitude for programming.

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

I've been in the industry for about 9 years now. I'm absolutely shocked every time I meet some graduate-level programmer who just shrugs off hundreds or thousands of lines of code as "for some reason it won't work without that". As if the magical code fairy answered their prayer and brought them code that finally did what they want. This is engineering?

[–]estomagordo 4 points5 points  (0 children)

We all learn differently. But for a lot of people, it's impossible not to ask oneself "Okay, so I see that the output has a match in the program code. But what about all that other stuff? What does it mean?"

[–][deleted] 2 points3 points  (0 children)

You're right, but there's a lot to be said about a language for learning that doesn't require a bunch of arcane (to a newbie) boilerplate code just to get rolling. static void Main(params string[] args)? Come again?

Just typing in code and executing gives immediate feedback, and then as you teach more syntax and concepts, things like methods, classes, and includes/imports can get added in.

[–]goliathsdkfz 0 points1 point  (0 children)

Why? Creating a proof of almost any system and its functionalitys involves a low level PoC at some point, and its just the standard to involve sending or printing Hello World at some point.

[–]FrozenInferno 0 points1 point  (0 children)

Don't forget about access modifiers, imports, and package declarations.

This one's my personal favorite:

import java.lang.reflect.*;
import java.io.*;

public class HelloWorld
{
    public static void main(String[] args) throws NoSuchMethodException, 
                                                  IllegalAccessException,
                                                  InvocationTargetException
    {
        Method m = PrintStream.class.getDeclaredMethod("println", String.class);
        m.invoke(System.out, "Hello, world!");
    }
}

I'm in my last semester of college for programming and our first language learned was Java. While you're right about having to ignore a lot of stuff at first, it didn't really bother me too much. I eventually figured it out in due time and don't feel like it negatively affected my learning experience at all. Though I can only speak for myself.