Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / March 2007

Tip: Looking for answers? Try searching our database.

Why do some people hate java?

Thread view: 
samir - 12 Mar 2007 19:55 GMT
Today, I've googled for "i hate java" and "java sucks".

I wasn't really amazed of the number of pages listed. I can imagine
the frustration of some newbie when, first, tweeking the installation
or struggling with some IDEs that consume "astronomical" (three years
ago, my computer had 16mb of ram : ) amounts of memory. But the
biggest problem, I think, is java's coolest part: The huge availale
classes and source code . For some one that likes programming it's a
source of frustration. First, you know that what ever you're doing
have been done. Then, you get simply lost when learning: What class'
should I start with? How do I choose one?...

For the rest, the problem is with java the programming language (not
the virtual machine): Java is seen by many people as a toy programming
language. No multiple inheritance, garbage collection and the
templates are childish.

For me, all the staff above wasn't my problem. My problem was with
accepting that such an amazing VM that can run on multiple
achitectures is being wasted using such an archaic programming
language. So, I've tried some of the available
"alternatives" (unfortunately, most of these alternatives aren't yet
ready to compete with Java). The one that had my attention the most is
Jython. The power of python within a Java VM :)

So, I started tweeking the beast and found that, not only programming
was more fun, but also more productive: It's not about reducing the
number of lines in program, but it's about reducing the time needed
for debugging and praying that the thing will work.

What I want to say that Java (as a VM) is a cool and Java (the
programming language) is a lesser thing.

Adiaux
Samir

P.S:
CIndy Lee - 12 Mar 2007 20:07 GMT
> Today, I've googled for "i hate java" and "java sucks".
>
[quoted text clipped - 33 lines]
>
> P.S:

Because .net 2.0 destroys it.  It's so much easier to get things done
with .net.  Visual Stuido's IDE just makes things to easy.
Jason Cavett - 12 Mar 2007 20:50 GMT
> > Today, I've googled for "i hate java" and "java sucks".
>
[quoted text clipped - 38 lines]
>
> - Show quoted text -

> Visual Stuido's IDE just makes things to easy.

Normally I would agree with you, but Eclipse has made so many leaps
and bounds that it's just as (or really really close) easy to use.
Mark Space - 12 Mar 2007 22:58 GMT
>> Visual Stuido's IDE just makes things to easy.
>
> Normally I would agree with you, but Eclipse has made so many leaps
> and bounds that it's just as (or really really close) easy to use.

Could elaborate a little on what Eclipse does that is so great?  I use
Netbeans right now and I think it's the bomb.  Plus Matisse is free on
NB. ^_^  But if there's a reason to move to Eclipse I'd like to at least
hear about it.

Also, I'm not looking for an IDE flame war, just some perspective from a
fellow Java user. ^_^ ^_^
John W. Kennedy - 13 Mar 2007 01:35 GMT
>>> Visual Stuido's IDE just makes things to easy.
>>
[quoted text clipped - 5 lines]
> NB. ^_^  But if there's a reason to move to Eclipse I'd like to at least
> hear about it.

The main thing is that the incremental compiler gives you a much more
"alive" sense of what you're doing -- and Build is typically subsecond.
I've been mucking about a little with NetBeans, but I have to say that,
after Eclipse, it feels clunky.

I've been doing this since 1965. I've used punched cards, Selectric
terminals, ISPF/PDF, and quite a few PC IDEs. NetBeans feels like Yet
Another IDE. Eclipse feels like The Next Step. It makes the left side of
my brain dance.

Signature

John W. Kennedy
"The pathetic hope that the White House will turn a Caligula into a
Marcus Aurelius is as naïve as the fear that ultimate power inevitably
corrupts."
  -- James D. Barber (1930-2004)
* TagZilla 0.066 * http://tagzilla.mozdev.org

Arne Vajhøj - 13 Mar 2007 01:42 GMT
>>> Visual Stuido's IDE just makes things to easy.
>>
[quoted text clipped - 5 lines]
> NB. ^_^  But if there's a reason to move to Eclipse I'd like to at least
> hear about it.

Hm. VE is free on Eclipse too. You may prefer Matisse over VE, but
I do not understand the "free" point.

Arne
Jason Cavett - 13 Mar 2007 04:17 GMT
> >> Visual Stuido's IDE just makes things to easy.
>
[quoted text clipped - 8 lines]
> Also, I'm not looking for an IDE flame war, just some perspective from a
> fellow Java user. ^_^ ^_^

Just a quick list of the small feature set Eclipse has:

1. On-the-fly compiling - you see errors as you create them
2. Built-in debugger - EXCELLENT
3. Plug-in centric - anybody can design plugins which greatly extends
the functionality of Eclipse.  This can include pretty much anything
(including other languages). Additionally, Eclipse now provides an
easy way to keep your plug-ins updated
4. Visual Editor - the visual editor, along with many other "side
projects" are part of the Eclipse Foundation project.  you can easily
add this (and hundreds of other) plug-ins to your Eclipse installation
5. Ant Builds - Eclipse helps in the creation of Ant scrips
6. Many different pieces of functionality including, but definitely
not limited to, automatic code formatting, automatic commenting (for
header comments, methods and other important stuff), built-in
integration with CVS (and other plug-ins can add integration with
other software control systems)...etc...etc...etc.
7. Context sensitive help.  If you're typing something like...
thisIsAString. ... and you can't remember a method name, just hit Ctrl
+Space and Eclipse will provide you with all your options.  This works
for pretty much any place you can type code into Eclipse.  If you are
running Eclipse on the JDK (as opposed to the JRE) you'll get even
better context sensitive help as Eclipse will also pull in the Javadoc
information.
8. It's all free (minus some of the plug-ins, but that's up to the
company developing those plug-ins anyway).

I haven't tried Netbeans, so I can't compare.  But, Eclipse is
definitely good, there is no doubt about that.
Mark Space - 14 Mar 2007 16:39 GMT
> Just a quick list of the small feature set Eclipse has:

> < snipped the list >

> I haven't tried Netbeans, so I can't compare.  But, Eclipse is
> definitely good, there is no doubt about that.

Good list.  Everything on that list, NetBeans does also.  I agree the
incremental compiler is a god-send over standard editors, and the
ability to find variables and method names on the fly is great.

I'm sure there's some differences in implementation and quality, but at
first blush they seem to compare very similarly.

P.S. NetBeans will also write code for you.  If you extend an abstract
class, or implement an interface, NB will ask you if you want it to
insert the prototypes for the abstract methods into your class for you.
 Saves time, typing and memory work!
Jason Cavett - 14 Mar 2007 20:26 GMT
> > Just a quick list of the small feature set Eclipse has:
> > < snipped the list >
[quoted text clipped - 12 lines]
> insert the prototypes for the abstract methods into your class for you.
>   Saves time, typing and memory work!

Yeah.  ;-)  Eclipse does that too.

I haven't used NetBeans in some time.  Sounds like they're on par with
each other.

