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.

Are there common mistakes that language creators make that prevent or slow the adoption of their language? An example (though perhaps not a good one): they focus more on language semantics than tool support, etc.

share|improve this question

closed as not constructive by Mark Trapp Nov 15 '11 at 15:42

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Any particular languages in mind? –  user1249 Nov 23 '10 at 21:45
I was thinking in generalities, but there are a few languages I'm surprised aren't more popular/successful (granted this is very subjective; some would say they ARE popular): Cobra, Clojure, D. –  Daniel Nov 23 '10 at 21:49
@Daniel, I was at the JAOO conference this year. The non-mainstream language that interested the Java folks the most was Clojure. Most likely because it is the first Lisp embracing the JVM. –  user1249 Nov 23 '10 at 21:54
naming them "Basic" –  Steven A. Lowe Nov 23 '10 at 22:26
@Thorbjørn: The first? Are you sure? Armed Bear Common Lisp targets the JVM has been going since at least Mar 31 2003 (armedbear-j.sourceforge.net/changelog.html). –  Frank Shearar Nov 23 '10 at 22:40

10 Answers 10

up vote 28 down vote accepted

There are so many ways to kill a language, let's pick a few...

  • make all available compilers/interpreters expensive
  • deliberately bind it to something else (FooBarScript, the scripting language of the FooBar ERP system)
  • incomplete/confusing specification
  • no complete reference compiler/interpreter available
  • inconsistent syntax
  • arbitrary limits

and last but not least

  • no unique selling proposition compared to well-established languages
share|improve this answer
over half of this list reminds me coldfusion... –  radekg Nov 24 '10 at 22:16
+1 - though keep in mind that your second point works in reverse too; JavaScript is popular precisely because it's bound to the browser. –  Inaimathi Nov 25 '10 at 13:53
Inaimathi: JavaScript is popular because all browsers support it (and it's the only programming language all major browser support), so browsers are bound to javascript, but it is used outside the browser too: en.wikipedia.org/wiki/JavaScript#Uses_outside_web_pages –  user281377 Nov 25 '10 at 14:04
@Inaimathi: But it was never bound to a specific browser: which is what killed VBScript IMO. –  Steve Evers Jan 4 '11 at 14:48

I'd say the number 1 thing is a poor library. Most experienced programmers are capable of reinventing the wheel but are really loathe to do so. As soon as I see a language and think "I can do that in half the code using [favorite high-level language]", I know I'll never give it a real shot. Even worse if I can replace the chunk of code from the new language with a single line of code from my favorite language. This especially applies to dates and string manipulation.

share|improve this answer
I think that's why you see so many new languages that attempt to leverage the run time libraries of existing languages, like the ones built on the JVM that can use the Java run time library. I assume .NET languages are the same in that regard, although I have no actual experience with them. –  Paul Tomblin Nov 24 '10 at 15:59
@Paul Tomblin: I couldn't agree more. Why build a new platform to convince people to use when you can sit on top of what they already use. Can you imagine having to download a new operating system just to use one vendor's application? –  Dinah Nov 24 '10 at 16:12
Hey, if I didn't need a particular operating system to use a certain vendor's application, I'd be able to use Linux on my desktop at work. –  Paul Tomblin Nov 24 '10 at 16:20
@Paul Tomblin: definitely true: that's why we use Windows whether we want to or not. I guess my point though was more that: we (almost) all use Windows, esp. at work. So work app.s are written for Windows. If, for instance, Quicken only ran on QuickenOS, their user base would be smaller than the cast of Seinfeld. –  Dinah Nov 24 '10 at 16:31
Very true. For example, I've got the impression that the huge .NET library is the reason why a lot of programmers prefer C# over C++. Indeed, C++ lacks a standard UI library, making it really hard for a newbie to start writing even the most basic application. –  Dimitri C. Jan 4 '11 at 15:55

Designing a language in the first place without having a real clear idea why it's better than existing languages, or without being able to communicate that idea.

share|improve this answer
@Daniel, please consider spending less effort on being satirical and more on being professional and mature. Based on the comments here and on the original SO question, you don't seem to have understood the purpose of this site, and where it leaves SO. –  user1249 Nov 23 '10 at 22:37
@Thorbjørn - Even though my comments weren't offensive and were intended only to poke fun at Paul's overbearing seriousness, I removed them because this isn't the place for it. –  Daniel Nov 23 '10 at 22:45
and one man's deleted post is another man talking to himself... :/ –  WernerCD Nov 24 '10 at 0:36
@Daniel, please reconsider spending less effort on being funny and more on being professional and mature. –  user1249 Nov 24 '10 at 13:22
@Daniel, certainly not in the general case, no. –  user1249 Nov 24 '10 at 21:24

There is a saying in the world of literature that the world would be a much better place if people were only writing books because they have some interesting to say, not because the want to write a book.

The same applies to programming languages. The world would be a much better place if people were only creating programming languages because they have something interesting to contribute to the field of programming language design, not because they want to create a programming language.

So, to more precisely answer the original question: creating a "new" language which is actually just a repackaging of an old language. This really is a waste of everybody's time.

Note that combining existing features in new ways, is contributing something new to the field of programming language design and is a good idea. Some pretty successful languages are basically recombinations of existing features, e.g. Ruby is Smalltalk with Perl features, Pascal high-level syntax, Perl micro-syntax, iterators from CLU, enumerators from Sather, mixins from Flavors, and new in Ruby 2.0 Traits from Squeak and Scala and Classboxes from a research variant of Java.

share|improve this answer
What do you think about D –  acidzombie24 Nov 23 '10 at 22:35
"The same applies to programming languages": Are you referring to C#, the Java clone? :p –  Dimitri C. Jan 4 '11 at 15:59
@DimitriC.: Not really. C# and Java aren't very much related. Java == Objective-C - C + types (and since Objective-C == Smalltalk + C, that basically makes Java == Smalltalk + types). C# OTOH is Modula-2 + objects + a dash of C++. There really isn't much in common between the two. (Interestingly, C# is heavily based on Modula-2 and the whole Pascal-family, but the CLR isn't, whereas the JVM is heavily based on the UCSD Pascal P-Code machine, whereas Java isn't much based on Pascal.) –  Jörg W Mittag Jun 11 '12 at 0:34
@JörgWMittag: Many of the design decisions in C# seem to have been motivated by Java, without regard for whether the difference between .NET and the JVM might make decisions that were right for Java, wrong for a .NET language. Examples include the use of == for testing both value and referential equality (unambiguous in older Java versions; ambiguous in C#), the rules for implicit typecasts among primitives (which create a ranking of types in Java, but not C#), . rather than -> for indirect member access [Java had no other use for ., but C# does], etc. –  supercat Jun 12 at 21:28

Choosing a bad name.

share|improve this answer
+1, This is a real issue (Examples: D, J, R) and definitely something language creators should pay attention to. –  missingfaktor Nov 25 '10 at 13:25
+1. Very true. I'm horrified by the thought of having to look up an issue with the D language using a web search engine. –  Dimitri C. Jan 4 '11 at 16:03
At least Google doubled the name length for "Go" –  DarenW Feb 22 '11 at 16:25
That's why the Fan programming language became Fantom... Choosing a common name is almost as bad as one letter name (as above) or using symbols (C++, C#, C--, F#). If you follow #Scala on Twitter, you get music news as well... Python, Alice, Eiffel, Mercury, Processing (sic), etc. are cool names but bad for searching (although context helps). Lisp, Perl, Nemerle, Clojure and others did the right thing... –  PhiLho Mar 1 '11 at 13:25

null pointers/references. :-)

