There are so many programming languages available today that it's almost impossible to keep track of them all. You've never heard of most of them. But why not? Why do some languages gain mainstream recognition while others don't?

I became interested in this question after reading a blog post by Cristina Videira Lopes, who asks whether there's still research to be done in programming languages. Lopes observes that few successful modern languages have roots in academia. An academic herself, she's naturally dismayed.

[ Find out which 10 experimental languages could shake up IT, learn which 11 programming trends are on the rise, verse yourself in the 12 programming mistakes to avoid, and test your programming smarts with our programming IQ test: Round 1 and Round 2. | Keep up on key application development insights with the Fatal Exception blog and Developer World newsletter. ]

Should she be? As Lopes points out, these days almost anyone can create a language -- and has, from giant corporations to humble hobbyists. Creating a programming language is no longer a big deal, the way it was in the 1970s and earlier. Still, few of these new languages truly succeed. Most remain pet projects or experimental curiosities.

Why? How does a programming language become successful, and what separates the successful ones from the obscure ones? A quick study of some good performers from the past reveals a few clues.

Successful languages are familiar

The languages we have now work well enough. Few developers want to relearn the basics from scratch. For this reason, new languages shouldn't stray too far from what has come before. A novel standard library is usually OK, but the core grammar should feel familiar.

That means new languages should probably be at least a little C-like. Doubtless that will disappoint those who hate C's curly braces and cryptic operators. But 35 years of C -- followed by C++, Java, JavaScript, and countless other C-like dialects -- means you'll scarcely find a programmer today who doesn't grok C's idioms.

Some modern languages have chosen a different path, such as Python. But Python's unique syntax is one of its major features. It's different intentionally and for good reasons. Not every oddball language can say the same.

Furthermore, new languages should support familiar programming styles. It's OK to innovate, but not at the expense of well-known practices. A language that doesn't offer some degree of object orientation won't get far in today's world, for example.

When introducing new concepts, baby steps are best. Several mainstream languages have begun borrowing ideas from functional programming, such as closures and high-order functions, to much acclaim. Still, pure functional languages remain unpopular. Developers like innovative ideas, but they don't like being forced out of their comfort zones.

Successful languages are open source

Forget about proprietary languages. Those days are over. Visual Basic lumbers on, but in my recent survey of new, cutting-edge languages, all of them were open source -- including F# from Microsoft.

Modern developers don't like it when a single vendor wields too much control over a language. Open source gives them the assurance that the code they write today can't be made obsolete tomorrow by changes to the tools, language, or license.