BTW - Wonder who *really* hates Eclipse and gave everybody one star
rating for talking about it.  :-p
Oliver Wong - 15 Mar 2007 15:10 GMT
> P.S. NetBeans will also write code for you.  If you extend an abstract
> class, or implement an interface, NB will ask you if you want it to
> insert the prototypes for the abstract methods into your class for you.
> Saves time, typing and memory work!

   Eclipse does this too, as does Visual Studio .NET (for C#). And so I'd
assume all the "big" IDEs will do this for you.

   - Oliver
samir - 13 Mar 2007 05:46 GMT
> >> Visual Stuido's IDE just makes things to easy.
>
[quoted text clipped - 8 lines]
> Also, I'm not looking for an IDE flame war, just some perspective from a
> fellow Java user. ^_^ ^_^

Tell me what you linke about an IDE and I'll tell you you'll find it
in emacs :)
Lew - 13 Mar 2007 06:48 GMT
> Tell me what you linke about an IDE and I'll tell you you'll find it
> in emacs :)

I like the ability to debug servlet code as it runs on a Tomcat server, whilst
simultaneously debugging a Java application with which it interacts remotely.

I love emacs, don't get me wrong, and it was great as an IDE for C++, but Java
needs its native IDEs like Netbeans and Eclipse.

-- Lew
Jason Cavett - 13 Mar 2007 13:40 GMT
> > Tell me what you linke about an IDE and I'll tell you you'll find it
> > in emacs :)
[quoted text clipped - 6 lines]
>
> -- Lew

I could be wrong, but I'm not sure emacs even is technically an IDE
anymore than notepad would be considered an IDE.  I *think* (again,
could be wrong) it's just an editor.  Granted, it's a beefy editor,
but it's still an editor.
Lew - 13 Mar 2007 13:44 GMT
>>> Tell me what you linke about an IDE and I'll tell you you'll find it
>>> in emacs :)
[quoted text clipped - 10 lines]
> could be wrong) it's just an editor.  Granted, it's a beefy editor,
> but it's still an editor.

With integration with the gdb debugger and integration with the source-code
view so you can step through your code, view the trace in the debugger window
and simultaneously viewing the current source line in the source window. With
a full-blown macro language based on Scheme (or Lisp, or something) which is
about as powerful as any scripting language. With syntax highlighting and all
those beautiful language-aware things we like. With built-in email management
and an online psychiatrist. ...

It's highly integrated, it's for development, and it's a robust environment.
IDE. QED.

"Just an editor", indeed. Harrumph.

-- Lew
David Segall - 13 Mar 2007 14:35 GMT
>> > Tell me what you linke about an IDE and I'll tell you you'll find it
>> > in emacs :)
[quoted text clipped - 11 lines]
>could be wrong) it's just an editor.  Granted, it's a beefy editor,
>but it's still an editor.
Just an editor! Shame on you. It even includes a psychologist. Now you
can talk to Eliza on the Internet
<http://abcguides.com/abcsoftware/eliza_js_frame.htm> but then you
needed one at hand to console you after trying to read someone else's
Lisp.
Bent C Dalager - 13 Mar 2007 11:31 GMT
>Tell me what you linke about an IDE and I'll tell you you'll find it
>in emacs :)

I like refactoring support for Java 5+. Is there an emacs package that
does this?

Cheers
    Bent D
Signature

Bent Dalager - bcd@pvv.org - http://www.pvv.org/~bcd
                                   powered by emacs

Christian - 13 Mar 2007 12:14 GMT
Bent C Dalager schrieb:
>> Tell me what you linke about an IDE and I'll tell you you'll find it
>> in emacs :)
[quoted text clipped - 4 lines]
> Cheers
>     Bent D

can I pause my java program, look at the stacks of my threads (and
navigate through all objects), if something is not running as I want
then change my code while the program is paused, and go on with the
program with the changed code in place?

Do this with a gui?
And with less than 10 clicks?
possible with emacs? I don't know it ... never used emacs for coding
Jason Cavett - 13 Mar 2007 17:32 GMT
> Bent C Dalager schrieb:
>
[quoted text clipped - 16 lines]
> And with less than 10 clicks?
> possible with emacs? I don't know it ... never used emacs for coding

> can I pause my java program, look at the stacks of my threads (and
> navigate through all objects), if something is not running as I want
> then change my code while the program is paused, and go on with the
> program with the changed code in place?

Yeah...the Eclipse debugger is pretty freaken amazing.  I know there
are other debuggers out there, but, having been spoiled by Eclipse's
debugger, I still haven't found one I like better.  I can't imagine
programming without it.
Chris Uppal - 13 Mar 2007 18:32 GMT
> Yeah...the Eclipse debugger is pretty freaken amazing.  I know there
> are other debuggers out there, but, having been spoiled by Eclipse's
> debugger, I still haven't found one I like better.  I can't imagine
> programming without it.

Just curious, but what is it that strikes you as so special about the Eclipse
debugger ?

I may be missing a lot, since it just seems like a bog-standard debugger to me.

   -- chris
Jason Cavett - 13 Mar 2007 13:39 GMT
> > >> Visual Stuido's IDE just makes things to easy.
>
[quoted text clipped - 11 lines]
> Tell me what you linke about an IDE and I'll tell you you'll find it
> in emacs :)

> Tell me what you linke about an IDE and I'll tell you you'll find it
in emacs :)

Well...you could basically say that for any application...

"Tell me what you like about an operating system and I'll tell you
you'll find it in emacs."
"Tell me what you like about a first person shooter and I'll tell you
you'll find it in emacs."

;-)
Lew - 13 Mar 2007 14:02 GMT
>> Tell me what you linke about an IDE and I'll tell you you'll find it
> in emacs :)

> Well...you could basically say that for any application...
>
> "Tell me what you like about an operating system and I'll tell you
> you'll find it in emacs."
> "Tell me what you like about a first person shooter and I'll tell you
> you'll find it in emacs."

Tell me what you like about psychotherapy and I'll tell you you'll find it in
emacs.

Heck, I'll tell you right now:
M-x doctor

-- Lew
Jason Cavett - 13 Mar 2007 17:30 GMT
> >> Tell me what you linke about an IDE and I'll tell you you'll find it
> > in emacs :)
[quoted text clipped - 12 lines]
>
> -- Lew

Hahaha.  That's awesome.

:: will never understand the craziness of Emacs ::
Oliver Wong - 13 Mar 2007 16:02 GMT
> Tell me what you linke about an IDE and I'll tell you you'll find it
> in emacs :)

   I like how Eclipse has a "Package Explorer" view which lets you
navigate into JARs, and shows you wish files are synced with CVS/SVN and
which are not, and which files have compiler errors and which have
warnings via icons and clever use of fonts. I.e. I don't have to mouse
over, or click on any particular class or anything like that. How do I get
emacs configured to do the same?

   - Oliver
Chris Uppal - 13 Mar 2007 18:17 GMT
> Tell me what you linke about an IDE and I'll tell you you'll find it
> in emacs :)

;-)

Which prompts the question -- why is there no email client plug-in for Eclipse
yet ?  Or maybe there is, and I've missed it...

   -- chris
Oliver Wong - 13 Mar 2007 21:21 GMT
>> Tell me what you linke about an IDE and I'll tell you you'll find it
>> in emacs :)
[quoted text clipped - 4 lines]
> Eclipse
> yet ?  Or maybe there is, and I've missed it...

   I've seen one for GMail, but not one for general email:

http://tabaquismo.freehosting.net/ignacio/eclipse/gmailclipse/gmail-eclipse.htm

   - Oliver
Joshua Cranmer - 13 Mar 2007 22:35 GMT
>>>> Visual Stuido's IDE just makes things to easy.
>>> Normally I would agree with you, but Eclipse has made so many leaps
[quoted text clipped - 9 lines]
> Tell me what you linke about an IDE and I'll tell you you'll find it
> in emacs :)

