views:

1184

answers:

19

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'?

+4  A: 

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.

workmad3
+1  A: 

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

Geoffrey Chetwood
You seem to be saying "don't innovate". Oh, how I disagree.
Jay Bazuzi
+18  A: 

First of all, find a need which is not supported adequately by current languages. Design a language specific to handling that situation.

James Curran
And provide a *good* sample program showing your language's capabilities. It shouldn't be a tour thru each and every feature your language has, but rather a practical demonstration on how your language makes it easier to write that kind of programs.
Joe Pineda
A: 

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.

mattlant
Wrong. There are way too many languages. There are too few well-designed and well-implemented languages, so I'd go with Rich B.
JesperE
Thats perfectly fine with me. Thats the nice thing about this place, we can agree to disagree. Althogh I defginately agree that there are too many poorly implemented languages. But that does not mean that there are too many in general.
mattlant
+1  A: 

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! :)

Myrrdyn
+27  A: 

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

Corbin March
Great answer and excellent quote.
dreftymac
Either that, or the agents left because they thought he was defeatist, and didn't want to listen to a lecture about how they should quit. The people who remained might have been those that thought he was correct about the "quitting" idea.
Beska
+5  A: 

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.

Nathan Long
+3  A: 

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.

Yaba
+2  A: 

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

Hugh Allen
A: 

promote

Mark Stock
+10  A: 

Read Paul Graham's essays, especially Being Popular.

Jonathan Tran
I would mention also his essay "The 100 year language" (paulgraham.com/hundred.html). His main point is that increasing capabilities in computers have lead to new languages, each with different trade-offs between power and succinctness. He also claims Java is a dead-end (so would be c#, I think)
Joe Pineda
@Joe Pineda: While I love Paul Graham's essays, "The Hundred-Year Language" is a particularly irrelevant one with respect to the question asked by the OP. He wants a new language to get "out there" and to hopefully be famous. He's looking more for Java than for Arc or even Common Lisp.
John Y
+3  A: 

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.

Bruce Alderman
And how does PHP and its popularity fit into this? Or is it the exception which proves the rule?
Chris Charabaruk
PHP was started by Zend Technologies that pushed PHP for years.
Yaba
Good point! Other examples: Ada was created by the US Defense Department, and Tcl/Tk (and its dialect Expect) at some US government office (don't remember which). All of them are nice languages, though I guess they're not more widely used since they were tainted by their bureaucratic origins :D
Joe Pineda
IBM created a plethora of languages as well. But I think Ruby is young, 2002 or so?
Robert S.
According to this article http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html Matz started development of Ruby in February 1993 and released the first alpha version in 1994.
Bruce Alderman
Tcl/Tk came out of UCB. Expect came out of NIST.
mpez0
Don't forget Haskell, started in 1990 and probably hasn't peaked yet
finnw
You could add Erlang, used in-house at Ericsson since 1986, was a propritetary language until december 1998. Mainly because it was banned in-house 1998 therefore made open source.
Jonas
+3  A: 

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.
Jonathan Tran
+4  A: 

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.

Darcy Casselman
Steve Yegge addresses all topics in the manner you describe.
ergosys
+3  A: 

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.

catphive
+3  A: 

Either become bald, or grow a beard.

There is research: original and followup...

By the look of it you are neither bald nor bearded so good luck ...

Failing that a time machine and some hindsight wouldn't hurt.

Simon
A: 

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.

Anthony
+1  A: 

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

finnw
*the only other realistic alternative* - You could also target the Java Virtual Machine, like clojure does.
Anthony
@Anthony: I will give finnw the benefit of the doubt and interpret his answer as "an existing platform: for example, .NET". JVM is certainly another promising bet. If we're listing them, I would also throw JavaScript in there, as many recent projects are targeting.
John Y
I would consider targeting the JVM for a functional language (because fast garbage collection would be a high priority.)
finnw
A: 
  • 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.

BCS