Java as Lingua Franca

When I travel I speak English. When I teach I speak Java, and for the same reason: it lets me be understood.

When I need to teach cross-platform subjects like DOM or data structures to mixed language audiences, I can easily use Java to show examples and everyone can follow them, even if they’re not Java programmers. Everyone reads at least pidgin Java. Only C++ programmers can read C++. Only Ruby programmers can read Ruby. (Still better than Perl though. No one can read Perl, Perl programmers included.)

Of course, if you’re traveling in one area, it’s better to speak the native language if you can. French gets you farther in Lyons than English, but if you’re at an international conference, English is your only hope. If you’re at RubyConf, Ruby will get you far. However if you’re at OOPSLA or Software Development, Java is the way to go.

Java is the programmer’s lingua franca.

P.S. The Call for Papers for Software Development Best Practices 2007 has just been posted. Aside from a token C++ track, it’s a pretty language neutral conference; and we don’t normally bother to check presenters’ preferred programming language when deciding which presentations to accept. However, if you are showing code in a talk, I do recommend that you show it in Java.

16 Responses to “Java as Lingua Franca”

  1. Aristotle Pagaltzis Says:

    No one can read Perl, Perl programmers included.

    Drivel.

  2. Smike Says:

    exactly !

  3. Seairth Jacobs Says:

    Two thoughts:

    1) The “programing language to spoken language” comparison isn’t quite “apples to apples”. Most decent programmers tend to know several programming languages (though they may be an expert in only one) and tend to have a fairly solid understanding of programming concepts that transcend syntax. I am not sure that I can say the same about the spoken language. Spoken languages do not follow common rules that transcend syntax (even when that share a root language like Latin). As a result, even if you know another language (to whatever extent), it’s much simpler to speak a single common language.

    2) I have seen Java that is just as incomprehensible to the unschooled as I have seen of code in other languages. When you use Java as “lingua franca”, I suspect that you don’t use quite the same dialect (idioms, formatting, etc.) as you may use otherwise. Similarly, you could probably get quite a bit across with C++ (or other languages) if you choose your dialect carefully.

  4. roger Says:

    Most decent programmers only know JAVA, or perhaps COBOL if they’ve been in the industry for a long time. Anybody who wastes their time dicking around with other toy languages is either a useless academic or just an unemployable teenager script kiddie.

    Java is a lot more readable than C++. What the hell are you talking about??! Do you have any real-world experience??!!!

  5. roberthahn Says:

    I’m sure you’ll get a number of people spoiling for a fight on your Ruby comment, but I personally find that idiom-minimized Ruby works quite well in communicating ideas to people with many language backgrounds, and has the additional advantage of having less to write down on a whiteboard. 🙂 At the end of the day though, it’s probably a YMMV thing.

  6. jan Says:

    Here’s an article that relates to this issue:

    http://wgrosso.wordpress.com/files/2006/04/2003_Java_Better.pdf

    quote: “…That Java itself is inevitable from a social point of view…. A whole new style of programming
    Write Half, Steal the Rest”

    Java copies better than most other languages.

  7. Mike Says:

    Pseudo-code with braces isn’t the same as “Java”. If you actually were to stick to Java semantics (types, conversions, objects, memory allocation, initializers, library calls, method calls with half a dozen arguments, no static functions, etc.), non-Java experts would be as confused as if you used any other complex language.

    The language that I found easiest to read (not write) for modern audiences is actually Python. And in terms of documenting complex real-code well, Smalltalk’s syntax is unbeatable.

  8. Diogo Says:

    No, there is no lingua franca. Or at the very least, there shouldnt be. If you have to present a complex engineering problem, do you show crayon flow charts? Java should be the lingua franca for projects and situations where Java is an acceptable language to use for the solution of the problem. It turns out, that is not every time. How long would it take do describe a problem such as string matching or patter recognition, using java, with all its verbosiness? Answer: too long.

    There is a best language for every situation. Unless you only refer to enterprise and `basic’ applications, than Java is probably it. But if you want to make yourself understood when showing off neural nets, and you spend 50 minutes fighting through the syntax, when you could use something simpler (such as plain pseudo-code, or even a more appropriate language, such as Lisp), Java just doesnt do it.

    “When I need to teach cross-platform subjects like DOM or data structures to mixed language audiences, I can easily use Java to show examples and everyone can follow them, even if they’re not Java programmers.”
    That is an example where it would be a acceptable language to describe the problem. But if you stray too far from that path, even if they know Java, you’re probably missing the point.

    The fact that we even consider a programming lingua franca is repulsive. The fact that java is even considered as one, is even more desgusting.

  9. Edson Watanabe Says:

    If you want to speak to the functional programming community, you’ll need to use Scheme or Haskell, not Java.
    The logic programming community uses Prolog as the lingua franca.

  10. Jace Says:

    Another vote for Python. It takes too much code in Java to describe even the most basic algorithms. I find Python’s syntax more understandable.

  11. Damon Says:

    Whether or not Python or Ruby *should* be the lingua franca, it’s hard to argue that it is. These languages are still not used that way, due to their relatively recent populatrity. And when it comes to static, primarily compiled languages, Java’s syntax is a much more obvious than the alternatives.

    For algorithmic code, I believe that “non-idiomatic” Python (no list comprehensions, or other features that don’t resemble those in C/Java) would be more concise and readable in most situations. It’s much closer to working pseudocode. For code involving the design of object hierarchies, Python might be more confusing to those who don’t know the language because of its syntax for object initialization, its syntax for static methods (or penchant for eschewing this in favor of functions at the module scope), etc.

    I am not a Ruby expert, but I expect that language could also be quite readable to those who don’t know it if–again–you avoided features (such as x.each {}, etc.) that have a less obvious correspondence to features of C/Java.

    Scheme probably does the most with the least syntax, so it is actually a good choice for expressing ideas in a syntax-neutral way. However, it’s even less likely to be considered “readable” by anyone doesn’t know a dialect of Lisp. And of course you would not want to to touch code that uses macros.

    Haskell might be a very “pure” functional language, but its syntax choses purity and simplicity over similarity to more “mainstream” languages. Ideas are not likely to be expressed similarly in both Haskell and another language, and it’s probably easier to translate from another language to Haskell than from Haskell to another language (with the important exception of output–monad-based output tends to be much trickier than the side-effect based output found in most languages).

    And the more specialized the domain, the less likely that a general purpose language will beat out a domain-specific language. The above poster’s comment on Prolog for logic programming makes sense. Similarly, if you’re doing parallel programming, something like Cilk or whatever they call the Java version of Cilk would be a better choice.

  12. Labnotes » Rounded Corners - 103 Says:

    […] The Lingua franca of the MySpace generation. Elliotte Rusty Harold: “When I travel I speak English. When I teach I speak Java, and for the same reason: it lets me be understood.” I have to agree with him, Ruby’s syntax is only good if you’re talking to Ruby developers. Though, I’d never imagine using Java: the syntax is so verbose you need 10pt fonts on the slides. I like something that’s readable to most people, simple enough and short, so I use JavaScript. […]

  13. The Cafes » Two Criteria for Closures Says:

    […] Several things concern me though. One is syntax. I really, really want the syntax to be simple and have no surprises or significant learning curve. I want existing Java programmers to be able to read Java code that uses closures (or first class functions) and immediately be able to see what the code is doing without any prior training in the new syntax. I want the syntax to be that clear. If we can’t have that, I don’t want to do it. I want Java to still be a lingua franca. […]

  14. tgiacaman Says:

    Java as “Lingua Franca”?, Ok, java is a very good OOP language but a seriuos programmer has to understand which adapts better for each situation. In a real world situation you have to deal with COBOL + C-API to integrate a Queue manager with a java-api + J2EE to implement a web front end. Somewhere you have to decide to use C, C++ or even assembler if you need it. So, I don’t know if java is really the “lingua franca”, I think it is more like a good OOP language with a very spread support from every where. But yopu have to recognize that sometimes it is to slow when you need crunch numbers as a mad!!

    So, Programming Language are good suitable for what they do best, even Delphi exist also as a Pascal OOP proposal, so don’t missunderstand what a good engineer has to deal with some “evangelist” statements that fit better with some educational enviroments. In the real world you have to pick the best tool you can have to solve the real problem, so don’t hessitate even on using perl, ruby, python and other programming language available somewhere in the World Wide Web.

    Regards, TG

  15. Everything is pseudocode Says:

    […] that pseudocode is better. Do you really want to be reading and writing Java all day long? Because Java is the lingua franca. There is no question that you can express everything in Java, Java being Turing complete, but […]

  16. Why you need to know C++ « Software++ Says:

    […] Like it or not, C++ is the lingua franca of programming. Some would argue for Java, or even JavaScript, which may appear true in much the same way that the ocean appears to contain […]