How does a new programming language get established? How could I design one and be famous? What steps would I need to take to get it 'Out There'?
Create it and put it online. If it's got something new and interesting then people will start to adopt it (e.g. ruby).
Or you could become a multi-billion multi-national company, create a standard and then start to provide more or exclusive support to developers that use your new language(s) over the non-proprietry alternatives.
Please just lend your time to make tools or documentation for an existing language. We really have enough right now.
This would also be a great way to get into 'the know'.
First of all, find a need which is not supported adequately by current languages. Design a language specific to handling that situation.
I agree with James, Find a niche and fill it.
There are NEVER enough languages, thats why there are such things as XML. Theres always a need in specialized areas, wether its to struture data or functionality.
EDIT: I do agree with others here that there are many poorly implemented languages, that there is no doubt; but to use that as the agrument that there are too many in general is shortsighted.
In what kind of language are you interested?
There is a great difference between a General Purpose language (C, Java, etc.) and a Domain Specific language, if you want to be famous try with a general purpose one (but beware of the fierce competition!).
Also, what paradigm are you thinking of? Imperative, procedural, functional, nameyouwhat, etc...
So, first think of a problem not well addressed by current languages, then try to solve it creating a new language! :)
This reminds me of Seth Godin addressing a conference of real estate agents. He told them to quit. He said the market was just too hard and they'd be better off looking for a different job. Many of the agents got up and left.
Then...
Since he had the truly dedicated agents, he jumped right in to all the amazing real estate opportunities out there.
I imagine writing a programming language is like that. If you're going to do it, you have to get to a point where it doesn't matter what anyone else says. Are there too many programming languages? Maybe. Are you going to get famous? Probably not. But you do it anyway.
If you're going to write a new and famous programming language, there's probably nothing anyone can say to help because: "Talent hits a target no one else can hit; Genius hits a target no one else can see." - Arthur Schopenhauer
Why not try designing a library for an existing language? jQuery, for example, makes JavaScript so much easier to use that it almost feels like a different language.
Some advantages in "getting it out there:"
*People already use the target language, so you have a built-in audience - all you have to do is show them that doing things your way is faster/easier/more powerful.
*If the above argument is sound, it's easy to try it out - just substitute the New Method for the Old Method a little at a time.
*You can improve your library incrementally - if there's not a way to do X with it, there's probably a fallback way to do it in the existing language.
Before you start designing an entire language from scratch think about whether it could not be easier done by creating a DSL (Domain Specific Language) for an already existing language thus leveraging tools and compiler of that language.
For example it's pretty easy to create a very specialized DSL for Groovy, while no one will ever recognize that the underlying technology is actually Groovy.
There are too many procedural / imperative / object-oriented languages. Learn Prolog and Haskell and see how different they are from C++ / Java / VB etc. Think up a new execution / evaluation strategy, or a whole new programming paradigm - preferably one that lets you do more in less code (more high-level).
promote
- blog about the new programming language
- write a book
- go on tour
Many of the popular languages were initially designed in-house by a major technology company:
- Java: Sun
- C# and Visual Basic: Microsoft
- C and C++: AT&T/Bell Labs
- Perl: NASA
- Smalltalk: Xerox PARC
- Fortran: IBM
Languages that haven't taken this route have generally been slower to gain a following: Python and Ruby are both older languages than Java and C#, but have taken many more years to gain popularity.
So if your motivation for creating a language is fame, the quicker route is to create it for a technology leader.
If you're more concerned with getting people to adopt your language, think of it as new technology. I'm reminded of a quote from Why Your Favorite Language Is Unpopular on arcfn:
New technologies aren’t adopted because they are great, new, and disruptive; they are adopted only if the user’s crisis solved by the technology is greater than the perceived pain of adoption.
Steve Yegge addresses this topic rather extensively ("extensive", in this case, referring to the length of prose).
For my part, I want to encourage people to make their own languages, because doing it makes you a world-class programmer. Seriously. Not just a better programmer, but a best programmer. I've said it before, and I'm sticking with it: having a deep understanding of compilers is what separates the wheat from the chaff. I say that without having the slightest frigging clue what "chaff" is, but let's assume it's some sort of inferior wheat substitute, possibly made from tofu.
But I really need to stop spending time telling people individually why their languages are doomed to fail. Instead, I'll summarize it in today's blog entry.
Summary: your language is doomed to fail, with probability 1 minus epsilon. If you fell off a thirty-story building, you might survive (anyone else watch the last episode of Heroes? wasn't that an awesome scene?) but for all practical purposes the odds are nil.
First of all, as far as writing a general purpose langauge like C++, Java, or Python, you have already missed the boat. The role of general purpose programming langauge has been filled a million times over, and no more than a handful of researchers and hobbyists will ever use any given general purpose programming language written from scratch in the last couple of years. The only entities that can introduce new programming languages in the current market are large corporations like Microsoft that can hire thousands of developers to write the language and platform, and then force feed it to their platform base. I'm not criticising Microsoft here, just commenting that they are the only ones with the resources to do it, givin that the vast majority of programmers have no compelling need for another programming language.
If you are interested in programming languages either extend an existing and popular language, or write a domain specific language. Otherwise, you can write an "academic" language like ML, smalltalk, or prolog that scratches an intellectual itch, but which no one outside of a university will ever use.
Work is always going into making widely used languages better, like C++, java, and Python, and virtually all of these languages have a community participation process for contributing.
Domain specific languages are not that hard to design, and they actually have a chance of filling some niche that will allow many people to use them. When I say domain specific language, I do not mean general purpose programming languages like ruby, scala, or javascript that only happen to be used within one domain. Many language designers try to excuse how narrowly used their general purpose programming langauge is by claiming it is a DSL. I mean a truly domain specific langauge like SQL, regular expressions, parser generator syntaxes, html, xslt, configuration langauges, and xpath. If your language is turing complete, it is probably not a domain specific language, and it is probably not worth writing from scratch, as opposed to using an existing general purpose tool.
Do have any idea of how many programming languages are already out there, including the ones written as someone's hobby, side project or Master's degree?
Wikipedia claims that there are "thousands", but that sounds low to me. Like rock bands, only a few outliers make it to the big time. To make it big you have to have had lots of practice already, do something new but don't make any big mistakes, be at the right place at the right time, and be very lucky. This applies to taking up the guitar or the code.
Just build it anyway, with features you want, and make you more productive, and don't worry about how popular it is (not) going to be.
Languages are cheaper to design and implement than they used to be, what with all the parser generators and collection/graph manipulation libraries out there. The biggest advantage you have is that your language will not be designed by committee and will not have to maintain backwards compatibility with anything.
And it would be crazy not to target an existing platform like .NET, so you get a decent standard library for free (the only other realistic alternative I can think of is to translate to C and borrow native libraries from an interpreter such as PHP.)
- Step 1: quit while you're ahead.
- Step 2: repeat step 1.
- Step 3: ok, so your not taking my advice, spend 5-15 year working on a nasty hard problem while dealing with politics issues, social issues, advertising issues, bikesheding issues and just plain issues.
- Step 4: do all of that while paying for food from something else (programming languages are not profitable)
- Step 5: expect to fail.
oh yeah and:
Seriously, creating a new language is a nowhere near trivial task. Not just because it takes a variety of skills but because it's a hard problem in each of those skills. Choosing what to put in your language to start with is a hard marketing problem in it's own right as well as a very hard technical challenge. Building a community around it is a hard social problem. And once you have a community, it becomes a hard political challenge; interacting with them, keeping them happy by fixing the bug bugs they care about and adding the features they want without destroying what you've created. Each of these in it's own right is a hard problem.
If I absolutely had to get fame and recognition somehow, I think creating a programming language would come a good dozen steps below getting stuck in the mountains, freeing my self by cutting my foot off with a pocket knife and then writing a book about it.
If, after all that, you still want to do it; as this guy and check out these NG's. He's done it and that NG has ~10 years worth of documentation on how.