views:

277

answers:

10

I have an interesting idea for a new programming language. It's based on a new programming paradigm that I've been working out in my head for some time. I finally got around to start working on a basic parser and interpreter for it a few weeks ago.

I want my new language to be successful and I want to eventually create a community around it when it's ready to release. The idea behind it is fairly innovative, so I don't expect it to gain a lot of ground in the business world, but it would thrill me more than anything else to see a handful of start ups use or open source projects use it.

So taking those aims into account, what can I do to help make my language successful? What do language projects do to become successful? What should I avoid at all costs? I'd love to hear opinions or stories about other languages -- successful or not -- so I can think about them as I continue to develop.

So far, the two biggest concerns on my mind are finding a market, access to existing libraries, having amazing tool support. What else might I add to this list?

+4  A: 

Although not specific to new programming languages, the book Producing Open Source Software by Karl Fogel (available to read online) may be contain some hints to the issue of making a community around your new programming language.

In terms of adoption of programming languages in general, it seems like the trend lately has been to have a rich library to make development times shorter.

As there isn't much detail on what your language is like, it's hard to determine whether adoption of the language is going to depend on the availability of a rich library. Perhaps your language will be able to fill a niche that has been overlooked by other languages and be able to gain users. Or perhaps it has a slick name that will draw people in -- there are many factors which can affect the adoption of a language.

Here are some factors that come to mind when thinking about recent successful languages:

  • Ability to leverage existing libraries in the new language.

    • Having an adapter to external libraries written in other languages.
    • Targeting a platform which already has plenty of libraries available for use.
      • Groovy and Scala target the Java platform, therefore allowing the use of and interoperation between existing Java code.
  • Language design and syntax to allow increased productivity.

    • Many dynamically-typed languages have gained popularity, such as Ruby and Python to name a couple.
    • More concise and clear code can be written in languages such as Groovy, as opposed to verbose languages such as Java.
    • Offering features such as functions as first-class objects and closures which aren't offered in more "traditional" languages such as C and Java.
  • A community of dedicated users who also are willing to teach newcomers on the benefits of a language

    • The human factor is going to be big in wide-spread support for a language -- if people never start using your language, it won't gain more users.

Also, another suggestion that I could add is to make the development of your language open -- keep your users posted on developments in your language, and allow people to give you feedback. Better yet, let your users take part in the decision-making process, if you feel that is appropriate.

I believe that by offering ways to participate in the bringing up of a language, the more people will feel that they have a stake in the success of the new language, so the more likely it will gain more support.

Good luck!

coobird
+1  A: 

Don't worry about trying to make the language be successful; worry about using it to solve real problems and make real money.

You'll either make lots of money from using this language, or not. Once you have lots of money, others may care how you did it. Or not, either way you have lots of money.

If you don't make lots of money, nobody will want to know how you did it.

Edit based on comment: I define successful as people using it, and people use languages to solve problems, most for profit, thus successful == profitable.

Simeon Pilgrim
He didn't actually say he wanted to make money off of it..
Blorgbeard
He ask how to make the language "successful", it's like asking, how to make a hammer "successful", well use it for it's job. Hitting nails or making money.
Simeon Pilgrim
Whether he meant it in terms of money or not, your answer is not an answer at all. If he did mean it in terms of money, then your answer is like "if you want to be successful you have to be successful".
hasen j
As compared to the answer "The true answer is by having a beard." I was trying to say, don't **try** to make it successful, make it useful, and first to yourself.
Simeon Pilgrim
+1  A: 

In addition to making the language easy to use (which has several meanings), you should develop a comprehensive library that covers and also provides a good level of abstraction over (the following most important areas):
* Data structures and manipulation
* File I/O support
* XML processing
* Networking (plus web based technologies like HTTP/HTTPS)
* Database support
* Synchronous and asynchronous I/O
* Processes and threads
* Math

A well thought out framework that makes rapid development faster (and easier to maintain) would be a great addition. For this, you should know the currently popular frameworks well.

MM
What kind of framework are you referring to? Are you talking about a killer library, like Ruby and RoR? Or more like a slick IDE?
Tac-Tics
More like RoR and not just a slick IDE. Have a look at how different frameworks are designed and what trade-offs they have chosen - RoR for Ruby, Django for Python, several for PHP, Javascript. They all work in different ways, but they all help in rapid development.
MM
+2  A: 

Most languages that end up taking off rapidly do so by means of a killer app. For C it was Unix. Ruby had Rails. JavaScript is the only available programming system common to most browsers without third-party add-ons.

Another means of success is by fiat. This only works if you have significant clout. For example C#, as nice as a language as it might be, wouldn't be any where near as popular as it is now if Microsoft had not pushed it as hard as it does. Objective-C is the language of MacOS X simply because Apple says so.

The vast majority of languages, though, which lack a single killer app or a major corporate backer have gained success through long term investment of their respective creators. Perl and Python are prime examples. C++ has no single entity behind it, but it has evolved as the needs of developers have changed.

TokenMacGuy
A: 

Good Framework for Common Tasks

Easy Installation/Deployment

Good Documentation

Debugger/IDE and other Tools

A popular flagship product that uses your language!

JSmyth
A: 
  • Good documentation, including a detailed reference manual as well as simple examples to get people started quickly.

  • Good library support so that people can actually write useful programs.

Most popular languages seem to be very strong in either or both or both of those.

too much php
+4  A: 

The true answer is by having a beard.

http://blogs.microsoft.co.il/blogs/tamir/archive/2008/04/28/computer-languages-and-facial-hair-take-two.aspx

phasetwenty
No, no, no. I *has* to be a *cool* beard. Or bushy. Bushy would do.
dmckee
A: 

Use Trojan Horse approach C++ - The Forgotten Trojan Horse

An interesting article on why C++ can grab the heart of programmers successfully.

Yan Cheng CHEOK
+1  A: 

Keep in mind that it takes a lot of time. I think it took python about 10 years (someone please correct me if I'm wrong).

So even if your community still seems small after say, 5 years, that's not the end of the story.

hasen j
+1  A: 

"It's based on a new programming paradigm that I've been working out in my head for some time."

While laudable, odds are really good that someone has already done something with your "new" paradigm.

To make a language usable, it must build on prior art. Totally new is not a good path to success. My favorite example is Algol 68.

Algol 60 was wildly popular (back in the day, which is a while ago, admittedly).

The experts wanted to build on this success. They proposed some new paradigms, the effort split into factions. The purists put the new paradigms into Algol 68; it disappeared into obscurity. Some folks created a different version of Algol, called PL/I. It did not have any really new paradigms. It actually went somewhere and was used heavily. Another group created Pascal -- it didn't have much that was new -- it discarded things from Algol 60. It actually went somewhere ans was used heavily.

Your new paradigm must have a clear and concise summary so people can fit it into a context of where the language is usable, how it can be used, what the costs and benefits of using it are.

A "new programming paradigm" causes some people to say "why learn a completely new paradigm when the ones I have work so nicely?" You have to be very clear on how it helps to have a new paradigm.

The language and libraries must work, and work very, very well. A language that isn't rock-solid is worthless. In order to be rock-solid it must be very simple.

It has to have a tutorial that will help anyone get started with your language.

S.Lott