In the 2005 December 14th issue of Wall Street Journal (requires login) there is an interesting column by Lee Gomes under the headline "Computer Languages Multiply, Pleasing Many – but Not all". The following qoute summarizes the column well:
Languages are proliferating in the computer industry these days, and software programmers
couldn’t be happier about the choices they have. For their bosses, though, it’s
often aggravating.
The article goes on to discuss the proliferation of languages and systems like Perl, Python, PHP, TCL, JavaScript (AJAX) and Ruby (on-Rails) and states that “these languages seem to come out of nowhere”. Now, of course, all of these languages have been around for many years, but the fact that they now have made it into the Wall Street Journal is important in that they start to be relevant for business
people.
We blogged
about this proliferation earlier and noted that “the more specialized a language is to a domain, the better it fits to solve problems for that domain. These niche languages trade off generality for
efficiency in a domain and they are simply better and more efficient tools for
that domain.” The domains for the languages above happen to be
web applications. As we have discussed here,
complexity is reduced when the degrees of freedom is aligned with the problem
domain.
But the article then takes a new twist on this phenomenon:
All
of these new approaches to software also rankle the chief information officers of
the world. Usually, an executive responsible for managing technology tries to
limit the number of software (and hardware) systems that are in house, if only
for simplicity’s sake. These days, though, programmers are likely to whine, beg
and plead to be allowed to use the hot new language that everyone else seems to
be using.
So, according to the article, CIOs want
simplicity, but programmers want something to the contrary. How can we explain
this perception that the desires of management and the desires of the
programmers are in conflict even about simplicity?
Here’s what’s probably happening. Simplicity
– or lack of entropy – is like the cold within a refrigerator. This is what the
programmers like – the “cool” language (even though the article called them
“hot”…) that reduces the complexity that the programmer sees locally. But just
as a refrigerator is a net energy user and heat producer, from the manager’s
point of view the total complexity may have increased: the additional languages
raise many organizations issues: legacy, training, maintenance, testing, build
procedures, and so on.
The challenge still remains to reconcile the systems and reach a better overall optimum.





In order to “reconcile the systems and reach a better overall optimum”, it seems that informality (in software requirements analysis, which is the first and crucial activity in software engineering) must be fully integrated into software development activities. How? By using “controlled natural languages”. The latter allow engineers to elicitate their software components using informal natural utterances (that are potentially highly domain-specific). The compiler first extracts ambiguous constructs (those involving modality), converts them into equivalent declarative sentences, and then translates the latter into formal first-order predicate logic structures, paving the way for automated code generation (and software model checking).
As a result, the problematic gap between informal (i.e. software consumer) and formal (i.e. software engineer) idioms is now de-facto fulfilled. Why using another specialized language where natural language can be used instead? Is that not the best idiom for describing the “intention” of a software component?
KR
Programming Language Books Market Share
A very interesting treemap from OReilly that shows programming book sales in Q2 2006 compared to Q2 2005. The most striking thing is how diverse the programming language world has become since the start of the decade. Although there were just as ma