Slashdot Mirror


Why New Programming Languages Succeed Or Fail

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

51 of 274 comments (clear)

  1. Nah! It's Facial hair... by jawtheshark · · Score: 5, Funny

    Everyone knows it's the Amount of Facial hair

    --
    Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    1. Re:Nah! It's Facial hair... by wilfie · · Score: 3, Funny

      I dread to think what Grace Hopper looked like.

    2. Re:Nah! It's Facial hair... by red_dragon · · Score: 3, Funny

      I dread to think what Grace Hopper looked like.

      Clams may have beards too, y'know.

      --
      In Soviet Russia, Jesus asks: "What Would You Do?"
  2. Compatibility or conversion by sunderland56 · · Score: 2, Insightful

    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.

    1. Re:Compatibility or conversion by betterunixthanunix · · Score: 4, Insightful

      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.

      --
      Palm trees and 8
    2. Re:Compatibility or conversion by DarkOx · · Score: 2

      The limits that would impose on syntax and underlying data models would essentially stop all real evolution in this space. Thank your lucky stars this attitude is not pervasive or we'd all be working with slightly improved BASIC, FORTRAN, COBOL, and Ada environments today. The lucky ones would be maintaining code bases comprised of horrible COBOL to C conversions. If you have been in the retail or finance industries you have encountered some CBOL at some point.

      No if anything new languages should provide some bindings to call methods and code written in other common languages. That way you can continue to leverage your large complex objects or procedures developed over years, without the constraints of the old environment. Sure you might have to deal with some messy type conversions multiple paradigm ugliness but you can most likely solve that once and wrap so it at least does not 'look' especially nasty.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    3. Re:Compatibility or conversion by Anonymous Coward · · Score: 2

      Easier to find a Java job in the northeast than any other language. C# is the closest and it isn't that close. C and C++ jobs are still here, but far, far less than 10 years ago.

      Java failed in the browser but not because of compatibility - it was because it was a slow and awful experience, Javascript succeeded wildly in the browser and it is far less C-compatible.

    4. Re:Compatibility or conversion by shadowrat · · Score: 4, Insightful

      java failed? are you confusing a platform with a language? java seems pretty healthy on servers and mobile.

    5. Re:Compatibility or conversion by lightknight · · Score: 2

      Nonsense. One of a programmer's favorite past-times is to rewrite a program in a new language.

      Why? Because it gives us a chance to ditch some of the *shudder* old hackish code. A clean break, with an explanation that "what once was, is no longer."

      All of this, of course, while being paid. ;-)

      --
      I am John Hurt.
    6. Re:Compatibility or conversion by haystor · · Score: 3, Interesting

      I suspect that the "Java failed" post was a sarcastic counter example of a language that stood on its own.

      Java is unusual because it had a billion dollar marketing push explaining how it would change everything. Managers were taking Java classes to learn how it would change everything. None of this was aimed at the enterprise. It failed to be adopted most places it was aimed and somehow backed into the enterprise area due to lack of competition among Microsoft alternatives.

      So the answer as to why Java didn't fail is probably that Sun bought it a place at the table. On its own merits, I don't think it would have gotten anywhere.

      --
      t
    7. Re:Compatibility or conversion by buchner.johannes · · Score: 2

      That's the great thing about the JVM ... you can try out different paradigms, but you can always reuse the code, no matter if it is written in Java, Jython, JRuby, or any of the more experimental languages I don't even know about.

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    8. Re:Compatibility or conversion by Kjella · · Score: 4, Interesting

      Which is why COBOL is still alive, too much legacy code and too many libraries to re-implement. That doesn't really say much about new languages though, C to C++ is more the exception to the rule here in that it was an extension to C but C itself kept living its own life. Most other languages just grow and grow with one new feature here and one there and a few things deprecated but never really gone. And that's really why most new languages appear, to get rid of all the crud. To get rid of all the legacy code. To get rid of unsafe methods, stupid interfaces, stupid syntax, stupid keywords, inheritance systems, constructors/initialization and whatnot. I program in Qt/C++... but I'd just love to redo it without all the C-isms and take the best from Java and C#, it'd just be a helluva job. Many of the popular languages have had a huge corporation backing them - Sun for Java (now Oracle), Microsoft for C#, it's not just a language but today I'd also expect a fairly complete standard library (which is why I said Qt/C++, I'd not do plain C++) and that's a lot of work.

      --
      Live today, because you never know what tomorrow brings
    9. Re:Compatibility or conversion by GreatBunzinni · · Score: 2

      It sounds like sarcasm to me. After all, Java is, in any measure, a successful language and platform. A considerable number of respectable higher education institutions have adopted java as the programming language for both OO courses and intro to programming, and any job search returns a high number of jobs which explicitly require proficiency in java programming.

      If that wasn't enough, there's android developing. Nowadays, if you want to develop software for a smartphone you are basically forced to write it in either java or objective-C.

      So, it sounds like sarcasm to me. Either that or someone has been hidden in bunker for the past 20 years.

      --
      Slashdot, fix your code or at least hire someone who is competent at it to do it for you.
    10. Re:Compatibility or conversion by UnknowingFool · · Score: 2

      First of all, "Write once, run anywhere" never meant to apply to all versions. It meant to apply to different platforms. By your logic, no language could every grow as backwards and forwards compatibility must be maintained at all times. Second for the most part, java is fairly backwards compatible. I don't know what kind of code you are writing but programs I wrote 10 years ago still compile and run.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
    11. Re:Compatibility or conversion by serviscope_minor · · Score: 4, Interesting

      It seems nice when you first read about it but ends up a maintenance nightmare.

      No, it doesn't. Anyone who understands C++ reads operators just like functions.

      You see +, and translate it in your head to a call to a function called "plus" (technically operator+()).

      Well, guess what, no language prevents you from giving functions stupid names. You can write a function in any language called "add" which doesn't add things. Just as in C++ you can write a function called operator+() which doesn't add things. There is *no* difference.

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

      --
      SJW n. One who posts facts.
    12. Re:Compatibility or conversion by Greyfox · · Score: 4, Interesting
      I'm not sure you can say that. I went to college back in the late 80's and early 90's and was subjected, among other things, to Ada. The military apparently liked Ada mostly for its extra-strong typing. You really don't want to find out that your programmer made a type error when the missile is already in flight, I guess. I've done a lot more with C than C++, but have already had C++ catch enough obscure type errors with the code I'm using to experiment that I'm pretty much sold on the language. Enough to add it to my toolbox anyway. It's hard to say whether I'd do that if I didn't have the advantage of 20 years of programming in a similar language. I certainly didn't with Ada. But I think C++ can stand on its own. There are fairly few things you really need to pick up to be able to program well with it.

      The main one is: Avoid template fuckery. You know that book by Alexandrescu? Don't do that! Well unless you're writing Boost. It's too easy to abuse for no real gain, like the Singleton pattern. Most programming teams will refuse to allow you to use a singleton now, even when it's justifiable, because of the abuses to the pattern. If you're factoring primes with recursive templates at compile time, you're creating a maintenance nightmare and future generations of programmers will curse your name. Though I still think it'd be a fun exercise to do a compile time matrix multiply library...

      Not that you can completely avoid using templates in C++. But if you avoid it for as long as you reasonably can, your chances of actually using them well when the time comes are much better. You'll probably still get burned by odd template rules, but at least most of your code won't have that problem.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    13. Re:Compatibility or conversion by ultranova · · Score: 3, Insightful

      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.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

  3. Re:Why New Programming Languages Succeed Or Fail by hcs_$reboot · · Score: 4, Insightful

    Succeed == Adopt. So the question may be rephrased as "Why programmers adopt a language?", and this time you can post a constructive answer.

    --
    Slashdot, fix the reply notifications... You won't get away with it...
  4. So why the fuck do we have Python, Java, and C#? by Anonymous Coward · · Score: 3, Insightful

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

  5. Objective-C by cerberusss · · Score: 4, Insightful

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

    --
    8 of 13 people found this answer helpful. Did you?
    1. Re:Objective-C by AdrianKemp · · Score: 3, Funny

      I assume you mean aside from Objective-C being one of the best languages available?

  6. There is no magic formula. by ledow · · Score: 5, Insightful

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

    1. Re:There is no magic formula. by jbolden · · Score: 4, Insightful

      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.

    2. Re:There is no magic formula. by psmears · · Score: 2

      Huh? When Haskell came out it was a replacement to Gopher,

      I think you mean Gofer - which was an implementation of (an early draft of) the Haskell language. NB most of the innovations you mention (e.g. lazy data structures) were around before Haskell came on the scene :)

  7. It's all about the tools by CastrTroy · · Score: 3, Insightful

    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.

    --

    Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    1. Re:It's all about the tools by jbolden · · Score: 3, Insightful

      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.

  8. Advice by icebraining · · Score: 2

    People posting hypothesis of what makes a language successful: if it predicts that Modula is extremely popular and PHP is essentially unknown, maybe you should revise it instead of blindingly post it just because you'd like that to be true.

  9. Needs to fill a need by tomhath · · Score: 4, Interesting

    Lopes observes that few successful modern languages have roots in academia. An academic herself, she's naturally dismayed....Successful languages have a niche

    That's really the heart of it. No matter how "good" a language might be from an academic's perspective, it has to be actually useful to be used.

    C was (and still is) a great alternative to Assembly

    Java succeeded mostly because it was Not Microsoft, but in part because C++ is a miserable language and the world was ready to replace COBOL, ALGOL/JOVIAL, and FORTRAN.

    Ada failed for many reasons, but mostly because it was just glorified Pascal and had all the limitations that made Pascal a good student language but lousy for real work.

    Lisp, Perl, Javascript, Python, etc. all fill niches; some niches bigger than others.

    1. Re:Needs to fill a need by serviscope_minor · · Score: 2

      but in part because C++ is a miserable language

      No it isn't.

      It's a great language which standardises a bunch of things that people were doing anyway in C and gives them a common syntax. It also very expressive while maintaining high performance.

      I keep trying to find languages better than C++ (it certainly has its share of warts), but I keep coming back to it, because often there is no better alternative.

      And it's just got a whole lit better.

      --
      SJW n. One who posts facts.
  10. Re:Why New Programming Languages Succeed Or Fail by TheRaven64 · · Score: 4, Insightful

    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.

    --
    I am TheRaven on Soylent News
  11. Re:Why New Programming Languages Succeed Or Fail by Lennie · · Score: 4, Insightful

    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 ?

    --
    New things are always on the horizon
  12. Re:Why New Programming Languages Succeed Or Fail by Oswald+McWeany · · Score: 4, Insightful

    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.

    --
    "That's the way to do it" - Punch
  13. Smalltalk? by Anonymous Coward · · Score: 2, Informative

    No debugging/syntax checking IDE for dynamic languages? Not if you count Smalltalk as dynamic. Smalltalk works arguably better for debugging, syntax checking, and more than static languages because of the VM concept.There can be a slight delay, especially if connecting to a VM remotely (Gemstone for instance), but Smalltalk's IDE even lets you program in the debugger. You haven't seen real TDD unless you've seen someone writing an entire app in the Smalltalk of choice's debugger. It also supports things like real-time unit tests that run as you type, direct debugging from web pages, runtime code changes, etc. The idea is that is always runtime.

    Unfortunately, Smalltalk is too "weird" for some people, while others don't get it (example: power via simplicity). And then of course there was the vendor greed factor, incompatible dialects, etc.

    I for one love working in Smalltalk and think files are a stupid concept, particularly for software development. OO source control? Yes please. People are just too set in their ways, and that's why many things that were good middle grounds have picked up momentum. I think a lot of people really do want something like Smalltalk and do not realize it.

    I work with C, C++, Objective-C F#, C#, Java, Scala, Ruby, Python, Smalltalk, and a few others. I find it really funny that people are so excited over Ruby for example when it just feels like a crippled, inconsistent, buggy Smalltalk. I do like Ruby, but it feels like a toy in so many ways and I just end up using Scala or gasp, Java, Objective-C, or C# instead for anything real. I am happy to see newer projects like Pharo, but without a large war chest backing it, I am sure Smalltalk will remain a dirty secret and unheralded language. At least overall the ideas from Smalltalk have made computing as a whole so much better. It took too long though and we're still not caught up.

  14. Re:Why New Programming Languages Succeed Or Fail by Sique · · Score: 4, Insightful

    So who was pushing Perl, PHP or Ruby?

    --
    .sig: Sique *sigh*
  15. Ada did not fail at all. by master_p · · Score: 5, Informative

    Ada did not fail at all. It is used for exactly what it was designed for: mission critical defense applications.

    Ada was not designed for intranet or web or mobile or desktop applications, although it can do those things really well.

  16. Heretic - we'll use emacs whatever the language! by pr100 · · Score: 2

    Seriously tho' - python, for example, is successful without having a good IDE. There are some IDEs that some people would argue are good - but most of the people writing python are using emacs or vi.

    I'm also rather sceptical about the need for a good debugger. Most of the time I find writing a couple of simple unit tests and a putting in a couple of diagnostic prints is fine for figuring out what's going on (and you have the tests forever, which means that changes are less likely to introduce bugs in existing functionality).

  17. Gosh, I think the complete opposite by SmallFurryCreature · · Score: 2, Insightful

    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.

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

  18. Re:Why New Programming Languages Succeed Or Fail by Dragonslicer · · Score: 4, Insightful

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

  19. Re:So why the fuck do we have Python, Java, and C# by Nursie · · Score: 2, Insightful

    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.

  20. New languages ARE coming by bodhisattva · · Score: 2

    Carnegie-Mellon has dropped OOP from their CS requirements because they felt that the OOP model was not appropriate for modern needs. Linus Torvalds says "C++ is a horrible language." In the January issue of IEEE Computer there is an article "The Java Tree Withers - The java report card: infrastructure gets a D, code reuse gets an F".

    Programming languages drive devices. I'm doing heterogenous parallel processing in C and CUDA. Multicore and massivelly parallel concurrency is absolutely the future and if you think it's easy, you haven't done it. There is a new compiler that will mix x86 and Fermi but it is definitely suboptimal. Only a human can do the cost/benefit analysis required for parallelization and only a human is creative. At this point anyway. Multicore consurrency is here to stay. I see no reason why heterogeneous processing (multiple architecture machines)should go away either.

    Also, while Cray dropped the use of FPGAs, the are getting easier and easier to program, they are lightning fast, they can be reprogrammed in a millisecond and... and... while software patents are a can of of worms, an FPGA program/algorithm can be patented as a circuit. And there is massive legal precedence in enforcing circuit patents.

    1. Re:New languages ARE coming by TheSync · · Score: 2

      Carnegie-Mellon has dropped OOP from their CS requirements

      Wow, and they are replacing it with imperative & functional programming.

      I think it is a crime to let people out of CS school without knowing Java/C++ in this day and age. OOP has issues (I still think OO is a cult :) but you have to realize that there are a lot of practical and theoretical work done in OOP.

      Also I was taught some functional programing in C. You don't really need a special language. Teaching someone Standard ML is a waste of their time when you could be teaching the same concepts in a more popular language.

      It is like teaching short story writing in Western Innovative Tibetan rather than English, French, or Chinese.

  21. Modularity by Hentes · · Score: 2

    I find that the most important feature of a language is modularity. Have a big standard library, make it easy to use third-party libraries, including foreign ones and make it easy to create libraries.

  22. medicine by Tom · · Score: 2

    I personally think that programming languages are a lot like medicine.

    Your new language doesn't just have to solve a problem or two that you see with programming language, it has to do it better than existing languages while having less "side-effects" (quirks, difficulty, weaknesses).

    If the advantages it provides aren't big enough to cover the costs (like learning a new language, using a new compiler, writing plugins to syntax-highlighting, etc. etc.) then they simply don't matter.

    --
    Assorted stuff I do sometimes: Lemuria.org
  23. Re:Why New Programming Languages Succeed Or Fail by ifrag · · Score: 2

    it is easier to learn- faster to compile- produces smaller .exes, runs much faster

    Ok, lets talk about the debugging tools. Those are all nice things to have, and relatively important, but also probably not the main concern any longer, or at least not my main concern. Ever evolving hardware has managed to alleviate what may have been considered major feature points back in the day. I think ultimately when I'm "language shopping" debugging facilities would be my primary concern. Nobody is going to care about a language unless developers can produce working code in it.

    Maybe I'm just not seeing it, or using the wrong stuff, but Visual Studio pretty much dominates compared to a lot of debuggers I've been forced to use. Unfortunately in some cases there just isn't any other options available.

    --
    Fear is the mind killer.
  24. Usability trumps consistency by gestalt_n_pepper · · Score: 2

    Make a programming language that's readable by humans, and have the language map concepts to code in the way humans think about things and it will be wildly popular (PHP, VB-anything, C#, Javascript/DOM). Make the programming language terse, efficient and mathematically consistent and it will be wildly popular - among mathematicians and gradually abandoned by most of the rest of humanity (e.g. Fortran, Powershell, C).

    In the former cases, the machine does the heavy cognitive lifting. In the latter, you're expected to do it all. Guess why PHP is more popular than C++? Yes, PHP is sloppy, inconsistent and as random as the people who use it. That's the majority of folks who have to get some work done. As awful as the language is, it rules the web along with vb/asp and javascript.

    Getting the picture?

    --
    Please do not read this sig. Thank you.
  25. Re:So why the fuck do we have Python, Java, and C# by Megane · · Score: 2

    A lot of Perl's syntax is based on sed, awk, and Unix shells, with C-ness thrown on top. C wasn't the first and only language, ya know. And C wasn't "extemely well established" until about 1990 or so. Now get off my lawn.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  26. Why success? Sometimes it's money. by Animats · · Score: 3, Informative

    Java succeeded because Sun 1) gave it away, and 2) threw money at giving it away. Remember "applets"? Java was supposed to be the programming language of the Web. That didn't work out. It ended up being the new COBOL, which was not Sun's intent.

    Some languages fail, or get stuck, because the designer is in love with their own implementation. That happened to Pascal and Python. Wirth's own Pascal implementation was a cute little recursive-descent compiler that generated RPN byte codes, like a Java compiler. Wirth resisted changes to the language that would allow programming in the large. ISO Pascal reflects his biases. So Pascal became stuck in an educational niche. The original Macintosh software was all written in an extended Pascal, as was much '80s software. But everybody had a different dialect - there was Turbo Pascal, Clascal, and a few others. They never merged.

    Modula, Wirth's second try, was also crippled in certain ways. Modula 2 was better. Modula 3 was good enough to be used to write an operating system kernel. Unfortunately, Modula 3 was only used with DEC, which died after being acquired by Compaq.

    Python has some of the same problems. The feature set of Python reflects what it's easy to implement in a naive interpreter, like von Rossum's CPython. Internally, everything is an object, even integers and floats, and object access involves dictionary lookups. This makes CPython slow. Every attempt to speed up Python substantially has hit a wall, including Google's "Unladen Swallow" effort. (PyPy is making progress, but it's taken a decade and requires an incredibly complex internal combination of interpreters and compilers.)

    The biggest disappointment to me has been that we're still stuck with C. C has two killer bad design decisions - the language doesn't know how big arrays are, and the "pointer=array" thing lies to the language. Both reflect how things are done in assembler, and the fact that the original compiler had to fit in a 128K PDP-11. Most of the millions of buffer overflows and crashes that occur daily can be traced to those two design decisions. (C++, as I point out occasional, tries to paper over these problems with collection classes. But the mold usually seeps through the wallpaper, since most operating system and library calls want raw C pointers.)

  27. Re:Why New Programming Languages Succeed Or Fail by msobkow · · Score: 3, Insightful

    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.

    --
    I do not fail; I succeed at finding out what does not work.
  28. My point proven by SmallFurryCreature · · Score: 2

    This proves my point, some people care about getting things done, about being able to find out how to get things done... and others about the font used for the logo.

    Who cares about the function names? I can hit a dozen developers from my desk and every single one of them will have a different idea about the best naming schematic and formatting rules. I often use 3rd party libraries, I just adjust. Go ahead and work with something else if you want but don't complain when thousands who work in less exalted positions choose functionality over elegance in something nobody but a programmer will ever see.

    What is amusing is that you care so much about some silly naming scheme. Buit tell me, what did you think of the recent massive security flaw in Rails. Did it have pretty names in the gigantic security hole? What value does a naming scheme really have beyond pleasing elegance?

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

  29. Re:Why New Programming Languages Succeed Or Fail by ifrag · · Score: 2

    If I were to choose between a language with a shiny debugger and a language with well-chosen features that allow the programmer to write clean, readable code that works right the first time, I'd choose the latter. Additionally, I wouldn't need the debugger afterwards.

    To each his own. I'm well past the illusion of "not needing a debugger", that is pure myth when dealing with significant complexity. I've had to deal with enough strange code other people have written. And when it's not your code then "works right the first time" doesn't mean a damn thing anyway. Congrats on getting to an autonomous position where you write (or rewrite?) everything.

    Then check out Gambit-C debugger (an implementation of Scheme).

    The garbage I've had to deal with lately is the Altera and Xilinx debuggers which are both hacked up versions of the gnu / gdb tool-chains. Like I said, you don't always have a choice. Sometimes the only thing available is terrible.

    --
    Fear is the mind killer.
  30. Re:Why New Programming Languages Succeed Or Fail by OhSoLaMeow · · Score: 2

    *raising hand* Me! Me!

    I'm a dinosaur. Been around since the days of IBM 360 systems. Assembler, RPG, COBOL, PL/1, that kind of thing.

    Lucky for me I had the sense to graduate to C after it first came out. PL/1 was fairly similar to C in constructs, etc. so it was an easy transition.
    Ooops, excuse me. The nice pretty lady is here to wheel me to lunch.

    --
    They can take my LifeAlert pendant when they pry it from my cold dead fingers.