Not hitting Ctrl, Alt, or Meta. I prefer vim, but I'll quickly duck out
before I start another vim/emacs war (there's already the seeds of an
eclipse/net-beans). Then again, this is from the person who uses at
least four different IDEs on a regular basis.
Jason Cavett - 13 Mar 2007 05:51 GMT
> >> Visual Stuido's IDE just makes things to easy.
>
[quoted text clipped - 8 lines]
> Also, I'm not looking for an IDE flame war, just some perspective from a
> fellow Java user. ^_^ ^_^

Just a quick list of the small feature set Eclipse has:

1. On-the-fly compiling - you see errors as you create them
2. Built-in debugger - EXCELLENT
3. Plug-in centric - anybody can design plugins which greatly extends
the functionality of Eclipse.  This can include pretty much anything
(including other languages). Additionally, Eclipse now provides an
easy way to keep your plug-ins updated
4. Visual Editor - the visual editor, along with many other "side
projects" are part of the Eclipse Foundation project.  you can easily
add this (and hundreds of other) plug-ins to your Eclipse installation
5. Ant Builds - Eclipse helps in the creation of Ant scrips
6. Many different pieces of functionality including, but definitely
not limited to, automatic code formatting, automatic commenting (for
header comments, methods and other important stuff), built-in
integration with CVS (and other plug-ins can add integration with
other software control systems)...etc...etc...etc.
7. Context sensitive help.  If you're typing something like...
thisIsAString. ... and you can't remember a method name, just hit Ctrl
+Space and Eclipse will provide you with all your options.  This works
for pretty much any place you can type code into Eclipse.  If you are
running Eclipse on the JDK (as opposed to the JRE) you'll get even
better context sensitive help as Eclipse will also pull in the Javadoc
information.
8. It's all free (minus some of the plug-ins, but that's up to the
company developing those plug-ins anyway).

I haven't tried Netbeans, so I can't compare.  But, Eclipse is
definitely good, there is no doubt about that.
Uwe Plonus - 13 Mar 2007 10:45 GMT
> Could elaborate a little on what Eclipse does that is so great?  I use
> Netbeans right now and I think it's the bomb.  Plus Matisse is free on
[quoted text clipped - 3 lines]
> Also, I'm not looking for an IDE flame war, just some perspective from a
> fellow Java user. ^_^ ^_^

For me there is no great difference. I work with both IDEs and both have
their pros and cons but no feature to say that one is better than the
other. As long as you write java programs it makes no difference between
biths IDEs. For support of other languages and db development Eclipse is
 ahead.

So use whichever you want.

Uwe
Arne Vajhøj - 13 Mar 2007 01:44 GMT
> Because .net 2.0 destroys it.  It's so much easier to get things done
> with .net.  Visual Stuido's IDE just makes things to easy.

Considering that a .NET user is stupid enough to post something
like that in a Java newsgroup, then one can have some doubts
about what .NET is going to destroy ...

Arne
Chris Smith - 12 Mar 2007 20:19 GMT
> Today, I've googled for "i hate java" and "java sucks".
>
> I wasn't really amazed of the number of pages listed.

You shouldn't be, really. :)

> biggest problem, I think, is java's coolest part: The huge availale
> classes and source code . For some one that likes programming it's a
> source of frustration.

I doubt it.  The biggest problem, almost certainly, is that like any
other worthwhile programming language, Java requires that you adjust
your frame of thinking a little.  Human beings don't like doing that,
because looks too much like admitting that one was wrong in the past.  
Many people react to this by projecting their fears as a hatred for
whatever is encouraging them to change their thinking... in this case,
Java.

> For me, all the staff above wasn't my problem. My problem was with
> accepting that such an amazing VM that can run on multiple
> achitectures is being wasted using such an archaic programming
> language.

You see?  Here we have another example.

Signature

Chris Smith

samir - 12 Mar 2007 20:40 GMT
> I doubt it.  The biggest problem, almost certainly, is that like any
> other worthwhile programming language, Java requires that you adjust
> your frame of thinking a little.  

Have you ever used Stackless Python, Scheme or encountred the concept
of generators or coroutines? You really need to adjust your frame of
thinking to get those things :)

> Human beings don't like doing that,
> because looks too much like admitting that one was wrong in the past.  

That's correct! It's in fact a handicap. You won't be able to learn
from your errors if you can't admit that what you were wrong.

> Many people react to this by projecting their fears as a hatred for
> whatever is encouraging them to change their thinking... in this case,
> Java.

I think that the success of java attracts maniacs :). Fears and
hatered must be projected on Microsoft and VB :D not on java.

> You see?  Here we have another example.

I like flames >:)

Adiaux
Samir
Chris Smith - 13 Mar 2007 03:17 GMT
> > I doubt it.  The biggest problem, almost certainly, is that like any
> > other worthwhile programming language, Java requires that you adjust
[quoted text clipped - 3 lines]
> of generators or coroutines? You really need to adjust your frame of
> thinking to get those things :)

There was another ingredient I forgot that helps give rise to the
sometimes severe hatred of Java: people are forced to use it.  Because
of Java's market position, a large number of people need to learn it in
order to remain employed (or, perhaps, employable).

Many other languages, including those you mention above, lack that
ingredient.  By and large, the majority of their users have made the
choice to use them.  That insulates them from bad will, to an extent.  
You can bet that the very instant that Scheme is adopted by a large
number of corporate products with large development teams, you'll see
far more hatred tossed around for Scheme than you ever did for Java.

Signature

Chris Smith

Chris Uppal - 12 Mar 2007 21:39 GMT
> > For me, all the staff above wasn't my problem. My problem was with
> > accepting that such an amazing VM that can run on multiple
> > achitectures is being wasted using such an archaic programming
> > language.
>
> You see?  Here we have another example.

You surely are not claiming that Java is /not/ of archaic design ?   (In the
sense of "archaic" that the OP clearly meant -- lacking invaluable features
which have been commonplace in language design for many decades, and which a
few modern scripting languages are finally starting to catch up with).

   -- chris
Chris Smith - 13 Mar 2007 03:22 GMT
> You surely are not claiming that Java is /not/ of archaic design ?   (In the
> sense of "archaic" that the OP clearly meant -- lacking invaluable features
> which have been commonplace in language design for many decades, and which a
> few modern scripting languages are finally starting to catch up with).

I believe that "archaic" is a loaded word.  Java lacks many features
that I'd like to see in it; but I am not a representative computer
programmer.  I recognize that languages that I like will be forever
beyond the abilities of the vast majority of programmers, and therefore
are doomed to be passed up for the great majority of software products.  
Not everyone can be impractical.  I suspect that samir is in a similar
position.

All in all, I think Java strikes a nice balance that has been very
successful; and it's not a coincidence that it has been so popular for
so long.  I'd be a fool to overlook that and preach the greatness of
Haskell (my favorite language du jour) as if it should be used for large
business software projects.

Signature

Chris Smith

