How to make your new programming language successful
Say you have cooked up a brand-new programming language. Now what can you do to dislodge the incumbents and have your language take over the world?
Be incremental. Your new programming language must be understandable in terms of concepts that most programmers already understand. If you are going into new territory, you must justify it with shortcomings in the incumbents.
C, which was probably the biggest jump we have ever seen in terms of how different it was from other languages of the time, i.e. assembly specific to your hardware architecture, was all the same close enough to the metal that one could conceptualize the assembly code corresponding to a snippet of C code.
C++ grafted the concept of classes and objects on to C in a manner that would provide the gentlest on-ramp for C programmers. In fact, the earliest C++ compilers did not emit machine code, but simply compiled C++ down to C, and then used the C compiler.
Repeating the same script, Java adopted a syntax that would make C and C++ programmers feel right at home. By the time it was introduced, most programmers were comfortable with object-oriented concepts.
Ride a platform. Languages are incidental. What people really adopt are platforms. So if you want a language to be successful, you should tie it to a rising platform early in both their lives.
C got popular on the back of UNIX.
Ruby got popular because people wanted Rails.
Get taught in computer science courses. It really helps when the next generation of programmers are already familiar with your language when they graduate.
These are all necessary, but not sufficient conditions. If you look at the long list of programming languages which have failed to achieve mass usage, you will see that they did not satisfy one or more of the above.
PS: what counts as success for a programming language is itself complex and open to much debate. For the purposes of this article, I equate success with mass usage and popularity.