Every Flavour Beans

“The time has come…to talk of many [technologies].” –Lewis Carroll(‘The Walrus and the Carpenter’)
Development Tools. Web Frameworks. GNU/Linux. Nokia N800. Video Encoding.

July 12, 2006

What Experts Say About The Java Language: Humorous Quotes

Filed under: General, Java — tabrez @ 3:40 pm

There has been so much hype and misinformation spread about the Java language and related technologies that it feels imperative to correct some of those myths associated with it. Far from attempting to put to rest many false acclamations about the language, here is just a small collection of my favourite quotes about the Java language and its ‘killer features’, some of them by the people who have a special interest in programming language design.

“Ten years from now, Java will be taught in every university. Not in the engineering or computer science departments, but in the business and marketing courses. Java is one of the best examples of the triumph of marketing over technology.” –Jim Turley

Isn’t it both true and funny? Or is it funny only because it is true? Just as one example, remind yourself about the hype created over the plarform indenpendence of the Java language. Write once, Run everywhere. How true this statement has turned out to be is no big secret today. The following extract from the book ‘Inside Java Virtual Machines’ is NOT a humorous quote. Well, read it on your
own and find out if it sounds funny or not regarding the BIG promise of Java about the platform independence.

Seven Steps to Platform Independence

  1. Choose a set of host computers and devices that you will claim your program runs on (your “target hosts”).
  2. Choose an edition and version of the Java Platform that you feel is well enough distributed among your target hosts. Write your program to run on this version of the Java Platform.
  3. For each target host, choose a set of Java Platform implementations that you will claim your program runs on (your “target runtimes”).
  4. Write your program so that it accesses the host computer only through the standard runtime libraries of the Java API. (Don’t invoke native methods, or use vendor-specific libraries that invoke native methods.)
  5. Write your program so that it doesn’t depend for correctness on timely finalization by the garbage collector or on thread prioritization.
  6. Strive to design a user interface that works well on all of your target hosts.
  7. Test your program on all of your target runtimes and all of your target hosts.
  8. If you follow the seven steps outlined above, your Java program will definitely run on all your target hosts.
    –Bill Venners[Chapter 2 of Inside the Java Virtual Machine]

After criticising all the features of C++ that were not included in Java to be ‘unncessary sources of complexities in the programs’, generics(and enums etc) were added to the language eventually(perhaps too late in the day). After referring to C++ as a legacy/obsolete language right since the first release of the Java language, C++ language support is now being included in even a popular Java IDE like NetBeans.

Sun announces C/C++ support for NetBeans IDE
March 23, 2006

Why support an old, legacy, complex and idiotic language in 2006??
–Unknown Source


Alexander Stepanov
is the creator of STL. He claims that he has not found his ideal language in any of the existent ones and would love to create one if he is funded by someone. Let’s hear what he has to say about Java language:

“I spent several months programming in Java. Contrary to its author’s prediction, it did not grow on me. I did not find any new insights – for the first time in my life programming in a new language did not bring me new insights. It keeps all the stuff that I never use in C++ – inheritance, virtuals – OO gook – and removes the stuff that I find useful. It might be successful… but it has no intellectual value whatsoever
–Alexander Stepanov

It was refreshing to hear similar sentiments expressed about the Java language by someone else too. Though Java has been useful in solving many a problems more easily than some of the other languages, ‘no intellectual value whatsoever’ quality of it has exactly been my own opinion about the language. It fails to teach anything new to someone who already knows a few other languages.

Alex Stepanov continues:

“It[Java] might be successful – after all, MS DOS was – and it might be a profitable thing for all your readers to learn Java, but it has no intellectual value whatsoever. Look at their implementation of hash tables. Look at the sorting routines that come with their “cool” sorting applet. Try to use AWT. The best way to judge a language is to look at the code written by its proponents. “Radix enim omnium malorum est cupiditas” – and Java is clearly an example of a money oriented programming (MOP). As the chief proponent of Java at SGI told me: “Alex, you have to go where the money is.” But I do not particularly want to go where the money is – it usually does not smell nice there.”

Answering another question about the difference between Generic programming and OO programming, Alex replies:

