A joke from a former colleague from Japan:
Q: What do you call a person who speaks two languages?
A: Bilingual
Q: What do you call a person who speaks three languages?
A: Trilingual
Q: What do you call a person who speaks one language?
A: American
I’ve written a bit here about programming languages, and some of the history behind them (for example, FORTRAN and COBOL), so I was interested to see an article at Technology Review about the first Emerging Languages Camp at the most recent O’Reilly Open Source Convention. The participants were apparently an eclectic group, ranging from hobbyists to representatives of Internet powers like Google.
In dense 20-minute presentations, designers shared details of their embryonic languages. What all the designers had in common was a desire to shed decades-old programming conventions that seem increasingly ill-suited to modern computing–a desire shared by the tech industry at large.
Historically, new programming languages have sometimes been introduced with the idea of being “The One”: the grand unified language that can be used for everything. This was not necessarily their prime focus, but that idea was often lurking in the background. Early on, PL/1, introduced by IBM, was supposed to combine the best features of FORTRAN and COBOL, with a dash of systems programming support built in. Likewise, ADA was to be the all-singing, all-dancing solution to the programming problems encountered by the US Department of Defense. To a certain extent, C++ was designed to remedy perceived deficiencies in the C language.
This new crop of proposed languages seems to be different, in that most seem to be focused at a particular programming area. One example (which I have mentioned before) is the Go language introduced by Google, and designed in part by Rob Pike, which is intended as a systems programming language particularly for large-scale, distributed environments. One of its claimed advantages is a greatly streamlined compilation process, which takes seconds compared to minutes for C++. Another is AmbientTalk, developed by Tom Van Cutsem from Vrije Universiteit Brussel in Belgium, which is targeted at the mobile device environment. It differs from conventional programming frameworks in its assumptions (or lack thereof) about networking:
- It does not assume any centralized network infrastructure
- It assumes that connections are unreliable and volatile
The idea is to make programming for these mobile devices more natural.
Overall, the trend in language design seems to be more toward creating specialized tools for specialized needs — just as we use HTML for Web pages, and SQL for relational data base queries.
Alex Payne, a former engineer at Twitter (and now chief product and technology officer for BankSimple, a personal finance startup), who organized the Emerging Languages Camp, says that “polyglot programming” is much more likely to become the norm, with programmers becoming fluent in many different languages that are optimized for different problems.
This is, on balance, a positive trend. For programming languages, as with clothing, “one size fits all” really means that nobody is fit particularly well.