christopher@dailycrossword.com - 13 Mar 2007 06:00 GMT
> You surely are not claiming that Java is /not/ of archaic design ?   (In the
> sense of "archaic" that the OP clearly meant -- lacking invaluable features
> which have been commonplace in language design for many decades, and which a
> few modern scripting languages are finally starting to catch up with).
>
>     -- chris
This is profound ignorance, or I don't understand the meaning of
common place terms like 'commonplace' and 'many decades.'  APL was
created in 1957 (5 decades is 'many' for the numerally challenged),
and I would venture to say Java has 'invaluable features' that APL
lacks.  Java has been around for what, 15 years?  So you are saying it
was a decade plus behind when it was invented?  That it in fact is,
contrary to all conceivable evidence, inferior to Cobol and Pascal?
Just how many languages were in common use in the 80's so their
advanced features could be considered common place?  5?  10?  Get some
perspective you silly, silly person.
Stefan Ram - 12 Mar 2007 20:37 GMT
>Today, I've googled for "i (...) java" and "java (...)".
>I wasn't really amazed of the number of pages listed.

     »There are just two kinds of languages: the ones everybody
     complains about and the ones nobody uses.«

   (Bjarne Stroustrup)
Chris Uppal - 12 Mar 2007 21:21 GMT
>       »There are just two kinds of languages: the ones everybody
>       complains about and the ones nobody uses.«
>
>     (Bjarne Stroustrup)

It is entirely understandable that he should omit all mention of a third
category of language -- the ones that people complain about even if they
/don't/ use them.

(Other perenial favourites in this category: COBOL, VB, ...)

   -- chris
samir - 12 Mar 2007 21:48 GMT
> >Today, I've googled for "i (...) java" and "java (...)".
> >I wasn't really amazed of the number of pages listed.
[quoted text clipped - 3 lines]
>
>     (Bjarne Stroustrup)

Python do not belong to any of those two categories :)
Arne Vajhøj - 13 Mar 2007 01:45 GMT
>>> Today, I've googled for "i (...) java" and "java (...)".
>>> I wasn't really amazed of the number of pages listed.
[quoted text clipped - 4 lines]
>
> Python do not belong to any of those two categories :)

Python is not that widely used.

Arne
samir - 13 Mar 2007 06:04 GMT
> >>> Today, I've googled for "i (...) java" and "java (...)".
> >>> I wasn't really amazed of the number of pages listed.
[quoted text clipped - 8 lines]
>
> Arne

It's true that Python isn't as popular as Java, but it isn't also a
programming language that "no body uses". See this:

http://www.dedasys.com/articles/language_popularity.html

I think that Python is "the next leap" to the future: Simplicity,
freedom and some black magic when needed.
Arne Vajhøj - 13 Mar 2007 10:56 GMT
>>>>> Today, I've googled for "i (...) java" and "java (...)".
>>>>> I wasn't really amazed of the number of pages listed.
[quoted text clipped - 11 lines]
> I think that Python is "the next leap" to the future: Simplicity,
> freedom and some black magic when needed.

I do not think that gives a true picture.

A search at Dice gives:

Java 16275 jobs
C++ 8090 jobs
C# 6719 jobs
VB 2823 jobs
VB.NET 2477 jobs
Cobol 1220 jobs
Python 962 jobs
Ruby 421 jobs
Ada 171 jobs
Fortran 131 jobs

Not quite mainstream yet.

Arne
Chris Smith - 13 Mar 2007 16:07 GMT
> It's true that Python isn't as popular as Java, but it isn't also a
> programming language that "no body uses". See this:
[quoted text clipped - 3 lines]
> I think that Python is "the next leap" to the future: Simplicity,
> freedom and some black magic when needed.

Beware of language attachment.  You seem to have a case of it.  Python
is a nice, well-designed language, to be sure.  That doesn't really
promote it above dozens of other languages that are all rarely used.  
"Not as popular as Java" is understating reality by about an order of
magnitude.

What really got me, though, was "the next leap" to the future.  I still
haven't seen one significant language feature that originated in Python.  
Can you enlighten me?

Signature

Chris Smith

Oliver Wong - 13 Mar 2007 16:37 GMT
>>>> Today, I've googled for "i (...) java" and "java (...)".
>>>> I wasn't really amazed of the number of pages listed.
[quoted text clipped - 6 lines]
>
> Python is not that widely used.

   And for what it's worth, I complain about Python: "Whitespace
sensitive? Is that a joke?"

   - Oliver
Chris Uppal - 12 Mar 2007 21:27 GMT
> What I want to say that Java (as a VM) is a cool and Java (the
> programming language) is a lesser thing.

If you haven't already looked at "Scala", then you may find that interesting.
Or maybe "Nice".

   http://www.scala-lang.org/
   http://nice.sourceforge.net/

   -- chris
samir - 13 Mar 2007 05:44 GMT
On Mar 12, 9:27 pm, "Chris Uppal" <chris.up...@metagnostic.REMOVE-
THIS.org> wrote:
> > What I want to say that Java (as a VM) is a cool and Java (the
> > programming language) is a lesser thing.
[quoted text clipped - 6 lines]
>
>     -- chris

Thank you for the information Chris, I've looked yesterday at Scala
and found it interseting. It's now on my Todo list :)

Adiaux
Samir
gethostbyname@gmail.com - 13 Mar 2007 00:01 GMT
> Today, I've googled for "i hate java" and "java sucks".
>
[quoted text clipped - 33 lines]
>
> P.S:

Well, I think that startup speed of Java (as a VM) is the main
inconvenience.

gethostbyname
Lew - 13 Mar 2007 00:30 GMT
I love Java.

I don't require perfection, just utility. It has plenty of that.

It could be a mistake to malign VB. That's a pretty useful language also.

-- Lew
samir - 13 Mar 2007 06:20 GMT
> I love Java.
>
> I don't require perfection, just utility. It has plenty of that.

The you might like Python too. Consider writing a complete program
without errors (it depends) containing up to 10 times less lines of
code than the same program written in Java.

Adiaux
Samir
samir - 13 Mar 2007 05:51 GMT
On Mar 13, 12:01 am, "gethostbyn...@gmail.com"
<gethostbyn...@gmail.com> wrote:

> > Today, I've googled for "i hate java" and "java sucks".
>
[quoted text clipped - 38 lines]
>
> gethostbyname

It takes "ages" to startup especialy on low ram machines. But, Java VM
takes no time to start from an ARM (they have native java bytecode
interpreter in their chips, and I like it :). I've read somewhere that
Sun have sacrificed size for the sake of speed :)
Ashoka! - 15 Mar 2007 04:10 GMT
> On Mar 13, 12:01 am, "gethostbyn...@gmail.com"
>
[quoted text clipped - 47 lines]
> interpreter in their chips, and I like it :). I've read somewhere that
> Sun have sacrificed size for the sake of speed :)

You have to pay for machine independence!!! if you want faster start
times some softwares will compile Java to exe format look for "Native
code compilers" on google to get a good idea.

Personnally I love the power of C/C++ but it does not have usable
API's. As for lovers of .net wait untill you have some hardcore
programming to do (where security, response time and availability are
critical). .Net makes it very easy to make software but the quality is
limited by the quality of Microsoft programs and we all know how good
they are. Java is a good compromise. As Winston Churchil once said "It
has been said that democracy is the worst form of government except
all the others that have been tried." same is the case with java.
Arne Vajhøj - 13 Mar 2007 01:41 GMT
> I wasn't really amazed of the number of pages listed. I can imagine
> the frustration of some newbie when, first, tweeking the installation
> or struggling with some IDEs that consume "astronomical" (three years
> ago, my computer had 16mb of ram : )

You used an outdated computer 3 years ago. Not really Javas fault.