“My approach[Generic Programming] works, theirs[OO Programming] does not work. Try to implement a simple thing in the object oriented way, say, max. I do not know how it can be done. Using generic programming I can write:
[Example Generic Code for max routine]
Try doing it in Java. You can’t write a generic max() in Java that takes two arguments of some type and has a return value of that same type. Inheritance and interfaces don’t help. And if they cannot implement max or swap or linear search, what chances do they have to implement really complex stuff? These are my litmus tests: if a language allows me to implement max and swap and linear search generically – then it has some potential.

Here is what Alex feels about Object Oriented paradigm:

“And I had many false starts. For example, I spent years trying to find some use for inheritance and virtuals, before I understood why that mechanism was fundamentally flawed and should not be used.”

More on Object Oriented paradigm by Alex:

“I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. In a sense, I am unfair to AI: I learned a lot of stuff from the MIT AI Lab crowd, they have done some really fundamental work: Bill Gosper’s Hakmem is one of the best things for a programmer to read. AI might not have had a serious foundation, but it produced Gosper and Stallman (Emacs), Moses (Macsyma) and Sussman (Scheme, together with Guy Steele). I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras – families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting – saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms – you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work. “
Java is termed to be a superior language for the simple reason that it is (claimed to be) a purely object oriented language. Even if we buy this contrived claim by Sun and those who trust their word,

The entire interview is very educative and insightful: Alex Stepanov’s Interview

Bjarne Stroustrup
has always been guarded when making statements about the programming languages other than his own. He plainly refused to compare any language with C++ for obvious reasons. A few words that he did speak about Java/C# were very interesting and devoid of any bias.

Much of the relative simplicity of Java is – like for most new languages – partly an illusion and partly a function of its incompleteness. As time passes, Java will grow significantly in size and complexity. It will double or triple in size and grow implementation-dependent extensions or libraries. That is the way every commercially successful language has developed. Just look at any language you consider successful on a large scale. I know of no exceptions, and there are good reasons for this phenomenon. [I wrote this before 2000; now see a preview of Java 1.5.]

Bjarne Stroustrup hitting the bull’s eye:


“Java isn’t platform independent; it is a platform. Like Windows, it is a proprietary commercial platform. That is, you can write programs for Windows/Intel or Java/JVM, and in each case you are writing code for a platform owned by a single corporation and tweaked for the commercial benefit of that corporation. It has been pointed out that you can write programs in any language for the JVM and associated operating systems facilities. However, the JVM, etc., are heavily biased in favor of Java. It is nowhere near being a general reasonably language-neutral VM/OS. “

This is from the FAQ on Bjarne Stroustrup’s home page:

Q: How can a legacy language like C++ compete with modern, advanced languages?

A: Naturally, calling C++ a legacy language shows a bias (see legacy code). That aside, people are usually thinking of Java or C# when they ask such a question. I will not compare C++ to those languages, but I can point out that “modern” doesn’t necessarily mean “better”, and that both Java and C# are rooted in 1980s style OOP to an even greater extent than early C++ was.

There are many more but these are some of my favourites about Java. What are your favourite quotes about the programming languages?


If you want to receive future posts by email, enter your email address here:

