

Why Java Isn't Shit, Part 2 - Conservatism - billybob3
http://abstractgeneratorfactory.blogspot.com/2008/07/why-java-isnt-shit-part-2-conservatism.html

======
sratner
Also seems like a misunderstanding of C# features:

 _> type safety is loosened and a few keywords are borrowed from JavaScript
(var)_

C# is strictly and statically typed. The _var_ keyword is only similar to
Javascript's in using the same three letters. What the author calls _loose_
typing is derived by the compiler, at compile time, in a completely static
fashion. However, you get the power of being able to type variables even when
you cannot name the type (for example, anonymous types).

 _> with LINQ, they decide to borrow the single most verbose language on the
planet (SQL), and add that too_

LINQ is about SQL about as much as Javascript is about Java.

edit: Oh yeah, and Java never really added generics. It's just some syntax
sugar which in no way actually _closes a hole in the type system_.

------
sratner
_For some reason, there are ever larger numbers of C# advocates in most hard-
core programming forums. This can only be explained in one of three ways: 1)
astroturfing by Microsoft; 2) good old-fashioned trolls trying to start a
flamewar; or 3) the "too easy" crowd have fallen for the hype_

Is it not even conceivable to the author that members of hard-core programming
forums advocate C# because it is actually a decent language backed by a well-
implemented runtime?

~~~
william42
Well, C# only has those properties compared to Java, but you're right
otherwise.

------
sofal
From the "About This Blog":

" _The rantings of an arrogant, cynical, egotist programmer_ "

This pretty much sums it up, except that usually this kind of description
tends to imply that the blog will be humorous.

------
marijn
Hah, sometimes I do miss the downvote-article feature. I made it halfway into
the article without spotting a single redeeming quality. Ad-hominem attacks on
made-up opponents ... who's going to swallow that.

------
Hexstream
I read both parts and I can only conclude:

This guy is an "expert" in Java and never had a serious look at a non-blub
language. To compare languages X and Y I'd rather have someone who has actual
experience in both in X and Y rather than a Xer clueless about Y.

~~~
Hexstream
(A bit of a long post but if you didn't read the articles yet you'll save time
by quickly realising how pointless they are)

In part 1:

"The problem is that most of the anti-Java rhetoric is simply invalid, it
involves a variety of most logical fallacies, ego fluffing, appeasing an all-
powerful god, revisionist history, and (most often of all) downright lies."

s/anti/pro

I've never seen anyone make the "Java applet revisionism" so I suspect that's
a strawman...

"It's more of a controlled dynamism which uses interfaces, or inheritance, or
generics to control what can be assigned to what."

s/controlled/constrained. If you're imprisoned then you're in a more
controlled form of freedom?

"Dynamic typing isn't a feature, it's a lack of a feature, it saves a few
keystrokes but it also loses valuable metadata."

False. In fact I'd say in a dynamic language you gain metadata because the
program can inspect itself better at runtime, because it needs that
information anyway for things like type-checking.

"Quite why modern languages are all expected to be dynamic, I do not know, it
makes little sense; while they all have modern features (well not really
modern, but only recently mainstream) like closures, continuations,
metaprogramming, etc. they're expected to throw out an old useful feature at
the same time."

HAHAHA. How clueless. What "useful old feature" did I throw out by adopting
closures already? or continuations, or macros.

"You see, in any part of a function, class, etc. a variable can only
legitimately be a certain type (or type of types), you can't pass a String to
a function called average and expect it to work, etc. Java allows you to
enforce this with ease. Why is getting rid of such a feature supposed to be a
good thing?"

Is he not aware that dynamic languages do type-checking? Also, it sure doesn't
make sense to invoke (+ "Hello") but first a good compiler (even for a dynamic
language) will warn about that kind of obvious error where the type inference
and the code don't agree, second there's always lots of functions that takes
an argument and passes it right down to other functions without caring at all
what it is so it makes sense not to declare the type (less assumptions = more
decoupling).

"It seems that many people don't understand static typing, and even more don't
want to understand static typing."

s/static/dynamic/g

"Generics aren't easy, that much is granted (which again blows the 'Java is
designed for stupid programmers' argument out of the water)"

Proud because you're stuck dealing with a bad solution to what shouldn't even
have been a problem in the first place?

"And, of course, static typing allows other benefits, like making method
overloading possible."

... 1. Common Lisp is a dynamic language. 2. Common Lisp supports overloading
and in a much more powerful way (multiple dispatch)

Part 2:

"The problem is that easy languages are almost always more productive too."

I can certainly agree with that. But the easy languages are not the ones he
thinks. What language lets you easily sort a sequence of arbitrary items in an
order dictated by an arbitrary predicate? Not Java.

"The people who have had their pointer-arithmetic tricks taken away from them
have moved straight in to Python one-liners with lambdas nested ten-deep. A
certain kind of developer is addicted to mental masturbation more than gaining
satisfaction by solving problems."

What bullshit. I've never seen lambdas (lexically) nested even 3 levels deep.
Complete strawman here.

"Same with Java, if you already have a Java server infrastructure, job done;
even if you haven't, it's still _the only practical choice for any software
which needs to be cross-platform and high performance_."

At this point I'm realising I'm wasting my time replying to such total
nonsense. Yes, I know, I'm slow sometimes.

"It's only a matter of time until [C#] paints itself into a corner; in fact,
it might have already happened. The newer "dynamic" bits don't sit well with
the old C++ bits. They would have been better off sticking with Java syntax at
the outset and going from there."

?! First he says the _semantics_ of C# don't work well with the more dynamic
stuff, then he says they should have stuck with Java _syntax_ , but the former
has really nothing whatsoever to do with the latter...

~~~
alex_c
Let me try to sum up your summary:

"The world is changing, and I don't like it."

------
scott_s
Mostly strawmen. But worth glancing over towards the bottom to read someone
claim that Java is more intuitive than Python.

------
river_styx
I guessed from the headline that this post would be crap. And as it turns out,
I was right.

