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

274 comments

  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?"
    3. Re:Nah! It's Facial hair... by Anonymous Coward · · Score: 0

      Facial hair is so 1980s. Skin Conditions are where it's at today.

    4. Re:Nah! It's Facial hair... by Anonymous Coward · · Score: 0

      By cracky!

    5. Re:Nah! It's Facial hair... by OeLeWaPpErKe · · Score: 1

      There's plenty of women in the history of science, and in computer science. They're all ... well they're not beauty queens. In fact there's very few beautiful women in science at all, and of course very few beautiful men (or so I hear from ...).

      And this is good. It means that they actually did something important, were actually capable of doing interesting things.

    6. Re:Nah! It's Facial hair... by mcgrew · · Score: 1

      Actually, she wasn't that bad lookijng, but I'm having a hard time finding photos of her when she was young. This photo looks like she's maybe 50 or so.

    7. Re:Nah! It's Facial hair... by Sponge+Bath · · Score: 1

      I dread to think what Grace Hopper looked like.

      Grace: When will professional women be treated with respect?

      Master Po: Patience Grace Hopper. If a man dwells on the past, then he robs the present. But if a man ignores the past, he may rob the future. The seeds of our destiny are nurtured by the roots of our past.

      Grace: Whatever.

    8. Re:Nah! It's Facial hair... by jejones · · Score: 1

      Ada Lovelace, judging by portraits, was no slouch for looks. I vaguely recall reading secondary sources, but I can't cite them. Ditto for Sonja Kovalevsky (for her, there's photographic evidence).

      That said, you're right. Beauty doesn't matter in this context.

    9. Re:Nah! It's Facial hair... by Anonymous Coward · · Score: 1

      2 minutes with Google. Rather plain, neither a beauty nor ugly (80 years old admiral photo is best, anyways).

    10. Re:Nah! It's Facial hair... by jtollefson · · Score: 1

      Actually she didn't look that bad. Admiral Grace Hopper was a wonderful woman, innovative, and so damn smart in a simple basic way. Here's a video of her on when she was on Letterman. :) http://www.youtube.com/watch?v=RZ0g5_NgRao

    11. Re:Nah! It's Facial hair... by Anonymous Coward · · Score: 0

      Don't forget Heady Lamarr. She wasn't a developer of any computer language though.

    12. Re:Nah! It's Facial hair... by elsurexiste · · Score: 1

      Oh no. I really want Haskell to succeed over Erlang, but 100% of their creators have beards, over only 67% of Haskell's.

      --
      I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
    13. Re:Nah! It's Facial hair... by flargleblarg · · Score: 0

      Clams may have beards too, y'know.

      "Clams got legs!"

    14. Re:Nah! It's Facial hair... by Anonymous Coward · · Score: 0

      There always was Hedy Lamarr, although the contribution only swipes the classic computer science.

    15. Re:Nah! It's Facial hair... by AuMatar · · Score: 1

      Don't worry, they're both functional languages. Neither userbase will ever go over 1000 world wide.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    16. Re:Nah! It's Facial hair... by Anonymous Coward · · Score: 0

      I've got a nice neckbeard going. Maybe I should finally sit down and write my toy language.

  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 Anonymous Coward · · Score: 0

      I'm not sure automated conversion tools would actually be enough. Fixed form Fortran while listed as obsolescent hasn't been deleted from the languages. Yet, there are automated tools to convert fixed form into free form.

    2. 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
    3. Re:Compatibility or conversion by dargaud · · Score: 1

      Yes, or at the very least, make it very easy to link to and call other languages. Mathlab/Mathematica can call C libs rather easily. C can call Fortran and Pascal. But some won't mix and that's a big show stopper. Another issue I think is with languages that give you too much leeway. If you can redefine the syntax, the operators, how they work, etc, then another programmer, even familiar with the language, will have no idea what you wrote. Case in point, C++ where you can overload '+' to operate 30 different ways. And they all look innocuous like C=A+B, obfuscating the readability under a cloak of invisibility. It seems nice when you first read about it but ends up a maintenance nightmare.

      --
      Non-Linux Penguins ?
    4. 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
    5. 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.

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

    7. 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.
    8. Re:Compatibility or conversion by jbolden · · Score: 1

      I'm hoping you are being sarcastic with Java failed? Java went quickly to becoming the most popular language. I can accuse Java of lots of bad stuff. Failing to win market share ain't one of them.

    9. 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
    10. 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.
    11. Re:Compatibility or conversion by tibit · · Score: 1

      One would hope that a particular library/framework that is being used would be familiar to the people who maintain the code. If that's the case, then I don't see how operator overloading would be considered a drawback. Alas, IMHO C++ operator overloading is, to an extent, a crutch needed because the language is not very expressive. For example, in C++ the most concise way of setting up a constant type-safe matrix might be like this (this syntax is from eigen):
      Matrix m;
      m 1, 2, 3,
        4, 5, 6,
        7, 8, 9;

      This required overloading both and , just to allow for minimum verbosity. Compare this to LISP, where the matrix constant constructor could be a macro, and you wouldn't need to overload anything at all -- the matrix constant would use competely standard syntax, and it could look somewhat like:
      (setq m (matrix :rows 3 :cols 3
        1 2 3
        4 5 6
        7 8 9))
      Note that if matrix were a macro, it'd run some code at compile time to take the numbers in the argument list and produce a matrix constant.

      --
      A successful API design takes a mixture of software design and pedagogy.
    12. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      >java failed? [...] java seems pretty healthy on servers and mobile.

      I can understand people wan't to play Minecraft on mobile...

      But why should someone want to play Minecraft on a headless system? Or did you mean a Minecraft server?

    13. Re:Compatibility or conversion by MisterMidi · · Score: 1

      He specifically said in the browser. How many java apps do you see on web pages nowadays?

    14. Re:Compatibility or conversion by rubycodez · · Score: 1

      sorry, real java doesn't work that way. old java has problems running under newer jvm, old j2ee running under new j2ee. write once, run anywhere, for a while until it doesn't

    15. 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
    16. Re:Compatibility or conversion by CosaNostra+Pizza+Inc · · Score: 1

      Java is very much alive and thriving on web/enterprise application servers and on mobile devices. What do you think Android apps developers program with? What about sites that make use of JSPs, struts and spring? Here's a partial list of sites built by struts: http://wiki.apache.org/struts/PoweredBy

    17. 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.
    18. Re:Compatibility or conversion by dskzero · · Score: 1

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

      This part made me laugh so much.

      --
      Oblivion Awaits
    19. 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.
    20. Re:Compatibility or conversion by Hentes · · Score: 1

      Most new languages have some sort of foreign function interface so compatibility not that important.

    21. Re:Compatibility or conversion by VGPowerlord · · Score: 1

      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. This is exactly why Java failed.

      I'm hoping you are being sarcastic with Java failed? Java went quickly to becoming the most popular language. I can accuse Java of lots of bad stuff. Failing to win market share ain't one of them.

      He specifically said in the browser. How many java apps do you see on web pages nowadays?

      I just quoted every parent post. Not one of them mentions browser or anything remotely related... until yours.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    22. Re:Compatibility or conversion by rubycodez · · Score: 1

      I am in fact testing legacy java code for migration to newer j2ee platforms for a very large corporation, it's a sordid mess. Plenty of other languages have far less issues for ten year old code.

    23. Re:Compatibility or conversion by maz2331 · · Score: 1

      Let's face it - Java is basically just C with objects, a huge library, without pointers, and compiles to universal format that runs on a VM.

    24. Re:Compatibility or conversion by UnknowingFool · · Score: 1

      So it has nothing to do with the quality/purpose of code someone else wrote. It's all Java's fault. It's the same story for every language.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
    25. Re:Compatibility or conversion by jbolden · · Score: 1

      No he didn't as VGPowerlord mentioned.

      But even if he had, Java failures in the browser had nothing to do with conversion tools. There were no browser based apps to convert.

    26. Re:Compatibility or conversion by Nursie · · Score: 1

      There are also far less people with the skills.

      While I do worry about skills becoming obsolete, it seems like us C and C++ programmers are never far from a job because there are so few of us around compared to web dev, java and other higher level developers.

    27. 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.
    28. Re:Compatibility or conversion by sourcerror · · Score: 1

      Just like C# or Javascript (ok, Javascript usually doesn't get compiled).

    29. Re:Compatibility or conversion by Brian+Feldman · · Score: 1

      I don't think people program in "old java" anymore. That's like saying people still use K&R C -- no, largely, we upconvert it to modern conventions.

      --
      Brian Fundakowski Feldman
    30. 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?

    31. Re:Compatibility or conversion by Greyfox · · Score: 1
      Java kind of looks cool until I have to destroy an object. I was just talking to a friend about this the other day. C++ is very easy for objects on the stack; when they go out of scope, they're destroyed. For objects on the heap, you have to remember to delete them (You can easily do this with an object on the stack, though.) That means that in C++ you can guarantee when resources are deallocated. You can't really do that in Java, since finalize is never guaranteed to be called and is not really a destructor. I see a lot of programmers using it as such, including some commercial libraries. In my list of interview questions for people who claim to be Java experts is "How do you guarantee a Garbage Collection in Java?" The answer is, you allocate objects until you get an OutOfMemoryException. Then you delete them all and allocate one more object. That's the only way.

      Before 1.6 it was also the only way to tell how much space you had left on a disk too (Allocate resources until it's full) but I seem to recall they fixed that in 1.6. I haven't had the need to do that with Java since then.

      Yep, java's pretty neat, right up until you run into the brick wall of its limitations. Then it's not so neat anymore. People will be all like "Well then use JNI!" But that kind of defeats the purpose of "Write Once Run Anywhere." If I have to write platform-specific C code, I may as well write my entire application in C.

      --

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

    32. Re:Compatibility or conversion by MisterMidi · · Score: 1

      My bad. I confused his post for this one which did mention it. Need more coffee...

    33. Re:Compatibility or conversion by vAltyR · · Score: 1

      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.

      One of Go's advantages are the features deliberately left out of the language, such as the typical class hierarchy, multiple inheritance, and operator overloading. Similar to conditional compilation in C, those features, while useful, are too easy to abuse and make code harder to read in the long run. So the Go devs left them out. You can't do something like that and keep backwards compatibility.

      If backwards compatibility was necessary for a successful language, then every new language would C++.

    34. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      Why do you speak about "destroying", "deallocating" and "deleting" when you're referring to freeing arbitrary resources - not just memory?

      Of course RAII is nice, but "C++ closes handles when I call delete, so I'll use .finalize in Java" was always a bad idea and a sign of misunderstanding what is RAII and what is automatic memory management.

      Oh, and Java 1.7 now has try-with-resources to automatically free resources.

    35. Re:Compatibility or conversion by ultranova · · Score: 1

      Either make it compatible - i.e. an old language with new features - or provide me with an automated conversion tool.

      That's only really possible if the new language has the same set of concepts than the old one, in which case it doesn't really bring anything new to the table. Sure, you might kludge together a convertor between, say, a procedural and object-oriented language, but the end result is going to be object-oriented in name only, so why bother?

      It would be more useful to provide clear and simple interface to make using existing libraries from the new language as easy as possible.

      --

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

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

    37. Re:Compatibility or conversion by bertok · · Score: 1

      Java 7 has a Closeable interface that is analogous to the .NET IDisposable interface. It can be used in a block of code similar to a "try-catch" block that is equivalent to the C# "using" block, and guarantees cleanup. This is on top of the automatic cleanup that happens anyway, after a delay. For comparison, while in principle C++ code can be made robust against resource and memory leaks, in practice the use of C-like APIs and third-party libraries makes this a very difficult goal to achieve.

      You're also conflating memory management and timely release of resources. In C++ those are treated as more or less the same thing, but in managed languages like Java and C#, they're somewhat independent. Programmers shouldn't care exactly when the garbage collector kicks in to release memory because the vast majority of the time it doesn't matter, and when it does matter, there are API calls and configuration parameters that can be used to alter GC behaviour. The Closeable/IDisposable interfaces provide a structured method for resource cleanup when it does matter, such as connections and handles. This is surprisingly rare -- out of the thousands of classes in the Java SDK API, there's only a little over a hundred that implement the Closeable interface.

      Writing C++ code that uses complex control flow such threading, events or closures can be challenging, and programmers can becoming pre-occupied with resource lifetime management. I've seen many C++ programmers make the incorrect assumption that because their experience is that the advanced language features of C++ make an this complex problem somewhat simpler and safer to solve, then other languages that don't have equivalent features must in some way be flawed. Of course, this is because they don't realise that in other languages it's not a significant problem. It's a form of projection, just like alcoholics often think everybody else has a problem with their drinking too.

    38. Re:Compatibility or conversion by Hognoxious · · Score: 1

      Most new languages have some sort of foreign function interface so compatibility not that important.

      # new system

      callExternal( oldSystem() );

      end;

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    39. Re:Compatibility or conversion by ultranova · · Score: 1

      That means that in C++ you can guarantee when resources are deallocated. You can't really do that in Java, since finalize is never guaranteed to be called and is not really a destructor.

      What's wrong with "FooBar foo = null; try { foo = new FooBar(); foo.dosomething();} finally {if (foo != null) foo.freeResources(); foo = null;}"?

      --

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

    40. Re:Compatibility or conversion by tibit · · Score: 1

      I concur. RAII is not a java idiom, and you don't do things that way in java. Depending on finalization in java is about the most misguided thing ever. If you're the parent is not trolling, then I'm very sorry for his customers...

      --
      A successful API design takes a mixture of software design and pedagogy.
    41. Re:Compatibility or conversion by ADRA · · Score: 1

      I fully agree with all your comments, but with one exception. Where you say memory and resource management isn't a bitg deal is true if you're a Java developer, but very hard if you're the JVM developer needed to optimize and improve the workflow. That said, these few brave souls writing better and better C/C++ code allow the vast millions of developers using the JVM to get thart lift. Now that's what I'd consider a nice boost to productivity for all.

      Thanks to them for it.

      --
      Bye!
    42. Re:Compatibility or conversion by phantomfive · · Score: 1

      I mix C++ and Java code every day. It pains me, but I do it, and it's very possible.

      --
      "First they came for the slanderers and i said nothing."
    43. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      In my list of interview questions for people who claim to be Java experts is "How do you guarantee a Garbage Collection in Java?" The answer is, you allocate objects until you get an OutOfMemoryException. Then you delete them all and allocate one more object. ...
      Yep, java's pretty neat, right up until you run into the brick wall of its limitations.

      By these two statements alone, I am pretty confident that you are not a Java expert. I'm also pretty sure that if you're hiring people based on the questions you're asking, Java experts won't want to work for you.

    44. Re:Compatibility or conversion by chocapix · · Score: 1

      What's wrong with "FooBar foo = null; try { foo = new FooBar(); foo.dosomething();} finally {if (foo != null) foo.freeResources(); foo = null;}"?

      Verbosity. Equivalent C++ for that is "{ FooBar foo; foo.doSomething(); }"

      Or even "Foobar().doSomething();" in this case.

    45. Re:Compatibility or conversion by JesseMcDonald · · Score: 1

      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.

      That was already true for any statement which contains an identifier (because it could be a macro), which is basically all of them.

      Overloaded operators only apply when there are user-defined types involved, so (aside from implicit member-wise assignment to a class/struct) none of the operations which are semantically correct in the absence of overloaded operators have changed their meaning.

      If it bothers you that much, you can always put a line in your coding standard requiring operator-overloading functions to be called out explicitly, i.e. "a.operator+(b)" or "operator+(a, b)" rather than "a + b".

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
    46. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      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.

      Conversely, if you're using it in a way that's doing more harm, that doesn't mean that the feature is bad.

      I'm always disgusted by "But you can hurt yourself with the saw, here, take this herring instead!" design philosophy.

      "How would I know what complex<float> n = z*z + c; does, may be it deletes all the files on the current FS! complex_add<float>(complex_mult<float>(z, z), c)) is so much cleaner!"

    47. Re:Compatibility or conversion by aztracker1 · · Score: 1

      You say that now.. until you see a "ported" library that is written just like the old version... not taking advantage of any of the new language's structure or syntax... like in the Classic ASP (VBScript) days, I inherited an application written by an old COBOL developer... it was all COBOL-style logic, with VBScript syntax... I saw similar when C#/VB.Net came out with some library ports... they worked, but were really ugly to look at.

      Often the best part about newer platforms and languages, is the ability to restructure, not just port code. I've seen plenty of "hackish" code that was ported in the same hackish way(s).

      --
      Michael J. Ryan - tracker1.info
    48. Re:Compatibility or conversion by T.E.D. · · Score: 1

      Quite. In fact, porting working debugged code to another programming language is almost always a moronic thing to do.

      The only real exception is when you need a program ported to a platform that does not have a compiler for its programming language.

    49. Re:Compatibility or conversion by bbn · · Score: 1

      In my list of interview questions for people who claim to be Java experts is "How do you guarantee a Garbage Collection in Java?" The answer is, you allocate objects until you get an OutOfMemoryException. Then you delete them all and allocate one more object. That's the only way.

      Actually you just call System.gc(). Seems like your knowledge of Java is quite limited.

      Before 1.6 it was also the only way to tell how much space you had left on a disk too (Allocate resources until it's full)

      I would fire you on the spot if you tried any such thing.

    50. Re:Compatibility or conversion by serviscope_minor · · Score: 1

      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.

      That's true to a greater or lesser extent with more or lass any language. Can you tell what the following line does?

      do_stuff()

      you can even choose the language!

      But you haven't addressed the fundamantal point: any time a function is called in any language, you have to go and look at that function. Why do functions with funny names, like operator+() get special consideration from you?

      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.

      That's not an argument against operator overlading. Operator overloading allows for shorter, clearer, and more maintainable code to be written. That makes it a very good feature.

      I'm curious as to what language you consider to be ideal.

      --
      SJW n. One who posts facts.
    51. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      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.

      That's true whether you have overloading or not. Personally, I much prefer having it.

      vector3 a = ..., b = ...;
      vector3 c = 12.0*a + b;

      is bloody well more concise and just as clear as

      vector3 a = ..., b = ...;
      vector3 c = a.scalarMul(12.0).vectorAdd(b);

      If, upon seeing such an expression, you don't immediately grasp that it's operator* of vector3 and double and operator+ of vector3 and vector3 that gets called, then you have much larger problems than operator overloading to deal with. As to what exactly they do, it's really not clearer if you name the method call.

      Hell, I guess you'd prefer it if there was no overloading at all, so we had to put up with having dozens of functions named doWhateverX, where X is some type prefix, as in plain C.

    52. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      Bad programmers produce unmaintainable code in (language).
      News at 11.

    53. Re:Compatibility or conversion by dargaud · · Score: 1

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

      And how do you know that there is such a function ? You can't. Unless you've read all the code before. And know precisely the type of the two operators. Good luck. If there's a function C=AddInAStrangeWay(A, B), you know that something is afoot and Ctrl-I takes you to its definition.

      --
      Non-Linux Penguins ?
    54. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      Your point isn't really coming across by your example. For people unfamiliar with lisp (I'm only partially familiar myself), the C++ version actually looks easier.

      And anyway, in C++11, you could use an initialiser list instead, yielding:

      Matrix m{1, 2, 3, 4, 5, 6, 7, 8, 9};

      Which doesn't allow you to specify the dimensions of course, but that could be done with, for example, template arguments.

      Matrix m{1, 2, 3, 4, 5, 6, 7, 8, 9};

      Depending on compiler implementation of initialiser lists, it could even be made to generate compile time errors (through static_assert) if the number of arguments don't match rows*columns.

    55. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      Gah, the second example should of course have been:

      Matrix<3,3> m{1,2,3,4,5,6,7,8,9};

    56. Re:Compatibility or conversion by pjt33 · · Score: 1

      In my list of interview questions for people who claim to be Java experts is "How do you guarantee a Garbage Collection in Java?"

      The real question is what you gain by forcing GC. With generational GC you still don't guarantee that the object whose finaliser you wanted to be called would be collected. Methinks you'd be better off learning how to use PhantomReferences properly.

    57. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      Nothing wrong with Ada. Works on radars, plane... Good language, still evolving, still the safest, most engineering -oriented language... Java is just useless in important, life-critical applications...

    58. Re:Compatibility or conversion by Greyfox · · Score: 1
      I try to avoid Java as much as possible. I usually run into finalize problems when I'm having to fix them for someone else. For example, Jmeter's SSH sampler was hanging on me a while back, when run in command line mode. I tracked it down to him closing the ssh session in the finalize method. Apparently it wasn't getting called, and the underlying library was waiting for it to close before allowing the program to exit or something. I ended up moving the close to exit from the sampler. That wasn't really the best place to put it, but I didn't want to fight with something else to shoehorn it in.

      I've seen some atrocious things done with Java. An application a few years ago was making 30 MB log files, putting them in Strings and passing them around by copy. I think it had at least 4 copies of the string in memory at once at one point.

      So, even though your language includes garbage collection, you still can't hire chimpanzees to program for you.

      --

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

    59. Re:Compatibility or conversion by Greyfox · · Score: 1

      Go back and read the documentation for System.gc(). That doesn't guarantee anything. That's also what most people answer. I don't hold it against them.

      --

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

    60. Re:Compatibility or conversion by Greyfox · · Score: 1
      Oh, I wouldn't actually ever do that. It's an offshoot into investigations into java destructors and finalize behavior. I don't even really remember what I needed destructors for when I was investigating it. I may have been investigating a resource leak somewhere, or asking myself why someone would do something.

      It's not like it's an uncommon problem. I just had someone complaining about a JMS library leaking file descriptors the other day. I'm guessing the guys who wrote the library try to free them in finalize. Not really my problem at the moment. Hope it doesn't become my problem at some point.

      --

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

    61. Re:Compatibility or conversion by Anonymous Coward · · Score: 0

      Same applies AddInAStrangeWay(A, B) - without IDE you won't know until you compile, with IDE you'll find it.

      Just tried this quick test with IntelliJ IDEA's C++ plugin (yes, I know this code's bad on many levels):

      // complex.h
       
      template <typename T> struct complex {
          T re, im;
          complex<T> operator +(complex<T> that) {
              return (complex<T>) { re + that.re, im + that.im };
          }
       
          complex<T> operator +(T that) {
              return (complex<T>) { re + that, im };
          }
      };
       
      template <> struct complex<float> {
          complex<float> operator +(float that) {
              return (complex<float>) { re + that, im };
          }
      };
       
      // main.cc
      #include "complex.h"
       
      void z() {
          complex<int> a = { 0 , 1 }, b = { 1 , 0 };
       
          complex<int> q = a + b, w = a + 1;
       
          complex<float> x = { 0.0f, 1.0f };
       
          complex<float> n = x + 0.5f;
       
          complex<float> m = x + n;
      }

      Ctrl-B takes me to correct version of operator + (including specialized complex<float> version), line "complex m = x + n;" is hilighted with message "no operator for args".

      Get a better IDE.

    62. Re:Compatibility or conversion by tibit · · Score: 1

      Yep. See, for example, javascript memory leaks in Firefox. And those leaks are not any sort of an underlying C/C++ problem, just that it's very simple to hold on to a reference to a DOM that has a 100mb compartment on top of it. Plug-ins seem to do it left and right, and then Firefox slows to a crawl -- no wonder.

      --
      A successful API design takes a mixture of software design and pedagogy.
    63. Re:Compatibility or conversion by bbn · · Score: 1

      Go back and read the documentation for System.gc(). That doesn't guarantee anything. That's also what most people answer. I don't hold it against them.

      Ok, here is what the documentation says:

      public static void gc()
      Runs the garbage collector.
      Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.

      How in your world does an implementation avoid running the garbage collector, yet uphold the statement "has made a best effort to reclaim space..." ? The language of the documentation is due to the multitreaded nature of the JVM. Fact is that System.gc() runs the GC on any JVM ever made and thats what you asked. What would happen to a multithreaded program if you tried what you suggest? Why don't you just call System.exit() while you are at it?

      And while we are nitpicking about subjects, that you clearly does not know too much about, your way does not guarantee anything either. During edge cases the JVM might give up and just quit. This happens if more than 98% of the CPU time is spent on garbage collection. Such as when some idiot allocates alot of small objects when close to out of memory... http://stackoverflow.com/questions/2863984/duration-of-excessive-gc-time-in-java-lang-outofmemoryerror-gc-overhead-limit

      I assume you are arguing that other languages are more deterministic. But even C programs might have malloc return valid memory, but the moment you try to use that memory your program get killed because the OS overcommits the memory (*). Some people knows this, some don't, but it is quite useless in an interview to determine their skills as a programmer!

      (*) yes I know this can be turned off if you got root on the machine. Lets assume you do not.

    64. Re:Compatibility or conversion by Migala77 · · Score: 1

      Guess that sarcasm tag is not as superfluous as I expected...

    65. Re:Compatibility or conversion by Greyfox · · Score: 1
      Not really. It's more of a discussion about what people think it does versus what it really does. The claims are that Java is a "safer" programming language because you don't need to worry about objects that you're done with. Managers seem to think that Java is immune to memory and resource leaks and that they can therefore hire chimpanzees to program their systems. We often find that is not the case.

      I'm pretty sure that my method is the only way to actually FORCE the system to GC, but doing that is patently ridiculous. I hope no one thinks I'm suggesting it as an actual method that should ever be used. I don't expect anyone to provide my answer as the solution to that question. I've never had a candidate NOT tell me "System.gc()" though, which does tell me that they're reasonably experienced with java, have maybe needed to do it before but at the very least they know their way around the provided objects reasonably well. If anyone ever does tell me "Oh well to FORCE it, you need to do this..." I'll know that he had to go beyond that point. Most programmers don't.

      Of course, the real reason to run GC is to try to force the finalizers to run. I've seen a lot of programmers try to use finalize as a destructor, and I've seen doing that cause all sorts of problems. The correct solution is probably to whack your programmer with a bamboo stick and tell them to put more thought into resource handling. I'm not even sure finalize will always run at GC, really. Or... ever... If you scroll down a bit from the GC javadoc, you'll see there's another method to force the VM to run finalizers at exit. And that's it's deprecated and disabled by default, with some strong words about using it. That probably also would have solved my problem with the jmeter ssh sampler, if I could trust it after all those warnings.

      Are other languages more deterministic? Riddle me this; when you free memory in C, does the resident size of your executable decrease? Do most programmers think that it will? But that's a different can of worms, entirely!

      Is their knowledge of the subject useless to determine their skills as a programmer? Not knowing the answers to my fringe cases won't disqualify you for employment in my eyes, but I think someone who knows how their tools and the systems they use actually work will be a better programmer than someone who doesn't. They're also excellent questions for finding people who try to bluff their way through interview questions they don't know. Maybe they can get past the part where I ask them about the circumstances in which they'd want to use particular data structures, but I like to have some interview questions on topics that most people haven't explored. Because if someone is going to try to bluff or BS me instead of reaching for new knowledge, I'd like to know that before I advocate hiring them.

      --

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

    66. Re:Compatibility or conversion by bbn · · Score: 1

      I'm pretty sure that my method is the only way to actually FORCE the system to GC

      On what basis do you think this is so? System.gc() will actually force a GC. What is not guaranteed is what said GC will do about being run. Some garbage collectors have multiple phases such as reclaim objects only from the recent allocated pool while ignoring the long life pool. For this reason running the GC is _not_ going to help you much if you expect all finalizers to run. And in fact there is no way to be sure all finalizers will run. The best advice is to ignore this particular ill-thought feature of the language.

      The allocate objects until you run out of memory, then deallocate, is obviously not going to force the GC to do anything about the long life pool either.

      Are other languages more deterministic? Riddle me this; when you free memory in C, does the resident size of your executable decrease?

      If you use brk(2) it will.

    67. Re:Compatibility or conversion by rubycodez · · Score: 1

      It is the fault of Java. Plenty of unmodified code written in sane languages with sane backwards compatibility runs on my employer's hundred servers, but legitimate (at the time) java does not.

    68. Re:Compatibility or conversion by UnknowingFool · · Score: 1

      So what you are saying is that if a language changed and evolved the way it did things 10 years ago specifically in the area which are testing, it's the languages fault for not maintaining full backwards compatibility even though progress requires that they don't? Suuure. I have lots of 10 year old programs that still compile fine.

      --
      Well, there's spam egg sausage and spam, that's not got much spam in it.
  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. Redundancy vs needed features by Anonymous Coward · · Score: 0

    There comes a point also when a new language does something an existing language already does, and does well. I dont need another language to learn that has no innovative and useful features.

  6. 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?

    2. Re:Objective-C by Anonymous Coward · · Score: 0

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

      What?! Apple BASIC no longer exists?!? Because if it still does, then that proves you wrong!

      :-P

    3. Re:Objective-C by Anonymous Coward · · Score: 0

      In what respect(s)?

    4. Re:Objective-C by CaptainPinko · · Score: 1
      --
      Your CPU is not doing anything else, at least do something.
  7. 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 buchner.johannes · · Score: 1, Insightful

      I was making a similar point here in a similar recent discussion, 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.

      --
      NB: The message above might reflect my opinion right now, but not necessarily tomorrow or next year.
    3. Re:There is no magic formula. by AdrianKemp · · Score: 1

      To be honest, I think C# was a big success partly as you say because Microsoft rammed it down everyone's throat with .net, and partly because it made Java programmers not wet themselves with fear.

      I'd personally say it's 50/50 between those two. I know a lot of people who learned Java first that are absolutely petrified of ever having to actually understand how a computer works. C# appeals to that in a big way.

    4. Re:There is no magic formula. by icebraining · · Score: 1

      You forgot marketing.

    5. Re:There is no magic formula. by Anonymous Coward · · Score: 0

      Somehow you've reduced the field to a battle between shiny well-marketed languages and languages that exist simply because they are useful. Worse, you've come out on the side of shininess. Nice work accepting modern consumerism without question and applying it to the tools of abstract thought.

    6. Re:There is no magic formula. by digitig · · Score: 1

      Well, one can program .net in lots of languages -- I've done it in Ada and Python, for example -- so MS didn't exactly ram C# down anybody's throat. But it does integrate particularly well with .net, and .net did make life a lot easier for MS Windows programmers. So yes, being backed by a big corporation helped, but so was J#. I reckon it also succeeded by making it easy (relatively familiar syntax for C++ and Java programmers) to do a job that enough people wanted to do (program MS Windows).

      --
      Quidnam Latine loqui modo coepi?
    7. 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 :)

    8. Re:There is no magic formula. by Anonymous Coward · · Score: 0

      Haskell's direct ancestor was Miranda. Gofer was an early fork of Haskell.

      What's funny is that the Haskell committee asked Virginia Curry, Haskell Curry's widow, for permission to name the language, whereupon she confided that her husband never even liked his own name.

    9. Re:There is no magic formula. by Anonymous Coward · · Score: 0

      Scala is based on Erlang. At leat have the decency to know wtf you are talking about before you start typing.

    10. Re:There is no magic formula. by ADRA · · Score: 1

      I think you'll find that the .NET variants of every one of the languages mentioned are not in fact carbon copied of their namesakes. You may learn the language syntax of all those languages, but MS definitely warps them to fit the paradigm. I can't say that for all languages, but I remember the vast hords of VB6 developers cursing Microsoft's name for the upgrade path from 6->.NET. So yes, Microsoft allows you to implement many syntax standards that all get blobbed into .NET (I imagine in much the same way as LLVM I suppose.

      --
      Bye!
    11. Re:There is no magic formula. by digitig · · Score: 1

      Certainly in the case of Ada the only change was the addition of some new reserved words -- no warping of the syntax at all (although some of the constructs might have been better for some syntactic sugar).

      --
      Quidnam Latine loqui modo coepi?
    12. Re:There is no magic formula. by bill_mcgonigle · · Score: 1

      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

      Quite so, though a narrative works even better (which can overcome the page limit). The first chapter of Learning Perl (at least in the 1st edition) is a masterpiece to this concept. Everybody who wants to promote a language should read it.

      I'd say Randall and Tim O'Reilly had as much to do with Perl's success as Larry Wall did.

      And then there's something to the infrastructure that had to have been in place. If I hadn't picked up the BatBook at a CompUSA the year before I heard about Perl I wouldn't have gone to the bookstore to find Learning Perl. Many of the marketing hurdles had already been cleared. Today the channels are different, but the same concepts apply. This would give 'Go' an advantage, assuming Google does other things right (community, community, community - and not top-down 'community').

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    13. Re:There is no magic formula. by jbolden · · Score: 1

      Thank you for the spelling correction on Gofer! I thought Gopher was wrong. As for lazy data structures I agree Haskell didn't invent them, they go back to LISP. Haskell popularized them and is the reason we are starting to see them in more mainstream languages.

    14. Re:There is no magic formula. by jbolden · · Score: 1

      I said "ideas from Haskell"...

    15. Re:There is no magic formula. by dzfoo · · Score: 1

      As someone who got stuck for a while coding in Delphi.Net 1.1 some time ago, I can attest that years of experience in Delphi and other compiled languages did not prepare me for the clusterfsck that was the .Net wrapper to the language.

      It was so stilted, and the code felt just wrong. It still haunts me in my nightmares.

      To me it is rather obvious that the .Net framework was designed to be used with C#, and that contorting any other language to conform to the framework is a bit like nailing a tack to the wall with your head: it'll probably work, but it will hurt like hell, and you'll leave behind a bloody mess.

                        -dZ.

      --
      Carol vs. Ghost
      ...Can you save Christmas?
    16. Re:There is no magic formula. by Anonymous Coward · · Score: 0

      I'd say look at PHP as proof that if you polish a turd, it'll sell. Meaning it's less about the language then about all the other crap that is needed to solve problems. If that stuff works well enough, then people will use the language and it will be successful. So the quality of the language matters less than one might think. Good languages languish because developing all the other stuff, libraries, tools, IDE's with real debuggers, is likely more work than the language design itself.

      C/C++ is successful because the development community are practically the _only_ ones willing at this point to tackle the task of writing compiler back-ends for large numbers of targets. C# is successful because the tools are well polished and libraries exist to make GUI development relatively painless without hacks.

    17. Re:There is no magic formula. by TarMil · · Score: 1

      Scala has so many ideas and paradigms that you can't say it's based on any specific language. It borrows from a lot of languages.

    18. Re:There is no magic formula. by Anonymous Coward · · Score: 0

      Nice piece. Well put together.

      "You shouldn't just assume that your way is the best. Ever. Just don't. It'll annoy me." Quite common though. Python's spacing springs to mind.

      "But PHP ... web-site that doubles as a bomb-site ... has always put me off" I find this really weird. The reason I chose PHP was that I found its simple "man page with comments" approach really straightforward. When I started with PHP, I could easily find commands / functions, and as my requirements became more complex I found myself moving naturally to the more abstract bits of the manual.

      "ready - while being in the right place and right time" Not sure about this although it "sounds" correct. When the web first impinged itself on my consciousness, Perl / CGI was the way one created web pages. Where did PHP come from? It started as barely a language that programmers despised. Was it the fact that when you searched for PHP help, the help was always about the web, on the web? Searching for Perl help, you can hit shell, app, web, etc examples.

    19. Re:There is no magic formula. by hendrikboom · · Score: 1

      Haskell originated as free and open-source, and was developed because its predecessor, Mirands, wsa proprietary.

      Haskell was a success in academia because it was so difficult to implement and use, though its conceptual basis was extremely simple. Academics like conceptual simplicity, and they like writing papers about how to go about finding ways to do amazing things with absurdly simple conceptual basis, and inventing the optimizations that are necessary to be able to get anything at all done in practical time and space. There were a lot of very useful techniques developed in the Haskell community, and the world is better for them.

      But as for usability of Haskell itself? I'm really not impressed.

      It's wonderful not to be forced to use side-effects to express just about everything you write, as in Pascal, C, and the like. But it's crippling not to be able to use them when they're the point of your whole algorithm.

      Languages like Lisp and Scheme and Caml and ML and OCAML, on the other hand. are called 'functional' even though they are quite free in allowing side effects. They even have variables whose values can change in time! But they are still considered functional because they don't force you to use side effects as frequently as breathing. YOu can code in a functional style if you wish. Most users end up doing that most of the time because it's clear and easy. But when you do, they're thre as part of the toolkit.

      And as for web design? Isn't the OCAML website is programmed in OCAML?

      -- hendrik

    20. Re:There is no magic formula. by jbolden · · Score: 1

      It's wonderful not to be forced to use side-effects to express just about everything you write, as in Pascal, C, and the like. But it's crippling not to be able to use them when they're the point of your whole algorithm.

      I'm not sure if I can think of what an I/O algorithm that isn't very low level would even be. But I agree that Haskell is a terrible choice for programs that aren't mainly about side-effects.

      Get stuff do something complex put stuff = Haskell
      complex get stuff dos something simple complex put stuff = Haskell is a terrible choice.

      Languages like Lisp and Scheme and Caml and ML and OCAML, on the other hand. are called 'functional' even though they are quite free in allowing side effects. They even have variables whose values can change in time! But they are still considered functional because they don't force you to use side effects as frequently as breathing. YOu can code in a functional style if you wish. Most users end up doing that most of the time because it's clear and easy. But when you do, they're thre as part of the toolkit.

      I agree you can write functionally styled code. Scala seems to be the big recent winner. I program quite functionally in Perl. But IMHO the advantage of purity is you don't end up with 95% side effect free code blocks. When I want to make a change to something like the I/O handling of even a very functional Perl program I have to read every line of code.

      And as for web design? Isn't the OCAML website is programmed in OCAML?

      Yeah but that doesn't mean much:
      http://happstack.com/index.html

       

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

    2. Re:It's all about the tools by gtall · · Score: 1

      Bingo! And for those reasons you state, Haskell fails. Haskell is a wonderful language until you attempt to do anything. The problem with Haskell is that it is essentially an academic's language with no support environment save some silly command line crap.

    3. Re:It's all about the tools by CastrTroy · · Score: 1

      Lack of proper debuggers are what keep me away from languages. Javascript without a debugger is fine if you want to write simple event handlers, but if you want to do a fully javascript driven site like GMail, then you're going to need the use of debuggers. Also, I'm pretty sure debuggers exist for all the languages you mentioned, so I'm not even sure what your exact point is.

      --

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

      Some level of debugging exists and there are semi-GUIs. But the kind of integrated syntax checking, debugging, IDE that exists for static languages don't exist for any dynamic languages. No one has figured out how to make them.

    5. Re:It's all about the tools by w_dragon · · Score: 1

      Javascript and PHP both have decent debuggers, not outstanding but they work. PHP has about a dozen IDEs ranging from ok to great. Dynamic typing doesn't really impact a debugger, all variables still have a type, it just isn't determined until the variable is set and it can change during execution. No different than a base pointer in C++ or a variable of type Object in Java.

      Also never write Javascript as Java Script. It confuses people who may think that Javascript is related to Java, and shows your ignorance of the topic.

    6. Re:It's all about the tools by dkf · · Score: 1

      No one has figured out how to make them.

      The concept might not even make sense. OTOH, the dynamic languages are much better at supporting an interactive model of development: try some things out at an interactive prompt, and cut-n-paste the stuff that works into a script file. Dress it up a little and you're good to go. It's a fast way to make something that works.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    7. Re:It's all about the tools by Hentes · · Score: 1

      If the language is popular enough, people will write the tools for it.

    8. Re:It's all about the tools by jbolden · · Score: 1

      That's part of the problem. No one is quite sure what the proper analogies are. Komodo (Perl GUI) about a decade ago started in the right direction. I wish it had been more popular.

    9. Re:It's all about the tools by Anonymous Coward · · Score: 0

      If I saw a post that said "silly command line crap", I'd assume it was someone with an 8-digit user id. Did you buy your 5-digit account?

    10. Re:It's all about the tools by Anonymous Coward · · Score: 0

      Firebug (+ addons) is a decent debugger for Javascript. Browsers have begun implementing native developer panes that are not so bad either.

    11. Re:It's all about the tools by w_dragon · · Score: 1

      PHP has a built-in debugger, which NetBeans integrates with fine. Firebug has a debugger for javascript that works quite well, although you need to understand how functional languages work to really use it well. Syntax checking works as well as it does for any language. Can you actually point out something specific that Eclipse C++ does that Eclipse Javascript doesn't do? Or something that NetBeans Java does that NetBeans PHP doesn't do?

    12. Re:It's all about the tools by jbolden · · Score: 1

      Point well taken about the space in JavaScript. Though in all fairness Netscape/Sun created the confusion by renaming LiveScript as part of their whole Java and browsers as a replacement for desktops.

      As for a PHP IDE that is great, great compared to the static IDE's like Visual Studio, XCode...? Which ones? Your comment below makes me think you don't get the static advantages:

      Dynamic typing doesn't really impact a debugger

      I don't think you get how static language debugging works. If I have a function f, and a call like f(a,b) the debugger can't do much. In many of the dynamic languages it can't even check that I have the right number of arguments. In a static language the entire call is checked for consistency of type.

      If I use the type system effectively with data objects that are highly specific so something like:
      a is of type "glassesShoppingCode"
      b is of type "lensSize"

      and
      f:: glassesShoppingCode -> lensSize -> List of frames that will fit that lens meeting shopping code criteria

      you start to get substantial debugging advantages. If your function calls pass the debugger they often do exactly what you wanted.

    13. Re:It's all about the tools by sourcerror · · Score: 1

      It seems like a chicken-egg problem.

      It's only worth it, if the competing languages suck too much. But languages has gotten much better in the last two decades, so the bar has been raised pretty high.

    14. Re:It's all about the tools by Hentes · · Score: 1

      The tools don't necessarily have to be written in the language itself, and while the bar of a language has been raised, developing an IDE have also become much easier. Nowadays it's trivial to write an Eclipse plugin for a language.

    15. Re:It's all about the tools by w_dragon · · Score: 1

      You aren't talking about the debugger, you're talking about static code analysis, or the compiler. The debugger is the thing that attaches to the code as it's running and gives you the value of variables at the time, call stack, thread info, etc. Debuggers are pretty similar for all major languages these days.
      Most IDEs will check a function call for number of arguments, although they will only give a warning if it's wrong since the code will still run (and in something like Perl you may actually intend to send extra arguments). PHP has type hinting and a good IDE will attempt to check that the last thing a variable was initialized to matches the type hint, if there is one. Even in a statically-typed language you can do stupid things that will pass the compile stage fine. You can have arguments that are Object in java, or void* in C++. Not much the compiler can do, other than warn you that you're probably doing something stupid. You can take a base class and then attempt to cast to the wrong type of object.

    16. Re:It's all about the tools by jbolden · · Score: 1

      I get that using something like void* bypasses the safety of the IDE. The difference is that in a dynamic language the problems with void* are the norm not the exception.

      As for your point about debugger vs. static code analysis... Yes I was responding to the original poster. I agree with the differences you are citing and in that limited sense dynamic languages often offer better debuggers because removing debugging code is unlikely to create new bugs.

    17. Re:It's all about the tools by tibit · · Score: 1

      Huh? People who made the eric python IDE would like to disagree.

      --
      A successful API design takes a mixture of software design and pedagogy.
    18. Re:It's all about the tools by oakgrove · · Score: 1

      try some things out at an interactive prompt, and cut-n-paste the stuff that works

      I find using Beanshell gives me this advantage in Java as well. I do a lot of work in Python and Java and having an interactive interpreter for both environments is immensely helpful.

      --
      The soylentnews experiment has been a dismal failure.
    19. Re:It's all about the tools by jbolden · · Score: 1

      See the comments above about automatic syntax correction, type verification, argument checking....

    20. Re:It's all about the tools by tibit · · Score: 1

      IDEs normally don't do a whole lot of that. It's been only with VS2010 and Qt Creator (and maybe KDevelop) that this is being done online. Maybe Eclipse does that too, but such full checking requires integrating essentially an entire compiler front-end into the IDE -- for example Visual Studio didn't have that until VS2010 where they integrated the EDG front end.

      So, pray tell, what IDEs that do "automatic syntax correction, type verification, argument checking" did you have in mind?

      --
      A successful API design takes a mixture of software design and pedagogy.
    21. Re:It's all about the tools by gtall · · Score: 1

      Nope, got my id long long ago, check my submission history. I've never been a fan of the command line. To use it effectively I must remember a load of arcane crap that accumulated like a dirty snowball over a length of time. I don't have the time or the will because I'm mainly involved in being a logician/mathematician. Also, after having designed and programmed guis, I tend to enjoy a well-thought out gui that remembers things for me so I can get on with my job.

      Best gui I ever met was the Commando thingy that Apple had in MPW. MPW had a unix-like command line syntax but it also had Commando which gave you a dialog box. It wasn't just any dialog box. Hilite an MPW command in document, and call up Commando, you got a dialog box with all the radio buttons, check boxes, text boxes needed to format the command. As you clicked the buttons and such, it built the command line for you in a text window. You could either run it there or copy and paste it in somewhere else and run it from there.

      Now if I was a system admim, I'd probably find Commando of little use because I'd know all the command line syntax from constant use. However, if I'm programming in Haskell, I'm trying to build an app that does something, I have no use for the command line. Worse, the whole interface is command line oriented. Ever try to parse Haskell after it has been spit at you from something only a computer scientist's mother could love? Horrid. I want a real interface, damnit.

  9. Recursive blogging by b0nj0m0n · · Score: 0

    At some point in the very near future, Neil McAllister will be able to craft a post entirely from links to his own posts. There will still be an advertisment on each page with links to 3-5 of his own posts. Fans of Neil's opinion will rejoice.

    1. Re:Recursive blogging by tomhath · · Score: 1

      An it will be guaranteed to make Slashdot.

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

  11. A combination of things by DrXym · · Score: 1

    A language will succeed if it is pragmatic, scratches an itch, is more productive than what exists already, is well supported preferably by multiple vendors, is cross platform, is simple to learn and offers familiarity with what has gone before. The further away from these ideals a language is the less likely it will be to succeed.

  12. the only things that matter... by hackula · · Score: 1

    I love to mess around with wacky new programming languages in my spare time, but when it comes to business there are only two things that matter:

    1) Documentation
    2) IDE quality

    1. Re:the only things that matter... by betterunixthanunix · · Score: 1

      3) What they teach in school

      Really, had Lisp been more widely taught, we would be talking about (incf Lisp) rather than C++ when we argue about programming languages. What is taught in school affects programmers' choices about languages and designs more than anything else. Most schools today teach C++ and Java; is it any surprise that these languages or very similar languages are commonly chosen for new projects, even where there are other equally valid choices (say, Clojure instead of Java or OCaml instead of C++)? We are seeing a similar trend with the rise of Python: more schools are teaching it, and it is simultaneously becoming more popular out in industry.

      There are certainly exceptions to this, languages that became popular without any schools having taught them, but I think it is hard to argue that what schools teach does not have a major impact on what languages are used.

      --
      Palm trees and 8
    2. Re:the only things that matter... by CastrTroy · · Score: 1

      It works both ways though. Many schools try to teach what's relevant in the workplace. Although there are some more "academic" institutions that will focus a lot on things like scala, lisp, haskell, and others, many schools will try to through in a few courses where you're using "industry" languages because they want their students to be able to get jobs afterwards.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
  13. 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 Chatterton · · Score: 1

      Could you expand on the Pascal limitations things? I used Pascal when i was student, even in the industry (petroleum refinery) and I never encountered any kind of limitations.

      Now i use more frequently Python for 3 main reasons:
      * Avalability of powerful libraries
      * For a same functionality program writing from 2 time to 10 time less lines of code than Pascal, Java or C/C++.
      * Cover my old needs of Pascal (writing applications) plus writing some quick&dirty little scripts to help here and there

      There is still 1 thing that i hate in Python: It is not easy to use my 4 core processor to the max :-( If tomorrow i find a new language as good as python with the possibility to run a single program on multiple core/processors/computers, I will forget python forever and that new language will be my new language of choice. Do you hear me Guido !!!

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

      Pascal was fogotten because C solved the same problem, and aquired libraries faster.

    3. 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.
    4. Re:Needs to fill a need by serviscope_minor · · Score: 1

      * For a same functionality program writing from 2 time to 10 time less lines of code than Pascal, Java or C/C++.

      The fact that you've lumped C and C++ together when comparing them to python is a strong indication that you probably don't understand C++. They're really not the same language.

      --
      SJW n. One who posts facts.
    5. Re:Needs to fill a need by Anonymous Coward · · Score: 0

      but in part because C++ is a miserable language

      No it isn't.

      Yes it is.

    6. Re:Needs to fill a need by hey+hey+hey · · Score: 1

      Could you expand on the Pascal limitations things?

      Allow me to just link to a demi-god:
      Why Pascal is Not My Favorite Programming Language by Brian W. Kernighan,
      http://www.lysator.liu.se/c/bwk-on-pascal.html

    7. Re:Needs to fill a need by Megane · · Score: 1

      Could you expand on the Pascal limitations things? I used Pascal when i was student, even in the industry (petroleum refinery) and I never encountered any kind of limitations.

      Was it a UCSD variant? (that includes Turbo Pascal and the dialect that Apple used on the Lisa and Macintosh)

      Standard Pascal had some serious limitations that were mostly fixed by Unit headers and pointers.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    8. Re:Needs to fill a need by tibit · · Score: 1

      C++ has a rather flat learning curve if you're doing it on your own. Plan on spending a decade learning it. If you want to accelerate it, you need to delve into hardcore books (no "teach yourself in x days" type stuff!) -- stuff by Scott Myers, Alexandrescu, Strostrup, the GOF.

      --
      A successful API design takes a mixture of software design and pedagogy.
    9. Re:Needs to fill a need by tomhath · · Score: 1

      Could you expand on the Pascal limitations things?

      * Lack of powerful libraries

      * For a same functionality program writing from 2 time to 10 time more lines of code than dynamic languages like Python or Perl

      * Languages like Python are better for writing applications and quick&dirty little scripts to help here and there

      ;^)

    10. Re:Needs to fill a need by Anonymous Coward · · Score: 0

      I would suggest that the success of Java (particularly in the earlier days) rested almost fully in the Apache Foundation and other major open source library producers. The Java language itself is fine on its own merit but the plethora of available libraries to solve almost any problem means it's a big winner for businesses trying to improve the time to market for their development work.

    11. Re:Needs to fill a need by T.E.D. · · Score: 1

      Pascal's problem was cheifly that the language spec didn't allow for things like I/O, modular programming and type conversions. Basically all the stuff a professional programmer needs to do real work. Some compiler writers got around this by greatly extending the language (DEC's Pascal compiler was great, and lots of people love Delphi to this day), but really it's better to just make a language that is more useful.

      Ada is one of those more useful languages. Its chief problem with adoption really was the the world was not ready for strong typing in 1983 when it was introduced. 8-bit computers aren't powerful enough to run a compiler that has to check types, so back then it required a mainframe to run a compiler. To make matters worse, 70's Coders dropped into the language cold absolutely hated the compiler suddenly making them stop and think about the design of their data objects before pounding out code.

      These days any little home PC can easily handle a such a compiler, and OO design is almost universally accepted. But sadly in the meantime the world has moved on...

    12. Re:Needs to fill a need by T.E.D. · · Score: 1

      No. C is a much lower-level language than Pascal. It wasn't until C++ came along that you can really say that.

      C's huge advantage was that you could do real work with it (unlike a standards-compliant Pascal compiler), it was simple enough that compilers could run on the small 8 and 16-bit machines that were popular at the time.

    13. Re:Needs to fill a need by T.E.D. · · Score: 1

      The only real advantage C++ has over Ada is that more people use C++.

      That's a huge advantage though, with all kinds of important implications.

    14. Re:Needs to fill a need by Anonymous Coward · · Score: 0

      Also, the were not too much contributors. In the early 90, it was Borland only.

    15. Re:Needs to fill a need by Noughmad · · Score: 1

      But you don't really need to know all its features, or the whole standard library. For most applications, the basic knowledge of classes, pointers, templates and such is sufficient. Add Qt if you want graphical interface. None of these things takes a decade of learning.

      --
      PlusFive Slashdot reader for Android. Can post comments.
    16. Re:Needs to fill a need by tibit · · Score: 1

      But then you'll be writing what is essentially object-oriented Pascal, not C++.

      --
      A successful API design takes a mixture of software design and pedagogy.
    17. Re:Needs to fill a need by marcosdumay · · Score: 1

      Yep, that was the point. Both were kind of interchengeable, and fighting for the same support. Once one got more traction, everybody moved and the other starved. It was a winner takes all thing.

      Of course, C also had Unix helpping it, so maybe Pascal didn't even have a chance.

    18. Re:Needs to fill a need by Anonymous Coward · · Score: 0

      * For a same functionality program writing from 2 time to 10 time less lines of code than Pascal, Java or C/C++.

      That run 100 times slower.

    19. Re:Needs to fill a need by Chatterton · · Score: 1

      Actually most of my programs wait more time for the datas than to process them. And when it is number crunching apps (neural networks, statistics, machine learning), numpy/scipy is here to solve, most if not all, my speed problems.

    20. Re:Needs to fill a need by Chatterton · · Score: 1

      At school it was Turbo-Pascal. At the refinrery it was VAX-11 Pascal. I never user the standard Pascal. That why I never saw pascal limitations then :-)

    21. Re:Needs to fill a need by Chatterton · · Score: 1

      * Lack of powerful libraries
      It is not a language limitation but a limitation of the ecosystem around the language

      * For a same functionality program writing from 2 time to 10 time more lines of code than dynamic languages like Python or Perl
      Being a statically typed language, pascal like any other statically typed language is more verbose. it is not a limitation of the language.

      * Languages like Python are better for writing applications and quick&dirty little scripts to help here and there
      Here the limitation you suggest is the same for C, C++, any compiled language. It is not "the limitations that made Pascal a good student language but lousy for real work" because else any compiled language is in the same basket.

    22. Re:Needs to fill a need by Anonymous Coward · · Score: 0

      Some old C compilers can only take 1 parameter passed to them in functions. Does that make them all like you're trying to make Pascal out to be without noting there are better ones than std. original Pascal?

  14. 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
  15. 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
  16. You only need one language and that is.. by Anonymous Coward · · Score: 1

    C++.

    There is no need for anything else.

    1. Re:You only need one language and that is.. by Anonymous Coward · · Score: 0

      C++.

      There is no need for anything else.

      The low level stuff you do in C++, I do in assembler.
      The high level stuff you do in C++, I do in Prolog.

    2. Re:You only need one language and that is.. by Anonymous Coward · · Score: 0

      C++.

      There is no need for anything else.

      The low level stuff you do in C++, I do in assembler. The high level stuff you do in C++, I do in Prolog.

      Cool. So I guess this means you are fluent in all of ARM, AVR, Blackfin, CRIS, CRX, DEC, FR30, FRV, HPPA, IA-64, M32C, M680x0, MIPS, MN10300, PDP-11, PowerPC, RS/6000, S/390, SPARC, V850, VAX, Xtensa, i386, picoChip, x86-64 and zSeries assembler then?

    3. Re:You only need one language and that is.. by Anonymous Coward · · Score: 1

      Actually, I've programmed over 20 different architectures in assembly, not all the ones on that list but others like 8080/Z80, 6502, 6800/6809, 8051, some Ti DSP I can't remember, m88k (how many can claim this?) and Cray1 (yes I'm getting old).

      However, RS6000 and PowerPC are the same, as well as S/390 and zSeries. VAX, PDP-11, and HPPA are essentially dead and IA64 not much better.

      Your list is a bit strange, it includes 8 bit microcontrollers (picoChip is actually a family, I've programmed with the 12 and 14 bit wide instruction sets, there is also a 16 bit set which I've neverf used) and 32/64 bit machines.

      Oh, by far the worst crapitecture of all the ones for which I've written assembly is 16 bit x86 with the nightmare of segments, near and far pointers, etc... And the worst FPU for which I've had to optimize (I took compiler generated code and sped up some loops by hand) is the x87 FPU. If IBM hadn't chosen Intel over 30 years ago, we would have had genuine 32 bit code much earlier.

  17. 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
  18. 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.

    1. Re:Smalltalk? by jbolden · · Score: 1

      Point well taken about Smalltalk,. I'd agree that Smalltalk was a huge innovator on IDE/Debuggers. In general too many things resolve runtime for debugging in the classic sense to work well. So I give the static languages the credit for GUI/Debugger.

      That being said there is no static language (except possibly Haskell) I'd rather write in that Smalltalk.

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

    So who was pushing Perl, PHP or Ruby?

    --
    .sig: Sique *sigh*
  20. Re:Why New Programming Languages Succeed Or Fail by Anonymous Coward · · Score: 0

    What large company jump-started PHP or Ruby?

  21. Re:Why New Programming Languages Succeed Or Fail by Hognoxious · · Score: 1

    Adopt is transitive, succeed isn't.

    Type mismatch near line 0. Bailing...

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  22. Re:So why the fuck do we have Python, Java, and C# by Sique · · Score: 1

    Because for instance, Perl can interface with C libraries? (just write the right lib.xs for your C lib.)

    --
    .sig: Sique *sigh*
  23. Standard library by jgfenix · · Score: 1

    It must have a big standard library which covers most common needs. In Java you can develop almost any kind of application without the need for third-party libraries.

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

  25. Does It Have A Platform? by assertation · · Score: 1

    Popularity is all about making it EASIER.....and FASTER, to produce stable, fast, and reasonable footprint applications.

    If a new language doesn't do that on its own, then it needs a platform or set of tools to make that happen.

    If a new language just lets you do the same things, but in a different way, with maybe 1 or 2 things being better then there is no motivation to learn it, use it or make things for it.

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

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

    1. Re:Gosh, I think the complete opposite by tibit · · Score: 1

      I vilify PHP simply for having seemingly absolutely no direction in its development. Just look at the function names, they are what they are with no rhyme nor reason. All of its API just reeks of being designed by a bunch of people in an insane asylum. I value myself enough to be able to afford working with technologies that don't leave a sour aftertaste day after day. I can afford to work with stuff that has a certain amount of beauty to it.

      PHP's high adoption rate is partly because people just accept the byzantine without winking an eye. There's no expectation, it seems, at least not among the novice developers, towards stuff that works well and doesn't reek.

      --
      A successful API design takes a mixture of software design and pedagogy.
  28. I Know Why by chocapix · · Score: 1

    Because excluded middle.

    1. Re:I Know Why by Anonymous Coward · · Score: 0

      I think you just a language there.

  29. Why use a new language if it's not new? by Anonymous Coward · · Score: 0

    That means new languages should probably be at least a little C-like [... it should use] curly braces and cryptic operators [...] Furthermore, new languages should support familiar programming styles

    What's the point of using a new language then? I found it liberating to get rid of the (function(){...})() cruft with the switch from Javascript to Coffeescript. According to TFA's philosophy, Coffee does it wrong because it alienates Javascript users. What would be the point of using it if it only offered "baby step" enhancements, at the expense of needing a Javascript interpreter/crosscompiler?

    Or to say it with Alan Perlis:

    19. A language that doesn't affect the way you think about programming, is not worth knowing. (Epigrams on programming -- original page seems down)

  30. Oblig... by alex67500 · · Score: 1

    There are only 2 different types of programming languages: those everybody continuously bitch about, and those nobody uses.

  31. Re:So why the fuck do we have Python, Java, and C# by Brian+Feldman · · Score: 1

    Yeah, him saying "call out to external C code with varying degrees of difficulty" is purely disingenuous. There is NO difficulty; it may be slightly tedious, but really, no, it's not a big deal. It's quite easy to get a Java/Ruby/v8 (node.js) application bound to an existing C/C++ code-base.

    --
    Brian Fundakowski Feldman
  32. Existing code - but not what you think by Anonymous Coward · · Score: 0

    What makes a language successful, is people using it. Again, also not what you think.

    What it takes is for a 'killer-app' to be written in the language first. People want to use and improve that app, so they learn the language.

    Sometimes these apps are business apps, and wanting to use and improve means getting a job.

    Sometimes these apps are hobby apps, and wanting to use and improve means personal satisfaction.

    I've never learned a language for the sake of learning the language. I've always learned a language so I can work with projects already using it.

  33. Of course we need more languages... by Anonymous Coward · · Score: 0

    Scala and Clojure (on the JVM side) are very new and Haskell (relatively new) are showing that there are many things to be learned by creating new languages. And there are lots of other cases.

    I find Clojure particularly interesting because adding vectors and maps (in addition to lists) to a "Lisp one dialect" is nothing short amazing. Of course it's not "the one ultimate Lisp". But it shows that even in the Lisp world there are still interesting things that can be done.

    We're not anywhere near what we should aim for: software and languages are decades behind hardware.

    Anyone who thinks is current language is "good" is a knee-jerking fool with a myopic vision. Modern languages aren't good. Modern VMs aren't good. They do s*ck.

    Linus Thorvalds (you know, he made that little thing that powers hundreds of millions of cellphones, routers, servers, etc.) recently said in a filmed interview that Java s*cked and that the JVM was lame.

    And I think he's right on spot. Yet for a lot of "Real-World" [TM] application it's the "best" we have today. But it doesn't make the JVM great at all. It simply makes it "the best VM so far"... And there's still a long way to go.

    In my own stupidity I used to think that "Java the language" sucked (don't get me started on the non-portable C#) but that "Java the virtual machine" was good. Now I realize they're both gigantic kludges.

    At least the JVM offers a good starting point for someone wanting to create a new language: Rich Hickey who created Clojure nicely explains that.

    But still: the JVM is certainly not the be-all end-all of VMs (tail call optimization for a start ; )

    I both pitty and envy the comfort of those thinking that their language is a good language...

  34. So trivial by Anonymous Coward · · Score: 0

    All the languages that have succeeded, did so for just one simple reason:

    they solved a problem many people had.

    That's it. Marketing does help, yes. Documentation too, of course. But the key is helping people solve their problems.

    COBOL, Fortran, LISP and C where among the first. COBOL appealed to the business people, Fortran made it easy for scientists, LISP for early AI and list heavy processing, and C for the performance savvy (just anybody else).

    C++ was there when C people wanted to grow, and go into the business niche. Then came Java, just when a COBOL was overdue.

    Visual Basic helped stuff enterprises with kids coming from 8 bit computers, very little formation and low income expectations. C# is just the replacement of Visual Basic.

    PHP was there when people started crafting complex web sites. It was simple and got the job done.

    Perl was the choice for many years when a Unix Shell hack starts to do a little too much. Currently Python is taking this place.

    And so on, and so forth. No great mystery, really.

  35. Are you confusing sarcasm by jbov · · Score: 1

    Are you confusing sarcasm with ignorance? For the OP's sake, I hope so.

    1. Re:Are you confusing sarcasm by shadowrat · · Score: 1

      Maybe?

  36. Glad that by maz2331 · · Score: 1

    At least Brainfuck never caught on!

  37. Re:Why New Programming Languages Succeed Or Fail by Anonymous Coward · · Score: 0

    Me

  38. Its not the languare only per se by McLoud · · Score: 1

    It's not really just the language. It's the entire programming environment: the language, the library, what system features it allows you to get your hands into and failing that last one, how much the language has "build in" and with how much quality, how much trouble-less it is to run in your target system, how much easy is to build a program around it
    The major PITA's I have found with "alternative" languages is when building beyond hello-world/clickety demos. Many languages with their respective build environments fail to provide a good desktop infrastructure to build rich apps. Some fail at the web side of it. Some ain't much good at any of it. For windows desktop apps, if you don't provide support for system widgets, you better have a alternative to the build in rich editor with printing support that can just copy/paste to/from office-like software without much trouble. Many focus too much into the "programming" side of it and relegate the integration with everything else to second plan.

    --
    sign(c14n(envelop(this)), x509)
  39. All maintream languages are a "fail" by Anonymous Coward · · Score: 0

    Because they let programmer do whatever they want. Coding style - anything goes. Documentation - not needed. Unit Tests - huh, why? Patterns - Never heard of that? It is this cherished freedom that is killing reusability and security and causing folks to reinvent the bugs over and over again. So unless we get a language that is a like a code nazi from the dark side of the moon, no progress will be made.

  40. Re:Why New Programming Languages Succeed Or Fail by Nursie · · Score: 1

    Am I just being ignorant or was there no large company behind python either?

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

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

  43. 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 serviscope_minor · · Score: 1

      Linus Torvalds says "C++ is a horrible language."

      Well, he also claims that C is better because C++ attracts worse programmers. Apart from being completely revisionist, it's a completely illogical argument. Linux hates C++ for some personal reason and tries to make up technical-sounding arguments about why C is better than C++.

      He makes a great kernel, but he is ignorant about C++ and says some very stupid things.

      --
      SJW n. One who posts facts.
    2. Re:New languages ARE coming by Anonymous Coward · · Score: 0

      Linus is right. C++ is a bad language from a standardization perspective.
      It is so complex that for corner cases nobody really knows how a proper implementation should behave.
      He has good reasons to hate the language and be suspicious of C++ programmers.
      C++ has been born from a set of macros hacked up on top of C, and it should have died there.

    3. Re:New languages ARE coming by Anonymous Coward · · Score: 0

      Frankly, Linus says a lot of stupid things about anything he's not an expert in. It's not personal, it's just the usual substitution of passion for actual authority, something most of us do from time to time. He was still slagging microkernels when L4Linux was outperforming the vanilla kernel. He thought all SMP needed was a giant global lock. It's just Linus being Linus, and he does at least learn when he has to.

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

    5. Re:New languages ARE coming by Anonymous Coward · · Score: 0

      Yes, OOP was invented to keep mediocre programmers from screwing up. Bjorne Stroustrup said "C let's you shoot yourself in the foot. C++ makes it harder but if you do it blows your whole leg off." Windows was written in C (some C++ now), Oracle is written in C, Linux is written in C. The flight systems for the Boeing787 were written in Ada. In the same journal I mentioned (Jan Computer) Prof. Stroustrup has a good article on "Software Development for Infrastructure" and coding style changes that need to be made. However, I challenge you to produce "some very stupid things" Linus has said. And you used plural.

    6. Re:New languages ARE coming by Anonymous Coward · · Score: 0

      I see you (and GP) didn't really read what's written there.

      Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum. A proposed new course on object-oriented design methodology will be offered at the sophomore level for those students who wish to study this topic.

      So, basically, they'll teach algorithms and basics of computation for the first year, and proceed with program design (including OOP) after that.

      Can't see anything wrong with that.

    7. Re:New languages ARE coming by serviscope_minor · · Score: 1

      However, I challenge you to produce "some very stupid things" Linus has said. And you used plural.

      Basically pretty much everything he has said about C++ ever.

      See here http://warp.povusers.org/OpenLetters/ResponseToTorvalds.html. It contains detailed explanations of a number of things (not plural) that Linus said which were utterly stupid.

      --
      SJW n. One who posts facts.
  44. Re:Why New Programming Languages Succeed Or Fail by Anonymous Coward · · Score: 0

    I was just lazy.

    Perl, Python, PHP, Ruby, Scala, ...

  45. Re:Why New Programming Languages Succeed Or Fail by Anonymous Coward · · Score: 1

    It's not just a marketing thing. If the language is really small and very few know about it, the CIO would be taking a gamble on trying to find programmers for it. It's an unknown risk. Any language with a small following and relatively new is something you want to stay away from for large projects.

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

  47. 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
  48. Language popularity (in business) by Rumtis · · Score: 1
    One thing to note is that the popularity of a language has changed based on the culture of the bulk of the programmers at the time. I'll focus on business needs here, but there is whole other post that can dicuss the academic world as well.
    Originally the "popular" languages were forced down programmers' throats from the companies that built the servers they ran on:
    Mainframe era (1960s - 1980s): In a time when the mainframe was king, Cobol was the be-all-end-all. you couldn't go wrong learning it.
    Midrange era (1980s): As mid-size companies began to afford computing power, midrange servers started filling in. Languages like RPG and such became popular. The midrange era in business didn't last long, though, so most people don't know these languages.
    Server era (1990s - present): Now smaller companies could afford computing power. Also, the merger of business and acedemic programming cultures started happening since businesses didn't really have a major player to go through when x86-based programming started.
    • C became the defacto language at the beginning since it was not as isoteric as assembler, had mature tools to go with it, and got the job done quickly.
    • Visual Basic (sorry to bring this one up, but it *was* a popular language) gained popularity since it was simpler to learn (and had a major player ramming it down business throats)
    • C++ became popular since it was laid on top of C, but offered better growth opportunities to business developing software.
    • Java then came along looking similar to C++ with great backing and the promise to "write once, run anywhere" which became popular with the non-"locked into Wintel" companies. (And the fact that Microsoft was trrying to "embrace, extend, extinguish" C++ at the time didn't hurt Java's popularity either)
    • C#: Microsoft, feeling threated by Java, fired up their .Net initiative, bringing a kicking and screaming VB (and Java clone [C#]) into the OOP world. "Locked into Wintel" companies rejoiced once they got over their "OMG, (non OOP) Visual Basic is going away!" fears.
    • PHP, Ruby on Rails, Perl, etc.: As businesses started realizing that "open source" is not a bad word, niche languages started becoming more popular to fill the needs out there. They would not have become as popular, though, without the already established (at the time) community of users (many in academics) out there.

    In summary, many languages (in business) over the years suceeded mainly because they had major backing from an established vendor at the time. The main exceptions to this are C/C++ (the biggest supported languages in the academic community at a time when x86-based servers started taking off), and the current crop of languages which are successful in business because they fill the need, have great tools and support from the community at large.

    To be honest, since mobile applications have become prevalent, I'm surprised we have not seen more languages that support those platforms become more popular. For example, Objective C would be still in relative obscurity if it wasn't for iOS. Mobile is the next platform that is going to be targeted for the "next big thing" (tm) in programming languages.

  49. Growing A Language by Anonymous Coward · · Score: 1

    Guy Steele said it all : http://video.google.com/videoplay?docid=-8860158196198824415

  50. "almost free" languages do better by peter303 · · Score: 1

    AT&T's C language tromped the competition being nearly free at universities int he 1970s and 1980s. The just charged distribution costs. Ditto C++ over ObjectiveC. ObjectiveC had the advantage of commercial support and more Smalltalk-like roots than C++. But only Apple uses it.
    In mos operating systems Java is free.

  51. Re:Why New Programming Languages Succeed Or Fail by Spectre · · Score: 1

    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.

    Yes, and as an example, how about Microsoft's amazing J++!

    Now, how many readers are old enough to have been programming while that language spectacularly failed to take off?

    --
    "Flame away, I wear asbestos underwear"
  52. Objective-C is 30 years old by peter303 · · Score: 1

    It came out nearly the same time as C++ which. You had to buy Objective from its vendor or Apple which C++ was was free. ObjectC was ahead of C++ in quality for many years, but languished due to its price. I used ObjectIveC as a NeXT computer developer.

    1. Re:Objective-C is 30 years old by Megane · · Score: 1

      It came out nearly the same time as C++ which. You had to buy Objective from its vendor or Apple which C++ was was free.

      Apple had nothing to do with Objective C until it bought NeXT. By that time it was already integrated with GCC.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  53. 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.
  54. Re:So why the fuck do we have Python, Java, and C# by Anonymous Coward · · Score: 0

    http://www.swig.org/

    Let me introduce you to a commonly used tool called SWIG, or the Simple Wrapper and Interface Generator.

  55. Re:So why the fuck do we have Python, Java, and C# by Anonymous Coward · · Score: 0

    -1 angry, uninformed kid.

  56. 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.
  57. 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; }
  58. 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.)

    1. Re:Why success? Sometimes it's money. by sourcerror · · Score: 1

      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.

      Sun threw even more money at it by supporting a lot of opensource projects. (They even made an opensource MMO engine in Java, Darkstar.)

      "Java was supposed to be the programming language of the Web." - Given that most enterprise applications have web interfaces, it's not a real miss. PHP became more popular because of cheaper hosting.

    2. Re:Why success? Sometimes it's money. by Animats · · Score: 1

      "Java was supposed to be the programming language of the Web." - Given that most enterprise applications have web interfaces, it's not a real miss.

      Sun was thinking client-side Java. "Applets", running in the browser. Then they were thinking desktop Java, with user applications written in Java. Server side Java came much later.

      That's why Java has that whole byte-code interpreter thing. Java is a hard-compilable language; there's a GCC implementation that generates machine code. The whole point of the byte-code thing was to make the downloads to the user's browser fast and processor-independent. "Write once, run everywhere" is a client side issue, not a server side issue.

    3. Re:Why success? Sometimes it's money. by hendrikboom · · Score: 1

      I heard once that Java's first market was set-top boxes for cable-TV networks.

    4. Re:Why success? Sometimes it's money. by hendrikboom · · Score: 1

      Modula 3 was not developed by Wirth, which may expalin why it escaped the "teaching-only" trap. It is not dead, even though DEC SRC is. There are links to its current support team and cross-platform implementations on its wikipedia page

      I prefer it to the other languages I have available and am familiar with, though I do find it very wordy. It seems to nudge me toward clean program structure and efficiency together. And like Algol 68, it makes debugging extremely easy. Modula 3 and Algol 68 are the only languages in which I've ever written large amounts of code and had them run correctly on their first execution In Algol 68, a program of over a thousand lines ran correctly the first time the ocmpiler allowed it ti get to execution. In Modula 3, it was hundreds of lines, but that isn't a language limitation. I just write code in smaller runnable chunks these days.

  59. 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.
  60. Re:So why the fuck do we have Python, Java, and C# by phantomfive · · Score: 1

    Just look at Perl, Python, Ruby, Java and C# for some examples

    You do realize all of those languages have a way to call into C code, right? In fact, it's a good idea to do so, because then you can take advantage of all the pre-existing libraries that are written in C. You don't have to write OpenGL from scratch if you want to use it in Perl (or your new language), you can just write a wrapper around the existing library.

    --
    "First they came for the slanderers and i said nothing."
  61. Re:Why New Programming Languages Succeed Or Fail by K.+S.+Kyosuke · · Score: 1

    I think ultimately when I'm "language shopping" debugging facilities would be my primary concern.

    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.

    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

    Then check out Gambit-C debugger (an implementation of Scheme). Redefining code on the fly? No problem. Resuming execution from any continuation with user provided data (as a quick fix to run the rest of the computation without having to re-execute a lengthy test run, perhaps with a lot of manual intervention, it you're trying the code interactively)? No problem.

    --
    Ezekiel 23:20
  62. 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.

    1. Re:My point proven by Anonymous Coward · · Score: 0

      While arguing about naming schemes is indeed silly, just looking at all the escape_string/real_escape_string/real_escape_string_i_mean_it_this_time just proves the point that PHP is hacked together on the go without any forethought.

      Shall we count Rails security holes and compare to PHP holes count?

    2. Re:My point proven by tibit · · Score: 1

      It's not about what's best -- there's no such thing, it's all a matter of opinion. It's about not following some coherent policy/convention! In PHP, unless you have it all memorized, you won't ever know how a particular function you may not have used recently would be called. You have to look it up. This is in sharp contrast to, say, Qt, or many CLR/.Net libraries, where you can often correctly guess method and class names. The problem with PHP is that this lack of attention to detail pervades the API. What's the point of a high level programming language if a lot of its API is pretty much a 1:1 (but slightly broken) mapping onto the underlying C libraries?! I mean, come on, can't anybody really come up with anything better than the str* and printf* family?

      I've done a few projects in PHP and it felt like writing something that would be input to cweave/ctangle - pretty much C with garbage collection that happens to be autoextracted from an html file. Good grief.

      Not only is PHPs API byzantine, the functionality it provides is often incomplete or promotes unsafe or poorly performing practices. PHPs functionality is nothing special at all. You get that and much more with any half-decent Python installation, or any CLR server.

      --
      A successful API design takes a mixture of software design and pedagogy.
  63. FP vs. Non-FP by Sebastopol · · Score: 1

    Oooh, a language discussion! Have I missed all the folks who put down functional programming (and LISP), when their experience is limited to the Wikipedia article, or a week or two of exposure in their CS101 class?

    Don't start without me!

    /runs to the microwave with a bag of popcorn/

    --
    https://www.accountkiller.com/removal-requested
  64. Re:Why New Programming Languages Succeed Or Fail by Anonymous Coward · · Score: 0

    Python did well because is was pretty decent in the early days, despite some oddness, and it only had PERL as an alternative, which doesn't suit most developers' taste. PERL was mainly used as a step up from shell scripts by admins.

  65. Re:Why New Programming Languages Succeed Or Fail by JigJag · · Score: 1

    If you were right, then .Net would be massively popular amongst developers.

    --
    "The hallmark of humanity is the ability to move beyond sensory inputs" - Mary Helen Immordino-Yang
  66. Re:Why New Programming Languages Succeed Or Fail by TheRaven64 · · Score: 1

    Popular? Maybe not. Used? Hell yes. The amount of C# code that's written is staggering, as are the number of jobs advertised using it.

    --
    I am TheRaven on Soylent News
  67. The programming language doesn't matter by Anonymous Coward · · Score: 1

    It's not about the language, it's about the framework, the tools, the platform. Objective C is a confusing language, most should agree. But you don't mind because the platform (iOS fex) is attractive and cool, the tools (xCode fex) are awesome and the framework (Core*, Cocoa, etc) is very very good. Nobody would care about C if it wasn't for the fact that it interfaces best with the Linux kernel and base libraries, and maps very well to hardware. Ruby, Java, C#, they are just languages. We learn them, and if we learn them really well, we learn to love them and hate them. The point is really what you can _do_ with the framework that is made available through the language.

  68. 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.
  69. New hardware, new rules. by Anonymous Coward · · Score: 0

    Who really knows what paradigms are coming along. The point is that we are at a turning point in computer (and device) design. We are leaving the von Neumann and Harvard architectures behind. The existing languages are generally unsuitable for the direction we are headed. Remember: The purpose of a program is to control devices. The language must generally be suited for that purpose. If I've got a machine with 12 Intel cores, 1024 Nvidia cores and lightning fast data storage, I can rip through data looking for patterns using a dozen different algorithms.

  70. Using the machine is the issue! by boddhisatva · · Score: 1

    Bjorne Stroustrup: "A single-threaded, nonvectorized, non-GPU-utilizing application has access to roughly 0.4% of the compute power available on the device."

  71. Bloody Uppity Coders by HarryatRock · · Score: 1

    Back in the day, when a "small" project, suitable to be given to a young designer as a first solo flight, was anything less than six man months of effort, and was scheduled for use sometime next year, and a "big" project was at least 60 man years and needed next year and for the following 10 years, the budget allocation would be roughly 40% design, 40% testing and documentation, and 20% coding. The systems analysis and design tasks included choosing the right tools for the project. Sometimes the chosen strategy would be a mixture of languages (especially when the project needed different sub-systems on different platforms), sometimes the choice of documentation tool would be much more important than the code language. If user documentation was going to be extensive, then a full typesetting tool would be used, if not a simple text editor with hand drawn diagrams might be sufficient for IT staff.
    In any case, the final design stage would be to produce pseudo code for every module/function and a dictionary of every variable to be used (including a methodology for naming local temporary variables). Only then would coding begin, sometimes done by the same people who had done the design, sometimes not.
    In that environment, FORTRAN, COBOL,Algol had one important advantage - they were available. In fact we used a language called RTL/2 for many programs on DEC minis, because it had good access to assembler for time critical functions and special I/O to some of our exotic peripherals. We used COBOL on VAXen and ICL and IBM mainframes, for database access and fancy output, and FORTRAN where engineers from non IT departments needed to specify and/or understand a function. Assembly level code was still needed on most jobs, simply to get run times within acceptable limits.
    So what makes a language popular? Who with? I hate writing COBOL, but doing the SAME JOB in C++ would be even worse. I love C++ but making the source readable to a user is a non starter for anything more complicated than Hello World, and that has to be explained.
    I think the whole thread is confused over popular, widely used, and readily available. A language might be popular with coders for reasons such as "coolness", future employment prospects, and dare I say it laziness, while the same language might be detested by the IT manager who has to squeeze more mips out of the same hardware. As for the users, they just shouldn't be allowed to have an opinion!
    The very idea of interactive coding fills me with horror, how the hell do you test it. Is this where all of the security holes and resource leaks are coming from?
    Measure twice, cut once. and get off my lawn.

    --
    nec sorte nec fato
  72. What languages? by Anonymous Coward · · Score: 0

    A lot of languages I've reviewed are just a bundle of library calls and references to binaries that do things which can't be written or expressed in the language itself. I personally won't use a language unless whatever API's it depends on can be written in that language. I know that technically even those scripting languages have grammars and definitions, but I just don't think library calls that aren't language tokens in the grammar should be "standardized" as part of the "language" itself.

  73. Re:Why New Programming Languages Succeed Or Fail by Anonymous Coward · · Score: 0

    Most of the web development industry and unix department (Python included). Think about O'Reilly.
    But i guess they were the only possibility for dynamic web development. The same way like lua, which was the only sane embeddable scripting language for quite a time. C++ simply doesn't work for the small guestbook script. (That doesn't mean it's a bad choice for bigger projects, like Wt proves.)

    Funny how that didn't work with Tcl. Guess it sucked too much in the beginning.

  74. 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.
  75. It's about simplification? by Anonymous Coward · · Score: 0

    How about "A language succeeds/is adopted because of what it makes easier vs. the current state"?

    C simplifies Assembly
    Object-oriented (supposedly) simplifies procedural
    Functional simplifies procedural
    perl simplified text processing
    php simplified web development
    java simplified platform-specificity and direct memory management
    python and ruby simplify type management
    erlang simplifies concurrency
    hadoop/pig simplify distributed processing

    I may be oversimplifying (har,har), but it seems that more or equivalent power with greater simplicity is a common pattern. Subsequent generations criticize what initially appeared to be simplification (perl, php) but I think within the context of when they were developed this axiom holds true.

  76. Re:So why the fuck do we have Python, Java, and C# by Anonymous Coward · · Score: 0

    Are you completely illiterate? Why didn't you actually read the GP's comment before replying to it? The GP addressed exactly what you just mentioned.

    Since you obviously have a pretty difficult time with basic reading comprehension, let me point out exactly where it says that (emphasis added):

    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.

    I sure hope you feel embarrassed about this. You've made yourself look rather stupid. I hope you take this as a lesson for the future; read a comment fully before replying to it.

  77. Re:Why New Programming Languages Succeed Or Fail by IntlHarvester · · Score: 1

    > Yes, and as an example, how about Microsoft's amazing J++!

    This was actually catching on before Sun sued Microsoft and killed it.

    (Then it was pretty much reinvented as C#, which took over the MS world pretty quickly.)

    --
    Business. Numbers. Money. People. Computer World.
  78. Re:Why New Programming Languages Succeed Or Fail by Pseudonym · · Score: 1

    Succeed != Adopt. (Or =\= if you prefer Prolog, /= if you prefer Haskell... forget it, we could be here all day.)

    Not all serious languages are developed with the goal wide adopted. Many are testbeds for new language features and paradigms, or new compiler techniques. The technology can live on long after the language, and if that happens, the language succeeded.

    You probably have done or used most, if not all, of the following:

    • Written a "Hello world" program.
    • Single-line comments denoted by "//".
    • Compund statements delimited by punctuation instead of identifiers (i.e. curly braces instead of BEGIN/END, DO/OD etc).
    • Byte-oriented memory addressing exposed by the language.
    • Personal computer operating system written in a high-level language.
    • Compilers that are retargetable by compiling through a low-level platform-independent representation.
    • Multiplayer role-playing games.

    You can thank BCPL for all of this. It didn't "succeed" in the sense of long-term wide adoption, but its legacy is unsurpassed by any other language.

    --
    sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  79. Re:So why the fuck do we have Python, Java, and C# by Anonymous Coward · · Score: 0

    You don't know what disingenuous means.

  80. Re:Why New Programming Languages Succeed Or Fail by anubi · · Score: 1

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

    Anybody remember Borland?

    That is still my compiler of choice for making quickie DOS runs to check out some algorithm or interface.

    It has always puzzled me as to why we needed all these new languages, when a library of C++ functions should do it.

    C++ is a damn clever language - and properly implemented like Borland did, it makes for compact snappy code.

    --
    "Prove all things; hold fast that which is good." [KJV: I Thessalonians 5:21]

  81. COBOL - reports of its death.. by Anonymous Coward · · Score: 0

    ...have been greatly exaggerated.

    It always amuses me to hear people who know no better talking about COBOL as if it's dead and gone, when it's very much not. Sure, it's not a language that you'd use to program in for a PC or a smartphone - that's not where its strengths lie. But COBOL still very much rules the roost in its natural environment, namely high-volume, high-throughput commercial programming. If you look at any of the largest companies out there, you'll find three things: Mainframes, CICS and COBOL . Mainframes have massive throughput with a reliability that's, simply, in a different league to other platforms. CICS is IBM's flagship transaction processing manager, used - according to Wikipedia - by over 90% of the Fortune 500 companies, with features that complement the mainframe need for long up-times and data/transaction reliability, throughput and integrity. And COBOL (THE main programming language on CICS installations, as well as others). Frankly, it's all around you, even if you don't notice it (if you used an ATM yesterday, your request was almost certainly handled by a CICS transaction running a COBOL program, for example).

    The fact is that it may not be sexy and it may be venerable (and far too few new programmers have any experience of it or the environment in which it excels), but COBOL is very much alive and well in its niches - and, there, there's a LOT of it. Why? Because, ultimately, a language is only a means to an end - and in the case of COBOL, that's delivering high throughput with high integrity in a massively reliable environment. Simply, COBOL delivers what the BUSINESS needs; and, academic and peer scorn notwithstanding, I have no doubt it will comfortably outlive most of the people reading this.

  82. Re:Why New Programming Languages Succeed Or Fail by ignavus · · Score: 1

    So who was pushing Perl, PHP or Ruby?

    Mr W. W. Web

    New technologies promote new languages. The "microcomputer" made Basic popular. The web made PHP popular - it is kind of like Basic for web servers (not in syntax, but in being easy for beginners). Ruby has gotten nowhere much apart from Rails. And Objective-C has been around for ages, but only rose to any kind of prominence when it was bought by NextStep, which was bought by Apple, who now use it on their iDevices. And we all know what language the browser has made popular.

    A popular technology promotes a new popular language.

    --
    I am anarch of all I survey.
  83. Soo..... by shiftless · · Score: 1

    Your thoughts on J++?

    1. Re:Soo..... by OhSoLaMeow · · Score: 1

      I think it's the greatest thing since the XBOX 360!

      --
      They can take my LifeAlert pendant when they pry it from my cold dead fingers.
  84. You're forgetting by shiftless · · Score: 1

    it may be slightly tedious, but really, no, it's not a big deal

    Yeah today it isn't, but things weren't always that way.

  85. U just convinced me u talk out your ass by Anonymous Coward · · Score: 0

    "had all the limitations that made Pascal a good student language but lousy for real work." -

    What "limitations" are those (that are of practical import which affect Pascal dialects like Borland Delphi from being used on large professional projects), hmmm?

    I'd like to hear them from you!

    I mean, because as is, right now from you??

    Heck, I KNOW you're talking out your ass regarding Object-Pascal/Borland Delphi!

    (Becaue not only imo, but also professional programming experience since 1994? Well, you're just another 'sheeple' that follows the 'party line' but hasn't done any work in said language to speak of - but, yet "sees fit" to shoot his inexperienced mouth off on it... which is, to be blunt about it, pitiful!).

    APK

    P.S.=> Clue/New News/NEWSFLASH: Have you ever heard of Borland Delphi/Object-Pascal?? Obviously not, and your statement only reaffirms mine, once more... apk

  86. "demi-god" of the most exploited language on earth by Anonymous Coward · · Score: 0

    Coming from the author of the language most prone to exploits? I'd take Anders Hejlsberg (creator of Turbo Pascal, Object Pascal, Borland Delphi, and .NET for MS) over him, any day of the week. "BWK" was just 'big shit' when there were no real competitors is all. That's no big accomplishment.

  87. Re:Why New Programming Languages Succeed Or Fail by Oswald+McWeany · · Score: 1

    Probably and partially for no other reason than it is no longer new. It isn't that C++ would still not be usable today. Microsoft claimed C for their own- and people forget Borland (and others) existed. Java also stole a bunch of C programmers for themselves.

    --
    "That's the way to do it" - Punch
  88. The crux of why people use C++: by shiftless · · Score: 1

    I keep coming back to it, because often there is no better alternative.

    This sums it up.

  89. "I see your list of acronyms, and raise you ..." by shiftless · · Score: 1

    Yeah, that's a checkmate.

  90. Oblig++ by shiftless · · Score: 1

    There are only 2 different types of programming languages: those everybody continuously bitch about (yet are forced to use anyway), and those nobody uses (for good reason).

    FTFY

    Maybe if we build a big enough AST tree out of these logical (yet empty and meaningless) statements, we will finally get down to the root of and understand why programming languages suck.

    We are now at step 2 of 17,392 in this chain of reasoning.

    Your move.

  91. Re:Heretic - we'll use emacs whatever the language by hendrikboom · · Score: 1

    Python does type checking at run-time. It prevents you from destroying the run-time infrastructure, and alerts you when you try that. That's what's missing in C ans C++, and a rather involved debugger ends up being needed to assess the damage after the fact.

  92. Threads my man, threads... apk by Anonymous Coward · · Score: 0

    "There is still 1 thing that i hate in Python: It is not easy to use my 4 core processor to the max" - by Chatterton (228704) on Friday March 16, @10:19AM (#39376945) Homepage

    Use threads: It's possible in Python... & because of today's modern Operating Systems kernel mode process scheduler subsystems? There's no REAL need to actually even go as far as EXPLICITLY doing processor specific affinity api work either... not really!

    APK

    P.S.=> Of course, I use threads in Delphi, & C++ with ease also (generally faster languages for most things vs. Python, but, like was said here many times? Python's "piping" abilities along with regex (which libs like BOOST give Delphi & C++ too, along with their own native regex also) make it create things fast). Still - I like python for string processing work actually! ... apk