Whenever a new programming language is announced, a certain segment of the developer population always rolls its eyes and groans that we have quite enough to choose from already, thank you very much.

As a case in point, take Dart, the language Google hopes will replace JavaScript. Was it really necessary to create a whole new client-side language for the Web? Superficially, Dart doesn't seem like much more than JavaScript with a few Java-like features mixed in. It even compiles to JavaScript (and not very efficiently). Wouldn't it have been better to work to improve the JavaScript we already have?

[ Neil McAllister reveals the ugly truth behind programmer hiring quizzes. | Speaking of quizzes, see if you can pass InfoWorld's programming IQ test, round 1, and programming IQ test, round 2. | Get software development news and insights from InfoWorld's Developer World newsletter. ]

To its credit, Google says it's doing just that, in tandem with its Dart effort. But once a language reaches a certain tipping point of popularity, overhauling it to include support for new features, paradigms, and patterns is easier said than done. In fact, judging by the past ten years or so, it can be very, very difficult.

The PHP 6 debacle

Take PHP, for example. The next version of the popular Web applications language shipped its second release candidate this week, and the final build is expected to arrive early next year. This release won't be the long-awaited PHP 6, however. Instead, it will be a far less ambitious revision designated PHP 5.4.

Doubtless that's a disappointment to developers who have been anticipating PHP 6 since the project launched in October 2005. But at this point, even if a release dubbed PHP 6 does eventually appear, it will bear little resemblance to the version that's borne the designation so far. PHP creator Rasmus Lerdorf officially shelved the PHP 6 project in March 2010 after almost five years of fruitless labor, in favor of refocusing on a formal 5.4 release.

Some of the reasons for the PHP 6 effort's failure were technical. The primary focus of the project was retooling PHP to include native support for Unicode. That wouldn't be limited to strings, either; in PHP 6, developers would be able to specify variable names, function names, and other identifiers using any Unicode script, including multibyte encodings such as Chinese and Hindi. As the years rolled on and hidden gotchas began to surface, however, it became clear that the PHP developers had bitten off more than they could chew.

It didn't help that as an open source project, PHP development is largely a volunteer effort. According to PHP contributor Andrei Zmievski, relatively few developers really understood the Unicode push and were committed to making it happen. It was hard to get excited about rewriting lots of working code to support Unicode, and enthusiasm for the project waned. By the time PHP 6 was abandoned in 2010, Lerdorf observed that PHP development "hasn't been fun for quite a while."

Languages move forward, but slowly

Personally, I'm no fan of PHP. I've long held it's a poster child for bad language design, so it doesn't surprise me to learn that evolving it into something better is a Sisyphean task. But I shouldn't single out PHP here. In fact, many of the more popular languages have struggled to move forward with major new versions in recent years.