In addition to Java, I’ve used a lot of other languages, and I thought it would be interested to see who else does too:

Google: Created a massive foundation for their massively scalable search engine in C++. The foundation includes MapReduce (a way to employ thousands of CPU’s and avoid the Multicore Crisis), BigTable (their subsitute for a database), and the Google File System. It all runs on a few hundred thousand Linux commodity boxes. To be sure, Google has grown so large they now employ some Java, but C++ is the big enchilada.

Facebook: The clever fellows at Facebook are definitely technologists (maybe that’s why they got a platform together ahead of their peers) and built a fancy RPC (remote procedure call) core technology that lets them use almost any language they want. Shades of Google core tech commitment, eh? When they talk about what languages are used primarily, Java lands in last place. The pecking order is PHP, C++, Perl, Python, and Java.

MySpace: Built on the Microsoft .NET Stack, so of course no Java there. Are these boys a glutton for punishment or what? Yet it proves that it can be done and that it will scale.

Amazon: I was surprised and intrigued to learn that Amazon is language agnostic. Like Google and Facebook, they’ve invested in some core technology that lets a lot of languages play together freely. Werner Vogels goes on to say, “Developers are like artists; they produce their best work if they have the freedom to do so, but they need good tools.”

Croquet: A massively multiplayer game environment done in Smalltalk. Who woulda thunk it?

There are many more, but you get the point: Some, if not the vast majority, of the web’s biggest movers and shakers have decided not make Java their sole language and others have excluded it entirely! Sure, the immediate reaction is that there will always be some C++ zealots who prefer their language to Java, but that doesn’t change the list all that much. What we do see are a lot of “P” languages: Python, PHP, and Perl. What’s up with that?

Recall Part 1 of the Tool/Platform Rant Series, which talked about how 70% of the Software You Build is Wasted? These hugely successful web properties have taken steps to reduce that 70% waste, and while there are many factors that contributed to their success, I believe a desire for increased productivity played a significant role. The days when these languages were essential for performance are coming to an end too, courtesy of the Multicore Crisis.

There are other ways to skin this cat of over-reliance on a language that’s too low level without giving it up entirely. Who doesn’t feel like technology gave Google a tremendous edge? One can argue that C++ isn’t really the language of Google, rather, MapReduce, BigTable, and the Google File System are their language. C++ is just the assembly code used to write the modules that these other platforms mash up. In fact, it makes sense to think that C, Java, and C++ are all just portable assembly languages. By doing this, Google has been able to focus a much greater proportion of its resources to create a proprietary edge for itself. So have all the others on the list.

I think part of the chaotic nature—the emerging nature—of Amazon’s platform is that there are many tools available, and we try not to impose too many constraints on our engineers. We provide incentives for some things, such as integration with the monitoring system and other infrastructure tools. But for the rest, we allow teams to function as independently as possible.

You have to ask yourself in light of all this, when are the Curly Braced Languages most and least appropriate? The decision criteria are shockingly stark:

You Need a Curly Braced Language When You Are Building Something Totally Proprietary That’s Critical to Your Business And Can’t Be Built With Any Other Language

Run Away From Curly Braced Languages And Choose Something Else Every Other Time

Another thing: notice the companies profiled above that have created their own Component Architecture Frameworks or Core Technology. Google has core technology in spades. Facebook has a system that lets them write components in any language they choose. Amazon also allows multiple languages so long as a few core functions are adhered to. Isn’t that interesting? These guys want to be Polyglot Programmers, and they’re investing valuable resources to make that a reality. This is all part and parcel of the “meta” thing too. The realization that to fully utilize computers, you must be facile at manipulating the fabric of the programs themselves, and not just the data they are processing. Adopting a polyglot view positions these vendors better to offer a platform, because it means they can allow others to use the languages of their choice. There are a lot of benefits to being language agnostic!

Polyglot Programming is becoming increasingly well accepted in an era when the Curly Braced Languages (Java, C++, et al) bring little to the Web 2.0, SaaS, and Multicored Crisis parties. Those languages are too low-level. There is no support there for multi-tenancy, web pages, security, scaling, or any of the myriad of problems one encounters when building a Web 2.0 or SaaS business. You have three choices: write all of that yourself and pay the 70% overhead tax or become a Polyglot Programmer and minimize the overhead by choosing the best tools for the task and leaving your Curly Braced Power Tools safely in the workshop only to be brought out when some highly custom proprietary work needs to be done.

paddy3118said

Yesterday I was reading a blog where what seemed to be a Java advocate thought that calling Dynamic Languages ‘scripting languages’ might cause offence. No way, I’ve used both and prefer Python.
Remember that scripting languages gestated on the Unix platform to glue together utilities written in other languages and Python is still good for that today. You can write MapReduce in C++ and give it an OO interface to Python where it can be just as well integrated as other built in types.
You could then write your application in Python making use of even more of these ‘third party’ utilities, maybe explore the problem domain using the command line shell, all in such a short time that it gives you time to ‘throw one away’ if you don’t like your first implementation.

I guess Sun are doing something right in sponsoring jRuby – maybe the workforce is just allowing the head guy to go play at something harmless whilst they get down to some multi-language work ;-)

“maybe the workforce is just allowing the head guy to go play at something harmless whilst they get down to some multi-language work” left me ROFL, Paddy, keep it up!

I’ve always thought the “scripting language” label was intended by the intelligentsia to damn some poor language with faint praise. It’s slightly deprecating in a look-down-your-nose-at-the-cute-little-scripting-language kind of way. Some days I almost feel like they took away the label “interpreted” while I was asleep and the next morning all those languages were called “scripting” instead.

It’s an evil plot to maintain control by the High Priesthood of Compiled Languages I’m sure.

paddy3118said

Hi Smoothspan,
I’m sure that they intended to “damn with faint praise”, but they are also seen to be a bit out of their depth too. Scripting is an adaptable survivor; “It gets things done”, whilst others are still considering how much to gouge their big wallet, out of their depth, customers.

I wonder how many consultancies would keep their current insistence on Java if they only got paid out of their customers change in profits. It’s amazing how sharing more risk can shake up such cosy thinking.

[…] Realize It!The Ugly Truth About the Force Platform: Salesforce’s is no better than SAP’s or Oracle’sWho Doesn’t Love Java? (You’d Be Surprised! -and- Part 2 of the Tool/Platform Rants)AboutTwo New Platform Types for Marc Andreesen, How the Salesforce Force Relates, and Some […]

[…] On SaaS/On-Demand70% of the Software You Build is Wasted (Part 1 of Series of Tool/Platform Rants)Who Doesn’t Love Java? (You’d Be Surprised! -and- Part 2 of the Tool/Platform Rants)Interview: Concur’s CEO Steve Singh Speaks Out On SaaS/On-Demand, Part 2Is The Newspaper Model […]