I am a programmer. I have dealt in many languages, but I have ended up with Java. Java is the best language for implementing general programs.
Java is fast. It's no C/C++, but it's head and shoulders above comparable high-level languages.
Java is memory-managed.
Java supports just the right level of features. It doesn't have C++'s feature fetish.
Java has an expansive, (mostly) cross-platform API. It's not perfect, but it sure beats writing everything yourself.
Java and its API are constantly being improved.
In any program of significant size, the problem isn't writing your Bloom filters or splay trees with elegant syntax. It's a problem of communication with other programmers (including library-writers). Java's strict typing, rigid structure, documentation system, and excellent developer tools (aka Eclipse) all help you out.
It's not perfect. Sure, first-class functions would be nice, but you never use them except on your homework assignment where you pass the comparator to a sort function. If you're building a little toy program, it's a pain to put everything in an object, but you'll be thankful you did once that program gets big enough. The syntax sucks, but it's familiar. Sure, Eclipse is slow, but suck it up big balls.
Java isn't perfect, but it's the best in practice.
Is there not an appointed time to man upon earth? are not his days also like the days of an hireling?
As a servant earnestly desireth the shadow, and as an hireling looketh for the reward of his work:
So am I made to possess months of vanity, and wearisome nights are appointed to me.
Name:
Anonymous2008-05-16 21:45
>>54,55
I will, allong with my loeb.
loeb :: Functor f => f(f a -> a) -> f a
loeb f = fmap ($ loeb f) f
The rest of the platform is fucking stupid as shit!
The API/library is fucking horse shit. Hey look JavaButton. As opposed to what exactly? Is there going to be a LISPButton in the same fucking namespace of some gay shit like that. NO! It should just be button, because its a fucking button.
Generics! Java fucked that up royally. At run time all your types are erased and cast between the expected type and object on access. WTF! One reason to use generics is to avoid unneeded casting, but Java fucks it up for you. And you can't use primitives, that's a fucking joke.
>it's a pain to put everything in an object
Given that its an object oriented language, shouldn't that be a sign that something is fucking wrong there.
>Eclipse
is shit when compared to something like Visual Studio.
Its hard to compare Java to .Net. Because .Net completley blows Java out of the fucking water.
Name:
Anonymous2008-05-18 4:17
>>63
Uh, generics in Java are a compiler-time construct. Eclipse really isn't that bad, I've never used Visual Studio but from what I've read it's pretty much NetBeans with less features. Whoop-dee-fucking do.
Name:
Anonymous2008-05-18 5:30
>>63 Given that its an object oriented language, shouldn't that be a sign that something is fucking wrong there.
It should be a sign that making an exclusively "object-oriented" language is a bad idea.
>>65
OP here.
As I implied, it would for Java to be nice to have a truly object-oriented language. Sadly, methods, primitives, and labels are not objects.