How long does it take to build a great programming language?

Posted on 10/04/2018 by Ken Gregg

“Great” is a pretty subjective term.

I would define a “great” high-level, general-purpose programming language as popular, widely available, well respected, and evolving.

All of this really depends on the following interrelated attributes:

  • It needs to be very well designed for the type of work it’s targeting and for the programming paradigm(s) it supports.
  • It needs to become widely available, with implementations for a wide variety of targets (operating systems and hardware).
  • Initially, it should be kept as simple as possible but no simpler (with apologies to Albert Einstein for the paraphrase). One interpretation of “great” is large, but bigger (and more complex) is not always better.
  • It needs to become widely used and develop an enthusiastic user base and an ever-growing ecosystem of libraries, frameworks, training, etc.
  • It needs to become standardized, so that it isn’t fragmented by a large number of incompatible dialects.
  • It needs to be carefully enhanced over time to provide new, highly-requested features, while maintaining backward compatibility with existing source code (avoiding breaking changes, if at all possible).

There is a certain amount of “right place at the right time for the right task” involved, as well as being “championed” by one or more large organizations and/or high-profile, respected individuals. Without those factors, it can take a lot longer for a programming language to really catch on.

Some languages will catch on quickly and gain forward momentum, others will take much longer to catch on, and still others will never really catch on at all. There are new languages developed all the time, some in academia, some in industry. You only hear about a small fraction of them. And only some of those you hear about will ever achieve “greatness” in the long term.

There is no good numeric answer to the question “How long does it take to build a great programming language?” Based on the many attributes and factors mentioned above, it might take anywhere from a couple of years to a couple of decades to an infinite number of years. If you’re not interested in achieving all of the “greatness” attributes, and you have the right expertise, then it can take just a few days — the prime example being JavaScript, which was initially developed in 10 days (and it shows). I would definitely not consider JavaScript “great,” but like it or not, it is ubiquitous.

compiler implementation general-purpose programming language language definition programming language development software development software engineering programming programming languages computer programming languages coding languages program languages code languages