“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.