Slashdot Mirror


What Makes a Programming Language Successful?

danielstoner writes "The article '13 reasons why Ruby, Python and the gang will push Java to die... of old age' makes an interesting analysis of the programming languages battling for a place in programmers' minds. What really makes a language popular? What really makes a language 'good'? What is success for a programming language? Can we say COBOL is a successful language? What about Ruby, Python, etc?"

101 of 1,119 comments (clear)

  1. The "un-success" of a language by Slashdot+Suxxors · · Score: 3, Funny

    Is directly proportionate to the amount of /. posts talking down on it.

    Fact.

  2. Beards by AioKits · · Score: 5, Funny

    I thought it was the beards on the creator(s) of the language that determines the success?

    --
    "Quote me as saying I was mis-quoted." -Groucho Marx
    1. Re:Beards by Anonymous Coward · · Score: 3, Funny

      GOTO BEARDS

    2. Re:Beards by VGPowerlord · · Score: 4, Informative

      That article is basically a rip of this one by Tamir Khason. Heck, it's essentially a blatant copy of the 2004 version of Tamir's article with some of the 2008 pictures thrown in!

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  3. Off the top of my head? by steeljaw · · Score: 4, Insightful

    Portability and scalability are what win it for me, I like to write my code once and it's got to be powerful enough to deliver a complex solution.

    --
    Procrastinators, Unite Tomorrow!!
    1. Re:Off the top of my head? by OrangeTide · · Score: 4, Interesting

      I'm mainly a C hacker, but I don't get why people would prefer Python over Java. Dynamic typing where you can create new identifiers implicitly is pretty scary to me. I'm not even sure what Python offers over the dozens of other languages that preceded it.

      --
      “Common sense is not so common.” — Voltaire
    2. Re:Off the top of my head? by agrounds · · Score: 5, Insightful

      Portability and development speed are what drive it for me. Most of what I code is for log parsing, network device configuration, and reporting. To that end, I have never seen a need to look too far beyond Perl. It does everything I need with very minimal effort and development time, even for reasonably complex projects. Still, when Perl code becomes too large to work with effectively even after breaking down individual tasks, I change languages.

      I think the point is "which tool fits the current need best." Far too many people seem to want to use a hammer when a screwdriver would work better out of potentially misguided allegiances. Languages are no different than any other tool.

      I suspect TFA is more 'overrated' than 'insightful' since it makes some gross generalizations, cites search results as indicators of popularity, and completely neglects some of the nicer features of the popular scripting languages.

    3. Re:Off the top of my head? by SatanicPuppy · · Score: 5, Insightful

      Well, it's got a better object model than Java, and it's a lot faster to code with. Java just isn't appropriate in every situation.

      Python also plays well with C, so it's often used in concert with C for interfaces, etc.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    4. Re:Off the top of my head? by amccaf1 · · Score: 5, Insightful

      I'm mainly a C hacker, but I don't get why people would prefer Python over Java.
      I'm having similar questions, only wondering why people would prefer Ruby over Java. I've had to start learning Ruby for a variety of reasons so I've been reading Ruby tutorials off and on for a week or so.

      I don't think that Ruby is bad, not by a long shot. It's seems fairly decent and it doesn't seem to be lacking anything necessary. I'm just curious as to why someone would pick Ruby over some other language. I'm not quite understanding what the "killer app" of Ruby is. I'm not sure why this language had to be created.

      My understanding is that the main reason for choosing Ruby is to use it with Rails (which I have not looked at yet). And yet it's rare for me to read a good word about Ruby on Rails.

      Does anyone else get the impression that a lot of these newer languages are simply solutions that are looking for problems?
      --
      "Flag on the moon. How did it get there?"
    5. Re:Off the top of my head? by Dan667 · · Score: 3, Insightful

      I have always thought of computer languages as tools in the toolbox. After understanding the problem and coming up with a plan, the computer language I pick tends to be the best tool to do the job and require the least amount of effort to develop it. Need CAD speed? Use ANSI C. Need text processing? Use perl.

    6. Re:Off the top of my head? by Schadrach · · Score: 5, Informative

      Need code that you KNOW has no errors aside from logic errors on the part of the programmer? Use Ada. That's really where Ada fits. You can do very little wrong without the compiler screaming at you and then failing to compile. Like as in, things that cause C "warnings" cause Ada to fail compilation until you fix it. Need to rapidly produce major components, and easily wrap C for the lower level, more performance intensive stuff? Use Python. No, really. That seems to be Python's main niche. It's a great language for writing large blocks of program logic very quickly, is poor at low-level stuff, but can trivially wrap C to do the things it is very poor at.

    7. Re:Off the top of my head? by ShieldW0lf · · Score: 5, Insightful

      The thing that makes a programming language successful is the existence of a large group of programmers who are familiar enough with the language to use it. That's pretty much it.

      If I can start a project in a particular language, get hit by a bus half way through, and finding someone else to sit in my seat and finish the project isn't a problem, then the language is a success. If I don't have that confidence, then the language is nothing but an interesting curiosity for academics.

      Pretty cut and dried.

      --
      -1 Uncomfortable Truth
    8. Re:Off the top of my head? by jcgf · · Score: 3, Insightful

      I hate any language that places significance on whitespace (if they would have just put a complex type into C we could have killed fortran before the 77 version and this Python shit wouldn't be here but alas).

      I also only find Monty Python mildly amusing at best (the jokes are funny but go on for too long and I'm growing tired of all the idiots that quote it all the time).

      Fact - C is the best language of all time. If your program is more than a few lines of bash it should be in C. Ritchie is God (yeah that's right, capital 'G') and Stroustrup should be shot for sacrilege!

      To mod troll or funny; that is the question. The thing is I'm not kidding.

    9. Re:Off the top of my head? by p3d0 · · Score: 3, Informative

      I'm mainly a C hacker, but I don't get why people would prefer Python over Java. Assuming that's an honest question...

      I wouldn't write a large system with Python, but I use it a lot for quick (say up to 1 kLOC) programs because it has a clean, pseudocode-like syntax for expressing algorithms that is terse without being cryptic. It has enough error checking to help me avoid a lot of mistakes, but not so much that it slows down my hacking. It doesn't necessarily have the best regular expression syntax, or the best performance, etc. etc., but it suits me for the scripts I write.
      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    10. Re:Off the top of my head? by Firehed · · Score: 5, Funny

      return reduce(lambda b,c:(lambda x:(lambda r=sys.stdout.write(chr(x)):x)())(c+b), [32,40,29,7,0,3,-67,-12,87,-8,3,-6,-8,-67,-23])

      And this is why God invented comments.
      --
      How are sites slashdotted when nobody reads TFAs?
    11. Re:Off the top of my head? by geekoid · · Score: 3, Insightful

      And the advantage of it being a sloppy maintenance nightmare developed by noobs.

      Where the hell do you get C and bloat together? If anything written in C has bloat, the developer should be promoted away from coding immediatly.

      --
      The Kruger Dunning explains most post on /. http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect
    12. Re:Off the top of my head? by Kupek · · Score: 5, Informative

      You've probably never done any coding in Python. Check out the book Dive Into Python (it's free and online): http://www.diveintopython.org/ Even browsing through it will give you a better idea of what Python is good for.

      Personally, I think of Python as a prettier and more coherent version of Perl.

    13. Re:Off the top of my head? by OrangeTide · · Score: 4, Interesting

      Well I think Java's object model is superior. Perhaps it's only a matter of taste rather than cold hard logic.

      --
      “Common sense is not so common.” — Voltaire
    14. Re:Off the top of my head? by OrangeTide · · Score: 4, Insightful

      People are quite capable doing quick things in Java without pulling in giant bloaty enterprise frameworks. Plus Python is bloat, I think it's like 40M+ installed.
      As for banging out quick projects, I tend to do them in C or shell scripts because I know they will either become real projects or they need to be understood by all.

      Also doing things in a scripting language and having C do the heavy lifting... sounds like Tcl, Lua, JavaScript. Python offers nothing new there.

      --
      “Common sense is not so common.” — Voltaire
    15. Re:Off the top of my head? by goombah99 · · Score: 3, Insightful

      I hate any language that places significance on whitespace I used to feel exactly the same way. Then I got used to it and man is it such a good idea. It not only is easy to scan, but it has the effect of making everyone's code look the same. That is, I can scan your code almost as easily as I can scan mine.

      Yaml does the same thing with whites space and the power of it is really evident when you compare it to JSON or XML. indeed you can put XML and JSON or HTML right into YAML without doing anything other than indenting it. No quoting, escapes, etc. so the other code looks "native" to the reader not encoded.

      So I totally understand your fear of it. But it's just not justified and you are missing out on a big deal in language enforced, clean coding style that pays big dividends.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    16. Re:Off the top of my head? by AnomaliesAndrew · · Score: 5, Insightful

      I tend to agree with you that personal preference is one of the biggest factors in the choice of a language... but it's the strengths and weaknesses inherent in any language (or more so the language's purpose) that also shapes this. I rarely use only one language/model anymore.

      For instance, in my day to day life, I see a clear distinction as to when procedural/object oriented languages such as C, PHP, and Java should be used, and when a relational language like SQL should be used, and I rarely confuse those two classes of programming. Markup languages (though hardly programming languages) like HTML and CSS also have their essential and distinct roles. Were I forced to select only one, I'd probably quit programming!

      Programming languages are just tools to get the job done. When was the last time you saw a carpenter with only a chisel?

      Everybody's so quick to get into pissing matches.

      (Forgive any flawed terminology, I was just speaking casually.)

      --
      Move all sig!
    17. Re:Off the top of my head? by jcgf · · Score: 4, Funny

      I can't tell if you're being serious or if you are trying to mock the way Christians try and convert me all of the time.

    18. Re:Off the top of my head? by gbjbaanb · · Score: 5, Funny

      "this load of crap", sir, is the latest cool new thing. Why else would microsoft spend lots of ther precious development and research resources on adding lambda functions to C#, creating F# and why Haskell is now the de-jour of forums and blogs around the world.

      Why, I believe you are one of those old style programmers who believe in making things simple, easy to read and maintain, straightforward to develop and simple to understand. How will you appear superior to your colleagues and peers if you write code that they can understand? You have no clue, sir, of the need nowadays to preen your feathers by appearing to "grok" something as obtuse and needlessly obscure as this kind of coding style.

      If your code is so simple, and anyone can understand it, then there is no reason why it can't be shipped offshore to Elbonia. So, get with the program and spend at least an hour a day "refactoring" your code to the required level of spaghettiness. Thank you.

    19. Re:Off the top of my head? by naasking · · Score: 5, Interesting

      Killer apps are overrated. Ruby is an expressive language, period. Studies have shown that software developers can only write a few lines of correct code per day. Making those lines count for as much as possible is important from a correctness, and a maintainability perspective.

      Furthermore, application complexity increases non-linearly with lines of code. The fewer the lines of code, the more maintainable and understandable the program.

      This is one reason why C is a poor choice of application language, because it requires verbose solutions, and why OCaml is a better choice.

      So the winning factor of Ruby over Java is its expressiveness. The big downside is the loss of static typing, and the subsequent loss of certain pre-runtime guarantees. If we could have both, we'd have a real killer language.

    20. Re:Off the top of my head? by Yath · · Score: 3, Insightful
      Java is a fraction the complexity of C++. I understand that was one of its main missions - to be as powerful as, but easier to use, than C++.

      Ruby is an order of magnitude lower in complexity compared to C++. Whereas Java continues to mix objects and immediate values (e.g., int and Integer types), Ruby has only objects. Java's mixed model has a cost when programming. You may reply that the immediate int gives you a speed and optimization advantage, and that is true, but it misses the point. Java gave up speed compared to C++ to make things easier on programmers, and Ruby simply continues in that vein. You can't criticize Ruby for continuing what Java accomplished to a much lesser degree.

      There are numerous other examples - Ruby's iterators, for example, are a generation past what Java has to offer. You can find plenty to appreciate in Ruby vs. Java before you even start to talk about advanced language concepts like closures.

      Does anyone else get the impression that a lot of these newer languages are simply solutions that are looking for problems?


      I hear only complacency in the above comment. You've learned a language well, and find it hard to imagine a better way. Well, your lack of imagination does not equal evidence.
      --
      I always mod up spelling trolls.
    21. Re:Off the top of my head? by bob.appleyard · · Score: 3, Funny

      You can't do lambda calculus in Python. I tried, it gave me idiotic syntax errors. Something about the lambda keyword being a crippled piece of shit.

      --
      How dare you be so modest!! You conceited bastard!!
    22. Re:Off the top of my head? by kellyb9 · · Score: 4, Insightful

      Java just isn't appropriate in every situation. No programming language is.
    23. Re:Off the top of my head? by emilper · · Score: 3, Insightful

      lambda (functions) - kinda old, like 50, 60 years, if I remember well

      Haskel suddenly very popular ? - the hordes of VB programmers got woken up to the world of threads

      Elbonia - you're late, now Elbonians ship spaghetti code back to the less muddy countries

      What makes programming languages popular ? - libraries ... now I'll shut up and go back improving my code spaghettizer ...

    24. Re:Off the top of my head? by WaKall · · Score: 5, Funny

      To be fair, chisels aren't Turing-complete.

      When's the last time you saw a contractor with 7 power-drills all made by different manufacturers?

      The answer is somewhere in between - one language isn't enough, but many languages are indeed superfluous.

    25. Re:Off the top of my head? by fyngyrz · · Score: 3, Insightful

      C is perfectly capable of many of the most useful object oriented techniques. Objects with methods and locals, classes (instantiating objects from models), inheritance -- all of these are easily and efficiently implemented in C without library or compiler-generated overhead. All the while, the programmer can remain in complete control, and the application can remain fast and lightweight. You can't do everything; there are some object-oriented paradigms that don't fit, but frankly, they're not critical. The important parts are easily managed.

      --
      I've fallen off your lawn, and I can't get up.
    26. Re:Off the top of my head? by WGR · · Score: 4, Insightful

      Killer apps are overrated. Ruby is an expressive language, period. Studies have shown that software developers can only write a few lines of correct code per day. Making those lines count for as much as possible is important from a correctness, and a maintainability perspective. That implies that you should be programming in APL.

      There is much more to good programming languages than short code.

      This is one reason why C is a poor choice of application language You are under the mistaken impression that C is an application language. It is not. It is a system programing (high level assembler) language. That is why so much buggy code is written in C. It has none of the proper error checking built in to it that an application language should have. This provides the ability to get closer to the machine than other languages, but that is the role os system langages, not application languages.
    27. Re:Off the top of my head? by RAMMS+EIN · · Score: 3, Informative
      ``I don't think that Ruby is bad, not by a long shot. It's seems fairly
      decent and it doesn't seem to be lacking anything necessary. I'm just
      curious as to why someone would pick Ruby over some other language. I'm
      not quite understanding what the "killer app" of Ruby is. I'm not sure
      why this language had to be created.''

      Ruby was inspired by a number of good and useful programming languages, such as Lisp, Smalltalk, Perl, and Python. It combines the good features of those into a single language. The result is a language that is very powerful, has clean syntax, is easy to get started with, and allows a little code to do a lot of work.

      As for a killer app, I don't think there really is one. Ruby is and has always been a general-purpose language. It got its 15 minutes of fame with Rails, but that has since been cloned in other languages. Nowadays, Ruby is just good at many of the same things Perl is good at, and good at many of the same things Python is good at. I personally prefer Ruby, because it is a very well thought out language and, coming from Lisp, it feels natural to me. Still, I don't think Ruby is that much better that people should or will be switching in droves. It's an incremental improvement over already good and useful languages, not a revolution.

      Now, for some specifics.

      From Perl, Ruby takes first-class regular expressions. Many Ruby modules are also ports of Perl modules.

      From Python, Ruby takes clean syntax. There's quite a lot of competition between Ruby and Python, so I imagine there is a lot of "me too" on both sides.

      From Smalltalk, Ruby takes the object system (everything is an object, every object belongs to a class), and blocks (kind of like anonymous functions, but with special syntax). Blocks, especially, are very powerful, as you can use them to (almost, I have to say as a Lisp programmer) implement your own control structures; loops, iterators, etc.

      From Lisp, or maybe from other languages that have these features, Ruby takes garbage collection, anonymous functions, dynamic typing, call/cc, symbols as first-class values, printing of objects in Ruby-readable form, a read-eval-print loop (enter code, have it evaluated and the results printed) and probably a bunch of other features I am too tired to think of right now (but not macros, alas).

      Ruby also has exceptions, the printf family of functions, and a number of other features commonly found in modern programming languages.

      The kicker is that it has all this in a single, coherent language, with a syntax that is easy to understand and learn, and few great pitfalls. Mostly, whether you already know a programming language or not, you can just start coding in Ruby, and it will be easy. There aren't lots of irritating silly parentheses in Ruby, neither is there a difference between scalar and list context. No buffer overflows, no integer overflows, no memory leaks. You don't need to change the way you think, you don't need an IDE. It's easy to get started with, and yet doesn't suffer from problems that languages that are easy to get started with usually have: bad design, limited expressive power, only really being suitable to one domain, etc.

      Finally, some code, just for kicks:

      # Define an array with first names and one with last names
      first_names = [ 'Alice', 'Bob', 'Charlie', 'Deborah', 'Eve' ]
      last_names = [ 'Cooper', 'Jones', 'Smith' ]

      # Define a class Person
      # Each person has a first name and a last name
      # which have to be passed to the constructor
      # and can be accessed using an accessor
      class Person
      def initialize first_name, last_name
      @first_name = first_name
      @last_name = last_name
      end

      attr_accessor :first_name, :last_name
      end

      # Add a pick method to the class Array
      # The pick method returns an element from the array at random
      class Array
      def pick

      --
      Please correct me if I got my facts wrong.
    28. Re:Off the top of my head? by abdulla · · Score: 4, Interesting

      People often go on about the "compiler generated overhead" in C++, which always made me believe that function pointers would be just as fast or faster than virtual functions. So I went along with this belief and passed function pointers around instead of just having a virtual function in a base class - I'm talking about one particular situation here where I had the choice of the 2 and I wanted maximum performance, this isn't something I blindly do all the time, virtual functions are infinitely useful and function pointers are a pain in the ass. However one day I thought I'd benchmark the 2 for the hell of it and challenge my assumptions. Turns out, at least with GCC 4 under Linux, virtual methods are significantly faster, especially when optimisations are turned on. So sometimes it's not compiler generated overhead, but rather compiler enabled optimisation due to better object model integration. If you want objects, use C++ - C with GLib is a horrible, horrible hack.

  4. I don't really get the Java hate around here by JohnnyBGod · · Score: 5, Insightful

    Java's well organized, has a great standard library and is (mostly) consistent with itself. Its only problems, as far as I can see, was that it was initially slow and that it marketed itself as a web language, when there were better choices for that.

    Disclaimer: I've only coded in Java since 1.5.

    1. Re:I don't really get the Java hate around here by CastrTroy · · Score: 4, Insightful

      PHP is badly organized, has a long history of importing third party components for what should be included in the base, and is completely inconsistent with itself in many ways. Hasn't caused any problems in popularity for them. I would say by virtue of PHP and all the other popular languagues, that it should be easy to get started (free compilers and runtimes), that it should run on multiple platforms, and that it should be easy to install. Nothing gets you more popularity than millions of newbies trying your tool and being able to get it working that they continue to use it even when they get good, simply because it is what they are used to.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    2. Re:I don't really get the Java hate around here by Jack9 · · Score: 4, Insightful

      the fact that it can happen at all is unacceptable.

      Same with any interpreted language. PHP, Python, same problem if you are using deprecated accessors. Heck, even the MySQL connector worked differently in PHP3

      Are you really suggesting that every time there's a new version they change the name of the language? What about changing the name of every program you write just because you altered the API? Why would you say it's unacceptable?
      --

      Often wrong but never in doubt.
      I am Jack9.
      Everyone knows me.
    3. Re:I don't really get the Java hate around here by Chabil+Ha' · · Score: 4, Insightful

      ClassCastException and NPE are the easiest to avoid. With adequate unit testing, those are the easiest problems to find.

      While Generics add a lot of protection by making your List strongly typed, using instanceof checks will protect your code when using a List.

      --
      We're all hypocrites. We all have hidden parts, it's the contrast between them that make us more a hypocrite than others
    4. Re:I don't really get the Java hate around here by hesiod · · Score: 3, Insightful

      Dealing with specific libraries that usually only matter while creating the program itself (on the developer side) is completely different than requiring the end user of professional software to install one specific version of the client-side environment.

      And the point of software is the usage, not the creation. So dealing with issues during creation is the developer's problem. It needs to be usable by the client.

    5. Re:I don't really get the Java hate around here by hesiod · · Score: 3, Interesting

      > Why would you say it's unacceptable?

      I am talking about the client here. Having a minimum JRE version is fine, but did the Java developers remove features from the language and not leave and backwards-compatibility hooks in it? That's the only reason I can see why a Java software package would require a version LOWER than "current."

      If you write a new version of a programming language you created, and old programs do not work AT ALL, then you have done something wrong. Adding features, improving efficiency, etc is fine (great). Removing functionality does not make sense.

    6. Re:I don't really get the Java hate around here by Em+Ellel · · Score: 4, Interesting

      So now I'm always wary about using Java applications, since they can easily get tied to a specific JRE and if that JRE has security flaws, you're SOL. Same can be said of ANY language that evolves. I am currently battling an app parts of which require Python 2.3, parts 2.4 and parts 2.5.

      The bottom line is that no language will ever make the programmer smart. If the programmer is dumb enough to use some esoteric/ undocumented/ unsupported part of the JVM (Sun has a number of those, but no, it is NOT easy to get stuck on a specific JVM rev unknowingly) - thats the programmer's fault. If the app is supported (or at least open sourced) fixing this sort of a dependency on a particular version should be quick and easy. If you do not have code and the app is not supported, then you really shouldn't be running it in the first place! Sounds like the app was abandoned long before you realized it.

      -Em

      --
      RelevantElephants: A Somatic WebComic...
    7. Re:I don't really get the Java hate around here by Rary · · Score: 5, Insightful

      ... Which suggests that you haven't coded for very long.

      Actually, it suggests that he hasn't coded Java for very long.

      Regardless, if you're building a web application, you're probably not going to build it in Bash. The right tool for the job, and all that.

      It's silly to say "Language A is better than Language B". What makes more sense is "Language A is better than Language B at task X."

      Java is the right tool for many jobs. It'll die shortly after C dies (in other words, not anytime soon).

      --

      "You cannot simultaneously prevent and prepare for war." -- Albert Einstein

    8. Re:I don't really get the Java hate around here by JustinOpinion · · Score: 5, Insightful

      Agreed,a language being easy to install and start using can give it a huge boost in usage.

      I would also note that community can have a huge effect. Obviously the size of a community will have a strong effect on whether usage of the language remains, grows, or shrinks. After all, you are more likely to learn a language if you hear about it, if it's used in many other projects, etc.

      Additionally, community is important in terms of the amount of support you get. Languages with strong communities will have thousands of online tutorials, excellent forums that provide responsive help, freely available code snippets, plenty of libraries and add-ons, and so on. This kind of 'free support' is often more useful than even careful and exact core documentation.

      As a personal example, I (have to) use a programing environment called "Igor Pro" at work. The language syntax bothers me a bit--but on the other hand it is specialized to do some of the things we need it to. But what I really hate about it is the lack of community. When I Google for an answer to a problem I'm having, I get nothing. When I try to find a pre-made package for a non-core feature, it doesn't exist.

      Compare that to solving the same programming problem in, for example, Python. Even if it's not the optimal language, the fact that I get find tons of help online, and that there are so many community-developed packages and libraries, means that I can often solve the problem much faster.

      When evaluating new languages (and new software products), I always take the time to find out what the community is like. It can make all the difference.

    9. Re:I don't really get the Java hate around here by lkcl · · Score: 5, Interesting

      see http://norvig.com/python-lisp.html section 10

      the author looks like he is inexperienced, and unaware of the function "reduce", which was added initially as a patch to python 1.5 by an experienced lisp programmer (along with map, lambda and filter) and so his example in section 10 could be replaced with:

      from operator import add
      reduce(add, [1,2,3])

      but the point of mentioning this is that java is extremely verbose - and consequently cumbersome.

      there is a class of programming language which python 2.x, lisp, smalltalk and other extreme-OO languages fall in to, which have an incredible elegance of expression and a level of empowerment that is wayyyy beyond anything else.

      it is not possible to count python 3000 in amongst those languages with extraordinary power, because the developers - primarily guido - believe that the functional-language-based primitives (map, lambda, reduce, filter) are "unnecessary".

      i initially thought that this was a joke - it was announced on april 1st.

      unfortunately it turns out to be true. the removal of these key features is profound: the language (python 3000) is dead before it is completed. it's difficult to explain but these functional-language primitives are extraordinarily powerful, providing a kind of "zeroth dimension" of data manipulation.

      on a single line, you can do incredible data manipulation. i regularly do things like this:

      from string import strip
      for l in open("file.csv").readlines():
            l = l.strip() # take off newline especially
            l = l.split(',') # split by comma
            l = map(strip, l) # strip white space
            l = map(int, l) # convert everything to ints

      of course you could fit that all on one line but i deliberately kept it to 4 lines in order to include the comments. you could also equally do this:

          l = l.strip().split(',')
          l = map(lambda x: int(x.strip(), l)

      the flexibility is just... amazing, in python.

      the other thing about python is that it tends to be self-documenting, and also, there appears to be a tendency of coders to actually write _some_ documentation.

      that, and the fact that it is possible to walk the source code (or, more usually, the object-code) and 'read' it from inside a program, such that you can access the documentation strings and in fact the entire program...

      so things like happydoc can auto-generate you HTML documentation, by walking the code itself and collecting all the module, class and function documentation strings - just .... just... incredible!

      i regularly do things like this:

      import os
      print os.path.__doc__

      i don't bother to look up online how the function os.path works, i print its documentation string!

      you just don't get these kinds of things with java.

    10. Re:I don't really get the Java hate around here by Em+Ellel · · Score: 4, Informative

      > is (mostly) consistent with itself

      Are you serious? Where I work, we regularly use at least three Java applications, and each one requires a particular version of Java, none of which are the same. One of them requires Java 1.5, while another one will break completely if Java 1.5 is installed. It's a nightmare! And while yes, the version requirements may be the fault of the developers, the fact that it can happen at all is unacceptable. Erm, you must be running windows and don't have a sysadmin with a clue. You can run as many versions of JDK in parallel as you want and they will not interfere with each other. Its not rocket science, just set a few env variables. Thats actually one of my favorite things about Java - you are never tied to a "system" install of JVM - in fact you don't even need root privileges to install JVM.

      -Em
      --
      RelevantElephants: A Somatic WebComic...
    11. Re:I don't really get the Java hate around here by quanticle · · Score: 3, Insightful

      Dealing with specific libraries that usually only matter while creating the program itself (on the developer side)...

      Now that's nonsense if I've ever heard it. If that were true, Linux distros wouldn't need package managers.

      --
      We all know what to do, but we don't know how to get re-elected once we have done it
    12. Re:I don't really get the Java hate around here by Daniel+Dvorkin · · Score: 3, Insightful

      no.the.main.problem.with.java.is.the.length.of.the.class.path.you.have.to.type.to.do.anything();

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    13. Re:I don't really get the Java hate around here by leighklotz · · Score: 5, Funny

      see http://norvig.com/python-lisp.html section 10

      the author looks like he is inexperienced, and unaware of the function "reduce", ... (along with map ...) Maybe you should send the author a note about map and reduce. As director of Research at Google, he's probably in a position to influence some of their programmers to make use of map and reduce.

    14. Re:I don't really get the Java hate around here by Anonymous Coward · · Score: 4, Insightful

      I'm always surprised by people so vehemently blasting Java with an attached list of alternatives that includes Ruby. I like Ruby a lot, and use it and Java both on a daily basis, and I would say that yes, I prefer Ruby, but every language has its frustrations and Ruby's standard libraries pale in comparison with Java's. They are in places incomplete, inconsistent, and very often poorly documented, whereas Java has arguable *too much* completeness (to the point of bloat), few cases of inconsistency, and stellar documentation. A great language with an average standard library versus an average language with a great standard library? This is a close race, and very much up to individual choice.
       
      I don't have enough experience with the others on your list to vouch for them, but I often see Ruby on these lists and my experience with both doesn't bear it out.

    15. Re:I don't really get the Java hate around here by maxume · · Score: 5, Informative

      Are you talking about the section 10 labeled "Python Pre-2.1 did not have lexical scopes."?

      If so, your criticism is bizarre, the example is written to illustrate that "Python Pre-2.1 did not have lexical scopes.", not to illustrate the shortest way to rewrite the built-in sum function (you realize that right, that the idiomatic implementation of sum in python is the built in function?).

      The reason map and reduce aren't cared about is that most people have an easier time with list comprehensions. Your code:

              l = l.strip().split(',')
              l = map(lambda x: int(x.strip(), l)

      can be written as:

              l = [int(x.strip()) for x in l.strip().split(',')]

      in python 2.4 onwards. Obviously, you could put that on as many lines as you wanted. If you are worried about performance, generator expressions are very similar to list expressions but lazily evaluated:

              g = (int(x.strip()) for x in l)

      g would then create items as they are called for by some consumer (for instance, a for loop or a container object).

      --
      Nerd rage is the funniest rage.
    16. Re:I don't really get the Java hate around here by Otter · · Score: 3, Informative
      it is not possible to count python 3000 in amongst those languages with extraordinary power, because the developers - primarily guido - believe that the functional-language-based primitives (map, lambda, reduce, filter) are "unnecessary".

      1) Those capabilities will still exist in the base language, just with different syntax.

      2) If you want the old syntax, it will be available in a standard library.

      Save your hysteria for something genuinely catastrophic, like the loss of the print statement.

    17. Re:I don't really get the Java hate around here by willyhill · · Score: 4, Insightful
      In more ways than one, PHP and MySQL are the Visual Basic and Access of the open source world.

      They're not very good (or weren't for a long time), they feel cobbled together at best. But they work. They're fast, have a low learning curve, they're accessible and essentially cheap and/or free. They're easy to deploy and shove into production fresh off the prototype phase.

      They have large numbers of people who use them as their primary tools. A large percentage of these people are not exactly what you'd call professional developers (I am not a developer, but I've worked closely with them throughout my career), yet they get "the thing" done somehow, and those systems tend to stay up there driving business for a long time.

      It's just funny that the very phenomenon that for years and years the platform and language purists argued was one of the Really Bad things about Windows is actually now coming to Linux in a big way. What those elitists never realized is that most developers just want to get the business of business done, cash a paycheck and go home to their families. They don't care that there are 19 different ways of escaping a string in the runtime library. No one cares about that, as long as the platform continues to deliver, even if it just sort of limps around.

      All those thousands and thousands of clueless VB/Access/VBA developers don't suddenly become little Donald Knuths because they're looking at a KDE desktop and using Emacs to code curly braces in PHP.

      --
      The twitter monologues. Click on my homepage and be amazed.
    18. Re:I don't really get the Java hate around here by dk.r*nger · · Score: 4, Informative

      Set the JAVA_HOME environment variable to the path of the JRE you want to use. It's commonly done in a .bat file launching the application.

    19. Re:I don't really get the Java hate around here by leomekenkamp · · Score: 3, Informative

      Today, the most successful programming languages are (...), .NET, (...) (does SQL fit in here?) (...) .NET is not a programming language but a platform. SQL is a query language and not a programming lanugage (Turing machine stuff etc). Java does thread-handling quite decently, it is just too difficult to grasp for most programmers.
      --
      Wenn ist das Nunstueck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput.
  5. grmbl. by thhamm · · Score: 4, Funny

    What Makes a Programming Language Successful?

    those who don't know how to use it.

    1. Re:grmbl. by pdq332 · · Score: 3, Interesting

      I'm not sure if that was meant as a joke, but I happen to agree with you for the following reason: a programming language is successful when it opens up the field to low to mid grade programmers. These may be people who are professionals in other areas and are just dabbling with a specific task, incurious people who are just trying to make a living, or newbies. If the programming language has constructs and tools available that support these people, then the cost of producing programs goes down and the language becomes more widely adopted by industry. On the other hand, while quality, fully functional and maintainable programs will still be written by experts, experts can bend any Turing complete language with appropriate I/O libraries to their will. (As well, experts can turn any simple system into an overdefined complicated mess.) The one thing which seems to make no difference to the success of a programming language (but I really really really wish it did) is the ease of deployment, versioning, packaging and runtime configuration. It's time consuming on the order of requirements gathering to successfully plan and execute deployment for anything other than a statically linked executable.

  6. Back to Basic by Z00L00K · · Score: 3, Interesting
    Python et.al. are all languages that we who were there in the 80's remember with a combined horror/amusement when we had to write programs in Basic.

    The lack of type-safe variables, the possibility to write unreadable code, hunt for bugs that are caused because two files are incompatible. Interpreting languages has been tried before, and they are never working for large projects that shall live for a long time and has to be maintained by a lot of different programmers.

    Java may be a bastard of Ada, but at least it has some type checks built in. However, it's a bit weak on the side where the user can't control memory management in a good way. Another weakness is that methods can't be declared to allow/disallow the return of 'null' values to be detected at compile-time.

    --
    If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    1. Re:Back to Basic by SatanicPuppy · · Score: 4, Interesting

      I think you've got Python confused with Perl. Python was first released in 1991, and one of its core tenets is a formatting structure that makes it a lot more difficult to write illegible code. So I'm just going to assume you were talking about Perl, and I'm going to assume that you're not as ill-informed as it appears.

      Perl is what it is: A quick and dirty language for generating practical programs. It's ugly, it's hard to maintain, and it makes a lot of peoples lives a lot easier by making operations that are extremely complicated in other languages quite trivial to code. Comparing it to C is not an apples to apples comparison. Comparing it to BASIC is like comparing a Pineapple to a Raisin.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    2. Re:Back to Basic by D+Ninja · · Score: 5, Funny

      the possibility to write unreadable code Hate to break it to you, but that's a possibility in any language.
    3. Re:Back to Basic by SatanicPuppy · · Score: 4, Interesting

      It is strongly typed, however it doesn't use type declarations, so some people make the mistake of assuming because it doesn't ask, it doesn't care.

      Python assumes you know what the hell you're doing, so it won't throw errors if you create two variables, put an Int in each one, and do an Int operation on them, all without declaring a type...It'll figure out the type by context.

      However, if you try to multiply an Int by a String, it'll throw the same type errors any other strongly type language will. They call it "duck typing."

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    4. Re:Back to Basic by D+Ninja · · Score: 5, Funny

      John put the CD in the cabinet and then sold it.

      Faulty pronoun reference. Which one am I talking about? You'll never know. (And if you pick one, I'll just say it was the other one.)

  7. Easy. by SatanicPuppy · · Score: 4, Insightful

    Power: What can it do?
    Performance: How fast can it do it?
    Ease of Development: How fast can quality code be turned out by regular programmers?

    Most modern languages fail on a couple of these. C is first class in Power and Performance, but it's not Easy. Ruby is okay in Power, and its very Easy, but it's slow. Java is Powerful, but doesn't match C for Performance, and it's not the quickest for development.

    I'm sure many fanboys will disagree with my analysis. They'll say "Regular programmers don't matter (C)" or "It's NOT SLOW (Ruby)" or "Development is too quick! (Java)".

    Really though, that's what it comes down to. The problem is, that there are unfortunate tradeoffs that have to be made. Most languages have a strength, but they all make sacrifices to be strong.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
  8. Aging Engineers by avandesande · · Score: 4, Insightful

    I think many people fail to recognize that the average age of software engineers has gotten higher and that many have realized that most of the pitfalls in software development have little to do with the language chosen. I would rather concentrate on good engineering practices and refining familiar modules I have developed than learn a new language.

    --
    love is just extroverted narcissism
    1. Re:Aging Engineers by sheldon · · Score: 5, Insightful

      My father, just before he retired, got into a big argument with the kids. They had an embedded system, 32K onboard memory, everything was written in straight C.

      The kids wanted to do OOP. My father felt there wasn't enough memory to do this effectively and it was foolish.

      The reality was, that the kids just wanted to pretend they were doing OOP. They still used straight C, they just created structs and organized functions in files as if they were classes. It was actually rather clever and made it easier to maintain.

      It's hard as you get older, I think, you hear about some new idea as the silver bullet and your immediate reaction is negative because you've heard this so many times before. But you have to have an open mind, and watch and see what is happening.

      Otherwise you'll end up as a COBOL developer.

    2. Re:Aging Engineers by ardor · · Score: 4, Informative

      I mean 1,000 lines of C++ and C# compared... I'd expect to see fewer errors in the C# and less severe errors when I find them.

      Depends on your skills. C# is a safer environment, but C++ has immensely more expressive power. With modern and well-coded C++, these 1,000 lines may equal to 10-20,000 lines of C#/Java. Unfortunately, the ugly C++ syntax and its C cruft make unlocking the true advantages of C++ a black art.

      A trivial example is the STL. Java/C# containers don't come even close to the STL's power. Go further and look at Boost.MPL/Fusion/Proto, and you'll see stuff you simply cannot do with Java/C#.

      Well. If it were by me, Lisp would be king. But its not a perfect world :)

      --
      This sig does not contain any SCO code.
    3. Re:Aging Engineers by UnderCoverPenguin · · Score: 3, Interesting

      The reality was, that the kids just wanted to pretend they were doing OOP. They still used straight C, they just created structs and organized functions in files as if they were classes.

      You don't need an object oriented language to do object oriented programming, just the will and discipline to do it.

      FYI, FWIW, the original implementation of C++ was as a preprocessor to C.

      OO languages certainly make it easier to do OOP, however, in my experience, the compiled executable is usually much larger than if you "hand code" OOP in a non-OO langage. Of course, in my experience, even hand coded OOP results in larger executables than non-OOP coding.

      --
      Don't try to out wierd me, three-eyes. I get stranger things than you, free with my breakfast cereal. --Zaphod Beeblebr
  9. From whose point of view? by mr_mischief · · Score: 5, Insightful

    Not to sound too much like Obi Wan, but many of the truths we cling to depend a great deal on our own point of view and all that.

    If I was working for O'Reilly, Manning, APress, Wiley, et al I'd say a successful programming language was one which sold lots of books.

    If I was a hiring manager for a large software company, I'd look closely at what language allowed the most cheap new grads to work together an produce something resembling quality code.

    If I was teaching intro to computer science, I'd worry about what was preparing my students for the rest of their education.

    If I was teaching a certificate-level course to people looking to get into the job market quickly, I'd look for the language with the highest placement rate.

    If I was a person of little clue, I'd go largely by the hype. Some would go with the mainstream hype, and some go with the counter cultural "that's the big hype, but our language is better" underdog hype.

    As a programmer, I prefer the language that helps me turn customer requirements into working programs that fastest with the least fuss on my part, and allows decent maintenance and customization later.

    As the owner of a small boutique programming shop, I want my expressive, powerful language to give me an advantage over others using less expressive languages. I'd like to find others who can use it, but a few is alright as I don't need a huge team to work on programs.

    1. Re:From whose point of view? by Reverend528 · · Score: 4, Funny

      Not to sound too much like Obi Wan
      These are your father's parentheses. Elegant weapons, for a more... civilized age.
    2. Re:From whose point of view? by rabiddeity · · Score: 3, Funny

      Hokey lambda calculus and ancient prefix notation are no match for a good printf at your side, kid.

  10. Quck! by Anonymous Coward · · Score: 4, Insightful

    Every program on your screen and your OS was written in C/C++

    1. Re:Quck! by gardyloo · · Score: 3, Funny

      I use my own OS written in brainfuck, you insensitive clod!

  11. Ruby and Python are ex-parrots, not Java by ajv · · Score: 4, Interesting

    I review code for security flaws for a living. I am a pioneer in this field and have literally written the book on it (the OWASP Guide and the OWASP Top 10 2007). I've been doing secure code reviews for the last 10 years.

    I've reviewed 400-500 applications (it's unclear to the total number, but I usually do a review every other week, some shorter, some longer).

    I've never reviewed a Ruby application or been asked to review code written in that language. I have been asked to review a Haskell application.

    I have reviewed:

    * 85-90% Java, usually with shell and ant scripts and occasionally some Perl. Some *years*, this is the only language I am asked to review.
    * 5-10% .NET. I haven't reviewed a .NET application this year.
    * 5% COBOL. Primarily as a side line - there's a lot of old code to review, but most folks never do.

    I've reviewed three PHP applications professionally, all in the last year, even though this is my preferred language to write stuff.

    Java is overwhelmingly used in large commercial settings for high value applications, with .NET a very distant second.

    I don't get to review that many COBOL or other mainframe apps. I've been doing ground breaking research in this area as there's no advice today. There is a false belief that this code is somehow "safe" as it resides on the mainframe. Nothing could be more wrong.

    Ruby and Python, although interesting langauges, has zero commercial penetration, even for worthless brochureware or community apps.

    What they do have is an extremely loud fan base. These languages will not kill COBOL or Java any time in the next forty years or so as the fan base is fickle and will move on to the next big thing when it comes along.

    --
    Andrew van der Stock
    1. Re:Ruby and Python are ex-parrots, not Java by Jaeph · · Score: 5, Insightful

      You didn't review any C either, yet we all know that the language is out there and being used. Same with perl.

      I think your field of work is too narrow to be completely explanatory.

      Btw, I do agree with your general point - I don't see python or ruby bumping aside java. But your personal experience, extensive as it appears, is not enough to derive that conclusion

      -Jeff

      P.S. I really wish java would go. I hate the upper/lower case thing in all the names.

      --
      Please learn the difference between a dissenting opinion and a troll before you moderate.
    2. Re:Ruby and Python are ex-parrots, not Java by Anonymous Coward · · Score: 5, Insightful


      Do you ever think that maybe your survey has a heavy self-selection bias? I mean it seems to me that the most likely candidates for security reviews would be applications that have been around long enough to have somebody in management say, "Hey, we need to have a third party review this!". This explains how FIVE PERCENT of your applications are COBOL while only "three" are PHP. By your analysis, it's as if C/C++ doesn't even exist...

    3. Re:Ruby and Python are ex-parrots, not Java by ajv · · Score: 3, Insightful

      It's not about the platform, language or the framework that makes an application safe, it's the security engineering that does. If you don't do any, your app WILL be insecure by design and there's no way you can't fix such code.

      However, you have a point to a degree - I am initially more productive reviewing frameworks I am familiar with. But that doesn't mean I would be ineffective at reviewing Python or Ruby. It would take me about half a day to spin up in any language or framework as I found things that are missing. And that's the important thing:

      I hate reviewing apps with zero security engineering. It's exactly like shooting fish in a barrel, but hopeless as you're not going to get a nice fish stew at the end.

      What I look for are meta-issues found in all languages and frameworks. Syntax and functions can be found in online references - if you need them.

      There is nothing special about any language as few protect against the security artifacts we look for.

      For example, if your code has an access control mechanism, I look at it in situ on a live test app, deciding how best I might attack it, and then research using the code how I can obviate it at different levels:

      * Coarse grained - is this feature access controlled at all? This is definitely a problem for J2EE apps that use servlets as folks think presentation level security is adequate. It's not
      * Medium grained - does this feature offer different levels of access based upon your role? If so, how does this mechanism work? What do I do to get around it and steal stuff?
      * Fine grained - does this feature restrict access to secured resources (direct object references)? If so, how does this mechanism work?

      Each of the things we look at are verifying security mechanisms. Knowledge of the language or framework is simply not necessary. If you know what you're doing, you can prove the lack of security engineering by testing the app in situ and then research why it fails. Once I find a weakness, I look at the code to see why the weakness exists. Once I've found the issue, I look further afield for the pattern and then I document the issue. Rarely does an app or framework have just one weakness - they are usually patterns.

      Picking up a new language or grammar and framework, like going from Struts to Spring MVC takes about half a day for someone like me who knows multiple languages, both functional like Haskell, or OO languages like Smalltalk or Ada, or scripting dynamic languages like PHP, Ruby or Python, or declarative languages like C or Java. We do not write the app, we are reviewing the app.

      Security mechanisms are usually fairly clear if they exist. If they do not make themselves immediately obvious, they are usually missing.

      Folks who have the hubris to think their code is somehow safe, like the COBOL folks on the mainframe or your example of not reviewing code if you don't know it well. That's why I turned down the Haskell review as I didn't know it well enough in the time available. If it was a longer review, I would have taken it as I love to learn new languages.

      However, fyi, if you paid me to be a developer, I could be immediately productive in the following languages:

      J2EE - Since Java was first released. Major frameworks include Struts, type 1 JSP with JSTL, Spring MVC, Struts 2.0, and JSF
      PHP - Since PHP 3 .NET (C# and VB.NET) since .NET 1.0

      Could code if absolutely required:

      COBOL - 12 months review only experience
      RPG - 12 months review only experience
      Perl - 15 years experience
      Shell scripts - 15 years experience
      Ruby with RoR - tested it out for a new version of my forum (UltimaBB/XMB) but it was too slow
      C - since 1985. Co-wrote the Matrox millennium driver for XFree86 back in the day
      C++ - since CFront was a bastard child
      Ada - since 1990. Still have fond memories
      Pascal - since 1985, haven't used it for a while

      Languages that I don't suck at but wouldn't claim any particular skills:

      --
      Andrew van der Stock
    4. Re:Ruby and Python are ex-parrots, not Java by 140Mandak262Jamuna · · Score: 3, Funny

      Andrew San, You have a /. id 5K. It is beneath you to take the bait from AC trolls. Still, thank you for taking time to explain your stand.

      --
      sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  12. The "scripting" vs "compiled" canard again??? by tyler.willard · · Score: 3, Interesting

    Jesu effing Christo.

    One thing ain't got nothing to do with the other.

    I can't decide which is worse, this particular bit of idiocy or the all-to-common: "dynamic vs strong typing" arguments.

    Actually, maybe I'm being to hasty.

    The conflation of runtime implementation details with language capabilites, or the above-mentioned typing confusion, does provide a quick and easy way to tell that someone doesn't know what the hell they're talking about.

  13. Perhaps a better measurement than /. popularity by klubar · · Score: 5, Interesting

    Don't count out the "dead" languages... IBM estimates that more than 30 billion transactions occur within Cobol programs every day. By contrast, Google averages about 150 million searches each day, or about .5% of Cobol's daily workload.

    Rather than a "gee I need a cool website for my mom" choice, perhaps the number of transactions or dollar value would be a better count.

    Cobol would probably win, followed by java and the Microsoft languages (C++, C#).

    1. Re:Perhaps a better measurement than /. popularity by ardor · · Score: 4, Informative

      Repeat after me:

      C++ is NOT a "Microsoft language".

      --
      This sig does not contain any SCO code.
  14. Java's not going to die by vivin · · Score: 5, Insightful

    I just started at a new job at the beginning of this year after quitting from my last job where I barely got to do any programming. The place where I work now is a Java shop. I was getting back to Java programming after a hiatus of a few years. For the last few years I mostly doing Perl with a smattering of C (PHP and Javascript on occasion). My experience with Java was mainly from college and a few odd projects I did here and there. The language had changed quite a bit over the last few years and to be honest, I surprised myself by being happy to get back to it (I had some sort of vague dislike for it for a period of time).

    The company sponsored a trip to JavaOne at San Francisco earlier this month, for the Dev Team. I also got to go. This was my first time at JavaOne. It was amazing, exciting, and I learnt a LOT of new stuff. The main thing I got from there was that Java, far from being a programming language, is also a platform. There are a lot of new things being built on TOP of Java. For example, Groovy, and JavaFX. Java now has excellent support and frameworks to roll your OWN domain-specific languages.

    Python and Ruby are not going to push Java out of the way. For example, you have mergers of Java with these languages (Jython and JRuby). Essentially you have Python and Ruby using Java resources and libraries. I think instead of "dying", Java is just going to evolve into a stable platform that lets you build stuff on top of it.

    --
    Vivin Suresh Paliath
    http://vivin.net

    I like
  15. Expert@work ... by foobsr · · Score: 3, Funny

    TFA: "Some languages made strange mistakes. For example Python is a great language but the idea of using indentation as block demarcation really is a cannon ball chained to its feet. While most of the pythonistas defend this idea with a lot of energy, the truth is this feature makes it really a dangerous tool in big, world wide distributed projects - and most important enterprise projects are big and distributed."

    Elsewhere: "Python Creator Guido van Rossum now working at Google"

    Well. Now I finally know how Google is dangerous.

    CC.

    --
    TaijiQuan (Huang, 5 loosenings)
  16. What makes a programming language successful? by pokeyburro · · Score: 3, Insightful

    What makes a programming language successful?

    Same thing that makes a religion successful. Adherents.

    --
    Lately democracy seems to be based on the skybox, the Happy Meal box, the X-box, and the idiot box.
  17. Comment removed by account_deleted · · Score: 5, Insightful

    Comment removed based on user account deletion

  18. Its partly the API... by itsdapead · · Score: 3, Interesting

    Obviously there's more than one factor to a language's success, but the breadth and quality of the libraries and application frameworks is a huge factor - if you "know a bit" about programming then I'd say that learning your way around a new API is just as much work as learning a new language.

    A big plus for C was that it always came with a substantial standard ("de-facto" to start with, then ISO) library based on the Unix API so it was great for writing portable programs - c.f. Pascal where ISTR the core language couldn't even open a named file. C++ was largely popularized by application frameworks like MFC and OWL, and Delphi did the same for Pascal.

    PHP is pretty fugly as a language but comes with a huge library of functions and add-ons that are just what the doctor ordered for web scripting - and when people talk about Ruby, do they really mean Ruby or do they mean Rails?

    I don't know about Python - it seems to be a secret society rather than a language and you can't join unless you pass this initiation test where someone tells you a corny joke (stolen from an ancient email circular about Unix and Makefiles) about a language which uses leading whitespace to delineate blocks. I always laugh and fail the test, so I've no idea what the real language is like. :-)

    --
    In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
  19. Irony by w3woody · · Score: 4, Interesting

    Ironically the biggest problem I've had with Java is that, because it is relatively easy for developers to write code using an IDE such as Eclipse or NetBeans in the core language itself, but there are tons of various classes even within the core JRE, many programmers I know who write Java have created a sort of "ecosystem" of artificial complexity.

    For example, I worked on one project which was a client/server system which handled maybe 10 transactions per second, with each transaction translating into maybe one or two table updates. The application could have been put together using something simple, like Tomcat and MySQL on the back-end, and something easy to use like an XML/RPC link to the client side. (There were only something like 10 remote procedure calls being made, and this was an internal application, which means the total audience was perhaps 100 people.)

    But rather than keep the whole thing simple, we had a whole bunch of "Architecture Astronaut" wannabes who started tossing in third party frameworks like there was no yesterday, without carefully thinking if the framework was needed, and if so, how best to integrate the framework. Before we knew it, the server was broken into 8 separate EJBs, Hibernate and Spring were called in to handle the server side coding framework, and the entire build process was so complicated it no longer could be run or debugged within an IDE--apparently someone on the project didn't understand ant and used makefiles for part of the build. And to top it off, because so many different frameworks were thrown in for no good reason I can determine (there were something like 40 third-party jar files in the build directory), there were all sorts of runtime problems as each jar file was not designed or tested on the full range of Java 1.4 - 6.0 environments.

    Now if this was my first exposure to Java, I'd say that while the core language itself wasn't bad, the entire Java ecosystem sucked hard core. But no; it was the developers: rather than keep it simple, they used the 'refactor' button in NetBeans about 100 times too many, until what should have been a one person-three month job turned into half a million lines of crap, that, to their credit, limped along okay.

  20. Grace Hopper & John Backus didnt have by peter303 · · Score: 3, Informative

    John McCarthy did. They were inventors of COBOL, FORTRAN and LISP - three languages still in use from the 1950s.

  21. Knuth said that the most important thing is... by dapyx · · Score: 5, Funny
    ...the name!

    The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language.
    --Donald Knuth
    --
    I'm sorry, the number you have dialed is an imaginary number. Please rotate your phone 90 degrees and dial again.
  22. Re:Yes, sure, it is the evil gang... by hjf · · Score: 4, Insightful

    yeah, you know, 'cause when you have 50 programmers on a project, C l33tnesses like

    while (x-->0) { blah; }

    are so cool and easy to understand. and malloc()s make memory management so easy and cross-platform. and clustering is for wussies, if you need more than a core2duo on Linux, is because you're unl33t or because you need to do some routines in über-ELITE assembler.

    now when you program in Java you forget all that crap, you just code. need a bigger app? J2EE it and run it on a cluster. add nodes a needed to keep performance. node dies? no problem, J2EE takes care of it.

    migrated from mysql to Oracle or DB2? no problem, just let Hibernate know about it.

    tired of Windows Server and want to run opensolaris, linux or OS X Server? no problem, just drop your EAR/WAR on the new server and relax. it's working.

    wanna add more coders to your project? point 'em to the javadoc and let they read through the verbose (and thus self-explaining) code.

    strong typing is there to keep you from doing stupid things. you can always tell what the program IS going to do in all situations, because you HAVE to specify all situations.

    but you're too cool for java. lemme know when banks switch their systems to LAMP and we'll talk.

  23. FFS by Pedrito · · Score: 3, Insightful

    Java isn't going to die any more than C. Nor will Python or Ruby die any time in the foreseeable future.

    Anyone can play Devil's Advocate and make one language look better than another from some point of view, but the fact is, different languages have their different pluses and minuses. I'm sure Ruby and Python have their pluses, but I don't see them being used NEARLY as much as Java. And take into consideration that Ruby has been around just as long as Java and Python has 4 years on both languages. If they were going to kick Java's ass, it would have happened by now.

    I suspect the article is wishful thinking (though I can't read it 'cause the site didn't survive this post). I don't know why people have to make such a big deal about this stuff anyway. Languages evolve and new languages and paradigms will be created in the future. Computer programming is still in its infancy. There's a good possibility that 20-30 years down the road, none of these languages will be around. They may be completely replaced by some far more powerful paradigm we can't even imagine yet.

    These kinds of predictions are old and pointless.

  24. Java Cannot be 100% Replaced by wigginz · · Score: 3, Insightful

    What's wrong with Java? Sure I can't slap together a web 2.0 site in 1 day like I could with .net 3.0 or Ruby, but they can't enable a high availability transactional based middle ware system. Java has so many great uses beyond simple web apps, it will always have a place in the enterprise and mobile devices.

    --
    You may find my appearance and demeanor foolish, but it is you who plays the fool.
  25. Re:Languages and technology stacks by Chemisor · · Score: 3, Insightful

    > And repeat smart things like not treating arrays as first-class entities?
    > Honestly, C is full of design errors.

    Come back when you know how the computer works, grasshopper. C doesn't treat arrays as "objects" because the computer doesn't do that. If you want higher level abstractions, use C++, where you have the nice vector class that does what you want.

  26. Another related case by richg74 · · Score: 4, Interesting
    One of the author's suggestions in TFA is that functional languages have a hard time succeeding because of their concise, "math-y" syntax. Speaking as someone who has been in software development since the System/360 days, and also a sometime math teacher, I think he's absolutely right. Expressing things in mathematical terms is powerful, elegant, and concise; what is isn't is intuitive, at least for the majority of people.

    Consider a much earlier example of a math-like language: APL. It allowed concise programs and elegant expression (especially of mathematical ideas, like matrices); it ran in the then-mainstream environment (IBM mainframes); and, it was sponsored by the industry's 800-pound gorilla. And it was the best language for creating write-only programs that I have ever encountered -- think Perl with an extra helping of math and a non-standard character set thrown in. The worst programming assignment I ever had (although I did complete it successfully) was debugging and fixing a financial modeling package written in APL. My take on it was that the programmers who had written it originally fell mainly into two categories:

    • Those who were confused by the syntax and concepts
    • Those who used the syntax in a contest to see who could be "cutest"
    Neither is really what you want going on in an important enterprise-level project.
  27. Smalltak is a huge success and also a failure by Grapedrink · · Score: 5, Interesting

    It's hard not to turn this discussion into a war and I do believe that even from a qualitative perspective, this discussion is entirely subjective. Let me preface my comments by saying I work primarily in C#, Java, Ruby, and Python in my job, and previously was a C, C++, Fortran, and Assembly programmer. I know about a dozen more languages as well, so I feel I've at least had exposure to many languages to guage success from a developer's point of view. Generally, I think being good at a certain job/task makes a language successful. There is a corollary that one should pick the best tool for the job, not because it's the "best" language. C++ is successful because it was very fast at the time, had a lot of features people wanted, and was relatively easy to learn. Would I do a web page in C++ these days? Probably not.

    If I had to pick a language to discuss and deem successful, it would be either Smalltalk or Lisp. Some people find either of those esoteric or "weird," but I rather enjoy writing code in both. Interestingly enough, in many respects neither language is particular successful in a commercial sense, but very much so for most implementations.

    I'll stick to Smalltalk because it's a good example for this discussion. It's a case where popularity in my mind is not equal to success. Smalltalk works because it is simple (there are really only 6 keywords or so and not even really keywords at that) and is designed impeccably. If success is related to imitation and admiration, then Smalltalk is up there. Of course in itself, the language is derivative, but it's well-known enough to claim/steal credit for one of the best implementations of existing ideas. I have to laugh at other languages, especially Ruby, Python, C#, and Java as they are adding language features or libraries that emulate things that have existed in Smalltalk for 20+ years. That's rather laughable, but also an indicator of success.

    As the Smalltalk saying goes, "Files? How quaint." The language just proves you can design something successful by simplifying and focusing on enabling people to design and use their brains. I feel like I can focus on code rather than language constraints. Smalltalk coding is like teaching them to farm rather than giving them food. There are obvious merits to both approaches. The fact that the language is still around 20+ years later and gaining momentum speaks volumes.

    I think what makes it unsuccessful is that a lot of people have no idea it exists in the first place and how it really works. They might look at it and say, "yeah that looks something like Ruby, so what's the point." Usually I find it's lack of understanding of not only Smalltalk, but the fact that the development environment in many ways is the language. Most Smalltalk implementations simply don't have the problems in file-based languages like disorganized code, "too many classes," etc. So many of the plights in other languages don't happen in Smalltalk because of the design and that to me is success, regardless of the number of commercial installations.

    Another issues that has halted the language's success in commercial spaces has been ugly UI. Until recently, most implementations have looked awful. Squeak used to look like a child's toy without customizations (still does to some degree, but there's 100s of customized images floating around the internet now). Visual Works looks like an ugly ms-app sometimes, but is a huge leap over the past. Gemstone Smalltalk has no real UI (but can use Squeak). The list goes on, but the point is that even in dev environments, eye candy has a big influence.

    It gets even weirder when you look at Smalltalk and languages from the perspective of supporting products. Databases are probably the biggest, and Smalltalk can work with just about everything, but the simple support for the RDBMS is pitiful compared to most popular languages. Especially in recent years, a lot of that has to do with the Smalltalk view. In the Smalltalk world, it seems stupid not to use an object database at this poin

  28. There is Only 1 Rule: My Time is Important by SparafucileMan · · Score: 4, Insightful

    I'll take any language that can let me write, read, and understand as fast as the speed of computers is progressing, i.e., exponentially.

    I don't give a crap if language xxxxxxx is more efficient, more hardcore, etc. You know why?

    Because I don't want to spend a year writing an application in C for efficiency and find out at the end that for a mere $1,000 I could have written the same thing in Python in a month and just bought a faster computer 11 months later.

    YOUR time is linear, while the computer's is exponential. You'd be a fool to not take advantage of that and, frankly, type safety, efficiency, platform independence, programming style, power, etc. etc. can all go to hell. Just give me a beautiful language.

  29. LOL perl by Anonymous Coward · · Score: 5, Funny

    I was on an old dial up bbs once having a fierce argument and was deep into a paragraph lambasting my foe, when a nearby thunderstorm injected about 4 lines of pure static garbage characters into my text, and the techy walked by, glanced at my screen and said "taking up perl?"

  30. Re:All Programming Languages Suck by SQLGuru · · Score: 4, Funny

    So, basically, what you're saying here is: GET ON MY LAWN! or something like that?

  31. a GOTO statement by circletimessquare · · Score: 4, Funny

    hands down, if your programming language doesn't have a GOTO statement, it is a miserable failure

    --
    intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
  32. COBOL a success? Why is this even a question? by sirwired · · Score: 4, Insightful

    I am completely confused as to how the author can even ask the question "Is COBOL a success?"

    Is COBOL old? Certainly.
    Is COBOL outdated? Yes.
    Has COBOL since been replaced by better languages? Yep.
    Would you be insane to start a new, large, application from scratch using COBOL? Of course.

    But "Is COBOL a success?" Without doubt, yes. Countless millions (perhaps) billions of lines of production COBOL code are still in use. It is still the core behind many of the applications that run our day-to-day lives. These applications have been running for decades with downtime records that would put an average "Web 2.0" app to shame.

    Certainly, IBM deserves a lot of credit for this, maintaining pure 100% backward compatibility for those apps for the last forty years or so, but some credit is due to the language itself.

    SirWired

  33. Sorry, but by AnotherUsername · · Score: 3, Funny

    Fact - C is the best language of all time. 10 Print "BASIC is the Best Language of All Time"
    20 GOTO 10

    As you can clearly see,
    BASIC is the Best Language of All Time
    BASIC is the Best Language of All Time
    BASIC is the Best Language of All Time
    BASIC is the Best Language of All Time
    BASIC is the Best Language of All Time
    BASIC is the Best Language of All Time
    --
    I don't like Linux. This doesn't make me a troll.
  34. Re:readability by Just+Some+Guy · · Score: 3, Informative

    BASIC and PASCAL etc. are of the "functional programming" ilke

    BASIC and Pascal are procedural.

    as is SQL

    SQL is declarative.

    LISP, SCHEME and SMALLTALK were all developed when space was at a premium. so, you kept the source file small by using as obtuse-as-possible a syntax.

    That's not why they're that way at all.

    Python's a great language, but that's no reason to get sloppy about the details.

    --
    Dewey, what part of this looks like authorities should be involved?
  35. Re:All Programming Languages Suck by cjonslashdot · · Score: 3, Interesting

    I agree. Procedural programming is the fundamental problem. Arguing about which procedural language will succeed is like Neanderthals arguing which kind of stone will succeed the one before it. And OO languages are procedural languages in disguise. As Anonymous Coward says, we need to get out of the procedural trap. This is why programs have so many bugs. Let's stop hacking and looking for the next great tool, the next fad, and what our friends are using. Let's look at what approach is truly best.

  36. bloat vs big by MtHuurne · · Score: 4, Insightful

    Not every big library is bloated. It's only bloat if it has a poor size to functionality ratio.

    For example libc is small, but it does not include XML parsing, HTTP support, SHA1 and MD5 sums, the ability to read compressed files etc. Sure there are libraries for that, but you have to pick and add them yourself. So libc is small not because it is amazingly efficient, but because it is limited in scope.

    Personally, I like big standard libraries like Java and Python have. You pay for it in the initial install, but once that is in place, your application has access to a huge amount of functionality without having to add a lot of external dependencies.