>                                          amounts of memory. But the
> biggest problem, I think, is java's coolest part: The huge availale
[quoted text clipped - 7 lines]
> language. No multiple inheritance, garbage collection and the
> templates are childish.

I think most agree that multiple inheritance and explicit deallocation
of memory is a bad thing.

C++ templates can do some things that Java generics can not. And
vice versa. They are simply relative different concepts.

> For me, all the staff above wasn't my problem. My problem was with
> accepting that such an amazing VM that can run on multiple
[quoted text clipped - 8 lines]
> number of lines in program, but it's about reducing the time needed
> for debugging and praying that the thing will work.

If you like that type of language then fine. You may also want
to check JRuby and Groovy out.

I do not think you need to try jgnat (Ada).

:-)

> What I want to say that Java (as a VM) is a cool and Java (the
> programming language) is a lesser thing.

Your choice.

One size does not fit all.

Arne
samir - 13 Mar 2007 06:16 GMT
> > I wasn't really amazed of the number of pages listed. I can imagine
> > the frustration of some newbie when, first, tweeking the installation
> > or struggling with some IDEs that consume "astronomical" (three years
> > ago, my computer had 16mb of ram : )
>
> You used an outdated computer 3 years ago. Not really Javas fault.

Outdated computers are the real test for any os/programming language.

> >                                          amounts of memory. But the
> > biggest problem, I think, is java's coolest part: The huge availale
[quoted text clipped - 10 lines]
> I think most agree that multiple inheritance and explicit deallocation
> of memory is a bad thing.

Not that bad :). I think that multiple inheritance just requires more
attention and discipline when programming. Explicit deallocation of
memory is good thing to keep track of your RAM usage. I think that
most people will say that garbage collection is a bad thing when it
comes to a language like Java.

> C++ templates can do some things that Java generics can not.

Like operator overloading?

> And vice versa. They are simply relative different concepts.
> > For me, all the staff above wasn't my problem. My problem was with
[quoted text clipped - 12 lines]
> If you like that type of language then fine. You may also want
> to check JRuby and Groovy out.

Tried JRuby, didn't like it :(

> I do not think you need to try jgnat (Ada).
> :-)

I did some Ada in school. Cool programming language. I'll give jgnat a
try :)

> > What I want to say that Java (as a VM) is a cool and Java (the
> > programming language) is a lesser thing.
>
> Your choice.
>
> One size does not fit all.

As expected :)

> Arne

Adiaux
Samir
Chris Smith - 13 Mar 2007 16:53 GMT
> > You used an outdated computer 3 years ago. Not really Javas fault.
>
> Outdated computers are the real test for any os/programming language.

I suppose that are the real test of something -- namely, how well the OS
or language works on an outdated computer.  Extrapolating from that to
modern computers, though, is dangerous.  Performance does not always
scale linearly with the resources of the computer in use, and poor
performance on an old machine does not indicate that the same will be
true of a newer machine.  In the case of Java, this is significant
because the virtual machine is optimized for environments with an excess
of RAM.  In other cases, problems arise because the nature of many
applications is that there are thresholds beyond which performance
degradation is noticable.  If you cross that threshold, performance may
appear bad even though it will be unnoticable on a more realistic
system.

> > I think most agree that multiple inheritance and explicit deallocation
> > of memory is a bad thing.
>
> Not that bad :). I think that multiple inheritance just requires more
> attention and discipline when programming.

Okay.  There really isn't a standard by which one can judge these
things.  I rarely, if ever, have found multiple inheritance advantageous
in languages like C++ that I've used which allow it.  Because OO is a
fundemantally pragmatic idea which lacks a formal basis, though, I can't
extrapolate from that to a "good/bad" idea classification.  It is a
trade-off; YMMV.

> Explicit deallocation of
> memory is good thing to keep track of your RAM usage. I think that
> most people will say that garbage collection is a bad thing when it
> comes to a language like Java.

This one I have more trouble with.  You may be right that "most" people
will say garbage collection is bad, or you may not.  I suspect not.  In
either case, though, most people who know what they are talking about
will agree that garbage collection is quite a good idea for an
application programming language (which I assume is what you mean by a
language "like Java"?)

> > C++ templates can do some things that Java generics can not.
>
> Like operator overloading?

Well, no.  The two things are pretty well orthogonal.  Templates and
operator overloading are only tangentially relevant to each other even
in C++, and only because they must coexist.  A language could have one
or the other without both.

Signature

Chris Smith

Oliver Wong - 13 Mar 2007 16:53 GMT
> Outdated computers are the real test for any os/programming language.

   Your usage of the definite article "the" implies that you think there
is only one test for an OS or programming language. Perhaps you meant
"Outdated computers are a real test for any OS/programming language"?
Another good test for OS and programming languages are "ultra-modern super
computers": Is this particular OS/programming language able to squeeze out
every ounce of power that the computer provides, or is some of the power
wasted. Yet another "test" might be "the average desktop computer the
target customer base is running": does our OS/programming language bring
the greatest amount of utility to the greatest amount of people, etc.

> > I think most agree that multiple inheritance and explicit deallocation
> > of memory is a bad thing.
>
> Not that bad :).

   Well, "bad" is an emotionally loaded word. I'd prefer to phrase it as
"If the solution to your problem is most elegantly expressed in terms of
multiple inheritance and explicit deallocation of memory, then you
probably shouldn't be using Java to solve that particular problem".

> I think that multiple inheritance just requires more
> attention and discipline when programming. Explicit deallocation of
> memory is good thing to keep track of your RAM usage.

   One nice thing about Java (from the perspective of large corporations)
is that it discourages a "lone cowboy" mentality. This is the mentality
where a programmer enjoys a good mental challenge, and thus seeks out
languages which "requires more attention and discipline when programming".
Corporations would rather programmers just do what they're told, solve
their programming problems in the traditional way, such that if one
programmer gets laid off, it's easy to replace them with another
programmer, as everyone does everything the same way, and it's easy(ier)
to pick up someone else's code if they didn't do anything unexpected or
"clever".

> I think that
> most people will say that garbage collection is a bad thing when it
> comes to a language like Java.

   Well, there are people who think all garbage collection is bad,
regardless of which language's implementation we're talking about, and
there are people who think all garbage collection is good, regardless of
which language's implementation we're talking about. The interesting case
(to me, anyway) would be people who generally think garbage collection is
good, but didn't like the way it got implemented in Java. Do any such
people exist? Would you still think that these category of people consist
of the majority?

> > C++ templates can do some things that Java generics can not.
>
> Like operator overloading?

   I think C++ templates and C++ operator overloading are pretty
orthogonal topics.

   - Oliver
Chris Smith - 13 Mar 2007 17:30 GMT
Hi Oliver,

>     One nice thing about Java (from the perspective of large corporations)
> is that it discourages a "lone cowboy" mentality. This is the mentality
[quoted text clipped - 6 lines]
> to pick up someone else's code if they didn't do anything unexpected or
> "clever".

There are, of course, both good and bad sides to this.  On the one hand,
intentionally obfuscated or unnecessarily complex code isn't good for
anyone.  On the other hand, there are problems which are just plain
harder to express in some languages than others.  Many times, it's not
easy to tell the difference between the two until you're familiar with
all of the options.  So I'm not sure I'd entirely classify rooting out
this "lone cowboy" mentality as a benefit.  The risk, of course, is that
companies will cease to derive any benefit whatsoever from hiring good
people.

As in all things, a balance must be found.

Signature

Chris Smith