According to Tony Hoare - inventor of null, inventing null references was a billion dollar mistake. (You can view the full presentation here.)

Haskell and other functional languages get this right with Maybe/Option monad. Magpie's approach is also interesting.

For more explanation on languages without nulls, refer to this StackOverflow question.

share|improve this answer
+12! Strong Typing is one way to avoid this costly mistake, there had also been research on Eiffel to warn about uses of references outside if () block, looked pretty hard for the compiler to assess whether the boolean condition protected from a potential null dereference or not. –  Matthieu M. Nov 26 '10 at 17:28

Designing the language by committee and having it standardized without the corporate backing needed to keep the standard updated. Actually, this only happened once, but it's still a good way to doom a language.

share|improve this answer
+1 A lot of languages seem to have started out with a really strong leader who had the vision for the language. They may not have been the major contributor as time went on, but that leadership is certainly important in defining what the language will be and attracting people to the idea. –  glenatron Nov 23 '10 at 22:01
You mean "Ada"? –  Paul Tomblin Nov 24 '10 at 11:36
@Paul: I was referring to Common Lisp. I don't know much about Ada except that it was required for Department of Defense contracts in the past. –  Larry Coleman Nov 24 '10 at 13:08
  1. When trying to "fix" an existing popular language, or to make it just slightly better. Examples: the D language is trying to "fix" C++. Successful languages never do that; intsead, they deliver one or two "killer features" that make the language distinct.

  2. When a language imposes certain coding style and limits user's freedom (Java, C#, in a way Python too). Adoption of these languages can nevertheless be fast if it's backed by a powerful corporation.

  3. Changing the syntax of the 'print' statement in the next version of your language.

share|improve this answer
"Successful languages never do that" - Java was pretty much made as a better C++, and it's pretty successful. –  Oak Nov 23 '10 at 21:46
@Oak: Java was created as a greatly simplified, idiot-proof C++, and that was exactly Java's "killer feature". –  mojuba Nov 23 '10 at 21:52
Did you guys forget the "runs in a webpage" part of Java?? –  erjiang Nov 23 '10 at 22:02
@mojuba - Guido is called the BDFL for a reason. And the only thing python really forces you is the code alignment. Even though there is usually only one obvious way of doing something, there are plenty of not so obvious ways to do the same thing. But usually you are better off using the obvious way. –  aufather Nov 24 '10 at 4:56
I don't see D as a doomed/unsuccessful language... –  PhiLho Mar 1 '11 at 13:30

In my opinion every language suffers from the fact that reserved keywords or language constructs can irritate you in such a way that you actually need to patch your expression to a state which might be less understandable.

This starts for example at the filesystem level (DOS) with reserved words like CON, AUX, etc. to words in languages or scripts (list, static, use, class, etc.) or even SQL.

Perhaps you could state that the amount of reserved keywords equals the amount of doom.

share|improve this answer

Designing it for guru's rather than the every man programmer.

share|improve this answer
Better don't enter in much detail ... those who work in that language will get upset –  belisarius Nov 23 '10 at 21:50
I'm already upset! –  Evan Kroske Nov 24 '10 at 0:17
-1, I find the opposite is true. –  dan_waterworth Jan 4 '11 at 14:42
So what are the smart people supposed to program in? –  David Thornley Jan 4 '11 at 17:19

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