Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Why will anyone even attempt to write a programming language?

It seems to be a tedious task and the alternative (simply using an existing language) seems to make much more economical sense.

Microsoft may hire people to write .NET because they have too much spare money to burn. But why will anyone else write a language if they aren't paid for it?

share|improve this question

closed as primarily opinion-based by MichaelT, GlenH7, Bart van Ingen Schenau, gnat, Dan Pichelman Jun 26 at 20:30

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

2  
Don't feel like writing an answer, but programmers are often driven by motives other than money. –  Craige May 2 '11 at 5:55
1  
When the language is just in the early stages of development, people working on it likely have day jobs. –  Anna Lear May 2 '11 at 6:04
4  
@Pacerier: the java developers for the most part were working for sun or oracle. They got paid for it. C++ was developed to solve an existing problem and to make his future work easier. Building for the future, you might say. –  Trezoid May 2 '11 at 6:05
    
Designing and implementing a computer language is not a big job; it can be done by one person with an idea and some knowledge of compilers, without interfering with the day job. Therefore, the range of motives is going to be very large. Frameworks are another matter, since a big framework like .NET or the Java libraries is going to be much more work than the core language. Perhaps you could refine your question to address one or the other (and perhaps ask the other in another question). –  David Thornley May 2 '11 at 15:31
4  
I beg to differ, designing and implementing a language to take into account everything that a next generation language would require is a big job. You'd have to come up with a new concept for concurrency, for parallelism,a type system, for writing modular and reusable code, for being testable, for being efficient, terse and readable etc etc. Writing the framework might be more lines of code but it isn't a big conceptual challenge –  konrad May 2 '11 at 21:53

8 Answers 8

up vote 10 down vote accepted

It depends on the situation, but it's generally one of a few things.

  • It's being developed by a company with plans to leverage it to support their platform, and use it to sell related tools and platform. This is similar to MS and .net, they sell Visual Studio licenses, and more OS licenses.

  • They plan to gain some sort of technical advantage, ease development in some minor manner. Objective-C would fall into this, Apple did Objective C development to improve GUI development on their platforms.

  • Similar to the prior, but with some sort of more significant advantage by the platform, Erlang is an example, the threading model provides very real performance and threading management advantages.

  • Was written as a learning or academic experience. This is for things like implementations of Scheme, early implementations of ML, other languages created in some sort of academic circumstance.

  • Additionally, every once in a while, a company actually plans to sell the language. This is mostly for specific implementations for existing languages, Allegro CL, and Intel C++ come to mind.

  • To make somebody's life easier, this can be related to the "technical advantage" point, but is separate, in the sense that It's mostly designed by a single person, and made to make their life in particular easier. Thanks to David who points this out about C++ in the comments, I'm also under the impression that Ruby and Python have both been created for this sort of reason.

Often the languages are developed for to solve a companies own problems, and then released for free to build up a community, it's always nice to have other people writing libraries for you.

Also, you mentioned Java, IIRC, SUN's initial goal with java was to create a language that would gain good support in the enterprise market, and leverage the SPARC processors better threading scalability to show that it's a better platform for Java, then use this to sell SUN hardware and software platforms. This is similar to MS and the .net framework, but with less clear plans, since SUN's plan was based on perceived hardware advantages that just didn't seem to carry through.

share|improve this answer
1  
You could add "to make somebody's life easier". We got C++ because Bjarne Stroustrup wanted a language with Simula 67 classes and C's performance, and it evolved from there. Computer languages can be designed and implemented by one person, so not every one needs elaborate justification. –  David Thornley May 2 '11 at 15:28
    
@David, you missed something. Stroustrup himself has stated that "strong typing" was the first thing on his list of things to add to C to make C++, and "Simula 67 classes" was second. –  John R. Strohm May 5 '11 at 15:37
    
@John: Interesting, I didn't see that in a quick review of his "Design and Evolution" book, which I was using as a source. Where did that come from? –  David Thornley May 5 '11 at 16:43

To increase the creativity. Also for reputation. Writing the Programming Language not only boost your creativity but also change the way you think and makes you the smartest person in the crew.

Writing more and more programs gives the new way solve the problem and makes your mind broad.

share|improve this answer

Quite often its for the same reasons anyone creates any tool. To server a specific purpose that existing tools don't quite work for. Or to put it in other words "to scratch an itch". There are probably hundreds of documents you could read from authors of recent languages explaining their motivation. Here are just a few of the ones I've read in the past few years (and recall off the top of my head):

share|improve this answer

I'm designing a language myself (for fun) and I can only answer to my own reasons:

  • It's an intellectual and creative challenge. Instead of complaining of all the reasons why we don't have proper concurrency/parallelism/oop etc ec you can tune your mind to come up with a better solution

  • It's educational, being a non-academic, designing a language of has forced me to really understand programming languages, concurrenccy, their concepts, and their trade-offs

  • How many frigging Lisp and C-derivatives can we really stomach, why doesn't anyone come up with something original

  • How many languages by pure academics can we really stomach, do they not have any sense of pragmatism and the issues that plagues us programmers every day? Can't I just get a programming language that both terse and readable, please?

  • To scratch your own itch, No one else seems to be building the language I want so I guess I have to do it myself ;)

That being said I do recognize that it most likely a futile effort, the odds of creating a mainstream language is diminishing small, but what the heck, so long as you're having fun right? :)

I'd also hazard a guess that the most common reason to build a programming language (unless you're being paid to do so) is pure geek cred and a neo-nerd desire to prove one self smarter than everyone else (not mine though ;)

share|improve this answer
    
So how is the new language coming along ? Can we see some samples ? –  Radu Murzea Jun 24 at 7:37

Some developers just write a language to boost their ego.

And then I guess it belongs in the "what a human has to do" category like planting an apple tree, growing a kid, building a house, writing a compiler etc.

And of course all the other good arguments that have already been posted.

share|improve this answer

I write languages because:

  • They're useful, and can radically simplify solutions to problems within their domains.

  • They're fun and challenging to design and implement.

  • They're educational, helping me to better understand programming as a whole.

Scads of software, not just compilers and interpreters, are written on speculation and/or open-sourced without even the hope of future financial gain. It's just one of those things that passionate programmers do. People like using free tools when they can get them, which is why free (speech as well as beer) languages are generally more popular than proprietary ones. If you want to popularise software you've made, reducing the barrier to adoption is the first step.

share|improve this answer

Knowledge.

By writing a programming language, they're in a better position to understand the shortcomings of other languages of the time, and how they can be improved on. If they get it right they also end off with a useful tool that can make future tasks easier to complete or more interesting.

They may also do it purely for the sake of doing it. The intellectual challenge is often enough reason for many people to put in the work when there is little or no personal financial gain to be had...

share|improve this answer

Yes, the people at Oracle who work on Java undoubtedly get paid. So do the people at Google who work on Go, and so on.

During early development, quite a few people probably work on languages without getting paid anything. In most cases, it either develops into something that at least starts to break even, or else the people find something else to do with their time. No matter how dedicated somebody is, most like to eat at least once in a while, so making some money becomes important at some point.

Note, however, that making money may not be particularly direct -- even when/if development of the language and/or tools is unpaid, the author might well write books, magazine articles, and give presentations to make money, and sales of those will depend on the popularity of the language.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.