Lew - 14 Mar 2007 03:48 GMT
> ... I'm not sure I'd entirely classify rooting out
> this "lone cowboy" mentality as a benefit.  The risk, of course, is that
> companies will cease to derive any benefit whatsoever from hiring good
> people.

That risk, expressed as an absolute like that, is zero. The risk can be seen
from two sides: the companies' and the programmers'. Generally the risk is
that the benefit to companies / opportunity for programmers in good
programming will diminish, but it really cannot cease to exist altogether.

Programming is a wicked problem - its solutions depend on problem inputs and
chaotic variables like the character of the developers. It seems not even
theoretically possible to automate programming completely because it involves
mapping mental or linguistic spaces to computer actions. It seems not even
theoretically possible to simplify programming to where managers can do it,
because the social nature of the problems to solve changes. Evolution in the
understanding of software development affects the solution spaces, as do the
capabilities of the electronic systems involved. Emergent phenomena from the
growth of high-speed wide-area networks and other technologies affect the space.

The risk is that the space of problems that require wicked awesome developers
will shrink, relegating most to day-laborer tasks. The likelihood is that
there will always be significant demand for truly skilled programmers to keep
pushing the envelope.

As was pointed out by a writer I cannot recall to attribute (may have been in
/Programming Pearls/ or /The Psychology of the Computer Programmer/), when
considering the fate of systems to automate programming, consider also who is
developing those systems.

-- Lew
tjmadden1128@gmail.com - 14 Mar 2007 15:24 GMT
> The risk is that the space of problems that require wicked awesome developers
> will shrink, relegating most to day-laborer tasks. The likelihood is that
> there will always be significant demand for truly skilled programmers to keep
> pushing the envelope.
>
> -- Lew
Which means that companies will try to lower the bottom line and hire
more
off-shore programmers instead of higher priced domestic labor. Or save
more by
with off-shore consulting.
Chris Smith - 14 Mar 2007 16:24 GMT
> > ... I'm not sure I'd entirely classify rooting out
> > this "lone cowboy" mentality as a benefit.  The risk, of course, is that
[quoted text clipped - 5 lines]
> that the benefit to companies / opportunity for programmers in good
> programming will diminish, but it really cannot cease to exist altogether.

Sure, okay.

> The risk is that the space of problems that require wicked awesome developers
> will shrink, relegating most to day-laborer tasks. The likelihood is that
> there will always be significant demand for truly skilled programmers to keep
> pushing the envelope.

Absolutely.  I am not concerned with that risk.  When (and if!) software
becomes more trivial to write, the problems that software solves will
change until there is still need for skilled programmers.  The process
doesn't run like clockwork, so there are times when it seems that
programmers are becoming more commoditized; but history teaches that
this will change when new kinds of problems arise.  My concern is quite
on the opposite side of the spectrum; that companies are adopting
approaches that prevent them from taking advantage of the level of skill
that is offered to them by their development task.  The result is that
problems which should be solved quickly and easily often take a long
time and a large amount of work because the project is planned as if it
will.

To be clear; I do not see frequent use of Java as a symptom of this
problem.  Even quite skilled programmers often reasonably choose
languages that don't require a huge amount of skill to read their code.  
I simply used your post as a springboard to discuss a topic that
concerns me.

Signature

Chris Smith

Lew - 15 Mar 2007 02:48 GMT
> Absolutely.  I am not concerned with that risk.  When (and if!) software
> becomes more trivial to write, the problems that software solves will
[quoted text clipped - 14 lines]
> I simply used your post as a springboard to discuss a topic that
> concerns me.

Now I get your point. Very right.

I have seen this risk in practice. It is part of the larger human failing of
trying to go on the cheap and getting cheap as a result.

By my own observation I have seen 50:1 speedups in time-to-result when a
programming team is turned loose compared to the factory model of managing a
software project. I have seen even higher ratios, but my personal sample space
is a little too small to confidently quote them. There was a concomitant
increase in maintainability and robustness. too.

But employers don't usually opt for this approach. Teams are organized around
the least competent skill level, and suggestions of algorithmic improvement RE
often rejected on the basis that it might be "too advanced" for some team
members. On the rare occasions when I have countered with the suggestion that
it would be better to upgrade the team than downgrade the product, I have
gotten in trouble.

The risk you identify is real and present.

-- Lew
Arne Vajhøj - 14 Mar 2007 02:04 GMT
>>> I wasn't really amazed of the number of pages listed. I can imagine
>>> the frustration of some newbie when, first, tweeking the installation
[quoted text clipped - 3 lines]
>
> Outdated computers are the real test for any os/programming language.

Depends on your criteria.

I find small foot print programs interesting from an engineering
point of view.

But from a practical/commercial point of view it is not
relevant (unless for special cases like embedded).

DOS 6.22 and TP 7 is not that useful today.

>> I think most agree that multiple inheritance and explicit deallocation
>> of memory is a bad thing.
[quoted text clipped - 4 lines]
> most people will say that garbage collection is a bad thing when it
> comes to a language like Java.

No. Look at all the new languages. GC is becoming the standard.

The reason is that it is unrealistic to expect all programmers
to have "attention and discipline".

>> C++ templates can do some things that Java generics can not.
>
> Like operator overloading?

That is not really related to templates.

But that is another feature C++ has that Java does not.

It would be relative risk free to add it to Java. But not that
important in my opinion.

Of course << and >> should not be used for IO.

Arne
Jon - 13 Mar 2007 12:08 GMT
> > I wasn't really amazed of the number of pages listed. I can imagine
> > the frustration of some newbie when, first, tweeking the installation
[quoted text clipped - 20 lines]
> C++ templates can do some things that Java generics can not. And
> vice versa. They are simply relative different concepts.

You can do things with multiple inheritance that can never be done
with interface implementations alone.  Can it be abused? probably.
Does that justify tieing the programmers hands?  I would argue no.

I find the statement that "explicit deallocation of memory is a bad
thing" to be laughable.  It assumes that this MUST be done in C++.  If
you look at boost shared pointers and the like you will find that
object lifetime can be easily and, more importantly, predictably
managed.  There seems to be an implicit assumption in this rather
childish statement in the philosophy behind garbage collection that
memory is the only resource that must be managed.  File handles,
network connections, and other resources that are just as important to
manage and must be managed in a way that is more deterministic that
can be done by relying on garbage collection.  The result is that, if
you code a class in Java that must manage one of these resources, you
MUST add methods that allow the application to release the resources
and these MUST be invoked before the object reference is released.
So, tell me again,  how does GC really help here??

There are a lot of other "features" of Java that I find very
annoying.  Examples:

 - Lack of unsigned integer types.  I realise that, with two's
complement math, the math operations between signed and unsigned is
all the same.  However, I find that not being able to use unsigned
types results in sign extension in places where it was not expected
and results in casting/masking operations that only serve to clutter
the source code.

 - Bit shift operations only appear to be implemented for the integer
type.  The result:  if I am trying to do bit shifts on something
smaller than an integer, a byte or a short, the arguments are promoted
to integers and the reslt of the shift is an integer.  So in order to
assign that back to something smaller than an integer,  guess what,
yet another cast is needed.

Me measure of the "goodness" of a language or its implementation is
whether I can accomplish the task I set out to do without having to
fight the language or its implementation.  If I have to litter my code
with cluttering casts simply to produce the correct results or to
satisfy the childish demands of the compiler, I become annoyed.  If
the language hobbles me rather than allowing me to express the design,
it also becomes annoying.  My personal experience is that Java is
cluttered with these kind of issues.