Related Posts:

  • Is C++ really a bigger language than Java?
  • PC World’s Humorous Piece On Microsoft, Google, Yahoo’s Beta Services
  • Should I Be Developing Ajax Applications using Google Web Toolkit(GWT)?
  • Features I Would Like to See Added to the GMail Service
  • Java on Gentoo
  • Setting the Stage for C++ Boost
  • Develop Ruby Applications Using SciTE Editor


  • 16 Comments »

    1. I’m no big fan of Java by any means, but it’s certainly a much better choice than C++ for the kind of applications my company produces: big, fortunte 1000 web applications. I say this for the following reasons: Introspection, stack traces, and garbage collection. Say what you will about platform neutrality, but I can’t recall the last time I had an OS or hardware platform-specific bug. I’m talking about *years* of development.

      My company’s original products were originally Scheme based, we’re mostly MIT guys and gals and we thought that language choice made a lot of sense. It did, when we were writing the code, but the language frighted our customers (who were expected to customize and extend our code) and we had a hard time finding new developers who wern’t scared by it. It’s sad, we lost a lot of expressive power by switching to Java and we gained a lot of verbose, ugly code. But we wouldn’t be here today if we hadn’t made that switch, and proably not too if we hadn’t switched to Java specifically. If it were up to me we’d all be writing in Lisp, but alas I have thus far been unable to consolodate my power and bend the will of the programming masses to my ends.

      Quote

      Comment by Peter — July 12, 2006 @ 8:23 pm

    2. This was an interesting read on the pros and cons of Java. I will only defend Java to a point. It is corporate-controlled and -owned, and will always suffer from the limitations inherent in corporate engineered products.

      I like Java’s API’s, and being able to inherit their classes and interfaces and tweak only what I want to tweak. Java isn’t so much of a programming language as it is a collection of very useful programs.

      It’s like a library, and I use it like it’s a library. But if I want to write a generic max() or swap() function I’ll use a different tool.

      Ordering is a funny thing isn’t it?

      Quote

      Comment by Charles Jillian — July 13, 2006 @ 12:54 am

    3. Premature optimization is the root of all Java(tm).

      Now, what I really hate is that to start Java they killed Self (http://research.sun.com/self/).

      Quote

      Comment by Pupeno — July 13, 2006 @ 1:29 am

    4. That was drivel.

      Java’s probably the nicest statically typed programming language to use these days with excellent portability (as opposed to everything else) and excellent frameworks available (Tapestry, Hibernate, and so forth).

      Of course, if dynamically typed languages are your cup of tea then by all means go Ruby or Python.

      But C++ in this day and age? Who are you kidding?

      Quote

      Comment by Janis — July 13, 2006 @ 1:42 am

    5. I guess you missed the part where Java is taught in academic courses now and many CS classes accept or even encourage assignments to be done in Java. Moreover, if you peruse any of the papers published on ACM’s portal in the last few years, a surprising number of them feature algorithms prototyped in Java. Or, if we look on SourceForge at the number of non-commercial non-money-oriented Java projects, they beat C++.

      I mean, if you really want to dredge up metaprogramming as an argument against Java, then it is one against C++ as well. C++ templates are a total hack when it comes to metaprogramming and vastly outclassed by say, Scheme.

      This blog seems to be written by a C++ zealot with a chip on his shoulder, else why no quotes from people in the real academic community, hell, you could have atleast included a gratuitous blowhard Paul Graham quote. C++ is yesterdays money oriented programming. Real academic experts on language design would have plenty of nasty things to say about it as well.

      Quote

      Comment by Java — July 13, 2006 @ 2:10 am

    6. Mostly FUD…

      Quote

      Comment by Pedro — July 13, 2006 @ 3:04 am

    7. If it’s not C/C++ it shoud be Perl. Hate to say it, but aside from the somewhat scary punctuation, if you are a good developer, these three provide all that you need except the occasional requirement of hand coded assembler. Java is slow corp-ware.

      Quote

      Comment by Richard — July 13, 2006 @ 3:43 am

    8. Java (and C++ for that matter) are significantly behind the state of the art when it comes to statically typed languages. If you haven’t looked at Ocaml http://www.ocaml.org or Haskell http://www.haskell.org then you are in for a treat. Ocaml is probably you best bet for getting started: its free, comes with a time-travel debugger, a profiler, a compiler that generates fast native code for a ton of targets, and a byte-code compiler with VM that works on even more.

      There is so much more to static typing than classes, inheritance, and generics. Take a look.

      Quote

      Comment by Alan — July 13, 2006 @ 5:26 am

    9. Programming with Java is aggravating. You find an object method that solves the very problem you had, but no, you can’t use it. Instead, you have to take your variables and dip them in other object methods like baths, changing the data into the right format so that therefore, perhaps one day, young man, you might be good enough to use that exciting object method that gets it all done. And by the way, those other object methods along the way are poorly documented or can so often be used improperly, not giving you the result you want. This also makes Java teams longer to turn anything out because they’re messing with this junk all the time, or typing in 14 lines of code where I might be only typing in 2 lines of code in PHP. Next, Java teams tend to sit in meetings two or three times as long as PHP teams while the Java guys talk about the minutiae of OOP to the point of making everything an object, including the customer’s toe lint if you could get away with it. Java is like Sun’s idea of a really bad hoax on the programming community. Oh no, that was vi and Solaris! My goof.

      Quote

      Comment by Supermike — July 13, 2006 @ 10:33 am

    10. > Java (and C++ for that matter) are significantly behind the state of
      > the art

      Yes, it is. But WAY more people use it, so unless I want to just play around it is a better choice. Any problem I run into will most likely be resolved by the first Google hit.

      Quote

      Comment by Janis — July 13, 2006 @ 10:42 am

    11. Stepanov’s interview is great. There’s nothing intellectually interesting in Java. I guess Guy Steele’s “We were targetting the C++ developers, and got them halfway to Lisp” didn’t work on Stepanov. Java being halfway to Lisp is pretty funny on it’s own. Without the investment into top-notch IDEs, Java would be incredibly painful to develop in. Sun should either write something like Scala or Nemerle themselves, or help out with Scala or Nice. That way you can still leverage the Java legacy code.

      Quote

      Comment by Rick — July 13, 2006 @ 11:36 am

    12. > Janis wrote:
      > But C++ in this day and age? Who are you kidding?

      Hmmm. That was also the question in one of the quotes.

      tabrez on July 13, 2006 at 10:44 pm said:

      Sun announces C/C++ support for NetBeans IDE March 23, 2006
      Why support an old, legacy, complex and idiotic language in 2006??

      @Java: the title clearly suggests that it was about quotations about Java language. Ofcourse there are many enjoyable(more so?) quotes about the C++ language too. Doing a balancing act for every language that there is was not the purpose of the post.

      Alan: Yeah, Haskell especially is very expressive with a great static type system, but I don’t see it too ahead in the popularity chart, so perhaps little unqualified for any kind of language bashing ;) Like Stroustrup had said: “There are only two kinds of programming languages: those people always bitch about and those nobody uses.” :)

      Rick, I agree. Stepanov’s interview is truly insightful. I recommend it to everyone irrespective of what programming languages they have personal biases for.

      Quote

      Comment by tabrez — July 13, 2006 @ 10:44 pm

    13. I write open source programs that are supposed to run on any flavor of UNIX, and occasionally Windows. If I’m writing a library, I use C, because it’s the lowest common denominator, and can be used from almost any language. If I’m writing a user-level program, I use C++, because it’s universally avaliable, and, unlike Java, it doesn’t require a runtime of truly stupendous size to run. Neither C nor C++ is obsolete. What other language has a 5MB runtime environment, while still being fast, portable[1], and universally avaliable?

      [1] Whatever everyone says these days, it is *not* hard to write portable C/C++. ANSI C provides a great basis for writing simple, portable applications. There is a great wealth of open source libraries that are widely avaliable on UNIX, and are portable to Windows, for doing things that aren’t covered by ANSI C. There are good development tools, too; the standard development toolchain consisting of the standard UNIX tools, autoconf, automake, gcc, gdb, a revision control system, and a good text editor are, in my opinion, more than sufficient for developing and deploying open source applications in comfort and style.

      Quote

      Comment by Nick Thomas — July 14, 2006 @ 5:59 pm

    14. Java has some strong points than C or C++!! First of all it’s simple , easy to learn (devoid of pointers) & so easy for even a
      10th std student can understand it very well. That’s not the case with C/C++!!! With C/C++ most of the code the students memorise
      & vomit it in exams!!!
      For developers , Java is very easy to learn since there are lots of similarities between C/C++ and Java.So the learning curve is
      not steep. I develop Java applications for the Enterprise using Swing & also J2EE. Both of them work very well across platforms.
      C/C++ is not universally portable!!! While Java is cross-platform. ie., you write once, run it anywhere. That’s not the case with
      other languages. C# is just a farce. Microsoft created a clone of Java with all Java-like features. But still C# will run only on
      Windows. Because Microsoft’s sole empire depends on Windows O.S & applications. What a big joke that is!! There are already languages
      like C/C++ that can run in Windows!!

      Quote

      Comment by JGuru — September 25, 2006 @ 9:37 pm

    15. Hey,
      Great stuff here!
      I’ll definitely bookmark this place and come back soon.

      Rhett

      Quote

      Comment by RhettWilson — May 2, 2007 @ 2:42 am

    16. [...] universities are mediocre at best. An interesting quote that says a lot is: “Ten years from now, Java will be taught in every university. Not in the engineering or [...]

      Quote

      Pingback by Java Universities are Mediocre at Best! « The Minority Blog — November 22, 2008 @ 7:38 pm

    RSS feed for comments on this post. TrackBack URI

    Leave a comment


    Copyright (c) 2006, 2007 Tabrez Iqbal.
    Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. Verbatim copying and distribution of this entire article is permitted in any medium without royalty provided this notice is preserved. A copy of the license is included in the section entitled "GNU Free Documentation License".


    Powered by WordPress
    This website is hosted by Dreamhost