Excerpts from R. Mattes's message of 2010-10-14 22:35:56 +0200:
On Thu, 14 Oct 2010 20:10:52 +0200, Philipp Überbacher
wrote
I'm not experienced in any language but I've dabbled with a few, and
imho java and how it's taught here is far too complicated or rather
distracting.
The first thing newbies see, before hello world, is a beast like
eclipse, which alone causes a whole bunch of problems. Then they have
to mess with packages, and classes, and objects, although they teach
it here by saying "take this as given, ignore it for now". The next thing
they see are some funky classes that allow proper input/output
because java doesn't seem to have that. Only then they get to start programing
and can deal with javas built in funkyness.
But that's not the language, that's the quality of the people teaching it
there.
Using eclipse from the start might be a questionable choice, but for the
rest there's no best answer. Either take the 'take it as a given'
approach or start with explaining objects and classes and and and...
About half of my fellow students are total beginners who've never
written or even read a single line of code. To them everything is new,
and they need to filter the essentials from the distractions, so less
distractions is a real help.
What does the
following example evaluate to?
1.2+3+"||"+3+2.1
$ cat > Foo.ava
class Foo
{
static { System.out.println( 1.2+3+"||"+3+2.1 ); System.exit( 0 ); }
}
^D
$ javac Foo.java
$ java Foo
C'm on, that's not really that hard, no Eclipse, no packages, no real object.
Is this using some implicit main() or something?
I think
there's far too much distracting mess to sort out before you
even get to programing, so I don't think it's a good teaching language
(for total beginners at least).
What's distracting here?
Regarding your example -my main question would be: what do _you_ expect from that
code. 'I'd say you get what you ask for.
I wouldn't expect 4.2||32.1 as a result. Either interpret the whole
thing as a string, or the number parts as float or don't do this kind of
automagic conversion at all. Interpreting numbers as numbers and
interpreting numbers as string in the same statement is something I
wouldn't expect.
Java has a defined evaluation order (JLS 15.7) - left
to right, and does type
conversion
_and_ does overloading of methods. All of this are basic design decisions
which any language
has to take. Are you criticising the choices the Java team made? Do you prefer
the Ocaml way?
So "1 + 2", or "3.0 +. 2.1" - and then the horrible
"add_int_to_float 1 +
2.0" ????
That for shure will be less confusing to beginners :-/
I don't know Ocaml, so no idea what the above means.
BTW,
1] 1.2 + 3 = 4.2 since you can't convert a float to an int but an int to a
float
2] 4.2 + "||" need to convert 4.2 to a string, because the other way
round isn't supported
3] ... go on ...
Cheers, RalfD
P.S.: if possible i try to avoid programming in Java, but for totally
different reasons.
Which are?
Regards,
Philipp