It seems to be easy to forget that there are reasons for writing
programs that transcend the language or environment in which it is
developed.  At the end of the day, my value to my employer is not in
the languages I have mastered but in what I can produce that can solve
our customers problems and/or needs.  To the extent that the language
and/or environment facilitates that, it becomes a valuable tool.  To
the extent that the language/environment fetters that, it becomes less
valuable and less likely to be chosen as a tool.  No language or
environment is free from blemish.  Java has some real advantages but I
do not consider it a replacement for what can be done in C++.
Oliver Wong - 13 Mar 2007 17:26 GMT
On Mar 12, 6:41 pm, Arne Vajhøj <a...@vajhoej.dk> wrote:

> You can do things with multiple inheritance that can never be done
> with interface implementations alone.

   Nitpick, but I think Alan Turing would disagree with you
(http://en.wikipedia.org/wiki/Turing_completeness)

> Can it be abused? probably.
> Does that justify tieing the programmers hands?  I would argue no.

   And I would argue "yes". It sounds like you're looking at this from a
programmer's perspective (and more precisely, from a highly skilled
programmer's perspective): "I can handle C++, so there's no reason for a
programming language like Java to exist, or if Java must exists, there's
no reason for it to be significantly different from C++."

   To determine whether something justifies a decision-maker's decision,
look at it from the perspective of that decision-maker: Sun wanted to
invent a new programming language that would be attractive to large
corporations. The majority of programmers at the time were using C++, so
its Java was designed with similar syntax. But Java didn't need to stay
backwards compatible with C, so they removed a lot of parts that the
Java-team deemed "ugly" which was probably mainly maintained in C++
primarily for backwards compatibility.

   Additionally, the majority of programmers are mediocre (this is by
definition of "mediocre"), and were abusing and getting entangled in some
of C++ more complex parts. For these particular programmers, things like
multiple-inheritance and other such features were doing more harm than
good, and so they were removed from Java.

   By creating and releasing Java, Sun did not "tie" anyone's hands in
the sense of "removing" freedom: Any programmers who want to program in
C++ are free to do so. Instead, they added freedom by allowing programmers
who wish to guarantee that they'll never need to encounter MI and other
"complex" features of C++ the freedom to do so: by working in Java
instead.

> I find the statement that "explicit deallocation of memory is a bad
> thing" to be laughable.  It assumes that this MUST be done in C++.  If
[quoted text clipped - 10 lines]
> and these MUST be invoked before the object reference is released.
> So, tell me again,  how does GC really help here??

   It doesn't. GC is meant for collecting memory-related garbage. For
things like network connections and file handles, you'd typically use a
"try-finally" statement to release those resources.

> There are a lot of other "features" of Java that I find very
> annoying.  Examples:
[quoted text clipped - 5 lines]
> and results in casting/masking operations that only serve to clutter
> the source code.

   Has anyone really ever claimed this to be a "feature"? I've
occasionally been annoyed by this: You know, like when I'm writing a game,
and I want some data type which can store a bit more than than an int, but
not so much as a long, and which will never store a negative value (e.g.
damage done via some weapon), and I feel a bit bad about wasting 4 extra
bytes for using a long instead of an int. But really, it's a minor
annoyance, and it usually passes as soon as I move onto other parts of the
game.

>   - Bit shift operations only appear to be implemented for the integer
> type.  The result:  if I am trying to do bit shifts on something
> smaller than an integer, a byte or a short, the arguments are promoted
> to integers and the reslt of the shift is an integer.  So in order to
> assign that back to something smaller than an integer,  guess what,
> yet another cast is needed.

   This may be just a personal perception, but bit-shifting seems like
one of those things which is getting "close to the hardware", and thus
outside of Java's area of expertise. The only domain I know where bit
shifting is really used from a mathematical (and thus machine-agnostic)
perspective is cryptography, but I understand that Sun provides some
library support for common cryptographic manipulations, so you shouldn't
need to write your own anyway. I've never used this part of the library,
so I don't know how good, or complete, they are, but from limited study of
cryptography I've done, the number one lesson seems to be that you
probably shouldn't be writing your own cryptography routines anyway.

> Me measure of the "goodness" of a language or its implementation is
> whether I can accomplish the task I set out to do without having to
[quoted text clipped - 4 lines]
> it also becomes annoying.  My personal experience is that Java is
> cluttered with these kind of issues.

   I think a lot of people feel the same way about, e.g., C++ or Python,
or any other language. E.g. "Memory leak? Can't the
compiler/runtime-environment/whatever see when I'm done with this object
and get rid of it for me?" or "I have to play with the whitespace to make
the compiler happy? WTF?"

   I think until AI has progressed enough that natural language is viable
as a programming language, then for every programming language, there will
exist someone out there who will consider some of the "demands" of the
compiler to be "childish". Perhaps even with natural language, there will
be some pointy haired boss out there who will still consider certain
demands (e.g. logical self-consistency) to be childish. "Do what I mean,
not what I say".

> It seems to be easy to forget that there are reasons for writing
> programs that transcend the language or environment in which it is
[quoted text clipped - 6 lines]
> environment is free from blemish.  Java has some real advantages but I
> do not consider it a replacement for what can be done in C++.

   And I don't think Java is marketed as a replacement for what *can* be
done in C++. There are some programs which are better expressed in C++,
and there are some programs that are better expressed in Java. Because of
momentum, there are a bunch of programs which would be better expressed in
Java, but which are currently being written in C++. It's *those* programs
for which Java is being pushed as a replacement for C++.

   - Oliver
Chris Uppal - 13 Mar 2007 19:02 GMT
> >   - Lack of unsigned integer types.  [...]
>
>   [...]. But really, it's a minor
> annoyance, and it usually passes as soon as I move onto other parts of the
> game.

It's a Very Major Annoyance if you have to interwork with systems which use
unsigned quantities (and such systems are anything but rare).  For instance if
you are reading 32-bit unsigned data from a database or from a network
connection then you have problems (solvable, but significant).  If you are
reading 64-bit unsigned data from a database or network connection then you
have /serious/ semantic problems to surmount.

>     This may be just a personal perception, but bit-shifting seems like
> one of those things which is getting "close to the hardware", and thus
> outside of Java's area of expertise. The only domain I know where bit
> shifting is really used from a mathematical (and thus machine-agnostic)
> perspective is cryptography,

And anything which has to interwork with external systems (which includes file
formats of all kinds as well as networking).  And anything which needs
bit-level operations to express designs that /could/ be done another way, but
which -- for reasons of clarity[*] or efficiency -- should not be.  In fact,
there are lots of applications for bit-twiddling...

But then, I find Java's bit-twiddling operations perfectly adequate, in both
theory and practise -- they are after all identical to what C or C++ provide
(with a few caveats about sign extension).

(The only real annoyance is that >> performs sign-extension, which is daft.)

> [...] or "I have to play with the whitespace to make
> the compiler happy? WTF?"

Presumably people who like white-space-is-significant languages (I have mixed
feelings myself) would say "I have to play with { and } to make the compiler
happy? WTF?"  ;-)

   -- chris

[*] It's instructive to read first Sedgewick's "Algorithms" book, which used
Pascal, and his criticisms of Pascal for a lack of bit-twiddling operations
which makes some important algorithms harder to think about or express in code.
Arne Vajhøj - 14 Mar 2007 02:18 GMT
>> I think most agree that multiple inheritance and explicit deallocation
>> of memory is a bad thing.
[quoted text clipped - 5 lines]
> with interface implementations alone.  Can it be abused? probably.
> Does that justify tieing the programmers hands?  I would argue no.

It is very rare to have a need for multiple inheritance.

And experience has shown that the dreaded DoD often surprise
people.

> I find the statement that "explicit deallocation of memory is a bad
> thing" to be laughable.  It assumes that this MUST be done in C++.  If
[quoted text clipped - 10 lines]
> and these MUST be invoked before the object reference is released.
> So, tell me again,  how does GC really help here??

You can write "laughable" and "childish" many times.

Any programmer who have worked with C/C++ knows that
there is almost always some team member than manage
to create a memory leak.

If all programmers were perfect, then GC would not be necessary.
Except for the improved performance.

That automatic memory release does not handle non memory resources
is not particular surprising. But I can not see it as an argument
against automatic memory release.

>   - Lack of unsigned integer types.  I realise that, with two's
> complement math, the math operations between signed and unsigned is
[quoted text clipped - 9 lines]
> assign that back to something smaller than an integer,  guess what,
> yet another cast is needed.

I agree.

> It seems to be easy to forget that there are reasons for writing
> programs that transcend the language or environment in which it is
[quoted text clipped - 6 lines]
> environment is free from blemish.  Java has some real advantages but I
> do not consider it a replacement for what can be done in C++.

C/C++ will exist for many years. It may outlive Java and C#. But the
usage of C/C++ is going to be small in the next decade compared
with Java, C# and the scripting languages.

Arne
Mark Space - 14 Mar 2007 16:33 GMT
> Any programmer who have worked with C/C++ knows that
> there is almost always some team member than manage
> to create a memory leak.

Yeah!  I hate that guy!

Oh wait....   ;)
Joshua Cranmer - 13 Mar 2007 03:19 GMT
> Today, I've googled for "i hate java" and "java sucks".
>
[quoted text clipped - 7 lines]
> have been done. Then, you get simply lost when learning: What class'
> should I start with? How do I choose one?...

