Hacker News new | past | comments | ask | show | jobs | submit login
Why Java Isn't Shit, Part 2 - Conservatism (abstractgeneratorfactory.blogspot.com)
9 points by billybob3 on July 28, 2008 | hide | past | favorite | 10 comments



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.


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?


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


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.


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.


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.


(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...


Let me try to sum up your summary:

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


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


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: