Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Programming

Why New Programming Languages Succeed Or Fail 274

snydeq writes "Fatal Exception's Neil McAllister discusses the proliferation of programming languages and what separates the successful ones from obscurity. 'Some people say we don't need any more programming languages at all. I disagree. But it seems clear that the mainstream won't accept just any language. To be successful, a new language has to be both familiar and innovative — and it shouldn't try to bite off more than it can chew. ... At least part of the formula for success seems to be pure luck, like a band getting its big break. But it also seems much easier for a language to shoot itself in the foot than to skyrocket to stardom.'"
This discussion has been archived. No new comments can be posted.

Why New Programming Languages Succeed Or Fail

Comments Filter:
  • by sunderland56 ( 621843 ) on Friday March 16, 2012 @08:18AM (#39375719)
    Don't expect me to port existing code to your new language. Either make it compatible - i.e. an old language with new features - or provide me with an automated conversion tool.

    c++ would have died within months if it didn't accept existing c code.
  • by hcs_$reboot ( 1536101 ) on Friday March 16, 2012 @08:20AM (#39375737)
    Succeed == Adopt. So the question may be rephrased as "Why programmers adopt a language?", and this time you can post a constructive answer.
  • by Anonymous Coward on Friday March 16, 2012 @08:24AM (#39375757)

    What you say is utter bupkis and bullshit. There are many relatively modern languages that have become very popular without having any sort of real compatibility with C, C++, or any other programming language.

    Just look at Perl, Python, Ruby, Java and C# for some examples. Those have all arisen in the last 20 to 25 years, well after C was extremely well established. While they can call out to external C code with varying degrees of difficulty, they aren't code-compatible with C in any way. SO HOW IN THE FUCK DID THEY MANAGE TO SUCCEED AND BECOME WILDLY POPULAR IF COMPATIBILITY WITH C IS SO DAMN "MANDATORY"?

  • by betterunixthanunix ( 980855 ) on Friday March 16, 2012 @08:28AM (#39375779)

    Don't expect me to port existing code to your new language

    Who says you need to port anything? If the language has a foreign function interface, you can just maintain the old code and build on top of it.

  • Objective-C (Score:5, Insightful)

    by cerberusss ( 660701 ) on Friday March 16, 2012 @08:32AM (#39375805) Journal

    What you can also do, is promise great riches, as in the case of Apple/iOS/Objective-C.

  • by ledow ( 319597 ) on Friday March 16, 2012 @08:35AM (#39375815) Homepage

    There is no magic formula. But there are some simple things that I find help me that have NOTHING to do with the language itself, or it's technical advantages/disadvantages. Strangely, they correlate in no way to popularity of the languages

    You need a single document to sell me your new language. If you can't explain the concepts, basically, to a programmer in a page or two (enough that if you try to sell EVERYTHING I get bored reading the document as a whole), then it won't wash. If I can't understand why I should use your language, I won't. (Spreading it across a Wiki doesn't count, unless that Wiki has a complete copy available as a PDF or something readable.)

    Your documentation should also help when I have a "how the hell do I do X?" question.

    You shouldn't just assume that your way is the best. Ever. Just don't. It'll annoy me.

    You shouldn't just assume that I'm happy to spend a year learning the quirks of your language.

    I should be able to knock up a quick sample program, that uses one of your new features, and understand it in a matter of minutes. Literally. Minutes. Including downloading and installing your compiler / interpreter and getting it running.

    Google sort of understood this with Go: http://golang.org/ [golang.org] They have all of the above, and even an online "compiler". They fail a tiny bit with "what's new" and selling the language, really, which is a bit of a shame, but they do a good job.

    Ruby does okay too.

    But PHP, one of the most popular languages, has a web-site that doubles as a bomb-site. It's hideous and has always put me off, even if they do have some of this information hidden away. It's not selling the language at all(presumably because they're "big enough" for everyone to just know about it). It's like reading a security/release-mailing blog sometimes.

    C# doesn't sell the language at all, anywhere, online as far as I can tell. The first hit is Wikipedia. The next few are resource sites.

    As far as I can see, C# succeeded because it was backed by a big company. By contrast, Go is still pretty obscure (which shows you there is no magic formula - Go aces a lot of the checklists but still lingers in the background). PHP succeeded because it was quick, simple, powerful and "came first" in terms of web scripting. It also created one of the web's largest security nightmares, which was something it was supposed to replace (Perl CGI).

    C was popular because it was unique at the time, and powerful. C++ was popular basically because C was (that doesn't mean it didn't have advantages too, but it got popular by riding along - not by it's own merit at first, but that's what HAS kept it in place ever since).

    There's no way to predict a success. Ruby / Rails came out of nowhere as far as I'm concerned and Ruby's been around since the 90's (Has it? Really? Bloody hell! Where was that hiding?). But things like Haskell were around too in that time and have never really caught on.

    It seems the criteria are "ready - while being in the right place and right time", and almost the inverse of what you'd expect given a look at how much they want to ease programmers in. It seems that if you want to stand a good chance of being the next-big-thing, make an awful website, don't put up examples, make the simplest thing complicated or impossible, make an horrendous security mess, and then put it online. Then find the next fad, say your language is perfect for it, and push it everywhere you can.

  • by CastrTroy ( 595695 ) on Friday March 16, 2012 @08:35AM (#39375825)
    Whether or not a programming language succeeds has a lot to do with how available the tools are. The language must have a good IDE, quality debugger and profilers. If it doesn't have these tools, it's not much use to serious projects. Nobody wants to write a serious application without the use of a modern debugger. If the tools aren't available, are difficult to set up, or cost too much, people won't start using your language. There's plenty of free and really good languages with great tooling out there that you'd have to come up with something pretty extraordinary to succeed without a proper toolset around you language to succeed. Oh that and a big API that does a lot of the work for you. Nobody wants to write all their own libraries for doing things that should be included in the API.
  • by shadowrat ( 1069614 ) on Friday March 16, 2012 @08:35AM (#39375827)
    java failed? are you confusing a platform with a language? java seems pretty healthy on servers and mobile.
  • by jbolden ( 176878 ) on Friday March 16, 2012 @08:42AM (#39375865) Homepage

    I don't see any evidence that's the case. The whole debugger / IDE culture was built around a small subset of languages; essentially Algol syntax with static typing like C++, C#, Objective-C Java and Visual Basic.

    On the other hand the major languages that have become popular in the last 15 years are often dynamically typed: Perl, Python, Ruby, PHP, Java Script. They don't have good debugger / IDE's as the technology doesn't exist yet.

    Certainly the wealth of wonderful debuggers has helped the static languages. But they aren't a necessary condition.

  • by jbolden ( 176878 ) on Friday March 16, 2012 @08:52AM (#39375941) Homepage

    But things like Haskell were around too in that time and have never really caught on.

    Huh? When Haskell came out it was a replacement to Gopher, a language not even terribly popular with the functional community. Haskell is now by far the #2 most popular functional language, passing even languages like Mathematica. Haskell has become the primary language of compiler design with ideas from Haskell leaking into most compilers including most importantly the Visual Studio compilers. Ideas from Haskell have led to whole new classes of languages like Scala and Clojure. Ideas like lazy data structures are become standard approaches in many languages.

    Further Haskell has completely altered the entire way people think of functional programming. Monadic methods are now standard in most functional languages.

    In what sense is Haskell not a huge success? Sure it isn't the mainstream language of choice, but then again a language that isn't good with interactive I/O is going to be unsuited for most day to day programming problems.

  • by buchner.johannes ( 1139593 ) on Friday March 16, 2012 @08:53AM (#39375951) Homepage Journal

    I was making a similar point here [slashdot.org] in a similar recent discussion [slashdot.org], saying that syntax isn't enough to capture the success of a language. You need to look at how accessible it is.

    For me, there are three important points to discuss programming languages:

        1. Syntax
        2. Access
        3. Community

    ad 1) We know all about and can analyse the syntax. Fine. All the discussion happens here.
    ad 2) But what does the finest Haskell help me if I can't access a CD, Bluetooth or a XMPP server, and whether it makes a difference where I want to run the code (web server, mobile phone, mainframe, laptop). In principle, all languages are Turing-complete and equivalent, and I can write wrappers between languages, but as long as I can't *practically* do all the things I need, I'm stuck. The available libraries/access methods draw a picture of what is possible. Here C due to its age, Java with it's tendency to make package that are reusable and Python are among the best (from my experience). As an aside, .NET lacks here, and massively because there is no spirit to make libraries available to others for free causing a non-availability of free libraries.
    ad 3) A language is also dominated by its users. This is most noticable with PHP. The background of users dominates what a language should do. Also, this determines the amount of help and easy-to-access documentation. Which again makes a language popular or not.

    One individual is not capable of addressing (2). Also, whether a language is picked up by the masses (3), or whether you can build and hold this community, is not a rational, predictable process. When designing a language, you don't have full control over success.

    When comparing two languages, don't just look at (1), also look at (2) and (3).

    Someone added tools/IDEs as a 4th point.

  • by TheRaven64 ( 641858 ) on Friday March 16, 2012 @09:02AM (#39376029) Journal
    Judging by languages that have succeeded over the past 20 years, I would say that the main factor in success is a large company pushing the language. It seems that the average programmer is swayed by marketing just as much as much as anyone else. Then, beyond a certain threshold, network effects kick in. If you want to interoperate with another project, life is easier if you use the same programming language.
  • by Lennie ( 16154 ) on Friday March 16, 2012 @09:06AM (#39376063)

    I would say 'killer application' applies to programmers as much as does to consumers, so 'killer platform' might be the iPhone/iPad and the language in this case might be Objective C ?

  • by Oswald McWeany ( 2428506 ) on Friday March 16, 2012 @09:11AM (#39376121)

    The average programmer doesn't get much say in the matter- it is the company that hires him that does.

    However, yes, it comes down to marketing. Big companies like Microsoft have a much better chance of convincing a CIO that they need to be using their language.

    Let's assume a theoretical company, Megasoft, produced a language Db - D Flat is much better than C Sharp - it is easier to learn- faster to compile- produces smaller .exes, runs much faster. It even puts the kettle on and makes you a cup of tea whilst you program (coffee if you prefer).

    Which company do you think the CIO is going to go with- Microsoft with their flashy brochures- or Megasoft that no-one has heard of with their awesome product.

    Right, the CIO will insist that all coding be done with Microsoft. Microsoft will no doubt have given him a t-shirt at the last trade booth. Thus, they are the obvious choice.

  • by Sique ( 173459 ) on Friday March 16, 2012 @09:19AM (#39376187) Homepage

    So who was pushing Perl, PHP or Ruby?

  • by SmallFurryCreature ( 593017 ) on Friday March 16, 2012 @09:44AM (#39376425) Journal

    I HATE language selling sites. Many a new language or framework has a VERY nice presentation site telling you that THIS is the answer to your problems, this language will screw your gf, kill your dog and set your house on fire, letting you concentrate on the essentials of life. Coding.

    PHP is totally different, it doesn't sell itself, it has no slick presentation, just every function described in clear plain English (and many heathen tongues like Dutch for those who were not blessed by god to be born in the US of A) with informative user comments with zero SPAM!!! That is what a not so good developer like me needs. Not so good? No. Really good programmers can pull a six figure income with ease, wallstreet pays the top close to a million, top game developers drive in Ferrari's. If you are coding web pages for less then 100k per year and have a bus pass, you are just not at the top. Accept it, the world needs average people too. You don't have to be the fastest runner in the world to escape the lion of unemployment, you just have to be faster then the guy next to you. Or have a gun... and shoot the guy next to you.

    What I have noticed is that there are a LOT of elitist among coders who fail at being lazy. A good coder writes NOW what he needs NOW. Coding for the future is nice but you even end writing for the past instead because by the time you have written your future proof code, the future has become the past and you missed the present. Sure for some projects, the best is needed and that is great for those who operate at such lofty levels us mere degenerate mud dwellers can not even dream off. But down in the mud, a lot of code gets written that solves a problem NOW and makes money NOW.

    ID spent a fortune on the Rage engine and the Angry Birds team did not. Which game was the greater success? Not that I think ID was wrong... but I know my limitations. Do you?

    Ubuntu, PHP etc are typically vilified for their common populalatiry. Meanwhile the Debian and Ruby people never quite understand why their own products just don't get to be as popular. They rail about lack of structure or security problems (note that Rails had a far bigger security hole at its core greater then PHP ever had and no Rail fans ever apologized for their slurs against PHP) and don't understand that real users simply need clear documentation.

    Sometimes a coder thinks that HE has the next framework... sometimes they even ask for advice on it. My advice? Forget the code. I believe you it is good. SHOW ME THE GODDAMNS DOCS to use your new baby. And in those docs. NEVER assume that I can read your mind. I need EVERYTHING explained because what seems obvious to you is not going to be obvious to anyone else.

    It is part of the reason Javascript is such a dog. The language is pretty damn good in my opinion. But there is no documentation for the average coders. php.net is the gold standard for functional documentation of a programming language. Learn from it or die in obscurity. Unless your audience enjoys coding in the dark. Some do... but I don't.

  • by Dragonslicer ( 991472 ) on Friday March 16, 2012 @10:09AM (#39376837)

    Judging by languages that have succeeded over the past 20 years, I would say that the main factor in success is a large company pushing the language.

    I'm having trouble thinking of any such languages other than Java and C#. I don't recall C (if you go back a bit more than 20 years), Perl, PHP, Python, or JavaScript becoming widely adopted because they were pushed by large companies (though I admit that JavaScript is debatable).

  • by Nursie ( 632944 ) on Friday March 16, 2012 @10:11AM (#39376853)

    Eh... java has JNI and Python has fairly trivial native bindings.

    In fact an awful lot of the power of Python comes from the ease in which you can string together a bunch of stuff that uses the sophisticated underlying C libs in a RAD style. It's part of the beauty of the whole thing, and part of the major appeal of python.

    So your rant is totally off target.

  • by ultranova ( 717540 ) on Friday March 16, 2012 @11:42AM (#39378263)

    Anyone who understands C++ reads operators just like functions.

    This is precisely the problem with C++: it's impossible to say what any given line of code actually does without examining every line the compiler has seen before, including other included files.

    Operator overloading when done well vastly decreases maintainance required because the code becomes much, much simpler to read.

    By definition, if you're using a feature "well" you're using it in a way that's doing more good than harm. That doesn't mean that the feature is good.

  • by msobkow ( 48369 ) on Friday March 16, 2012 @12:05PM (#39378711) Homepage Journal

    I really can't agree with that. Which large companies pushed perl, ruby, or python? Those who pushed were not large by the standards of the global IT market. It was the fact that many smaller companies and development houses got on board, seeding the market with programmers who knew the new languages, that made them successful.

    And even the "successful" ones have had limited success. For example, show me a non-web application that was developed with Ruby and not using Rails. Now granted, the libraries and frameworks of a language (like JEE) have a great deal to do with their acceptance by the industry, but I think it speaks volumes about the supposed benefits of some of these languages that they went no where until someone was fanatical enough to write framework libraries using them.

    In a sense, the role of the language itself seems to have shifted to the lower levels of the machine, almost assembly-like. In the meantime, the application framework has become the new "programming API" of the language library, rather than the boring and basic string and math functions that used to comprise language libraries. People now drop out of the framework into custom code only when they are forced to, with the bulk of the coding being more in the use of annotations and tags to tie pieces of the application together automagically rather than having to be expressly coded with multiple lines of low-level code.

    Of course this all comes at a price. The more you rely on things like tags and annotations, the more your code is relying on introspection and adaptive code, which is inherently slower than code which was written specifically for the attribute accessors and data types being manipulated.

    Worse, some of the framework libraries I've seen make the horrendous mistake of completely ignoring the protocols and communications styles used by legacy code. If you're going to succeed in the business arena (where most coding is done), you HAVE to deal with those old systems, and that means making it easy to deal with EDI transforms as well as XML based IOs.

    By no means am I arguing that we don't need specialized languages for special purposes in the overall application stack. Tools like Ruby on Rails are needed to simplify work in their slice of the system pie. But I can't see there being another "big thing" like Java or C# any time in the near future, but rather the continued evolution of those languages.

    Another factor is that people get tired of playing with new languages when they don't take off, and that speaks volumes to their fitness for a purpose. Languages like C++ took over a decade to really catch on, but their ideas were novel enough that the early adopters stuck with them and kept using them while momentum built. Nowadays if you don't have significant mindshare within a few years, people seem to give up and move on to something else/better. Were these languages really a significant improvement, their fans would stick with them and promote their use despite their unpopularity.

And it should be the law: If you use the word `paradigm' without knowing what the dictionary says it means, you go to jail. No exceptions. -- David Jones

Working...