Looking at the CS curriculum and experiences of fellow students, I can
see why some people hate Java: it's the first programming language they
use and it's difficult for them. I know many people who get caught up in
one annoying bug and then blast it as a reason that XYZ "sucks" or
"should rot in hell", etc. Even more experience: I know people who hate
programming in C because of the difficulty with pointers.

> For the rest, the problem is with java the programming language (not
> the virtual machine): Java is seen by many people as a toy programming
> language. No multiple inheritance, garbage collection and the
> templates are childish.

Multiple inheritance can get quickly problematic, AI used LISP mostly
because it had GC, and C++ templates can get ugly sometimes (STL,
anyone?). People will complain that Java goes too far/not enough until
the end of time.

> For me, all the staff above wasn't my problem. My problem was with
> accepting that such an amazing VM that can run on multiple
[quoted text clipped - 3 lines]
> ready to compete with Java). The one that had my attention the most is
> Jython. The power of python within a Java VM :)

Python -- the most backwards-incompatible language I've ever seen. As a
side note, Java (the VM) is the most backwards-compatible language I've
ever seen. Between Java 1.0 and Java 1.6, despite all of the features
implemented on the programming language, functionally, the only changes
in the virtual machine have been a shift in invokespecial, the
deprecation of jsr/ret, and the newer, more stringent bytecode
verification. If you changed a class version 50.0 to 45.0, /the code
would still run/. That's impressive.
Oliver Wong - 13 Mar 2007 17:35 GMT
> Looking at the CS curriculum and experiences of fellow students, I can
> see why some people hate Java: it's the first programming language they
> use and it's difficult for them. I know many people who get caught up in
> one annoying bug and then blast it as a reason that XYZ "sucks" or
> "should rot in hell", etc.

   Indeed. I don't know why they don't start off with BASIC or some other
simple, imperitive language instead (simply don't teach the students the
"GOTO" keyword, and if they discover it via some other source, explain to
them that it's simply there for historical reasons, and its usage is
generally discouraged, and from then on, penalize their grades if it
starts showing up in their code).

   The imperivative paradigm is much easier to grasp than the OO one, and
starting off with a language like Java means you either have to jump right
into OO, thus confusing them terribly, or do a lot of handwaving over the
keywords "public", "class" and "static", and say "Just always make
everything public, and make all your methods static. I'll tell you why
next year. Oh, and the compiler will let you declare variables inside of
classes, but outside of methods. But don't do that. Always declare all
your variables inside of methods. At least until next year, where you'll
then need to start declaring variables in the classes, and outside of the
methods, and they won't be static anymore."

   Python (since it was mentioned several times in this thread) might
actually be a good beginner language, though I've never met anyone whose
first language was Python, so I don't have any empirical evidence to back
up this theory.

[...]

> Python -- the most backwards-incompatible language I've ever seen.

   While I've written a few simple apps in Python (mainly for coursework
back when I was in university), I don't know enough Python to have ever
encountered any backwards-incompatibility issues. Have you also used PHP?
Is it worse than the PHP4-PHP5 transition?

   - Oliver
Joshua Cranmer - 13 Mar 2007 22:52 GMT
>> Looking at the CS curriculum and experiences of fellow students, I can
>> see why some people hate Java: it's the first programming language they
[quoted text clipped - 8 lines]
> generally discouraged, and from then on, penalize their grades if it
> starts showing up in their code).

Discouraged thanks to Dijkstra's "Goto considered harmful in
programming." I'd be fine with BASIC, except it has 1-based arrays,
which means making BASIC/C, BASIC/Java, etc. jumps difficult. I can't
think of any suitable language that looks reasonably like C, C++, Java,
Python, etc. is imperative, and yet shields users from caveats (like C
pointers: not a good thing for CS neophytes).

>     The imperivative paradigm is much easier to grasp than the OO one, and
> starting off with a language like Java means you either have to jump right
[quoted text clipped - 19 lines]
> encountered any backwards-incompatibility issues. Have you also used PHP?
> Is it worse than the PHP4-PHP5 transition?
I've used PHP4 and PHP5, so I know about that horrible transition, but
my point about Python is that the bytecode is incompatible, not the
actual language itself, so that opens up more cans of worms. It took
around an hour trying to figure out why a code compiled with python-2.3
wouldn't run with code written with python-2.4 (at the time, we didn't
know there was a difference). The error's didn't help, although I must
admit, PHP's was pretty bad. At the very least, version 4 to version 5
implies a big change, where as 2.3 to 2.4 doesn't imply such a change.

On second thought, gcc changed its name-mangling scheme too at some
point, so maybe I should retract my statement in favor of clarity. Ah well.
Lew - 14 Mar 2007 05:24 GMT
> (like C pointers: not a good thing for CS neophytes).

Actually, they are the perfect thing for CS neophytes. The problem is that
neophytes are coddled with Java and never have to confront wild pointers.
(They frequently don't have to learn analytic thinking, either, but that's a
separate issue.) Better to start them on something hard and really understand
what is up with these computer things than wait until they hit the work world
as programmers and don't understand /why/ Struts has an Action class framework
or why dereferencing a null variable is a Bad Thing.

Programming is really not a simple exercise and we should really work those
neophytes' a.ses off to learn it instead of turning them loose half baked.

-- Lew


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread