Slashdot Mirror


Why We Need More Programming Languages

snydeq writes "Fatal Exception's Neil McAllister writes in favor of new programming languages, given the difficulty of upgrading existing, popular languages. 'Whenever a new programming language is announced, a certain segment of the developer population always rolls its eyes and groans that we have quite enough to choose from already,' McAllister writes. 'But once a language reaches a certain tipping point of popularity, overhauling it to include support for new features, paradigms, and patterns is easier said than done.' PHP 6, Perl 6, Python 3, ECMAScript 4 — 'the lesson from all of these examples is clear: Programming languages move slowly, and the more popular a language is, the slower it moves. It is far, far easier to create a new language from whole cloth than it is to convince the existing user base of a popular language to accept radical changes.'"

421 comments

  1. Pffft. by epiphani · · Score: 5, Funny

    Only language we ever needed was C. You putzes just aren't using it right.
     
    /flamebait friday!

    --
    .
    1. Re:Pffft. by 2.7182 · · Score: 4, Funny

      I'll chime in with the correct answer. If we all programmed in Haskell or OCaml the world would be a better place. Lisp even.

      But I won't go on with a full rant. Functional programming is silently winning the war.

    2. Re:Pffft. by phil_aychio · · Score: 2, Interesting

      Programming peaked with COBOL and has been in a downward spiral since. (obligatory "hey you kids get off my lawn" geezer-speak) Hey you kids get off my lawn!

      --
      obvious redundancy is obvious
    3. Re:Pffft. by Anonymous Coward · · Score: 3, Funny

      You forgot the "++" after the "C".

      That is an important distinction, since C++ is the perfect programming language for all tasks, always has, and always will be.

    4. Re:Pffft. by Anonymous Coward · · Score: 0

      python makes the same and is far simpler to show people to convert them to programming #hatersgonnahate
      no, but really, C is a good, but old language. And if you consider PHP as a language ( which is what i do), then you need it at least for web usage. you'll tell me we could make downloadable executables, but, look, is anyone really gonna download a whole executable to post on a forum? Also, what about smartphones and tablets? Do you think programming could have been getting that mainstream with only the cluttered C to program in? I do not believe so.
      Thanks for reading.

    5. Re:Pffft. by wed128 · · Score: 4, Insightful

      GP has got it right. Parent is demonstrably wrong.

      For object oriented tasks, Java, C# or Smalltalk are better. For system-level native tasks, C is better.

      C++ reminds me of the wretched alien-human hybrid that got the Flamethrower in the Alien movie.

    6. Re:Pffft. by Xanny · · Score: 5, Interesting

      There are a few problems with functional programming languages that have prevented their true adoption anywhere.

      1. Limited paradigms - I always prefer languages that let me write my code the way I want, a la C++, than a language that requires a strict paradigm from academia like Lisp. If I want to use the inherent hardware property based side effects of certain code structures, let me. Programming languages =/= mothers.

      2. Difficulty. 90% of programmers (not on the internet, in general) write code like Fortran when its 2010. The most popular languages now, C# and Java, are popular because they are extremely easy to understand, if not easy to get things done in. You dont need to know lambda calculus or templates or prototyping to understand 99% of C# / java code (yes, I know C# has all of those and java has 2/3 of those). The problem with functional languages is that they always use these paradigms.

      3. Most functional languages except Ocaml are like Ruby and Python in that they have tremendous performance overhead. For a consumer application, that overhead usually doesnt impede adoption (its more like the software is poorly written than the applications environment is too inefficient). But when talking about server programming the costs of running something under Ruby vs C are astronomical, and the same problem arises with functional programming. It might not hurt the consumer that the Python implementation of their music player consuming 30% more clock cycles than the exact same program written in C, but it does cause huge scaling issues with popular resources like Twitter.

      4. In extension of 3, functional programming is getting away from how the hardware actually works. It is good for a novice that doesnt want to get into the details of pointers and caching and disk IO, but professionals should enter the game knowing how the underlying system runs and that making tradeoffs for readability by someone who doesnt know the language anyway vs performance benefits falls to the wayside. Developer time is important, but when you factor in the massive overhead trying to get 20+ year professional developers in C to try to think functionally you are never justifying the upfront cost of using the languages.

      I mean, I dont use them. Thats personal preference. I like the way C and OO work more than I like dynamic typing and having no data and all the other out of this world paradigms. I really hope that D can achieve what I hope it will evolve into, a language that is hopefully as easy to understand as Python without the boilerplate of Java but with the performance of C. Thats kind of where the end goal of programming languages needs to be.

    7. Re:Pffft. by wed128 · · Score: 5, Insightful

      C is like Oil Paints. Python is like water-soluble markers.

      You can make artwork with both. you can also make a complete mess with both. This argument is silly.

    8. Re:Pffft. by elrous0 · · Score: 0

      Programming, you're doing it all wrong!

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
    9. Re:Pffft. by Anonymous Coward · · Score: 0

      Only language we ever needed was C. You putzes just aren't using it right. /flamebait friday!

      How would you fire all your skilled workers and hire unskilled workers in country X, if all your code is in C? That actually requires thinking!

    10. Re:Pffft. by NonUniqueNickname · · Score: 1

      Ohhhhhh, flamebait Friday!
      So that's why /. publishes Neil McAllister stories on Fridays.
      Another mystery solved.
      Thank you, sir.

    11. Re:Pffft. by Anonymous Coward · · Score: 1

      Common Lisp is not functional, Scheme is. Common Lisp supports mainly metaprogramming, imperative and OO programming(you could use functional but you'd be restricting what you can do).

    12. Re:Pffft. by ericloewe · · Score: 1

      If C++ is so bad, why is it so popular? Not trolling, by the way.

    13. Re:Pffft. by Ukab+the+Great · · Score: 2

      Only language we ever needed was assembly. You putzes just aren't using it right.

    14. Re:Pffft. by Ukab+the+Great · · Score: 3, Funny

      Only language we ever needed was punchcards. You putzes just aren't using it right.

    15. Re:Pffft. by Ukab+the+Great · · Score: 2

      Only language we ever needed was vacuum tubes. You putzes just aren't using it right.

    16. Re:Pffft. by david.emery · · Score: 3, Funny

      Programming peaked with COBOL and has been in a downward spiral since.

      Exactly! See http://developers.slashdot.org/story/11/12/09/1533252/java-apps-have-the-most-flaws-cobol-the-least

      One of the problems with this business is the continuing preference for the "new and shiny" at the expense of proven quality. COBOL is -very good- at a significant class of problems, and there are a lot of geezers who are very good at it.

      One of the problems with new languages is that everyone starts out stupid. Think about C. How much experience do you need, beyond an understanding of K&R syntax, to be an effective C programmer?

      @begin(flamebait)
      Frankly, I think the base topic here, the argument for new languages over improvements to existing languages, is to make everyone equally -incompetent-. Many studies show the "10x difference" between good programmers and bad programmers. Some (significant) part of that difference comes with expertise with tools including programming languages.
      @end(flamebait)

      p.s. if you recognize above as Scribe mark-up, good for you! Do you really think Microsoft Word is an improvement over Scribe?

    17. Re:Pffft. by Guy+Harris · · Score: 1

      GP has got it right. Parent is demonstrably wrong.

      Parent was most likely trolling ("always has", for a language that started being developed in 1979 or so?), and you appear to have bitten the hook.

    18. Re:Pffft. by jd · · Score: 3, Interesting

      I'd argue that we need multiple computer languages and paradigms, but that we probably don't need as many as we have. I'm fluent in about 20 computer languages but that simply should not be necessary.

      I'd be quite happy if the world reduced itself to Digital Mars' D, Occam-Pi, Erlang and Haskell. That would give us the necessary mix of procedural, functional and object-oriented languages to cover everything, and these languages are much better at developing correct software than many of the other languages out there. There are many languages which are "good" at something - Fortran is still the language of choice for mathematicians, Forth is brilliant for hardware control and C is good for developing fast general-purpose software - but these are problematic in that they make it very easy to write buggy, unreliable software.

      If you want to narrow the range, then the languages chosen MUST be capable of producing code as powerful and fast as the "best of breed" without having the genetic defects which are the product of the inbreeding that have produced these languages. Haskell and OCaml are great at what they do, and compilers for them could certainly be improved upon to generate much better code, and could easily replace those languages which show definite deformities (Java, Visual Basic, C#, etc) but those alone won't replace the full range.

      Occam-Pi and Erlang are more than capable of replacing C and Fortran for most purposes, including client/server and HPC, but aren't ideal for really low-level stuff and don't have the power of C++ to simplify horribly complex projects. D does, but you can't simply use D because there's a lot in Occam and Erlang for parallel programming that C-based languages just don't have. (Prior "debates"/wars on here over parallel programming and whether or not it's complicated ultimately boil down to the fact that most people insist on using languages that make it far harder than necessary to get results. Always, always, always use methodologies that are suitable for the problem-space rather than try to cram the problem-space to a specific methodology.)

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    19. Re:Pffft. by 2.7182 · · Score: 3, Insightful

      Do you think OO programming is closer to how the hardware works?

    20. Re:Pffft. by Anonymous Coward · · Score: 0

      I can't agree more!

    21. Re:Pffft. by Anonymous Coward · · Score: 2, Funny

      Since someone here called me so old and out of touch that I'm probably still programming an Analytical Engine...

      The only language we ever needed was a gear cutting lathe. You putzes just aren't using it right.

    22. Re:Pffft. by tqk · · Score: 4, Interesting

      no, but really, C is a good, but old language.

      Cobol's even older. And Fortran's long been known to perform math calculations better than most other languages (though that may not still be true). Yada yada.

      What I wonder about is, whatever happened to Black Box programming? Why do we need to care what language is used, as long as we understand its interface? Systems programming in C regularly calls assembly for the grottier hardware specific bits. Pretty much any modern language can call a function's object code written in another language.

      Yeah, let's just keep on reinventing wheels. That's always worked so far.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    23. Re:Pffft. by Anonymous Coward · · Score: 0

      Object-oriented programming is popular, so languages that implement it are popular. If you prefer C, there's a good chance you don't like OO. I fall into that category somewhat. I think there's a small set of problems for which OO is the killer approach. In particular, anything that fits into a taxonomy is obviously a candidate for OO. The trouble is when people try to shoehorn everything into a class hierarchy.

      OK, base class customer. Then you have customers from Iowa and New Hampshire. New class or member variable called state? You think you know the answer when you first code it, but you often don't. Re-factor. What really gets me though is when you want to sort a customer or transact with a customer. Then something that's not a customer comes along and it wants to sort or transact. You either have to MI, creating the bastard class from hell, or instantiate a customer just to get a sort or a transact. So then sooner or later OO is a mass of code where you have to send OldCustomerObject to Iowa, and he later gets recreated as NewCustomerFromIowa object but the only reason you instantiated him is so you could get access to the sort functionality for your PartnerFromOhio.

    24. Re:Pffft. by Timbo · · Score: 1

      In the domain in which it's dominant, the only viable alternative (IMHO) is D and that hasn't achieved critical mass.

    25. Re:Pffft. by Anonymous Coward · · Score: 0

      Do you think OO has anything do with with anything other than saving developer time? Do you really think functional programming is relevant to transistor networks?

      Clue: compilers are there to do the work of converting code into machine instructions, regardless of the underlying architecture.

    26. Re:Pffft. by pclminion · · Score: 5, Insightful

      For system-level native tasks, C is better.

      Just because you're using C++ doesn't mean you need to write some glorious object-oriented dynamically-dispatched exception-throwing operator-overloading dynamically-dispatching self-reflecting monstrosity. C++ provides several very fundamental features which make it hugely superior to C: inline functions, better const semantics, reference types, and templates. If you don't want to write enterprisey crap, don't. But don't chuck out the baby with the bath water.

    27. Re:Pffft. by Anonymous Coward · · Score: 0

      My computer has objects (registers) and you do stuff with them.

    28. Re:Pffft. by Grishnakh · · Score: 2

      4. In extension of 3, functional programming is getting away from how the hardware actually works. It is good for a novice that doesnt want to get into the details of pointers and caching and disk IO, but professionals should enter the game knowing how the underlying system runs and that making tradeoffs for readability by someone who doesnt know the language anyway vs performance benefits falls to the wayside.

      There's a couple of problems with this. 1) In theory, high-level programming shouldn't factor the hardware into things at all. That's fine if you're writing OS device drivers or whatever, but for a high-level user application you really shouldn't be worrying about how the hardware works internally. The programming language is supposed to be a way of telling the computer in a completely logical way, that can't be misinterpreted (like natural languages), exactly what you want it to do, to get certain output out of it. How to translate that into commands the hardware understands is supposed to be the job of the compiler, and the people that write the compiler. Instead of expecting every high-level programmer to understand various details about the hardware, let the compiler people be the experts in that domain, and translate the desires of the app developer into the most efficient machine commands. Furthermore, with modern hardware as fast as it is, a 5% improvement in performance shouldn't be something you sacrifice easy code-ability and easy maintainability for.

      2) Hardware changes, and software is run on different hardware all the time. Writing something to run well on one kind of hardware or system may not work so well on another kind of system. Just look at what happened with the multi-core mini-revolution. All these applications written for single-core processors didn't run any better than on older systems because they weren't written for that hardware, and only ran on a single core. If they were written in a language that fully isolated the programmer from the details of the hardware, then a simple recompile should allow them to take advantage of multiple processing cores, as the compiler would handle those details by creating separate threads for different parts of the program, rather than expecting the high-level programmer to do this himself.

      Of course, this is all in theory. I haven't actually used any functional languages myself, so I can't really speak to how well real-world functional languages would fit the theory described above.

    29. Re:Pffft. by gbooch · · Score: 3, Interesting

      I had the pleasure of conducting an oral history with the late John Backus. He reported that functional programming was a failure for the general case, for it was easy to do hard things but hard to do easy things.

      I don't know what war you think functional programming is winning, but it only shows up on the minor sideline of the wars i'm engaged in.

    30. Re:Pffft. by ksd1337 · · Score: 2

      Chuck Norris just glares at the screen, and the computer does exactly what he wants.

    31. Re:Pffft. by CaseCrash · · Score: 1

      Programming languages != mothers.

      Fixed That For You.

      --
      No, that link you posted to a web comic we've all seen a hundred times is not "obligatory."
    32. Re:Pffft. by Anonymous Coward · · Score: 0

      I agree - there is a real problem preventing the adoption of functional programming languages.

      That problem is programmers who should have chosen to major in business instead of CS. We really should admit, that just as medicine has incompetent doctors who went into medicine for the wrong reasons, CS has the same problem.

    33. Re:Pffft. by Anonymous Coward · · Score: 0

      My computer has objects

      - TV
      - Box
      -Typewriter
      -Coffee holder
      -Bar of soap
      -a color

      That you use to do things with.

    34. Re:Pffft. by Anonymous Coward · · Score: 0

      You are wrong, Erlang is better.

    35. Re:Pffft. by Lucky75 · · Score: 1

      Ok Linus

      --
      DNA -- National Dyslexic Association
    36. Re:Pffft. by Grishnakh · · Score: 1

      C++ reminds me of the wretched alien-human hybrid that got the Flamethrower in the Alien movie.

      Huh? Are you talking about the alien/human hybrid that Brad Dourif's weird character (redundant: what character of his isn't weird?) called a "beautiful baby boy" and got sucked out a hole in the ship's hull created by Sigourney's acid blood? I think you might be confusing your Alien movies; the flamethrower was in Aliens, the hybrid was in that wretched Alien: Resurrection movie that some lame French director made. Although it at least wasn't quite as horrible as Fincher's Alien3.

      Anyway, C# is Microsoft-only in practice, and Java always seems to be horribly slow and crappy in every app I see it being used in. C++ avoids all this as it gets most of the performance of straight C while still allowing more advanced features like object orientation, polymorphism, operator overloading, etc., and doesn't need you to load up some stupid giant runtime VM for interpreting bytecode.

    37. Re:Pffft. by Anonymous Coward · · Score: 1

      If C++ is so bad, why is it so popular? Not trolling, by the way.

      Popular does not equal good. McDonald's is popular. Walmart is popular. PHP is popular. There are reasons other than quality for things being popular. LCD being one of them.

    38. Re:Pffft. by marcosdumay · · Score: 1

      That 5% lost in perfomence you cite is in practice near 90%.

      Still everything else is right on. Those 90% lost in performance are worth it if they mean you'll spend less on development, and can migrate from one plataform to another at will.

      I'd just like to add that the bad performance displayed by most functional languages isn't inherent. I don't know where it comes from in practice, but in theory there is no reason they should be slower (except if you optimize the hel out of your low level programs).

    39. Re:Pffft. by Anonymous Coward · · Score: 0

      Amen to that brother !

    40. Re:Pffft. by Anonymous Coward · · Score: 0

      Programming languages =/= mothers.

      Quite making new programing languages. If you are a C++ programer like you claim to be, you should be suing != .

    41. Re:Pffft. by Unknown+Lamer · · Score: 2

      There are a few problems with functional programming languages that have prevented their true adoption anywhere.

      1. Limited paradigms - I always prefer languages that let me write my code the way I want, a la C++, than a language that requires a strict paradigm from academia like Lisp. If I want to use the inherent hardware property based side effects of certain code structures, let me. Programming languages =/= mothers.

      Common Lisp (and Scheme, even more so, although the community is more oriented toward impure functional style) enforces no fixed paradigm. It can be used functionally (conses happen to be a pretty good data structure for functional algorithms), but is more often used in an object-oriented manner. It was even one of the first OO languages, and AFAIK the first to implement multiple dispatch. It even has a powerful imperative operators.

      Thanks to macros and the metaobject protocol you can even add new paradigms to the language. Paternalistic, Lisp is not.

      3. Most functional languages except Ocaml are like Ruby and Python in that they have tremendous performance overhead. For a consumer application, that overhead usually doesnt impede adoption (its more like the software is poorly written than the applications environment is too inefficient). But when talking about server programming the costs of running something under Ruby vs C are astronomical, and the same problem arises with functional programming. It might not hurt the consumer that the Python implementation of their music player consuming 30% more clock cycles than the exact same program written in C, but it does cause huge scaling issues with popular resources like Twitter.

      4. In extension of 3, functional programming is getting away from how the hardware actually works. It is good for a novice that doesnt want to get into the details of pointers and caching and disk IO, but professionals should enter the game knowing how the underlying system runs and that making tradeoffs for readability by someone who doesnt know the language anyway vs performance benefits falls to the wayside. Developer time is important, but when you factor in the massive overhead trying to get 20+ year professional developers in C to try to think functionally you are never justifying the upfront cost of using the languages.

      Languages like SML and OCaml are actually more optimizable than C. Thanks to providing more type information &c they can take advantage of fancy whole program optimization and whatnot.

      The "way hardware works" is an artifact of C being the dominant language. There's no reason hardware couldn't (and it has before) have GC assistance, type checking, capabilities, etc. It's really not appropriate and scalable to view the computer as something that flips bits around a gigantic linear array... it was reasonable to deal with that when you had 4000 words, but not when you have 400000000 words.

      Software is nice because you can abstract! Writing programs to a model of an infinite store that Just Works (tm) is beneficial to everyone -- it frees source code from a particular hardware implementation, is easier to reason with, and separates the concern of hardware resource management.

      --

      HAL 7000, fewer features than the HAL 9000, but just as homicidal!
    42. Re:Pffft. by Grishnakh · · Score: 1

      Those 90% lost in performance are worth it if they mean you'll spend less on development, and can migrate from one plataform to another at will.

      I think a lot of people would disagree with that. If you're running a high-performance application on a server farm, for instance, something that's 90% slower is going to require far more hardware and energy than something that isn't. Imagine if Google switched their search engine to something that was 90% slower, just so their development was easier and they could migrate between platforms; it'd be a disaster. For something like that, spending more in developer time is worth it for the performance improvement.

      That's why I was careful to emphasize that this is all "in theory", as practice can differ greatly.

      I'd just like to add that the bad performance displayed by most functional languages isn't inherent.

      Just guessing, but I imagine it might be because these languages aren't very mainstream yet, and just haven't gotten all the attention that ones like C++ have for their compilers. If a bunch of compiler experts decided to spend a year working on fixing up a Haskell compiler for instance, we'd probably see great performance increases.

    43. Re:Pffft. by Pseudonym · · Score: 3, Insightful

      If you read the story, you'll note that the COBOL programs in question have been around for three decades or so. Most programs which have been continuously used for 30 years tend to be pretty solid regardless of the language.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    44. Re:Pffft. by jd · · Score: 0

      I don't regard Microsoft Word as much of an improvement over Wordcraft 80 or WordWise (a bow to those who recognize either name).

      Well, I'd argue that there are lots of differences between good and bad programmers, often depending on what criteria is used for "good". In some cases, yes, expertise is a significant parameter. However, the primary "claim" made about higher-level programming languages is that smarter languages reduce the expertise factor. If that is the case, then expertise alone cannot explain why the 10x gap doesn't vary massively between the "generation" of the language or the paradigm of the language. Of course, one can argue that higher-level programming languages still require the same level of expertise, but in that case you'd be better off with having one language per "generation" per paradigm because having more than that dilutes the competency and therefore reduces expertise.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    45. Re:Pffft. by Waffle+Iron · · Score: 3, Insightful

      Do you think OO programming is closer to how the hardware works?

      Yes. In most languages, objects are implemented like C (or even assembly language) structures. The language just adds a hidden pointer parameter to the object's methods. Sometimes method calls are made through indirect pointers. All of this is perfectly compatible with the way real-world CPUs work, including their built-in hardware stacks.

      Functional languages, OTOH, are big on closures and the like. These don't map onto hardware stacks, and there are huge numbers of elaborate hacks in functional language implementations to try to cram the high-level concepts onto the procedural machine without taking the massive performance hit of allocating every value on the heap.

    46. Re:Pffft. by Anonymous Coward · · Score: 1

      The most popular languages now, C# and Java

      No, no, no ... the most popular languages are Java / C / C++, in that order. C# is slightly less popular than C++ and slightly more popular than Objective-C.

      Source:
      http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

      There are only a handful of sites using C# for anything mission critical, I can think of msn.com and it's affiliates, that's it. None of the the big boys: Google, Amazon, eBay, Yahoo, Oracle, Cisco, Baidu are using C# for **anything** mission critical. Even eBay, who started on ASP.net, have given up and moved to Java.

    47. Re:Pffft. by iceaxe · · Score: 2

      I knap my flint analytical engine gears with a sabertooth fang, and only a putz would need anything more.

      --
      WALSTIB!
    48. Re:Pffft. by Anonymous Coward · · Score: 1

      Agreed. That's neat the poster snydeq found this article for us, but i disagree with what McAllister is trying to say.

      His argument makes sense from the standpoint that a good programming language needs to evolve radically, but I disagree that a language needs to evolve radically. Personally, I'm not likely to spend time attempting to learn a language if it's going to evolve radically, for the reason that my attempts to learn to use the language will be largely wasted as the language changes faster than I can keep up with the changes.

      I right reasonably good utilities and applications for my users, and I choose c for the very reason that it hasn't changed much in the last ten years. When I collaborate with developers I cheerfully use their language of choice (e.g. perl, python, ruby, java, javascript, php, BASH, SQL) but I've yet to find a feature in any of those languages that sets them apart from the herd enough that my time investment in learning their latest features is worth the effort.

      Maybe if McAllister would like to see some radical new features of a language, he can incorporate his proposed new features into an API or a macro or a compiler that will implement his features for people who are keen on using them? I feel like that's a more reasonable goal. Honestly, I don't think that it's in anybody's best interest for me to spend yet another afternoon learning variable declaration, input handling and string functions in a new language unless the language is really really really super awesome.

      My goal is to perfect my knowledge of one general-purpose programming language, rather than to embark on a search for the perfect programming language.

      After all, famous programmer Larry Wall once wrote an entire operating system in BASIC. What matters most is a programmer's comfort with their language, not how new or hip or "correct" a new language is.

    49. Re:Pffft. by Anonymous Coward · · Score: 0

      Anyway, C# is Microsoft-only in practice, and Java always seems to be horribly slow and crappy in every app I see it being used in. C++ avoids all this as it gets most of the performance of straight C while still allowing more advanced features like object orientation, polymorphism, operator overloading, etc., and doesn't need you to load up some stupid giant runtime VM for interpreting bytecode.

      Not sure, mono (http://www.mono-project.com) seems to be quite stable now.

    50. Re:Pffft. by drinkypoo · · Score: 1

      I don't regard Microsoft Word as much of an improvement over Wordcraft 80 or WordWise (a bow to those who recognize either name).

      Zillions of users would disagree with you. The argument should probably be whether any version of Word since 5.1 has made any major positive changes other than bug fixes. But since it's still not WYSIWYG, but pretends to be, it's still not up to doing all the jobs it wants to do.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    51. Re:Pffft. by jd · · Score: 1

      Code cannot be translated across paradigms efficiently. It is entirely possible to build an OO processor, provided the processor supports register banks. Functional programming is relevant to transistor networks because you can express things as contiguous flows between blocks of logic and contiguous flows between blocks of logic can be very easily handled by transistor networks. Far more so than procedural logic, which requires you to have a disjoint relationship between data and logic.

      Compilers are crappy, for the most part, which is why Fortran is still used in maths. The level of effort that has gone into understanding how to compile Fortran programs is enormous and that's when the code mimics the way the CPU works. Further, not all paradigms are equal. Because of the complex relationship between code and data, OO will never be as efficient as procedural code, which will never be as efficient as functional code.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    52. Re:Pffft. by findoutmoretoday · · Score: 1

      <quote> Do you really think Microsoft Word is an improvement .... </quote>

      I don't know about the others but Word had stylesheets.  That made it a winner.

    53. Re:Pffft. by Grishnakh · · Score: 1

      No one actually uses mono in Linux-land, and Miguel (the guy behind it) is constantly derided. In fact, it's not even supported any more AFAICT, as it was part of Novell when Attachmate bought them, and Attachmate promptly dumped mono, and now Miguel has his own company again, but they're concentrating on some kind of mobile SW development. It appears that mono is basically dead.

    54. Re:Pffft. by Anonymous Coward · · Score: 4, Insightful

      One of the problems with new languages is that everyone starts out stupid.

      You clearly don't have a CS background, but rather are a programmer. If you understand the fundamentals you're not going to be "stupid" in any language. Programmers are simply trained to use one or more tools. I have a cousin, for example, who has a Master's degree in Music. Even with an instrument he's wholly unfamiliar with, like an obscure tribal instrument, he can generally figure it out and play it. That's the difference between him and some guy who taught himself to play guitar.

    55. Re:Pffft. by drb226 · · Score: 2, Interesting

      As an hobbyist Haskeller, I tend to embrace the unofficial Haskell motto of "Avoid success at all costs!" Responding to your 4 points, though,

      1. Limiting yourself to a functional paradigm has benefits. You can use equational reasoning about code, and the compiler can perform more vigorous optimizations. Plus, for those of us who program for fun, it's...well...fun!

      2. In Haskell it seems there is always something more to learn. Feature or bug, you decide.

      3. Lisp (+ descendants), Haskell, and OCaml have compilers that have shown themselves to produce code which is rather fast.

      4. Minimizing execution time and memory usage aren't always the main requirements for a program. Functional programming is well suited for guarantees of correctness, for example.

    56. Re:Pffft. by David+Greene · · Score: 2

      Compilers are crappy, for the most part, which is why Fortran is still used in maths. The level of effort that has gone into understanding how to compile Fortran programs is enormous

      You don't know what you're talking about. The reason people use Fortran is because it compiles so well to the hardware and the reason it compiles so well is that it has well-defined, compiler-friendly semantics at the procedure boundary. Namely, harmful aliases are forbidden.

      In that sense, functional languages are also easy to compile because side-effects don't exist. Compilers aren't crappy, language sematics are and C has some of the worst.

      --

    57. Re:Pffft. by MobileTatsu-NJG · · Score: 1

      The power of C is that you can use it to make your own language!

      --

      "I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)

    58. Re:Pffft. by Pseudonym · · Score: 2

      I don't know where you got the 90% figure from. Nowhere, I suspect. The performance hit depends crucially on what you're doing. Most programs that you will write in your career are not CPU-bound.

      You also have to weigh that against the fact that a program written in a higher-level language will often have subtly different behaviour. For example, the type system of a Haskell-like language may not let you avoid checking the error condition of some I/O operation where C would. So the C program might be faster than the high-level program, but it may also contain a bug which the high-level program doesn't.

      The central point is correct, though. Using high-level languages is a tradeoff, and it's part of the job of the engineer to evaluate the tradeoff rationally.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    59. Re:Pffft. by Krishnoid · · Score: 1

      p.s. if you recognize above as Scribe mark-up, good for you! Do you really think Microsoft Word is an improvement over Scribe?

      I think some mothballed neurons started smoldering when I saw that markup. What scares me even more is that I can't find references to Scribe on Google.

    60. Re:Pffft. by martin-boundary · · Score: 2

      That's outdated thinking, I'm afraid. It's very difficult to know just what exactly a modern CPU does during a bunch of cycles - there's parallel pipelines with speculative execution, reordering of instructions for efficiency, cache access contention with multiple processors etc. The old C family of languages is slowly drifting away from the underlying hardware architecture.

    61. Re:Pffft. by Anonymous Coward · · Score: 0

      All you putzes need is a an infinite plane, infinite pebbles and infinite time...but I think that's been done before.

    62. Re:Pffft. by Anonymous Coward · · Score: 0

      "that requires a strict paradigm from academia like Lisp" -- you are kidding right? Or maybe you have never programmed in Lisp? Lisp is the exact opposite of what you claim -- you program in all sorts of styles/paradigms in Lisp (purely functional if you want, OO via CLOS, imperative via sets, etc).

    63. Re:Pffft. by Forever+Wondering · · Score: 1

      C++ provides several very fundamental features which make it hugely superior to C: inline functions, better const semantics, reference types, and templates.

      Ahem. C has had inline functions for at least a decade. And what better const semantics would you be referring to?

      --
      Like a good neighbor, fsck is there ...
    64. Re:Pffft. by Anonymous Coward · · Score: 0

      I assume at the end there you're talking about the stack.
      Saying that the stack is how the hardware works is strange to me.
      The stack is just some range of memory that's used to store activation records and temporary value.
      The hardware doesn't really give a shit about where you're storing what.
      Sure some architectures have some optimization that make this model faster like dedicated registers for storing the stack pointer,
      instructions that automatically increment the stack pointer, etc.
      But you could just as easily figure out what would be useful for functional programming and add those instructions.

    65. Re:Pffft. by DeathFromSomewhere · · Score: 1

      Everything you just said is wrong. Don't spread FUD.

      --
      -1 overrated isn't the same thing as "I disagree".
    66. Re:Pffft. by Waffle+Iron · · Score: 2, Interesting

      All of those things work at the tiny level of shuffling around a few dozen opcodes. Moreover, all of that stuff is *completely* hidden from the programmer, and by design it's almost impossible to distinguish the resulting behavior from a strictly serial stream of CPU instructions on one or more independent CPUs. Functional languages can not and do not take advantage of the changes, nor do they map any closer to them than procedural languages.

      (Some argue that functional languages will magically run N times faster on N CPUs because they lack side effects. I don't buy it. If it were true, functional languages would have dominated performance rankings years ago.)

    67. Re:Pffft. by khipu · · Score: 0

      I think Haskell and OCaml are inefficient, messy, and poorly designed. The fact that they incorporate some nice FP concepts doesn't change that. They are prime examples for why we need new languages...

    68. Re:Pffft. by Anonymous Coward · · Score: 0

      Or assembler. No, wait, C *is* better and more portable. And I can write C faster than you can write ORuthon. And it runs faster. And people can actually read it and understand it.

    69. Re:Pffft. by Grishnakh · · Score: 1

      Citation needed.

    70. Re:Pffft. by Anonymous Coward · · Score: 1

      "I always prefer languages that let me write my code the way I want, a la C++, than a language that requires a strict paradigm from academia like Lisp."

      This statement shows you are woefully ignorant of Lisp, which is a multiparadigm language.

      In Lisp you can program in at least the imperative, functional, procedural, or object oriented paradigms.

      And Lisp is far from a merely academic language. It's as full-featured and as practical as any mainstream language you care to name, including C++.

    71. Re:Pffft. by Anonymous Coward · · Score: 0

      Sure, liquid crystal displays can help some things be more popular, but how does that apply to McDonald's or programming languages?

    72. Re:Pffft. by Anonymous Coward · · Score: 0

      www.google.com I'm not wasting my time rehashing the same argument for the 5 billionth time.

    73. Re:Pffft. by Smallpond · · Score: 3, Insightful

      This is not exactly true. Many programs acquire bugs as they age. The original developers are gone, and the new maintainers less knowledgeable, less proficient and less enthusiastic.

    74. Re:Pffft. by msobkow · · Score: 1

      That really depends a lot on the team involved. There are no shortages of people with the skills to maintain the old COBOL systems yet, but it is getting to be a scarce resource pool. Fortunately the regulatory changes that demand updates to those old systems are few and far between, as most of them are financial, inventory, or accounting systems at the core. Few business requirements are as well known and stable as those of the accounting and financial services markets.

      That is not to say that financial investment divisions don't employ far newer and more creative code, but they systems that manage your checking and savings accounts haven't undergone significant changes in years.

      --
      I do not fail; I succeed at finding out what does not work.
    75. Re:Pffft. by msobkow · · Score: 1

      I wouldn't agree with that. The performance of Erlang is quite comparable to Java, though it is a steep learning curve unless you're already familiar with the paradigm of functional programming.

      But I leverage functional programming paradigms in my Java, C#, and C++ code all the time. It's a powerful way of abstracting operations over collections of objects, and such loops are very, very common. The significant difference when implementing such code is to use tail recursion so your stack doesn't grow. If you do that, you'll find Erlang is actually quite a good and powerful performer.

      Where Erlang falls down is it's periodic idiosyncratic behaviour, in particular not being able to find a function signature that's clearly defined by the code. Such errors can really cause you to tear your hair out, and will mysteriously disappear if you add a line of code that does nothing useful and recompile. It reminds me of a bug I had with a K&R C program on good old BSD 4.1 on a VAX 780 in University. I added a debug statement, which cleared some perverse race condition by doing IO, and the rest of the program suddenly worked fine.

      Note that it wasn't any sort of threaded or OS code, it was just a weird idiosyncratic bug between the compiler and the system libraries, but it was happening regularly with one particular build of the class project I was working on.

      If they'd fix those bugs with Erlang, I'd be interested in looking at it again, though they also need to improve the range of data types supported for it to be a really useful language. I'd call it a 1.0 in it's current state.

      --
      I do not fail; I succeed at finding out what does not work.
    76. Re:Pffft. by Grishnakh · · Score: 1

      That's because you're a moron and your assertions are wrong.

      Here, I'll help you:
      http://www.internetnews.com/skerner/2011/05/attachmate-lays-off-mono-emplo.html

    77. Re:Pffft. by martin-boundary · · Score: 1
      But you're claiming that the C family is superior *because* programmers have better control over memory layout and access to registers etc. If you remove that, what do you get? Just another Java/C#/$insert_favourite_procedural_language. That's where C/C++ is headed with current hardware trends.

      I don't necessarily believe functional languages are the answer, but C (the language, not the standard library) will have to evolve a lot. We're seeing tiny steps with OpenMP but it's nowhere near enough.

    78. Re:Pffft. by Anonymous Coward · · Score: 0

      hear, hear. True.

    79. Re:Pffft. by Anonymous Coward · · Score: 0

      Like, for example... let's say Windows XP? :)

    80. Re:Pffft. by skids · · Score: 1

      No, the problem with purely functional languages is that they are incomplete and do not cover all useful paradigms sufficiently. If a language makes you write anything out longhand, it failed to properly provide an expressive form for the paradigm.

      A bigger problem with MOST languages, functional or otherwise, is that the threading/concurrency/realtime support is put in as an afterthought, so while you can have languages that are extremely useful as a rapid prototyping tool, when it comes down to actually specifying actual behavior in the real world, which works in realtime, the idioms are either clumsy or just not even expressible. (The only functional language I ever seriously considered developing in was erlang and that was more despite it being functional, because I wanted to see what the concurrency system could do.)

      Finally a big problem present in languages but that extends beyond languages is trying to cram every single thing into a tree data structure even if it doesn't fit.

    81. Re:Pffft. by Anonymous Coward · · Score: 0

      The power of C is that you can use it to make your own language!

      Yeah yeah, just like C++ eh. The whole template metaprogramming monstruosity used as a replacement for macros ?
      Man sometimes I wish the people responsabile for ushering that monster upon us would be thrown in a fire.
      We are stupid to reinvent the same concepts with worse tools every fucking time.
      You want a language that enables you to create languages ? Use lisp, if thats too weird use Haskell (at least they've got the whole macro thing figured out correctly). If Haskell isn't your cup of tea then go learn the good tools for the job. Hint : its not C or C++.

    82. Re:Pffft. by DragonWriter · · Score: 2

      One of the problems with this business is the continuing preference for the "new and shiny" at the expense of proven quality. COBOL is -very good- at a significant class of problems, and there are a lot of geezers who are very good at it.

      COBOL is very good at something any language is good at: that is, once its been used for a long-enough time in an environment with reasonably stable requirements, and the bugs in the code worked out, its very good at plugging away and doing the same thing reliably.

      Since COBOL hasn't been the first choice for new development of much of anything for quite some time, most of remaining COBOL applications are in that kind of environment, and so they work really well.

      That's not really a testament to COBOL.

      One of the problems with new languages is that everyone starts out stupid.

      I don't think that's really true. There's obviously some learning curve, but its hardly the case that programming knowledge is all (or even mostly) tied to a particular language.

    83. Re:Pffft. by shutdown+-p+now · · Score: 1

      Throw away D, and add low-level types (raw pointers and such) to OCaml as an opt-in. The design of D is too ad-hoc, it has lots of jagged edges for little utility.

      Occam is not needed - in a sufficiently expressive language, you should be able to do all that on library level, and we already have such languages.

    84. Re:Pffft. by david_thornley · · Score: 1

      Several reasons.

      First, it was once the dominant language, and there's a lot of C++ code around.

      Second, it can go very low level without loss of performance. In fact, it can have better performance than C: std::sort() can be faster than qsort(), since it works with less indirection. There is no reason to use C rather than C++ besides programmer familiarity or compiler availability.

      Third, it's so frippin' versatile. You can use all sorts of programming methods in it. Compilation is Turing-complete in C++; you can compute anything with the compiler. This is not something the average C++ programmer should be doing, but in very skilled hands it can do amazing things that can be used by lesser lights.

      It's extremely powerful, with great abstraction capabilities, and has sharp edges poking out in quite a few places. Not a programming language OSHA would approve of, but really good in the right hands.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    85. Re:Pffft. by shutdown+-p+now · · Score: 4, Insightful

      Pure FP is not winning, but elements of FP have sneaked into all major imperative languages of the day. C# has lambdas for 6 years now, VB for 3 years. C++ has just got them, and Java is getting them in the next release. All these also have (in case of Java, will have) their equivalents of map/filter/reduce.

    86. Re:Pffft. by shutdown+-p+now · · Score: 1, Interesting

      C++ is popular because it lets you code in a relatively high-level way - OOP, refcounting smart pointers (and even GC if you really want it), standard collections and algorithms etc - while still producing very fast and memory-efficient code. When speaking of Java, C# etc, "almost as fast as C" is more hype then truth. With C++, it's more truth than hype. Especially now that C++11 is out with move semantics, and compilers are picking it up rapidly, STL became much more efficient - to the point where it's hard to match even with hand-written C code.

    87. Re:Pffft. by Anonymous Coward · · Score: 0

      Yes, thats nice, but you seem to think that companies have an interest in good code. They want cheap code, and if it all turns to shit (it will) they just rebrand the company and the salesassholes (salesmens, saleswomen, salespeople are no longer words) will take credit and move on.

    88. Re:Pffft. by b4dc0d3r · · Score: 3, Informative

      Joel disagrees, bug fixes tend to accmulate. Things you should never do

      The bugs happen when new features are added, same as with the original developers.

    89. Re:Pffft. by DamnStupidElf · · Score: 1

      4. In extension of 3, functional programming is getting away from how the hardware actually works

      I don't know about your hardware, but mine happens to be modeled simply as a function of the current computer state and I/O that's evaluated each clock tick. state_t+1 = F(state_t, I/O_t). Any imperative nature of the machine language is just emulated by endless repetitions of that single function.

    90. Re:Pffft. by cheekyjohnson · · Score: 3, Insightful

      That's the difference between him and some guy who taught himself to play guitar.

      That's the difference between him and some guy who doesn't know anything. His self-taught status is irrelevant as long as he learned the right things (information comes from somewhere, after all).

      --
      Filthy, filthy copyrapists!
    91. Re:Pffft. by Anonymous Coward · · Score: 0

      There is no reason to use C rather than C++ besides programmer familiarity or compiler availability.

      Application size is another reason. Some embedded microcontrollers simply don't have the code space for C++ standard libraries.

    92. Re:Pffft. by jd · · Score: 1

      I would be impressed if you could find zillions of WordCraft users! Do that and I shall worship you as a god, since that's about the only way you could find that many.

      Seriously, there's nothing fundamental in desktop publishing or word processing that can't be done with 1980s technology (WordCraft, LaTeX, etc). The improvement is primarily in the UI, since there are no really new underlying operations. But let's think about the UI for a moment. WYSIWYG is a very old design concept that has indeed also existed since the 1980s. The BBC Micro had many true WYSIWYG wordprocessors that supported multiple fonts and multiple language formats, so if Word is still not true WYSIWYG then those older wordprocessors were better at some things and you have to weigh that against those things Word can do that these museum-piece wordprocessors couldn't do.

      What of the UI, though? DTP packages, such as Ventura Publisher, let you rubber-band writing areas and create complex layout templates. These are ooooooold. Are Word templates really that much more advanced? I'm not convinced. It would be very hard to generate the kinds of windowing you could do back then, or roll multiple documents into one unified presentation the way they did.

      Integration? The Smart Integrated Package linked a database, wordprocessor and spreadsheet together in a way that data from one could directly be passed to any of the others. For its time, it was bloody amazing. The UI was extremely clean and could be adjusted according to your expertise, the macro language was primitive but very usable, documents were handled very cleverly using an ingenious pagination system making it very quick even on extremely long documents -- if the developers and management had retained that spark of creativity, it would likely still be a decent contender today. It failed because the brilliance was replaced with a stupidity that MTV could only marvel at. No idea why.

      So, no, I'm not seeing the improvements. Menus have moved from the bottom of the screen to the top, but they're certainly not any better or cleaner than those on Smart. Images can be pasted in, which WordCraft didn't handle too well, but those systems back then that did support images handled the images at the quality they existed on disk. Word converts them to an internal format (which is inefficient, hogging disk space, and is nowhere near the quality of modern image formats), which is a major headache and lacks the professional look you could achieve with earlier systems.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    93. Re:Pffft. by david.emery · · Score: 1

      One of the problems with new languages is that everyone starts out stupid.

      I don't think that's really true. There's obviously some learning curve, but its hardly the case that programming knowledge is all (or even mostly) tied to a particular language.

      Really? How long do you think it would take you to become proficient in COBOL, RPG2, Ada or LISP, if all you knew was Java and C?

    94. Re:Pffft. by Hentes · · Score: 3, Insightful

      For system-level native tasks, C is better.

      As C is a subset of C++, it can't possibly be better. Every C program can be written in C++.

    95. Re:Pffft. by Mike610544 · · Score: 2

      There are a few problems with functional programming languages that have prevented their true adoption anywhere.

      That's true (mostly; if you've bought a plane ticket in the last 5 years, there's a good chance that functional code priced your fare.)

      1. Limited paradigms - I always prefer languages that let me write my code the way I want, a la C++, than a language that requires a strict paradigm from academia like Lisp. If I want to use the inherent hardware property based side effects of certain code structures, let me. Programming languages =/= mothers.

      Are you from bizarro world? You can say a lot of bad things about Lisp, but "limited paradigms" is not one of them (unless you've got extremely specific criteria or don't like parenthesis.)

      2. Difficulty. 90% of programmers ...

      I'll give you that one, functional programming is hard to grok.

      3. Most functional languages except Ocaml are like Ruby and Python in that they have tremendous performance overhead...

      C's going to win on I/O and other low level stuff, but modern Lisp compilers can produce some pretty efficient code.

      With all the disadvantages accounted for, there's still a reason some people use functional languages. There are a bunch of things you can do that are near impossible otherwise.

      --
      ... also, I can kill you with my brain.
    96. Re:Pffft. by jd · · Score: 2

      Wait a minute, your other post claimed that the paradigm didn't matter. Now you're claiming that some paradigms prohibit side-effects and thus compile cleaner to modern hardware. You may have a superior UID, but you need to work on your consistency.

      You also need to consider that Fortran compilers have been around a very very long time. I don't know if you can find a Fortran IV compiler and a Fortran 2008 compiler that will compile to the same architecture (that age difference is a bit extreme) but I'm willing to bet that if you could find such compilers where both are written by good quality compiler writers (ie: not by someone high on mushrooms getting bored and writing a compiler for the hell of it), that well-written code that can work on both will compile to smaller, faster code using the more modern compiler.

      You could argue that this is because compiler writers are better than they were. Well, define "better". Well, they know more about how to convert the Fortran syntax into machine code, what optimizations are suitable and what aren't, etc. Ok, so we have two variables in this - the variable called "experience in Fortran" and the variable called "experience in compiler writing". My claim is that the first variable is not only non-zero but is significant with respect to the second variable. Doesn't have to be larger, just has to be enough that it's demonstrably greater than noise. Your claim, if taken literally, is that the first variable is absolute zero.

      Showing that the first variable is not zero requires that you have two compilers of the same age but where one language is newer than another. Ok, we can do this the easy way. Java and ADA are newer than C, so according to my claim GCC's C frontend should produce better code than GCC's Java and ADA frontends. The compiler is the same generation, so the same compiler experience exists for all three. The backend is the same in all cases. The only difference is in how the instructions are handled. Since ADA is actually very good on limiting side-effects, we can also examine the side-effect issue at the same time.

      My experience is that GCC's C frontend is the better of the three. It produces smaller code and faster code, despite C's semantics (which, I agree, are absolutely crud). The only way this can sensibly be explained, given that they're of equal compiler generation, is that people know more about how to process C than they do Java (it's way newer) or ADA (which is middle-aged but not used extensively enough for experience to have built up in the community).

      Let's now look at compiler technology itself. Much of the optimization is labeled "back arts" because it's not well-understood. Poorly-understood methods used "because they work" and not "because we know why they work" sounds crappy to me. What about code generation? Well, NASA used G95 for a long time rather than GCC's F90 because GCC's Fortran compiler kept blowing up. Sounds like there were problems. Ok, compiler design? Well, you're way old enough to remember the GCC vs EGCS vs PGCC debacle. Sorry, but I can't excuse you there. The sole reason for that ever happening was because each team made some good design decisions and some poor design decisions. If it had been clear-cut, you'd have had the same thing as you had with XF86 vs the original X Consortium, and XF86 vs the new X.Org - a universal and unambiguous switch with no split in the community, merely a split amongst the developers.

      The compiler "crisis" caused a split in the community because each option had benefits the others didn't and the others weren't able/willing to produce something similar on their system. If compilers were truly modular, the PGCC optimizations could EASILY have been merged into EGCS and activated solely for those platforms those optimizations applied to. Didn't happen. The extra facilities being developed for "mainline" GCC could also have been merged into EGCS - some were, but others were rejected. In a modular design, you can't "reject" a module, you can merely not add it into th

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    97. Re:Pffft. by jd · · Score: 1

      Ok, I can accept that for D. I can probably buy the Occam argument as well, though would contend that there are very few libraries that can provide explicit parallelism, mobile functions and other such nifty features (the main reason Occam's so good for parallelism) in a completely side-effect free environment -- although you are entirely correct that you should be able to do all that at the library level. The lack of such libraries is the main reason I believe that people are finding it just too difficult to reimplement it. eg: OpenMP is a hack that provides a very limited subset of those kinds of facilities and the ATLAS developers recently kicked it out of the code because it's too slow and doesn't work well.

      Nonetheless, quibbles aside, it should be possible to extend OCaml to support everything that Occam-Pi has that's useful, whether as syntax updates, libraries or a mix of both. My worry is that over-extending a language can hurt it and I'm not confident that the extensions involved would be minor enough that OCaml ends up trying to do too much and be too flexible. Adding features can break assumptions that are critical to other aspects of a language.

      You're probably more experienced in OCaml than I am, so if you're confident that the extensions needed wouldn't break anything, then I'll accept that and go with the idea that that's all you really need. (Despite the occasional claim to the contrary, I listen to people with expertise I don't have.)

      So we're down to Haskell, Erlang and OCaml, where one or more of these is extended in the way you've described to handle the extra facilities provided by the languages being dropped.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    98. Re:Pffft. by euroq · · Score: 0

      Your signature is a link to a complicated mathematical formula. And you believe that functional programming languages are the best.

      Everyone already knows functional programming languages are the best for mathematics. Now, try writing a web application or a mobile app with functional programming. I'm not saying it can't be done... I'm saying it's ridiculous to think it's better than other paradigms to do so.

      --
      Just because the U.S. is a republic does not mean it is not a democracy. Democracy/republic are not mutually exclusive.
    99. Re:Pffft. by russotto · · Score: 1

      What I wonder about is, whatever happened to Black Box programming? Why do we need to care what language is used, as long as we understand its interface?

      Abstractions leak.

    100. Re:Pffft. by Anonymous Coward · · Score: 0

      1. I'm totally with you, except that Lisp is the worst possible example you could have cited to make your point. That's precisely the reason I don't use Haskell or Erlang (or Pascal, for that matter), but Lisp is the ultimate multiparadigm language--it allows global variables, reassigning the values of both global and local variables, and side effects. It has an extensive object system. It supports iteration and recursion equally well. You can quite easily write functional, imperative, or OO code in Lisp, or even use all three at once (which I have found to be a particularly effective way of writing code which interacts with databases).

      2. Wrong. As I say above, Lisp (well, Common Lisp anyway, Scheme is a bit stricter) is inherently and by design multiparadigm. OCaml is inherently and by design multiparadigm, though strongly focused on functional and OO at the expense of imperative.

      3. Wrong. Every common functional language is compiled. OCaml, Haskell, and Erlang are every bit as fast as C++. Intensively optimized Lisp is close to that speed, and even unoptimized Lisp is comparable to VM-based languages like Java and C#. For certain kinds of applications, Lisp is much faster than any other language--the most widely used regular expression library in Lisp turns every regex into a compiled function.

      4. Kinda, but it depends on the specific hardware and the specific algorithm. For massively parallel computation, functional code is a much better metaphor for what the hardware will actually be doing than imperative or OO.

    101. Re:Pffft. by Anonymous Coward · · Score: 0

      If "all you knew" was Java and C, then you would be "stupid", sure. But if you had a CS background, and for some reason you had only been exposed to pseudocode, Java and C throughout your education you would be just fine because you would only need to be able to look at the syntax to map the particulars of the new language to the concepts (not languages) you already know.

      The people that think languages matter are programmers, because to them they do. To computer scientists, they do not. They're not even similar fields, really.

    102. Re:Pffft. by Anonymous Coward · · Score: 0

      In other words, the right way to use C++ is to code in a strictly limited subset of C++. It's not the first time I've heard this advice, and it still sounds good. The only challenge seems to be figuring out the right subset to use.

    103. Re:Pffft. by Wrath0fb0b · · Score: 0

      All these also have (in case of Java, will have) their equivalents of map/filter/reduce.

      How is map/filter/reduce functional programming? Map, for instance, is just syntactic sugar around 'foreach' and a sequence generator.

    104. Re:Pffft. by Darinbob · · Score: 1

      The stack is important because it's got locality of reference. You want data that will be used soon to be in a region of memory that's already in cache, no matter how high or low level your programing language is. Now in a really high level functional language this can be done with a good garbage collector too. (not one of those obsolete full-mark-and-sweep that tends to keep showing up in newer language even though everyone should know better)

    105. Re:Pffft. by Endlisnis · · Score: 1

      Well, in C, constants must be evaluable at compile time. In C++, they must only be evaluable at run time.

    106. Re:Pffft. by shutdown+-p+now · · Score: 2

      How is map/filter/reduce functional programming?

      They are higher-order functions. Heavy use of HOF is one of the hallmarks of functional programming.

      If you wish to dispute that claim, can you give your definition of FP first? Because there isn't a definite one that is universally accepted, and the pedantic one like "whenever functions are first-class values" is so general that it is essentially useless.

      Map, for instance, is just syntactic sugar around 'foreach' and a sequence generator.

      Well, duh. Or, alternatively, foreach is just syntactic sugar for map. And, generally speaking, any functional program can be written as imperative one, and vice versa. Point being?

    107. Re:Pffft. by Darinbob · · Score: 1

      True. I wish more C++ programs aimed towards a more Smarter-C-Than-C style instead of the typical style of wanting to use every feature and use them badly (templates I hate because they're misused to very often, the language was just fine without them).

    108. Re:Pffft. by Guy+Harris · · Score: 1

      All of this is perfectly compatible with the way real-world CPUs work, including their built-in hardware stacks.

      ...or their hardware that can be used to implement stacks. A lot of CPUs don't have "hardware stacks" (presumably meaning call stacks); the calling sequence used on the machine chooses one of the general-purpose registers to be a stack pointer (and might, or might not, have another register used as a frame pointer). Some CPUs might have instructions that manipulate one particular GPR in a stack-like fashion, so the instruction set is a bit biased towards using that particular register as a stack pointer.

    109. Re:Pffft. by vAltyR · · Score: 1

      There are a few problems with functional programming languages that have prevented their true adoption anywhere.

      1. Limited paradigms - I always prefer languages that let me write my code the way I want, a la C++, than a language that requires a strict paradigm from academia like Lisp. If I want to use the inherent hardware property based side effects of certain code structures, let me. Programming languages =/= mothers.

      The problem with a language that "lets you write the code the way you want" is that most people don't want to read code that's been written the way you want to write it. That may also include you six months from now; you end up with code that's hard to read and hard to maintain.

      2. Difficulty. 90% of programmers (not on the internet, in general) write code like Fortran when its 2010. The most popular languages now, C# and Java, are popular because they are extremely easy to understand, if not easy to get things done in. You dont need to know lambda calculus or templates or prototyping to understand 99% of C# / java code (yes, I know C# has all of those and java has 2/3 of those). The problem with functional languages is that they always use these paradigms.

      I'm not sure I'd consider Java "extremely easy to understand." I find Java code very hard to read, if only because the syntax is so cluttered. I'm not a functional programmer at all, (I mostly program in Go) but I think lambda calculus is an interesting concept, if only because it's very different from how I usually write programs. Object-oriented programming (at least, as it's done in Java) is also quite different from what I'm used to doing, and I think it's an interesting approach to writing programs as well. Neither way is really "better," just different.

      I mean, I dont use them. Thats personal preference. I like the way C and OO work more than I like dynamic typing and having no data and all the other out of this world paradigms. I really hope that D can achieve what I hope it will evolve into, a language that is hopefully as easy to understand as Python without the boilerplate of Java but with the performance of C. Thats kind of where the end goal of programming languages needs to be.

      Have you checked out Go? It fits your description pretty well, though your mileage may vary as to how well.

      I agree with the linked article in that we need more languages, but those languages need to try to do less. For instance, you mentioned that 99% of C#/Java code doesn't use lambda calculus or templates or prototyping; then what's the point of them being in the language if nobody uses them? This also gets back to the point I made above about C++; when you try to do everything really well, you end up doing everything poorly. Go is my favorite language not only because of the features it has, but also because of the features that were deliberately left out. Sometimes, trying to program in a language that doesn't have everything is easier than trying to program in a language that does.

    110. Re:Pffft. by vAltyR · · Score: 2

      No, the problem with purely functional languages is that they are incomplete and do not cover all useful paradigms sufficiently. If a language makes you write anything out longhand, it failed to properly provide an expressive form for the paradigm.

      Hasn't stopped Java. They like to call them "design patterns" rather than "failures of notation," though.

    111. Re:Pffft. by dave87656 · · Score: 1

      Yes, I agree, with the exception that you should include C++ with that.

      The language is extensible and can be coded in a platform-independent way. It is efficient and finds a nice balance between efficiency and high-level programming. I've been using Java for the last 11 years and I still find that, for big projects, C++ get's the job done sooner and allows for new technologies to be added as they come along.

      As far as paradigms is concerned, can someone give me an example of a paradigm beyond the object-oriented model which has actually worked for real business or gaming applications?

    112. Re:Pffft. by dave87656 · · Score: 1

      The most popular languages now, C# and Java

      C and C++ are still the most used languages on the PC. Java wins if you include mobile (Android) devices.

      http://www.eweek.com/c/a/Application-Development/Java-C-C-Top-18-Programming-Languages-for-2011-480790/

      I find it interesting that virtually all new languages are programmed in C!

    113. Re:Pffft. by Anonymous Coward · · Score: 0

      C? And you're calling us a putzes? Be a real man and twiddle your bits! I mean, come on! How hard is it to understand this?
      01110010 10010101 11010100 00101101
      10010101 11010110 11101010 01101001
      00001110 11011110 10101110 01010110
      10001110 00011001 00010100 10010010
      11101010 10100001 01100100 11011010
      11001001 00001110 10001001 00110010

    114. Re:Pffft. by Waffle+Iron · · Score: 1

      Yes, some CPUs separate the stack model into an Independent instruction or two applied to an arbitrary register. Yet no CPU has a kind of register or instruction that easily implements a closure's upvalues, nor any of the more esoteric concepts commonly found in functional languages.

    115. Re:Pffft. by hendrikboom · · Score: 1

      The trouble is that you have to choose between a functional language and an imperative language, rather than, within one language, using a functional style when that suits the problem, and an imperative style when that does, and some of each when that does. There's no reason why languages have to choose between being functional or imperative. That should be up the the programmer.

      Algol 68 came close to allowing both styles. Surely we should be able to do better after four decades.

    116. Re:Pffft. by Anonymous Coward · · Score: 0

      Map, for instance, is just syntactic sugar around 'foreach' and a sequence generator.

      *facepalm* I'm not a FP or massive-parallelism guy, but even I spotted you use the word "sequence" there.

      C'mon, dude, sequence. What does that word mean to you?

      You can break out of a foreach loop too, at least in the languages I use.

      Loops imply you're doing things one at a time. map() doesn't imply that, which means your code can never assume it, which means the next version of your compiler might realize it doesn't have to happen that way.

    117. Re:Pffft. by Sloppy · · Score: 2

      If C++ is so bad, why is it so popular?

      Same reason as perl: because people are vile, sick bastards.

      --
      As copyright owner of this comment, I authorize everyone to defeat any technological measure which limits access to it.
    118. Re:Pffft. by Anonymous Coward · · Score: 0

      It's no doubt true that CPUs do some pretty cool stuff, but it's far short of recompiling and optimizing code. It's still executing x86 instructions in near-serial order. If you write in a programming language that doesn't easily translate to x86 assembly, it's likely not going to be using the CPU efficiently. The C family of languages is very close to assembly language, and that's why it's relatively easy to write really fast C programs.

    119. Re:Pffft. by Anonymous Coward · · Score: 0

      You're correct that C has some terrible semantics (aliasing being the big one). But C is still really close to how the hardware works, so it's relatively easy (emphasis on relatively) to design programs that will be fast on a given hardware platform. (For the record, I find myself using C++ for performance-critical code, but would love to see D get traction. D corrects a lot of the language deficiencies and is much easier to compile.)

      Functional languages often have great semantics, but are far from how the hardware operates. So while it may be true that a compiler could do more optimizations to your code, you lose a lot in the translation of higher-order concepts to machine language.

      The short story is, "let the compiler do the optimization" has never been the answer to generating fast code. It sure would be nice, though...

    120. Re:Pffft. by Anonymous Coward · · Score: 0

      Wow. So many wrong things I don't know where to begin.

      1. Limited paradigms - I always prefer languages that let me write my code the way I want, a la C++, than a language that requires a strict paradigm from academia like Lisp.

      If you want to pick a functional language as an example of mono-paradigm, then surely Lisp (esp. Common Lisp) would be the wrong one, since it's a quite eclectic mixture of imperative and functional.

      2. Difficulty. 90% of programmers (not on the internet, in general) write code like Fortran when its 2010. The most popular languages now, C# and Java, are popular because they are extremely easy to understand [...]

      Ever tried to write a closure in Java? And you have to, in event-driven constructions. Something absolutely simple in Perl, Python, Javascript, Tcl and (gasp!) Lisp, wrapping the idea of "do this action, taking all its environment at a later point in time, when that happens" looks like this abomination?

      3. Most functional languages except Ocaml are like Ruby and Python in that they have tremendous performance overhead.

      Quite a few really high-performance applications are written in Common Lisp. Google for Allegro and Lisp to see a couple of examples. The thing is -- the flexible design of the language makes some tricks easy which would be prohibitively difficult (given the right circumstances) with other language designs. And have a look at the language shootout some day. SBCL (yes, a Common Lisp implementation) ranges up there with Java server and other compiled languages, way beyond Python, Perl & Lua.

      In the real world my experience is, though, that the right choice of the architecture and algorithms, and good use of the available platform (be it Scheme, VB or brainfuck) makes the difference. Blaming the tools just reflects on the craftsperson.

      4. In extension of 3, functional programming is getting away from how the hardware actually works. It is good for a novice that doesnt want to get into the details of pointers and caching and disk IO...

      Never heard so much nonsense so tightly packed. Common Lisps typically compile to the metal (SBCL does). I know people writing network perfommance analysis tools in Common Lisp.

      I like the way C and OO work more than I like dynamic typing and having no data and all the other out of this world paradigms [...]

      Then you'll like to know that Common Lisp has one of the more advanced object models (CLOS). They invented the "meta-object protocol", an idea which is now, over a decade later finding its way into the more naive languages.

      Look: you don't have to like Lisp. It has its deficiencies, and given a job, I tend to choose the right tool carefully (and most of the times it won't be Lisp). But if you're talking languages you just can't afford not to know Lisp unless you want to look quite dumb.

      Heck -- I'd like to make an addition to the headline: "...and why a programmer should master more than one language" (and yes, for that context Perl, Python Ruby and PHP count as one).

    121. Re:Pffft. by jgrahn · · Score: 1

      C++ provides several very fundamental features which make it hugely superior to C: inline functions, better const semantics, reference types, and templates.

      C has had inline functions for at least a decade. [...]

      They aren't widely used though, in the projects I've seen (except the Linux kernel). Part of my job is to replace ugly, unsafe multi-line macros with inline functions ... something which was only made possible earlier this year (2011), when we ditched our last C compiler which didn't understand C99.

      Which brings us back to part of TFA: it's hard to change a language which is widely used, and harder to make the programmers use the new stuff. (Personally I still think it's the way to go.)

    122. Re:Pffft. by Anonymous Coward · · Score: 0

      LCD being one of them.

      LCD = Lowest Common Denominator.

    123. Re:Pffft. by jgrahn · · Score: 1

      True. I wish more C++ programs aimed towards a more Smarter-C-Than-C style instead of the typical style of wanting to use every feature and use them badly

      Here I agree ...

      (templates I hate because they're misused to very often, the language was just fine without them).

      ... but here you're talking crazy, or what you've seen falls into the "and use them badly" category. The language was *not* fine without them. For one thing, it had no string types, no containers and no standard library except the C subset. The lack of these things in real-world C++ environments until 2000 or so was *incredibly* damaging.

    124. Re:Pffft. by Anonymous Coward · · Score: 1

      (Some argue that functional languages will magically run N times faster on N CPUs because they lack side effects. I don't buy it. If it were true, functional languages would have dominated performance rankings years ago.)

      In reality, automatically parallelizing functional languages turns out to be very difficult, which contradicts the general rule of "always trust the compiler above the programmer for optimizations" (as 99% of the time, the compiler knows better). Instead, imperative languages have been slowly gaining functional features (ex. lambda functions and LINQ) so you can use them when you need them. Personally, I would much rather code in Haskell, but I am happy to have support for functional style (i.e. doing everything with immutable data structures) in C# and to a lesser extent in Java.

    125. Re:Pffft. by Anonymous Coward · · Score: 0

      But when templates were added everyone stopped doing OO and did generics. Once you have generics it's extremely hard to start subtyping. Used badly most of the time, and the chief cause of bloat because people use it for rapid prototyping. Ie, don't reinvent the wheel if you can force an STL type into something it's not suited for style of thinking. Generics basically means you make a full duplicate for each instantiation, it's source code sharing but not object code sharing.
      There were strings before templates and generics basically give you wide string mostly which isn't a big win over multibyte, and there was a library before templates, maybe not standard but C++ wasn't standardized then either. And once you get heavy use of templates the code because almost unreadable if you're not an expert and the error messages become very obtuse.

    126. Re:Pffft. by CodeBuster · · Score: 1

      For system-level native tasks, C is better.

      Which are becoming less and less relevant as time goes on or, if you prefer, relegated to performance critical niches. Witness the rise of virtualization, cloud and grid computing and other abstract methods of computing. After a certain point bit shifting, pointer arithmetic, manual memory management and other low level operations are less and less essential and show up only where program logic dictates and not as necessary, but unrelated, adjuncts to other common programming tasks. In the virtualized computing world that we are moving towards, the advantages of abstract virtual machine languages, like Java and the .NET languages, with their massive libraries become more and more apparent.

    127. Re:Pffft. by Anonymous Coward · · Score: 0

      And it does not offer features that make system programming (and even more microcontroller) bearable: fixed-size int*_t types and designated initialisers.
      Your idea of C seems to be stuck at C89 without any warnings/error options for the compiler or any other extensions.

    128. Re:Pffft. by dkf · · Score: 1

      There is no reason to use C rather than C++ besides programmer familiarity or compiler availability.

      And ease of deployment. It's significantly easier to deploy and maintain deployments of C apps than for C++ due to the fact that there is less entanglement across the boundaries of libraries. This perhaps isn't so important a consideration for developers working on early versions of the code, but it sure matters down the line.

      The problem is particularly acute when you've got a class in a public API that the caller is supposed to create and where any of its fields (including those of superclasses) are not part of the API. To see why this bites, suppose the object is allocated on the stack. That means that it has the size of slot in the stack allocated to be the size that the object was at the time of allocation, which in turn means that future versions of the library (that have an extra private field) will do a stack smash. Lovely! You can work around this of course (e.g., by keeping private parts in a heap-allocated object) but they really make everything much less elegant.

      In C, you'd always use the heap for this sort of thing and would just put the allocation in a function in the API. Like that, client code would never need to change at all as the library is updated: it's just so much easier to make a stable ABI with C, and it all comes down to exactly where the responsibility lies. (Yes, there's a small performance cost to this, but it does not seem significant in practice.) Techniques like this have been used to keep real deployed code working for over 10 years despite many updates.

      But before you take me wrong, understand that you can do this with many other languages too (and a lot of the rest simply don't need it). The issue is with C++ and especially with the ways that are presented as idiomatic uses of C++; some of the costs of those techniques are rather hidden but very real.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    129. Re:Pffft. by dkf · · Score: 1

      Fortran's long been known to perform math calculations better than most other languages (though that may not still be true).

      I suspect that has to do with how it lays out matrices (and other higher-dimensioned arrays) in memory, as a single contiguous memory block. Doing so in C or C++ requires doing the index arithmetic yourself, as their native higher-dimensioned arrays are implemented in a different way (more pointers, more flexibility, more cost). Nobody's really done that much comparison with anything else, though I'd suspect that both Java and C# could do quite well too as the extra costs of their runtimes won't matter too much for large-scale math work. Assuming the index arithmetic trick is used, of course. (Python's Numpy just hands off to a lower-level language for this work, which is fine but takes it out of this particular comparison.)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    130. Re:Pffft. by Anonymous Coward · · Score: 0

      I thought Lisp was one of the most multi-paradigm/paradigm-agnostic languages out there (imperative, object-oriented, functional, etc.)

    131. Re:Pffft. by Anonymous Coward · · Score: 0

      Fortran is really easy to program in. Fortran-77 is very similar to BASIC, with an addition of some math functions and an inherent complex number variable type.

    132. Re:Pffft. by master_p · · Score: 1

      D sucks because it is not consistent and orthogonal. It has many overlappng features and shutting off the garbage collector means half of the language does not work.

      Erlang sucks because it lacks some important features like structs (Erlang records are single-linked lists), pointers, and fast native types, and its prolog-like syntax is extremely awkward.

      Haskell sucks because lazy evaluation makes it extremely difficult to create code with predictable performance, and it also sucks because the more complex the problem to solve is, the more pure functional programming becomes a giant mental puzzle. When your haskell program compiles, it is great, and most propably defect-free (within reasonable limits), but getting it to compile may be extremely difficult mentally, some times.

      What the world needs is a C successor: a language that is as close to the metal as possible but also modernized, i.e. to contain all the high level features that are important, as well as good syntax and a modern toolchain.

      Those two requirements (being close to the metal and also high level) are not incompatible. There are already steps in this direction: c++0x, D 2.0, Rust, Closure.

    133. Re:Pffft. by master_p · · Score: 1

      Furthermore, neither C# or Java have an advantage over C++ regarding object-oriented code.

    134. Re:Pffft. by sensei+moreh · · Score: 1

      How much experience do you need, beyond an understanding of K&R syntax, to be an effective C programmer?

      Very little. I'm certainly an effective C programmer; I can write programs that do what I need to do. The important question to ask would be, am I a good C programmer? I'll plead the 5th on that one.

      --
      Geology - it's not rocket science; it's rock science
    135. Re:Pffft. by GuB-42 · · Score: 1

      Do you think OO programming is closer to how the hardware works?

      Yes, in fact you can do OO programming in C or assembler, it is not very convenient but it is humanly possible.

      An object is just a data structure.
      A method is just a function taking an additional parameter, which is a pointer to a data structure.
      A virtual method is just a function pointer inside an data structure.
      A subclass is just the superclass with additional data at the end.

    136. Re:Pffft. by Lennie · · Score: 1

      You mean Javascript is a functional programming language in sheepsclothing and it is one of the most used languages. (although many people don't really understand the language and use it wrong, thus also a very much 'abused language')

      --
      New things are always on the horizon
    137. Re:Pffft. by Anonymous Coward · · Score: 0

      You do realize that Java also allocates everything on the heap. Moreover, the difference in representation between a closure and an object really isn't that big: closures require possibly more complex lookup of variables in the environment (which is also required for Java's inner classes); objects require possibly more complex of method pointers in the class hierarchy. Neither of these structures map directly onto hardware stacks, which is why there is compilation involved.

    138. Re:Pffft. by 9jack9 · · Score: 1

      I can't find references to Scribe on Google

      Did you try www.google.com/search?q=scribe+word+processing?

    139. Re:Pffft. by Anonymous Coward · · Score: 0

      Only language we ever needed was C. You putzes just aren't using it right. /flamebait friday!

      I very much agree with this, even though it is tongue in cheek. C/C++/ObjectiveC is a good language for both low level, and high level. If one needs to, just write modules on it that one can use. Instead, we have a real proliferation of languages and scripts that confuse the hell out of me - Basic, Fortran, Pascal, Perl, Bison, Java, Javascript, .NET, C#, Python, Ruby, PHP, ASP, MVC, ASP, Ajax, Roo, Swing, Sinatra, Rails, SGML, HTML, XML, XHTML, QML, Qt, GTK, ECMAScript, Jenkins, and God knows how many more?

      And Neil McAllister thinks it's not enough? Seriously, can anybody learn all the above languages?

    140. Re:Pffft. by Anonymous Coward · · Score: 0

      totally agree, but I would probably chose other tree languages: C++ python and Haskell

      http://komap.wordpress.com/wp-admin/post.php?post=47&action=edit

    141. Re:Pffft. by unixisc · · Score: 1

      Assembly? Only language we ever needed was machine code - 0s & 1s - b'cos ultimately, that's all that the machine recognizes

    142. Re:Pffft. by im3w1l · · Score: 1

      On a related note, wouldn't a "pure" keyword for functions be sweet?

    143. Re:Pffft. by Hentes · · Score: 1

      I hate to brake it for you but OO is not exclusive to imperative programming, so saying that OO languages are better than functional ones is pointless, as many functional languages have object support.

    144. Re:Pffft. by nullhero · · Score: 1

      Hear Hear! If you need a new language learn C make a new yourself, and keep it to yourself!!

      --
      Save Pangaea!! Stop Continental Drift!!
    145. Re:Pffft. by Hentes · · Score: 1

      Limiting yourself to a functional paradigm has benefits. You can use equational reasoning about code, and the compiler can perform more vigorous optimizations. Plus, for those of us who program for fun, it's...well...fun!

      In Haskell it seems there is always something more to learn. Feature or bug, you decide.

      I agree that if you are coding for fun they are the best choice, but the problem is that fun comes from overcoming challenges. And when a programming language is challenging in itself, it's not the best for big projects.

      Lisp (+ descendants), Haskell, and OCaml have compilers that have shown themselves to produce code which is rather fast.

      While Lisp is very fast, the same is not true for Haskell, which in my experience is considerably slower than Python.

      Minimizing execution time and memory usage aren't always the main requirements for a program. Functional programming is well suited for guarantees of correctness, for example.

      That is actually true, which is why functional programming is used in many areas where correctness is a must. But that's a narrow userbase.

      I think the main problem with functional programming is that it's better suited for numerical calculations, while imperative programming is better suited for handling data. And in most applications, the majority of the tasks is data shuffling.

    146. Re:Pffft. by Waffle+Iron · · Score: 1

      You do realize that Java also allocates everything on the heap.

      False. Java has the annoying and inelegant primitive/object dichotomy specifically to avoid that scenario. And it employs complex compiler tricks to allocate some objects on the stack if it can prove that they're unused outside the current block.

      Java is also routinely criticized as being too removed from the hardware, and its performance is a mixed bag, so it's not a very good example of a counterpoint to functional bloat.

    147. Re:Pffft. by lsatenstein · · Score: 1

      I second your comment and observation. C with some great gui libraries, and say good bye to code bloat.

      --
      Leslie Satenstein Montreal Quebec Canada
    148. Re:Pffft. by lsatenstein · · Score: 1

      Here is my take. Prototype your application in the code-bloat language of your choice, then redo it, section by section in C.

      And choose the heaviest overhead section last, not first. It is probably the most crucial, and needs careful dissection.

      I have C skills (I have been designing and programming since 1970), both object oriented, Pascal type languages, Cobol and assembler. Both high and low level languages.

      --
      Leslie Satenstein Montreal Quebec Canada
    149. Re:Pffft. by tqk · · Score: 1

      Fortran's long been known to perform math calculations better than most other languages (though that may not still be true).

      I suspect that has to do with how it lays out matrices (and other higher-dimensioned arrays) in memory, as a single contiguous memory block. Doing so in C or C++ requires doing the index arithmetic yourself, as their native higher-dimensioned arrays are implemented in a different way (more pointers, more flexibility, more cost).

      Which leads me back to my original point. Eg., why bother handling matrices in C/C++ if FNN does it better/simpler? This doesn't even need to involve the compiler writers. Any programmer ought to be able to call an object to handle an entity passed to it, assuming they understand how that object needs to be called.

      make(1) can stitch it all together. Once you know that some_function() works for what you want to do, just effin' use it and ignore how it was implemented.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    150. Re:Pffft. by xophos · · Score: 1

      Why does everyone nowadays seem to think that WYSIWYG is an improvement over a simple descriptive readable language?

    151. Re:Pffft. by Forever+Wondering · · Score: 1

      They aren't widely used though, in the projects I've seen (except the Linux kernel). Part of my job is to replace ugly, unsafe multi-line macros with inline functions ... something which was only made possible earlier this year (2011), when we ditched our last C compiler which didn't understand C99.

      I use a #define to abstract the inline (e.g. #define myinline extern inline) and ifdef it away if the compiler doesn't support it. For my personal stuff, I had (and still have a few stragglers) of large (pre-inline) macros, and I replace them with inlines whenever I find them. BTW, what compiler didn't have the inlines?

      Which brings us back to part of TFA: it's hard to change a language which is widely used, and harder to make the programmers use the new stuff. (Personally I still think it's the way to go.)

      I think the real point here is the programmers. A good programmer will be able to use the features of any language and produce good code. A bad programmer will take the same features and screw things up. At my last job, everybody was waxing on about using C++. But, they all used it as straight C. No class definitions, only structs. And, when one programmer actually used inheritance on one class (no templates or abstract virtual anything), one of the other programmers starting complaining about not using "confusing features".

      We used to do OO programming in assembler in the 70's. IBM mainframes had 16 GP registers and the assembler had a DSECT directive that was the equivalent of a struct. Another directive was USING. So, if you had a dsect named "myblock" that had a data element named "mydata", you could specify "using myblock,r10". Then, you could just refer to "mydata" without any base register (e.g. move 5,mydata). This is just like mydata being a class element in a member function.

      --
      Like a good neighbor, fsck is there ...
    152. Re:Pffft. by shutdown+-p+now · · Score: 1

      Yes, though sweeter still would be when the language would actually enforce it, and also use it to optimize. As it is, e.g. .NET has it as an attribute, but it's only used to indicate that the method in question is safe to use in contracts.

    153. Re:Pffft. by shutdown+-p+now · · Score: 1

      Sorry, botched the link in my other post. Here is what I was referring to.

    154. Re:Pffft. by jd · · Score: 1

      Dunno, which is why I use LaTeX in a text editor, but my point is that WYSIWYG is old and early implementations of it were no worse - and sometimes better - than modern implementations. I'm not keen on WYSIWYM (eg: LyX) either - I don't need to write programs as if they were running and seriously doubt you could write a good program that way anyway, writing a document that way is just as illogical. (Hands up all who think DreamWeaver is Evil Incarnate. Hands up all who use Office and the Microsoft "HTML Printer" to write web pages. My guess is that almost nobody uses WYSIWYG for anything other than cleaning a document up after it has been written, drafted and largely finalized.)

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    155. Re:Pffft. by Forever+Wondering · · Score: 1

      For system-level native tasks, C is better.

      As C is a subset of C++, it can't possibly be better. Every C program can be written in C++.

      That is simply not correct. For mission critical, realtime, you spend more time ensuring that the C++ doesn't generate code you don't want. To do that, you have to disassemble the code to be sure. For OS's, there are things that you _have_ to do were you need precision control that C++ can _not_ provide. That is why there is some effort afoot to come up with a standard for a C++ _subset_ for realtime (If I recall correctly, it will omit copy constructors, for example).

      --
      Like a good neighbor, fsck is there ...
    156. Re:Pffft. by Forever+Wondering · · Score: 1

      Only language we ever needed was punchcards. You putzes just aren't using it right.

      I've actually used punchcards ...

      Only language we ever needed was plugboards. You putzes just aren't using it right.

      --
      Like a good neighbor, fsck is there ...
    157. Re:Pffft. by Forever+Wondering · · Score: 1

      Only language we ever needed was vacuum tubes. You putzes just aren't using it right.

      Only language we ever needed was Jacquard looms. You putzes just aren't using it right.

      --
      Like a good neighbor, fsck is there ...
    158. Re:Pffft. by Forever+Wondering · · Score: 1

      Assembly? Only language we ever needed was machine code - 0s & 1s - b'cos ultimately, that's all that the machine recognizes

      I've written scores of assembly. Machine code? You're a better man than I am, Gunga Din ...

      --
      Like a good neighbor, fsck is there ...
    159. Re:Pffft. by Anonymous Coward · · Score: 0

      Simplicity is the highest form of sophistication. C++ added to much if you ask me. Some C++ programs are, to me, very difficult to understand. Inline functions, friend classes, multiple inheritance, etc. are solutions to problems that occur so infrequently that it is not justified to let them obscure a language. I find C awesome precisely because it is simple; adding stuff, like C++ did, does not improve it.

    160. Re:Pffft. by bar-agent · · Score: 1

      Common Lisp (and Scheme, even more so, although the community is more oriented toward impure functional style) enforces no fixed paradigm.

      And if Common Lisp and Scheme are both too foreign, there's Dylan: best parts of all of them, more easily optimized and compilable, and syntax from the Algol/Pascal part of the world to boot.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    161. Re:Pffft. by I+AOk · · Score: 1

      (Some argue that functional languages will magically run N times faster on N CPUs because they lack side effects. I don't buy it. If it were true, functional languages would have dominated performance rankings years ago.)

      Erlang does a great job in this respect (at least it did for Ericsson), but nowadays what people know as functional languages are the script-oriented ones like Ruby that carry a monumental runtime overhead with them.

      Now, you just throw big piles of hardware at the problem, and the last programmers that care for performance are targetting microcontrolers, where C is king (I doubt they know any other languages, really...) -- save for those CS types that actually learned how to program, but that is a rant for another time, not for my first post in /..

      --
      [iconv --from-code=utf-7]
    162. Re:Pffft. by brantondaveperson · · Score: 1

      Yeah - but whenever I come across any C code that's moderately well-structured it always ends up re-inventing C++ constructs. Like objects, and constructors and destructors and so-on. Except of course each project does this type of thing in its own way, sometimes using the preprocessor, sometimes not, etc etc. The code generated is exactly the same as if the programmer had chosen C++, but the code is far less readable (and less maintainable) than the C++ version.

      And in what sense are inline functions hard to understand? Multiple inheritance is simple. Friend classes should be avoided, like gotos, but sometimes you just wind up needing them (unlike goto's :) ). Templates are functional programming, and are hugely powerful. Why on earth would you want to code without the standard template library? I've written enough linked list classes to last a lifetime, thanks very much.

      This irrational fear/hatred of C++ is something that in my 15 years of C++ development I have never understood. When I first saw C (after hobbying in basic as a kid) I was overwhelmed by its power and expressiveness. The same sensation occurred a few years later when I was introduced to C++. Perhaps you should invest some time in learning C++ so that things like inline (which I'm pretty sure exists in C also, BTW) and friends and so-on are no longer so baffling to you.

    163. Re:Pffft. by Anthony+Mouse · · Score: 1

      It depends on the code. If the existing code was written by competent people who didn't do a perfect job because they were too pressed for time, and it mostly works, even if it's full of ugly kludges and runs too slowly, you can probably fix it. If it was written by imbeciles under the direction of a committee of PHBs and crashes arbitrarily for unfathomable reasons, throw it away.

    164. Re:Pffft. by Guy+Harris · · Score: 1

      Yes, some CPUs separate the stack model into an Independent instruction or two applied to an arbitrary register. Yet no CPU has a kind of register or instruction that easily implements a closure's upvalues, nor any of the more esoteric concepts commonly found in functional languages.

      So what about general-purpose registers makes it difficult for them to implement those concepts (by "[implement] a closure's upvalues" I presume you mean "implement a pointer to a collection of a closure's upvalues")?

    165. Re:Pffft. by Anonymous Coward · · Score: 0

      I hate to brake it for you but OO is not exclusive to imperative programming, so saying that OO languages are better than functional ones is pointless, as many functional languages have object support.

      No, no, OO and pure FP are incompatible on the fundamental level, so there is a point in assessing which one is better.

    166. Re:Pffft. by Waffle+Iron · · Score: 1

      So what about general-purpose registers makes it difficult for them to implement those concepts

      It takes more than a register and one instruction to implement heap allocation, lifetime management and garbage collection.

    167. Re:Pffft. by David+Greene · · Score: 1

      Wait a minute, your other post claimed that the paradigm didn't matter.

      In the large, that's true. One can make a perfectly fine imperative language that compilers will love. It just happens to be that K&R didn't do that.

      well-written code that can work on both will compile to smaller, faster code using the more modern compiler.

      Well of course. The more modern compiler has decades of research to exploit. That doesn't change the fact that the Fortran aliasing rules were deliberately designed to be compiler-friendly.

      Your claim, if taken literally, is that the first variable is absolute zero.

      You're being absolutist. No, it's not absolute zero. But the advances in general program analysis and transformation dwarf the advances of understanding how to exploit a particular language's semantics, especially a language whose fundamental semantics haven't changed much in 20 years. Much of the current whole-program advances, for example, simply wouldn't have been practical 10 years ago due to hardware resource limitations.

      My experience is that GCC

      GCC is a poor optimizing compiler. In certain cases it can beat other compilers but it's pretty rare. That's not a knock on GCC, BTW. The GCC project's focus is different from, say, HPC compilers.

      It's very difficult to compare compilers. The best way to do it is to find the set of options for each compiler on a particular code that performs best. Then compare the performance you can squeeze out of each compiler. This is very labor-intensive work. It can require thousands of experiments on codes that take hours or days to compile. So I very much doubt anyone can say anything about the relative "goodness" of the compilers you've listed.

      Does experience with a language matter? Sure. But general analysis and transformation improvements matter more.

      --

    168. Re:Pffft. by David+Greene · · Score: 1

      so it's relatively easy (emphasis on relatively) to design programs that will be fast on a given hardware platform

      Tell that to anyone trying to get their C code to perform on vector hardware. The aliasing rules kill it. Things like restrict help but it requires the programmer to check all the call sites and add the keyword when possible.

      you lose a lot in the translation of higher-order concepts to machine language

      Not really. It depends on the semantics of the language. C++ can often perform better than C even though it is at a slightly higher level of abstraction. That's because the semantics (particularly around templates) are compiler-friendly. C++ retains higher-level information (primarily typing) than C, so the compiler can exploit that to perform transformations it couldn't do on an equivalent C code.

      The short story is, "let the compiler do the optimization" has never been the answer to generating fast code.

      I've got a couple decades of compiler design and writing experience under my belt and given that experience, I can state pretty definitively that the above statement is hogwash. Of course one can always find examples where the compiler missed something (compiler writers are human!) but I've seen many, many, many examples where the programmer tried to "help" the compiler and destroyed the semantic information available to the compiler, making program transformation impossible. A typical example is taking multi-dimensional array expressions and hand-linearizing them into pointer arithmetic. I weep every time I see that.

      --

    169. Re:Pffft. by Guy+Harris · · Score: 1

      So what about general-purpose registers makes it difficult for them to implement those concepts

      It takes more than a register and one instruction to implement heap allocation, lifetime management and garbage collection.

      ...which is why I asked; it's not as if a register can arrange to keep the upvalues around all by itself. Your most recent reply seems to say that it's not easy to implement a closure, register/instruction or no register/instruction, so perhaps the problem isn't that no CPU has a kind of register or instruction that easily implements a closure's upvalues - a special register or instruction might not help much, if at all.

    170. Re:Pffft. by marcosdumay · · Score: 1

      Here is a nice benchmark. It is interesting because it is based on a competition of "write the fastest program you can in language X", open to anybody and with a wide diversity of problems.

      Those results aren't unique to that benchmark. You can find several that get nearly the same figure by searching, but I coulnd't find any one that is better.

    171. Re:Pffft. by Tablizer · · Score: 1

      They are both Turing Complete such that each can be written in the other.

    172. Re:Pffft. by Pseudonym · · Score: 1

      So on those small artificial benchmarks, I did take a look to see how Haskell/GHC fared compared with GCC and G++. I still don't see anywhere near a 90% performance hit reported anywhere there.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    173. Re:Pffft. by Ramin_HAL9001 · · Score: 1

      I'll chime in with the correct answer. If we all programmed in Haskell or OCaml the world would be a better place. Lisp even.

      But I won't go on with a full rant. Functional programming is silently winning the war.

      So true. Thanks for posting before everyone else. If you don't understand why functional programming is the most important programming paradigm in history, you are doomed. I am so sick of hearing about new languages that aren't functional, as if there weren't enough useless programming languages out there.

    174. Re:Pffft. by Yttrill · · Score: 1

      Unfortunately I doubt D will achieve this. It started out with a false premise: that classes and OO were central. Consider Felix instead: uses the C object model, binds easily to C libraries and most C++, has heavy support for functional programming despite being imperative .. oh .. and there's no OO. It's a scripting language that compiles down to machine binaries with high level optimisations sometimes delivering better performance than C.

    175. Re:Pffft. by Yttrill · · Score: 1

      Because it was designed by a smart politician so you could adopt it, keep all your old code and ideas, and learn to use the new features at your own pace .. aka "upward compatibility" not just of syntax, but object model and thinking. It allows one or more paradigm shifts .. as opposed to a complete break. The software development industry is intrinsically ultra-conservative: if you don't design for that, you're bound to fail. The cost is overwhelming complexity, unreadable code, and mangled up half working concepts. The lesson of C++ is that C was a badly broken language in the first place, teetering on the edge of being operational, with every C++ extension showing up flaws in the core by breaking it.

    176. Re:Pffft. by Yttrill · · Score: 1

      You clearly don't have a CS background, but rather are a programmer. If you understand the fundamentals you're not going to be "stupid" in any language. .

      You clearly don't have a programming background, but rather are an academic. If you understood the fundamentals you'd know that learning a programming language library is the primary impediment.

    177. Re:Pffft. by Hentes · · Score: 1

      Yes but a C program can run in C++ with minimal rewriting.

    178. Re:Pffft. by Anonymous Coward · · Score: 0

      I grew up tinkering in BASIC and when I went to college I had the good/bad fortune to take a Fortran class.

      BASIC allows easy run-time data allocation (i.e. DIM). Attempting this in Fortran proved to be a nightmare and usually resulted in mysterious and hard-to-debug errors.

    179. Re:Pffft. by Wrath0fb0b · · Score: 1

      Loops imply you're doing things one at a time. map() doesn't imply that, which means your code can never assume it, which means the next version of your compiler might realize it doesn't have to happen that way.

      Uh, in Python you can be assured that map(func,seq) does things one at a time. For instance, you could write:

      socket = GetASocket()
      data = GetSomeData()
      map(lambda x: socket.send(x), data)

      And you are assured that the no more than one instance of socket.send is in flight at any one point. Think about it for a sec, if map(func,seq) meant that any number of function calls cold be dispatched, you would need to write a massive quantity of locking code whenever those functions touch state. Consider this:

      class DataProcessor:
          def __init__(self):
              self.processedCount = 0
       
          def Process(self, datum):
      /* some implementation */
              self.processedCount += datum.entryCount
       
      data = SomeData()
      processor = DataProcessor()
      map(processor.Process, data)

      Oops! Now you need to lock and unlock the self.processedCount line! Except you don't, because it would be absurd for the language to start calling more than one Process at the same time!

    180. Re:Pffft. by DragonWriter · · Score: 1

      How long do you think it would take you to become proficient in COBOL, RPG2, Ada or LISP, if all you knew was Java and C?

      Substantially less time than it would take me if I didn't know Java and C, and significantly more time than if I already knew Pascal, C, C++, Java, Ruby, and Python, and a bunch of other languages.

      Certainly, my experience has been that the more languages I've learned, the easier it is to pick up new ones.

    181. Re:Pffft. by drb226 · · Score: 1

      [Haskell] in my experience is considerably slower than Python.

      I have serious doubts about your experience

      Functional programming is...better suited for numerical calculations, while imperative programming is better suited for handling data.

      I again have doubts; for absolute performance on true number crunching, imperative is probably better. And for "handling data", imho FP shines brighter; imperative approaches to manipulating complex data are much more error-prone.

      Despite what I've said, I think we generally agree on most things.

    182. Re:Pffft. by rufty_tufty · · Score: 1

      Depends, IME 90% feels about right.
      But then that is experience of Symbian, VxWorks and Android so on.
      Several layers of user abstraction per program on top of architecture abstraction on top of tool kit on top of adaption layer on top of libraries on top of upper layer of OS on top of OS on top of HAL on top of drivers on top of language overhead. Many of those having several layers per stage I missed out. Yes at times the user level drills down to the metal, but IME (as a hardware engineer) it seems to be the exception.
      Seriously, why else would you need a multi core multi GHz processor to run a quite simple UI? Especially when the hardware is doing most of the heavy lifting?

      --
      "The weirdest thing about a mind, is that every answer that you find, is the basis of a brand new cliche" -
    183. Re:Pffft. by Anonymous Coward · · Score: 0

      I have seen COBOL code that had GOTOs over the nearest labels, simply because the inheritors of the code base reinvented the wheel, due to a lack of understanding of the existing code. Scarily, this accounted for nearly 8 kloc of a 15 kloc system. Never used. We determined this with a simple c program, designed to trace the calls. This is not merely a COBOL thing, but rather what you said, Pond, about the original developers being gone.

    184. Re:Pffft. by Anonymous Coward · · Score: 0

      It's not about FP languages. It's about understanding the paradigms, such as tail-call elimination and recursion. When the compiler or interpreter is crafted well, then FP implements quite nicely. But then again, what is your design style? Monolithic? Contract-based? Component-oriented? Is your approach to a project Waterfall or Agile? What is the domain of the task at hand? What is its expected duration, and what is its life cycle?

      OO is a philosophy. Apply it where it is best needed, not as a computational panacea.

  2. No, we don't by Anonymous Coward · · Score: 5, Funny

    Obligatory XKCD. http://xkcd.com/927/

    1. Re:No, we don't by Anonymous Coward · · Score: 0

      ...finally an XKDC link that kind of makes sense...

    2. Re:No, we don't by Neurotrace · · Score: 1

      Exactly. Not to mention, if we just phase out these languages in place of new languages then what happens after you've learned your nth new language and now you have to maintain some code written in an "old" language?

    3. Re:No, we don't by the+linux+geek · · Score: 1

      Then you display adaptability. I know that's difficult for some people.

    4. Re:No, we don't by the+linux+geek · · Score: 0, Flamebait

      Fuck xkcd. That's stupid and totally irrelevant. Nobody is trying to make a "standard" programming language for all things and situations, and nobody has ever tried since Java and ALGOL 68.

    5. Re:No, we don't by DragonWriter · · Score: 1

      Not to mention, if we just phase out these languages in place of new languages then what happens after you've learned your nth new language and now you have to maintain some code written in an "old" language?

      McAllister doesn't argue for phasing out languages, and, IME, once you've learned a couple languages using a particular broad paradigm, its pretty easy to pick up other languages using a similar paradigm, and it improves your ability with programming even with the languages you learned earlier.

      So I don't think this is really a problem.

    6. Re:No, we don't by smillie · · Score: 1

      I take it you don't know about ADA...

      --

      Dyslexics Untie!

    7. Re:No, we don't by Anonymous Coward · · Score: 0

      What about ADA 2005 ?

    8. Re:No, we don't by Anonymous Coward · · Score: 0

      http://xkcd.com/568/

      Second panel.

    9. Re:No, we don't by Anonymous Coward · · Score: 0

      It's "Ada", not "ADA".
      It's not an acronym. It's a proper name. A lady's name. The name of the first computer programmer. Well, she would have been, if Babbage had ever gotten his engine to work.

  3. Just Let the Dinosaurs Die by eldavojohn · · Score: 1

    'But once a language reaches a certain tipping point of popularity, overhauling it to include support for new features, paradigms, and patterns is easier said than done.' PHP 6, Perl 6, Python 3, ECMAScript 4 — 'the lesson from all of these examples is clear: Programming languages move slowly, and the more popular a language is, the slower it moves.

    What's wrong, Slashdot? Where's the editorializing?

    It's interesting that Google took part in abandoning ECMAScript 4, which would have been almost fully backward compatible with current implementations while solving most of the "fundamental problems" Google claims require a brand new language to fix.

    Seriously I'm sick and tired of defending new languages like Clojure, Go, Dart, Ruby, etc. I'm just going to shut up and let the dinosaurs stagnate and get stuck maintaining all the old code for the rest of their unenjoyable never changing ruts.

    --
    My work here is dung.
    1. Re:Just Let the Dinosaurs Die by Anonymous Coward · · Score: 1

      " I'm just going to shut up and let the dinosaurs stagnate and get stuck maintaining all the old code for the rest of their unenjoyable never changing ruts."

      Also known as "having a job".

    2. Re:Just Let the Dinosaurs Die by Anonymous Coward · · Score: 0

      I always enjoy watching each language body and its users realize "oh... they had (thing which we thought was unnecessary) to solve this problem..."

    3. Re:Just Let the Dinosaurs Die by bonch · · Score: 4, Interesting

      Seriously I'm sick and tired of defending new languages like Clojure, Go, Dart, Ruby, etc. I'm just going to shut up and let the dinosaurs stagnate and get stuck maintaining all the old code for the rest of their unenjoyable never changing ruts.

      Your criticisms seems to be based solely on whether or not code is old. If the code works, why is that even a consideration for you? Does it have to be new code to be any good? I hope you're aware of how silly that sounds.

      As for languages like Clojure, Go, Dart, and Ruby, those languages have deficiencies that warrant legitimate criticism. If you're sick and tired of defending them, don't read anything on the internet, because you'll never completely avoid criticism of things you like.

    4. Re:Just Let the Dinosaurs Die by marcosdumay · · Score: 1

      Just remember that your efficiency sets the upper bound of your salary.

    5. Re:Just Let the Dinosaurs Die by DrVxD · · Score: 1

      As for languages like Clojure, Go, Dart, and Ruby, those languages have deficiencies that warrant legitimate criticism.

      Nods vigorously - although that's actually true of every language I've ever used (and there's been a lot of them in my 30-something years as a developer).

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    6. Re:Just Let the Dinosaurs Die by benhattman · · Score: 1

      Seriously I'm sick and tired of defending new languages like Clojure, Go, Dart, Ruby, etc. I'm just going to shut up and let the dinosaurs stagnate and get stuck maintaining all the old code for the rest of their unenjoyable never changing ruts.

      Your criticisms seems to be based solely on whether or not code is old. If the code works, why is that even a consideration for you? Does it have to be new code to be any good? I hope you're aware of how silly that sounds.

      As for languages like Clojure, Go, Dart, and Ruby, those languages have deficiencies that warrant legitimate criticism. If you're sick and tired of defending them, don't read anything on the internet, because you'll never completely avoid criticism of things you like.

      Not only that, but there are certain obvious advantages to using a really fricking old language. Perl is old, and I don't like it, but if you want to do something scritpy it's probably already implemented in Perl. If you want to be hip, use Clojure. If you want to get some work done, use a language that has been popular for at least a decade (I don't care very much which one).

  4. Runs anywhere by Allicorn · · Score: 1

    Easier != Better

    --
    OMG!!! Ponies!!!
    1. Re:Runs anywhere by seandhi · · Score: 1

      Except when it does.

    2. Re:Runs anywhere by Chrisq · · Score: 3, Funny

      Easier != Better

      Except when it does.

      That's the case with women and emergency exits.

    3. Re:Runs anywhere by seandhi · · Score: 1

      And money...

  5. All you need is PERL by cod3r_ · · Score: 0

    and C#

    1. Re:All you need is PERL by ackthpt · · Score: 2

      and C#

      And something client side. Something better than Javascript.

      --

      A feeling of having made the same mistake before: Deja Foobar
    2. Re:All you need is PERL by DrVxD · · Score: 1

      and C#

      Why? Perl gives you way more than enough rope to hang yourself with

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  6. Google's Go by Anonymous Coward · · Score: 0

    Don't really agree. Just look at the popularity of "Go".. if you don't know what it is try googling it, oh yeah....

  7. The reason by bonch · · Score: 4, Interesting

    The reason popular languages move more slowly is because established codebases use them. Backwards compatibility is a good thing. If C++ was radically changing all the time, code that compiled a year ago wouldn't run anymore. Stability and predictability are just as important, if not more so, than radical change when it comes to real-world development.

    1. Re:The reason by DragonWriter · · Score: 1

      The reason popular languages move more slowly is because established codebases use them. Backwards compatibility is a good thing.

      I don't think anyone is arguing against that. I think the point McAllister is making is that without new languages, progress would stall. I don't think McAllister is saying that the conservatism of well-established languages is a bad thing in and of itself, just that it means that progress requires new languages. McAllister explains that this is because newer languages are freer to innovate than slow-changing established languages, but I'd go further and note that most of the changes that do make it into established languages are generally the results of those elements being proven in less conservative languages and then bubbling up to the slower-moving languages. Without newer languages as a source of innovation, there wouldn't even be the progress there is in established languages.

    2. Re:The reason by Anonymous Coward · · Score: 0

      This, and there is another factor: code cost. If you are a company, you need to hire programmers (and if you run a free software project you need to find people with the skills and spare time). When the language is niche, or hard to grasp, or tedious, code cost goes up. This is why code in languages like VB, C# and Java is cheap, code in C++ is somewhat expensive and code in a new language potentially prohibitively expensive. If you're lucky it could gain traction, but there are a lot of niche languages out there that didn't.

    3. Re:The reason by bonch · · Score: 1, Insightful

      I have to respectfully disagree that progress would stall if there weren't new languages all the time. One can't help but wonder what progress would be made if the effort spent in trendy languages was invested in established languages. If a concept is good, it will appear in whatever the languages the industry is actually using, regardless of whether or not a trendy new language implemented it first. That said, testbeds are certainly a good thing to have.

    4. Re:The reason by Alex+Belits · · Score: 1

      The cost of development mostly depends on quality expected. "Easier" languages merely enable incompetent people to write software, so worse software can be developed with them, and incompetent people usually work for peanuts.

      --
      Contrary to the popular belief, there indeed is no God.
    5. Re:The reason by mevets · · Score: 3, Interesting

      You really have me there. I can't figure out if you are poking fun at c++'s inability to keep "hello, world" compatible between versions, or really think that c++ has some sort of track record in consistency.

      C++ is abhorrant; its author should have shot it long ago.

    6. Re:The reason by DragonWriter · · Score: 1

      If a concept is good, it will appear in whatever the languages the industry is actually using, regardless of whether or not a trendy new language implemented it first.

      No, it won't. Because if it hasn't been proven good someplace that has the freedom to implement new things without the legacy concerns that -- for very good reasons -- established languages carry, maintainers of established languages won't take the risk associated with implementing it.

      While algorithms -- which can be analytically and quantitatively shown to be superior to others in specified circumstances -- will certainly be adopted when discovered if they are are analytically shown to be good, the quality of programming constructs isn't usually something that can be analytically quantified (at least, in an unambiguous way), but instead must be demonstrated through practical application.

    7. Re:The reason by tomhudson · · Score: 2

      But choice is GOOD! The more choice the better! Look at the reason linux was able to step in the gap when Microsoft introduced Vista, going on to win the desktop wars! Linux won because of all the effort that was expended into making 619 different linux distros with 487 different desktops - there's GOT to be one for every type of user. Can't you see its the same with programming languages?

      Can you imaging what would have happened if all that effort had been concentrated in just one or two distros, and maybe 1 or two desktop environments? 99% of the market wouldn't have found anything useful! Why, Windows would still be #1, and Apple with their FreeBSD-based OS would have absolutely creamed Linux. Linux would have only had maybe 1% market share.

      And instead of the Free APP Internet Grand Distributed Open Group Share model (FAppInG DOGS), and the Universal Internet-Secure Adaptive Bittorrent Extensible Open Transfer Code Hive (aka U-IS-A-BEOTCH) to distribute everything everywhere for free, we'd have had developers leeching money - maybe even thousands of dollars a month if we count everyone - off of people by actually SELLING stuff through company stores from Apple and Microsoft. That would have totally turned the Cathedral vs Bazaar argument on its head! Worse, it would have invalidated BOTH models!

      We can't have that. Everyone knows that developers don't want to make money selling software - they only want to make money competing with everyone else trying to sell support for the original software they sweated and bled for! It's the only way!

      So please, get with the program, learn your new language of the week - it's the only way we'll continue to progress. After all, how else are you going to get people to soak up all those cpu cycles in their 16-core machines in 2016? Think of the POWER you'll wield when "Hello World!" takes up 4 cores!!!

      And if that's not enough, think of the children in 3rd-world countries who won't have their 16-hour-a-day jobs because people won't need to upgrade their hardware every 4 months! And all those people in eastern Europe and India who depend on being able to buy the latest O'Reilly book so companies can continue to outsource your job, giving you more leisure time!

      After all, not everyone can actually learn how to program ... so we need languages for the masses. If you throw enough different languages at some random text, ONE of them is bound to be able to compile it. After all, it worked for perl!

    8. Re:The reason by bonch · · Score: 1

      No, it won't. Because if it hasn't been proven good someplace that has the freedom to implement new things without the legacy concerns that -- for very good reasons -- established languages carry, maintainers of established languages won't take the risk associated with implementing it.

      You declare this with an unwarranted certainty.

    9. Re:The reason by Anonymous Coward · · Score: 0

      But choice is GOOD! The more choice the better!

      Some choice is good. Too much choice is not.

      Scenario A:

      You have a project with a set of requirements. You have three choices of programming language to use. You expend a week on each language to evaluate how well each language can be used to fulfill the requirements. Arguably, you have saved time overall by choosing the best language for the project.

      Scenario 2:

      You have three hundred programming languages to choose from. You expend just one day each on evaluating the languages. Seven months later, you choose a language. You have been working 80 hours per week but you haven’t even started the coding yet. And you are not certain that you have chosen the right language.

    10. Re:The reason by shutdown+-p+now · · Score: 1

      I can't figure out if you are poking fun at c++'s inability to keep "hello, world" compatible between versions

      Can you give an example of a "Hello world" written in standard C++ that would be incompatible "between versions" (whatever the hell that means)?

      To the best of my knowledge, last time anything that could possibly affect it happened was when they deprecated old C++ iostreams and replaced them with ISO ones. That was some time before 1998, when C++ became an ISO standard. Even so, many C++ implementations today still provide some form of the original iostreams for the sake of back-compat, so #include "iostream.h" will often work.

    11. Re:The reason by Anonymous Coward · · Score: 0

      The cost of development mostly depends on quality expected. "Easier" languages merely enable incompetent people to write software, so worse software can be developed with them, and incompetent people usually work for peanuts.

      By your measure people programming in C and C++ should be producing high quality near bug free code. The videogames industry would like to have a conversation with you on this topic.

    12. Re:The reason by shutdown+-p+now · · Score: 1

      The reason popular languages move more slowly is because established codebases use them. Backwards compatibility is a good thing. If C++ was radically changing all the time, code that compiled a year ago wouldn't run anymore.

      It's not impossible to evolve the language in a way that preserves backwards compatibility. Harder, yes, but definitely doable. Both Java and C# have been doing that, and both have introduced some major additions - like generics in Java, or lambdas in C#.

    13. Re:The reason by tomhudson · · Score: 1
      Of course, it's easy to do the evaluation in much less time. From the 300, subtract the 275 that I don't know, and spend an hour mulling over which of the rest would be the best fit. Total time expended: 1 hour.

      There's no real point in evaluating languages you don't know, because (1) you don't know them, so you're not in a position to do a proper evaluation, and (2) if you picked one you didn't know, you'd lose even more time learning it.

    14. Re:The reason by Alex+Belits · · Score: 1

      By your measure people programming in C and C++ should be producing high quality near bug free code.

      That should be s/programming/capable of programming/ .

      The videogames industry would like to have a conversation with you on this topic.

      Most videogame developers are not good programmers in the first place, some are outright incompetent, and all work in conditions not conducive for effective development (please note that "cost" I have mentioned also proportional to the time allocated for development). If they could use "easier" languages, games would be just as buggy.

      --
      Contrary to the popular belief, there indeed is no God.
    15. Re:The reason by man_of_mr_e · · Score: 1

      Many languages have evolved quite a bit over time. C#, for instance, has added numerous new features, ranging from generics to covariance, and adding entirely new dsl subsystems such as Linq. It's not just changed syntax either, but also core functionality, such as automatic properties, initializers, null coalescence, etc..

      All without breaking backwards compatibility. Granted, a lot of these features are largely syntactic sugar on functionality that was already there, but there's also a lot that's new.

    16. Re:The reason by benhattman · · Score: 1

      Absurd. 15 years ago that might have been the case, but since Y2K, C++ is pretty stable between versions and compilers. Most incompatibilities are warnings and not compiler errors. And, if you're doing it right you can write a C++ application without too much trouble and make it portable as well. It's not 1993 anymore.

    17. Re:The reason by brantondaveperson · · Score: 1

      Except what you seem to be really arguing there is that *less* choice is better. Because if those other 275 simply didn't exist, then there would be a wider pool of talent for you to draw on for your team. But having those 275 out there dilutes that pool, making it harder to find programmers.

      Of course most people use java/c/c++/c#/delphi for application development, so the actual choice is only from five.

    18. Re:The reason by tomhudson · · Score: 1
      Yes, I *am* arguing for less choice. Beyond a certain point, too much choice is sub-optimal, diverting resources. Whether it's 698 different linux distros, of the "programming language of the week", it sucks.

      It's not a question of a "wider pool of talent", but focusing on solving the real problems, rather than playing with the latest toy. Look at how ruby is dying for an example of an over-hypeds, poor-performing language.

  8. Just recycle the old ones .. by ackthpt · · Score: 4, Funny

    Algol for Web, COBOL beans, Object Oriented PL/1 ...

    --

    A feeling of having made the same mistake before: Deja Foobar
    1. Re:Just recycle the old ones .. by nirgle · · Score: 1

      Don't forget assembler on rails

    2. Re:Just recycle the old ones .. by Anonymous Coward · · Score: 0

      When I was in college, I've seen websites scripted using Ada...

    3. Re:Just recycle the old ones .. by iceaxe · · Score: 2

      I like my aspect oriented punch cards.

      --
      WALSTIB!
    4. Re:Just recycle the old ones .. by Anonymous Coward · · Score: 0

      This is marked funny, but COBOL 2002 supports OO and web services can be implemented in COBOL on IBM mainframes (IBM has tools that generate the code for parsing and emitting XML in COBOL).

  9. lets reconstitute the ADA committee by peter303 · · Score: 1

    Lets just say that languages designed by committees look that way.

    1. Re:lets reconstitute the ADA committee by mbkennel · · Score: 5, Insightful

      The Saturn V was designed by many committees.

      And for the time Ada is not a bad language at all, especially if you're mature enough to know that the quality of the result is more important than you.

    2. Re:lets reconstitute the ADA committee by Anonymous Coward · · Score: 2, Interesting

      We're about to let out an RFP and SOW for about 3-4 million lines of code in ADA. Not huge, but completely auditable to our certification standards. It might come back in some other language, but we're not interested in paying the added cost of auditing whatever language the winner picks. Yes, aerospace, safety of life critical failure sort of stuff. I'm not interested in the efficiencies of out of order execution or dereferencing; I want completely deterministic results.

    3. Re:lets reconstitute the ADA committee by Anonymous Coward · · Score: 3, Interesting

      I fully agree. While ADA is a joke for many people, I happen to know ADA quite well since I use it every day for my job in a Big Company. I know quite a few other languages ( from assembly to C++/C#, python and a few functional languages ), and no other language I've used can let me produce such stable & robust software.
      It manages to be easy to read, high-level while close to the metal when you need it to, has concurrency built-in and prevents you from shooting yourself in the head at least twice a day.

      If you're curious, try GNAT, the GNU Ada Compiler, which happens to be part of GCC. The concurrency model ( something akin to message passing ) alone is worth taking a look, especially if you've been bitten by pthreads, semaphores, mutexes and shared memory.

    4. Re:lets reconstitute the ADA committee by DrVxD · · Score: 1

      +1 "hitting the nail on the head"

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
  10. Use the right tool for the job by hoffmanjon · · Score: 3, Insightful

    Seriously, choices are always better. My tool (normal tools not software tools) contains two different types of hammers, two different wooden mallets, several different screwdrivers....... If you learn to use the right tool for the job, the different choices make since. If you are stuck on the mentality of "All I need is a bigger hammer" and "All I need is XXXX programming language" then you probably are not using the right tool for the job.

    1. Re:Use the right tool for the job by Anonymous Coward · · Score: 0

      Seriously, choices are always better. My tool (normal tools not software tools) contains two different types of hammers, two different wooden mallets, several different screwdrivers.......

      Lots of tools is great, but remember there's going to be that guy coming after you and he's going to have to work on your project too. If I have to go out and buy a new set of tools just because the guy before me decided torx screws were the way of the future, that gets to be a royal pain real quick. Philips screws may not be perfect, but I know the guy after me is going to have the right bit in his toolkit.

    2. Re:Use the right tool for the job by k3vlar · · Score: 2

      I'd take having to buy a new set of Torx drivers over having to pry open something that's been glued together. At least the guy before you was kind enough to use screws in the first place.

      --
      Unlike porn, which yada yada rimshot hey-ooh!
    3. Re:Use the right tool for the job by mlts · · Score: 1

      There is a balance though. If I had something that required repeated insertion and extraction of fasteners, I'd go with a Torx bit because eventually Phillips screw heads will cam out, and if the next guy can't cough up that type of screwdriver, there is someone else out there who can/will. On the other hand, I'd be leery of using a XZN or a tri-wing screw head, even though they allow for far more torque without camming out.

    4. Re:Use the right tool for the job by Jeremi · · Score: 1

      Seriously, choices are always better.

      Not necessarily so with languages, since one of the things that makes a language useful is compatibility with libraries of existing code that do the things you want to get done.

      The more languages that are out there, the smaller the probability that the library you want to use is written in a language you can easily call it from.

      There's a reason why English keeps getting more popular while smaller (and arguably better) languages fade into obscurity.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
  11. Backward Compatibility by ElmoGonzo · · Score: 1

    As long as a new version of a language maintains existing capabilities, there is no barrier to adding new features. Or like Groovy, just extend to add the features you think are needed but keep the output compatible with the "parent".

  12. Tiobe Index reflects conservatism by ewg · · Score: 2

    It's notable that the Tiobe Index has just one 21st century language among the top ten (C#, 2001). http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

    --
    org.slashdot.post.SignatureNotFoundException: ewg
    1. Re:Tiobe Index reflects conservatism by Mashiki · · Score: 1

      Shouldn't be a surprise, especially with the amount of hardware still running the world on 30-40 year old tech. As the saying goes: if it ain't broke, don't fix it.

      --
      Om, nomnomnom...
    2. Re:Tiobe Index reflects conservatism by PaladinAlpha · · Score: 1

      Really? They specifically exclude Java 1.4 and later?

  13. Bah. C and COBOL aren't going anywhere. by stevegee58 · · Score: 1

    As long as there are working applications implemented in these languages they'll never go away.
    Not to mention old dinosaurs like me will be employed until we're 80 working with these stone-age tools. Plblblblblblbl (*sound of raspberries*)

  14. More is not better (or worse) than less, ... by foobsr · · Score: 1

    ... , just different.
    – The paradigm paradox.

    from www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf (Programming Paradigms for Dummies: What Every Programmer Should Know)

    Probably worth considering before starting to discuss the issue. The conclusion then could be that a more general paradigm shift is needed.

    CC.

    --
    TaijiQuan (Huang, 5 loosenings)
  15. C++0x is proof of this by Timbo · · Score: 1

    With C++0x we have the mutually exclusive aims of nice syntax and new features. The comes a point where maintaining legacy support impinges on the cleanliness of the language to such an extent that it becomes counter-productive. The whole point of a programming language is to express problems in a legible way. The new "enum class" syntax is a good example of how things can go wrong.

    It's not C++ itself I have a problem with; it's that improvements to the language are made without breaking legacy support -- no compromise and at any cost. I'm not singling out C++ either; pretty much every language is upgraded in the same way. The difference with C++ is that it's that old and the changes are that great that the syntax additions become plain ridiculous in some cases. It would be better to start with a relatively clean slate and just-do-it-fucking-right.

    I like the look of D as a succesor to C++, but unfortunately it doesn't seem to be getting any traction.

    1. Re:C++0x is proof of this by frank_adrian314159 · · Score: 1

      ... it's that improvements to the language are made without breaking legacy support -- no compromise and at any cost.

      Well, maybe if the C++ folk had designed a language that could absorb new paradigms and features without breaking or becoming syntactically unwieldy, it would be better.

      --
      That is all.
    2. Re:C++0x is proof of this by DrVxD · · Score: 1

      One of C++'s biggest strengths (a high level of backwards compatibility with existing C code) has also been one of it's biggest weaknesses. Personally, I'd rather the C++ committee stop flogging that particular dead horse, and turn it into the language it's always had the potential to be.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    3. Re:C++0x is proof of this by brantondaveperson · · Score: 1

      C++0x:

      void main() {
        ()[]{}();
      }

      compiles, runs, does nothing. What's not to like?

    4. Re:C++0x is proof of this by DrVxD · · Score: 1

      For my problem domain, Java's terminally flawed - mostly because it's entire design is predicated on the assumption that programmers are too stupid to write software. This may (or may not) be a valid assumption about Java developers, but it's certainly not a universal truth.

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    5. Re:C++0x is proof of this by man_of_mr_e · · Score: 1

      No, Java (and other managed languages) are predicated on the assumption that Programmers have better things to do than manage memory.

      And, for a large percentage of people, that assumption is true.

  16. I program in Goat-C by Anonymous Coward · · Score: 1

    Function stretchass() {
    return .cx, ru;
    }

    1. Re:I program in Goat-C by Anonymous Coward · · Score: 0

      I want to mod this +1 troll. It made me laugh.

  17. Re:Oh, my! Hehe! by Anonymous Coward · · Score: 0

    Jesus. One amusing comment followed up by your retarded reply which went out of fashion roughly two minutes before Beevis and Butthead was ever dumped on an unfortunate humanity, and "phil_aychio"'s reply, which if anything is even dumber.

  18. You have my sympathy by DigiShaman · · Score: 1

    And this ladies and gentlemen, this why I'll never dive into the world of coding aside from minor batch editing with PS commandlets . As an infrastructure system administrator (server, network, workstation, phones act), you have my deepest sympathies. I don't know how you do it. All of those long hours in the night, new programming languages every time someone farts, fear of being outsourced, moving targets and scope creep. Hats off to you all. As far as I'm concerned, screw that!

    --
    Life is not for the lazy.
    1. Re:You have my sympathy by Anonymous Coward · · Score: 0

      A sysadmin who can't code is a lousy sysadmins.

  19. Just for that by DarthVain · · Score: 1

    I'll be programming the navigation system on your space shuttle using VB6. Have a nice trip! :)

  20. Hardly true, other modern languages on list by SuperKendall · · Score: 0

    It's notable that the Tiobe Index has just one 21st century language among the top ten (C#, 2001)

    Java is on there as well, which C# was of course taken wholesale from. Yes C# has moved beyond where Java was, but if you are going to claim C# is a "21st century language" then you have to acknowledge also the other languages that have moved substantially - like Java for one (though it's slowing down for sure), and also Objective-C (which now has GCD/Blocks(closures)/ARC.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Hardly true, other modern languages on list by DeathFromSomewhere · · Score: 1

      First appearance of java: 1995.
      First appearance of objective-c: 1983.
      First appearance of c#: 2001.

      I would have to say that the GP is correct.

      --
      -1 overrated isn't the same thing as "I disagree".
    2. Re:Hardly true, other modern languages on list by shutdown+-p+now · · Score: 1

      GP's point is that C# is not a language in a vacuum. C# 1.0 was basically a hybrid of Java and Delphi, both languages from 90s, with very few new ideas brought to the table. Sure, it has evolved a lot since then (though most additions also came from other languages where they've existed long before 00s), but so did Java.

    3. Re:Hardly true, other modern languages on list by Anonymous Coward · · Score: 0

      SuperKendall was pointing out that the Java used today is not the Java released in 1995. J2SE 1.4: 2002; Java SE 7: 2011. They are different enough to be considered different languages (though clearly the latter are derived from the former).

      Likewise, there are substantial differences between Objective-C of 1983 and Objective-C 2.0 released in 2007, again enough to be considered different languages.

      That makes all three 21st century languages.

    4. Re:Hardly true, other modern languages on list by PaladinAlpha · · Score: 1

      First appearance of computers: 1946.

      Ergo, we are using technology almost a century old!

  21. The idea of "Language 2.0" is evil by Anonymous Coward · · Score: 0

    The root cause of the problem is that versioned languages strive to be "backwards compatible" at all.

    I've maintained for years that the proper solution is to create a new language standard that does not attempt to be compatible with the old language. Instead, the developers of the new language should provides a reference utility that converts from the v1 standard to v2 standard. This should apply to all incremental language revisions, so that users can upgrade the source and diff to see what changed before assuming that their applications will run correctly with the new language. Also note that creating the reference cross-compiler will help document the differences between v1 and v2.

    p.s. Yes, I know this would cause a minor headache for standard library versioning, but it only has to be done once per language revision.

    1. Re:The idea of "Language 2.0" is evil by RyuuzakiTetsuya · · Score: 3, Insightful

      The only language where this is a real problem is javascript.

      For web server side scripting, you can replace say. PHP with Python or Ruby with relatively little pain. Sure, you're rewriting all of your logic, but, in the end, moving languages is only as massive as the size of your projects.

      For stuff that's more bare metal, replacing anything with anything else this is true too; assuming the linker gives you a binary in the required binary format. Not a big deal right?

      The problem with Javascript is that it's the only language we have for web frontend development, and it's horrible too. It's deceptive. It looks simple, but making dynamic changes to HTML entities requires having some idea how classes work so you can do operations on the DOM. Sure, there are frameworks that might simplify this stuff, but, for artistic and creative people(read: largely bad at math), this is problematic. It's very CS202 and having to think rather linearly.

      --
      Non impediti ratione cogitationus.
    2. Re:The idea of "Language 2.0" is evil by DragonWriter · · Score: 1

      Sure, there are frameworks that might simplify this stuff, but, for artistic and creative people(read: largely bad at math), this is problematic.

      That's pretty true of programming generally, not JavaScript or DOM manipulation particularly. That's why you have designers do design, content people develop content, and programmers doing programming.

    3. Re:The idea of "Language 2.0" is evil by Anonymous Coward · · Score: 0

      Sure, there are frameworks that might simplify this stuff, but, for artistic and creative people(read: largely bad at math), this is problematic.

      That's pretty true of programming generally, not JavaScript or DOM manipulation particularly. That's why you have designers do design, content people develop content, and programmers doing programming.

      Bingo. There is no one size fits all web designer anymore. If you're a designer and have trouble with programming... don't take a job where you have to program or deal with it. Like most languages, JavaScript has it's "Bad Parts" but it's not a difficult language to use (especially with frameworks like jQuery). In fact, most of your complaints don't deal with JavaScript directly, but more with how the DOM is implemented within the browser. Don't hate the player, hate the game!

    4. Re:The idea of "Language 2.0" is evil by Anonymous Coward · · Score: 0

      Javascript is a definitely a problem (especially since nobody even attempts to conform to a version reference), but it's definitely not the only problem.

      Java$(N) to Java$(($N+1)) is always a headache, despite what anyone else claims. Also, php4 to php5 was a nightmare, and perl5 to perl6 isn't going to happen.

    5. Re:The idea of "Language 2.0" is evil by Wrath0fb0b · · Score: 2

      For stuff that's more bare metal, replacing anything with anything else this is true too; assuming the linker gives you a binary in the required binary format. Not a big deal right?

      This is a joke right? You think writing tooling for a build process onto the metal is no big deal? Besides a good compiler and linker, you need build tools, debuggers, simulators. Oh, and you'll need to port all your external interfaces and drivers to the new language (or write a shim layer in the old language). While you are doing the interfaces, make sure that it has the same semantics for dealing with the hardware or be prepared to spend a while looking at coredumps.

      Yeah, a piece of cake.

    6. Re:The idea of "Language 2.0" is evil by dolmen.fr · · Score: 1

      perl5 to perl6 isn't going to happen.

      Because Perl 6 is a totally new language, not just an upgrade, that will live side by side with Perl 5.

      Perl 6 has so many innovations and changes of paradigms that it is hard to implement. Unfortunately the programming world has not yet enough heard of its features, and so the implementation team is yet not big enough to make the implementation work go faster.

    7. Re:The idea of "Language 2.0" is evil by man_of_mr_e · · Score: 1

      What you have described was what happened with Visual Basic -> VB.NET. This created a gigantic outcry, and there are still tons and tons of people writing code in VB6 because they don't want to take the hit of a conversion.

  22. We need more interface description languages by Anonymous Coward · · Score: 1

    Today, most everything library based is C (*NIX weenie here, dunno about other architectures). And many problems have already been solved in one language or another over time, but its mainly C that has the ability to be called by other languages (Perl, python, C++, java, most everything). What we need is a better idl (http://en.wikipedia.org/wiki/Interface_description_language) or more of them. Ones that are performant, and able to do procedure calls, serialization/deserialization, etc.

    1. Re:We need more interface description languages by dkf · · Score: 1

      What we need is a better idl (http://en.wikipedia.org/wiki/Interface_description_language) or more of them. Ones that are performant, and able to do procedure calls, serialization/deserialization, etc.

      If it can do those things, it's no longer an interface description language. The point of an IDL is that it just describes the interface; you can't put the implementation in it and that enforces a clean separation of concerns. That's important.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
  23. PHP = perfection by Anonymous Coward · · Score: 0

    Wrong with PHP example.
    PHP was perfect from the start.. at being bad.

  24. Forth All The Way Baby by Wingsy · · Score: 0

    We don't need more, we need less. Just one. Forth!

    --
    If I didn't have absolutely NOTHING to do, I wouldn't be here.
    1. Re:Forth All The Way Baby by Anonymous Coward · · Score: 1

      Ha!
      I once worked with a guy who wrote everything on forth. At a previous job he did an accounting system in forth...
      While perusing his code for running some custom hardware I came upon several pages of hate filled rants about everyone in the company he worked with except for me. I mentioned it to him and he said he was having a bad day. Why would he leave that in the code?
      That same person was in one of the 'Worst drivers' videos. A cop pulls him over to give him a ticket and he just loses his shit. He's not violent, he just screams and yells.
      Ahh.... I found it on youtube. http://www.youtube.com/watch?v=xlr041dVKYo
      Working with him was an adventure, which is why he worked from home. Twenty years later he's mellowed a bit. I even email him now and then.

      Forth programmers, all the same.

  25. Easy, break compatability by Anonymous Coward · · Score: 0

    Take C or Java. It is held back by a bad design choice from early in its life? Drop support for that particular syntax. If 15 year old source code won't compile, oh well, you were going to have to rewrite it anyway if you want to port it to a new language.

  26. No, we need one *better* language, not "more" by gestalt_n_pepper · · Score: 4, Insightful

    No language is perfect. The idiocy of language designs stem from the fact that few, if any programming languages were designed by anyone who had ever read a book on psychology, ergonomics or human factors.

    There's a saying floating around the internet that "Languages should be easy to read and understand and incidentally be compilable by computers." That about sums it up.

    THE COMPUTER DOES NOT MATTER. It is a means to an end. It's only purpose is to serve humans. The languages designed to provide a system level interface to that machine need to be designed around what a human understands, the way a human understands it. Slavish devotion to a hardware design, or even an object model is plain stupid if it makes your product nearly unusable (e.g. the WPF datagrid).

    --
    Please do not read this sig. Thank you.
  27. Slash-CAllister by MikeTheGreat · · Score: 4, Funny

    Is it just me, or has almost every article by Neil McAllister made it to the Slashdot front page?

    I propose
    1) a "slashcallister" because it rolls off the tongue, and can be used to tag these articles (as part of the greater "slashonomy"), so that
    2) McAllister's articles be picked up by Slashdot's server-side RSS reader and auto-posted & auto-tagged, thus creating the Official Slashdot Neil McAllister Channel

    1. Re:Slash-CAllister by Anonymous Coward · · Score: 0

      You are right and I hate that fuckin idiot!

  28. Query Languages by Tablizer · · Score: 5, Interesting

    We have only ONE relational query language in common use: SQL. We need more options. SQL is hard to extend by DBA's, emphasizes nesting over named-references, has a messy COBOL-like syntax structure, and other annoyances.

    We have bajillion app languages, but very few query language choices. There is the Tutorial-D language family which spawned REL, but it's more of a tight-typing/compiled style.

    We also need something more dynamic. I've proposed a draft query language called "Smeql" (Structured Meta-Enabled Query Language, pronounced "smeegol") for such. You can "calculate" column lists using dynamic queries, for example.

    It's a far far needier field than app languages.

    1. Re:Query Languages by Meridock · · Score: 1

      I've proposed a draft query language called "Smeql" (Structured Meta-Enabled Query Language, pronounced "smeegol") for such. You can "calculate" column lists using dynamic queries, for example.

      It's a far far needier field than app languages.

      When I first read this I thought you were going "Funny" with this... Sméagol... Too funny.

    2. Re:Query Languages by Anonymous Coward · · Score: 0

      does it store data structures in ring buffers?
      that get destroyed after the query?

    3. Re:Query Languages by dezert1 · · Score: 3, Interesting

      I am incredibly thankful that there is one universally accepted query language (SQL). (Nearly) everybody understands it, and it works (nearly) well with all relational databases. SQL implements 'write once, run anywhere' far, far more effectively than Java ever did. I cannot count the number of instances where either I've shared SQL code that I wrote or somebody sent me where you can just 'drop it in' (for the most part). And with few mods, it works on nearly any relational database. How cool is that? If you want to do more with SQL, some databases include a programming language in which SQL can be nested, thus giving you lots of power at the loss of compatibility. Shortcomings aside, I'll never complain about wanting another query language.

    4. Re:Query Languages by Anonymous Coward · · Score: 0

      Nobody took me seriously when I proposed Structured, Meta-Evaluating, Graph Manipulating Annotation either...

    5. Re:Query Languages by Anonymous Coward · · Score: 0

      The only problem is... SQL is actually not universal because databases suck (it's not that SQL itself does not but whatever).

    6. Re:Query Languages by Archibald+Buttle · · Score: 3, Insightful

      Only in fantasy-land has SQL implemented "write once, run anywhere". You hint at this problem yourself where you say "with a few mods, it works on nearly any relational database".

      Whilst there is an SQL standard, implementations of SQL vary massively. Professionally I've used SQL-Server, Oracle, MySQL, PostgreSQL and SQLite - all have profound differences, and moving anything beyond absolutely trivial SQL code from one to another requires rewriting the query. We're talking about a language here where major implementations don't even agree on string concatenation syntax...

      Every SQL implementation has it's customisations and variations from the standard. It's almost impossible to write any kind of decent SQL code without making use of these custom variations, and thus ruining the portability of the SQL code.

    7. Re:Query Languages by svick · · Score: 1

      There is one query language that improves on SQL a lot: LINQ. It's tightly integrated with C#, but that's the whole point. You don't have to deal with parametrized queries or other things. The query is usually translated into SQL in the end, but the developer doesn't even know about that most of the time.

    8. Re:Query Languages by Baldrson · · Score: 1
      Well its nice to see someone catching up with what I was arguing 30 years ago while developing a network operating system for the VIEWTRON rollout to all of the Knight Ridder newspaper chain in conjunction with AT&T.

      The most progress toward this end was made when I agreed to come aboard HP's eSpeak project (which didn't make any sense to me) so long as they let me pursue this vision for "Internet Chapter 2". This is as far as we got:

      Bit-String Physics: A Finite and Discrete Approach to Natural Philosophy [Hardcover] H. Pierre Noyes (Author), J. C. Van Den Berg (Author, Editor), J.C. van den Berg (Author), is the concluding book of the 27 volume "Series on Knots and Everything" and it, in turn, concludes with "Reflections on PSQM" which contains, on page 548:

      "... Relation Arithmetic Revived , was written at Hewlett-Packard as part of the theoretical work that Jim Bowery and I were doing on the design of transactional languages for the Internet. It went much further in developing another idea briefly introduced in Structure Theory, which is that the theory of relations, and indeed the whole of mathematics, can be formulated in a language whose only primitive predicates are identity relations. This new work appears to have good long-range prospects for putting link theory on a deeper logical foundation, but that is outside the scope of the present paper."

      This work was cut short when I insisted on retaining Dr. Etter for his mathematical specialty rather than "hiring all the H-1b's from India you want".

    9. Re:Query Languages by Tablizer · · Score: 1

      What I've seen of LINQ often looks too verbose for my tastes. Nor is it consistent across app languages.

    10. Re:Query Languages by Tablizer · · Score: 1

      Ask LOTR programmers.

    11. Re:Query Languages by Tablizer · · Score: 1

      With any successful language, vendors will almost always extend their implementations to try to trap customers into their architecture. I don't see how ANY language is immune from this phenomenon, at least for commercial products.

      However, SQL encourages more of it because it's not defined in a way such that it can be extended via library additions. You almost always have to add new syntax to extend it, which makes sharing or cloning of good additions across vendors more difficult. (My draft language, SMEQL, addresses this issue.)

      For example, In some dialects of SQL, DBA's can add new functions that operate on columns, but not functions that operate on entire tables, at least not in a generic way.

      That being said, one can write cross-platform (or almost cross-platform) SQL with some knowledge about what constructs and patterns are the most universal. Such knowledge would make a cool book.

      But I do wish comparing case sensitivity, string concatenation, column aliasing in WHERE clauses, and date syntax and handling were more consistent across vendors. Or at least define new functions that handle these that are part of the standard, such as compareNoCase(a, b).

  29. Python is a bad example by Hentes · · Score: 4, Interesting

    Python is actually an example of how can a language continue to develop even after becoming popular. In a brave move, they didn't let backwards compatibility tie them down. By breaking compatibility, the language could continue to evolve: there are many new features in Python3. For this to work without breaking existing stuff, the __future__ module was invented, which allows creating 'forward compatible' code.

    I think we don't necessarily need to constantly switch languages to evolve, getting rid of backwards compatibility is another way to go (or make the language very general like LISP).

    1. Re:Python is a bad example by Anonymous Coward · · Score: 0

      I think the author was referring to the fact that everyone is still using Python 2, and will be doing so for a very long time, if not for ever, for the very reasons we are still using PHP 5, Perl 5, and common-denominator Javascript.

  30. We need better programmers by Anonymous Coward · · Score: 1

    A language is just a tool. In the hands of a bad programmer you get bad code no matter what the language. A good programmer can do good in most languages. Unfortunately most of the so-called improvements in new languages are merely the equivalent of library content.

    1. Re:We need better programmers by Anonymous Coward · · Score: 0

      But tools are not the same. Thus the maxim of using the right tool for the job. Except that this is a metaphor, and like all metaphors, it's not literally true. Programming languages are interfaces for humans to more easily tell a computer what they want it to do. Since telling the computer what to do in its own language is hard and painful for us, we've developed various interfaces that provide abstraction and semantics not available at the machine level. Some abstractions are generally more suitable for certain domains (right tool for the job), and some are more suitable for certain people (personal taste or just the way one thinks). And of course, some achieved mainstream, partly due to historical reasons, and most people learn those abstractions as opposed to others.

  31. There's only one real problem. by RyuuzakiTetsuya · · Score: 1

    Names!

    As long as the binary format's correct and/or you're not filling /usr/bin or /usr/sbin, or wherever your OS stores binaries with interpreters... What's the problem? I mean, there's the problem of understanding the intricacies of a given language, but...

    The real problem is that when all the clever names are taken.

    --
    Non impediti ratione cogitationus.
  32. Shouldn't that be in RPN by colinrichardday · · Score: 1

    Forth more we need NOT less we need just one

    1. Re:Shouldn't that be in RPN by reiisi · · Score: 1

      (indulging a little compulsion ...)

      Forth more we need NOT less we need just one

      hmm

      We don't need more, we need less. Just one. Forth!

      mmmmm lemmetry

      we more need not
      we less need
      it one only is
      it Forth is!

      or, maybe,

      [me@fedora ~]$ gforth
      Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc.
      Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
      Type `bye' to exit
      hex ok
      7fffffff constant more ok
      80000000 constant less ok
      decimal ok
      4 constant need ok
      create we 12 allot ok
      more negate we need + ! ok
      less we need + need + ! ok
      0 we need + need + ! ok
      ' 1 we need + !
      :10: Undefined word
      ' >>>1<<< we need + !
      Backtrace:
      $A9BD54 throw
      $A9BD78 (')
      ( erk ) ok
      1 constant one ok
      ' one we need + ! ok
      ' Forth we need + ! ok
      ( I'm sure I could have thought of something more useful to say with that. )

      --
      Computer memory is just fancy paper, CPUs just fancy pens with fancy erasers; the 'net is just a fancy backyard fence.
  33. New wheels, new wheels! by Colin+Smith · · Score: 1

    Get your newfangled wheels here! This time it's in BLUE!

    To be honest I find Python the scariest language. I write some pseudo code and it runs. Worse, it usually runs first time.

    --
    Deleted
    1. Re:New wheels, new wheels! by Anonymous Coward · · Score: 0

      Get your newfangled wheels here! This time it's in BLUE!

      So what language are you using on your DEC PDP-10?

    2. Re:New wheels, new wheels! by Colin+Smith · · Score: 1

      Well, C of course. The language all the rest are written in.

      --
      Deleted
  34. Only if it brings in something 'new' by scamper_22 · · Score: 2

    Is there a need for new programming languages? Perhaps. But I don't think this is eternal. Programming is just the ability to express algorithms and logic. It's not an infinite space.

    I think people moan about new languages when they don't appear to bring anything really new.

    Broadly speaking... following one train of evolution.

    assembler - abstract out op codes
    C/C++ - direct hardware access... provides human word abstraction for programming (for loop, switch, variables, classes...)
    java/c# - virtual machine based, easy library integration (just include the lib)

    Those are big significant changes. It is preferable to add new things in these languages via frameworks, new libraries, code generators... for example QT is a huge framework and code generator, but at its core is still C++. You can easily link in any old c/c++ library or source code.

    Creating a new language for syntax changes or anything is where I think people begin to moan.

  35. Wheel, meet paint by nurb432 · · Score: 0

    And hold still while i paint you a new color.

    --
    ---- Booth was a patriot ----
  36. you know what's right for you by roman_mir · · Score: 1

    I think anyone just uses what he/she wants to and it doesn't matter if there are more languages out there. For the last 2 years I've been building a system in Java and I don't bother with any of the new nonsense in it that started with Java 5, I do use the latest JDKs and JVMs, but I don't use any of the new features (like annotations, autoboxing/unboxing, varargs, generics, etc.) It's completely unnecessary for me, it would be more useful to have standard ways to communicate with peripherals as part of standard libraries, but that's not getting done.

    Building new languages seems sexy for people who don't have a specific business problem to solve, but that's OK too, there is enough room for more of the same, so go ahead.

    1. Re:you know what's right for you by Anonymous Coward · · Score: 0

      Java generics are mostly useless, but don't tell me you don't use the foreach loop... pure convenience with no performance penalty.

  37. radical change by bug1 · · Score: 1

    "far easier to create a new language from whole cloth than it is to convince the existing user base of a popular language to accept radical changes."

    I think we should apply that concept to human languages.

    And if you dont agree with me then, sof ertes fidods as'd fguw !

    1. Re:radical change by Andreas+Mayer · · Score: 2

      And if you dont agree with me then, sof ertes fidods as'd fguw !

      I like English better because "fuck off" is more succinct.

  38. Talk about missing the point. by warrax_666 · · Score: 1

    Performance doesn't matter any more. Correctness and quick development does. FP provides that in abundance. (Of course, correctness is just another way to say "quick development" nowadays, but whatever...)

    To adress some of your points:

    1) Two words: undefined behavior. You'll find it around every corner in C or C++ (two very different languages, of course) -- this leads to unreasonably hard-to-find bugs. In C++ it's also extremely hard to avoid such behavior consistently -- compilers are happy exploit it for optimizations, but somehow can't provide warnings for all cases where you are (unwittingly) relying on UB.

    2) Really? Haskell or Ocaml do not rely on any of those things you mentioned. Difficult? Perhaps, but see my point #1. Besides, who would you like making your software... someone who's just "learned java" or someone who knows what the fuck they're doing?

    3) So all FP languages which don't perform as well as C (or order-of-magnitude at least) don't perform as well as C. What an insight. Btw, Haskell is also within OoM of C. Also, see the top of this post.

    4) How hardware works is fucking irrelevant. If compiler for language X can optimize "fib N" to a constant expression it doesn't matter if your C compiler can generate code which executes a million iterations of a fib-computing loop per second. Certainly, we're not quite there yet, but in the C world there's no hope of doing this beyond *really* simple examples (aka not fib), but FP could conceivably get further. (TC is a barrier, but you can still do useful computation even without TC.) See also: top of this reply.

    ... and the rest of your comment is personal preference. That's fine, but stop pretending you have anything of value to contribute wrt. the relative value of various programming paradigms, mkay? I don't either, but I know bullshit when I see it.

    --
    HAND.
    1. Re:Talk about missing the point. by sourcerror · · Score: 0

      What really matters is:
      - libraries
      - good IDE with autocompletion (sorry, an Emacs mode won't cut it)
      - cost of training

      Java/C# has these. FP languages don't.

    2. Re:Talk about missing the point. by David+Greene · · Score: 2

      Performance doesn't matter any more.

      Oh really? Is that why I just spent the bulk of the last two months optimizing a set of applications for a supercomputer?

      Performance doesn't matter everywhere, but it certainly does matter in lots of places. Quite a bit.

      --

    3. Re:Talk about missing the point. by Anonymous Coward · · Score: 3, Funny

      There isn't a thing Emacs can't do, still there isn't a thing I can do with Emacs.

    4. Re:Talk about missing the point. by Pseudonym · · Score: 5, Insightful

      Performance doesn't matter any more.

      Of course it does. Every programming task has to care about performance. What's changed is that the most important type of "performance" is different for every task. Most of us aren't doing large-scale numeric simulations.

      If you're programming desktop GUI applications, responsiveness is usually more important than throughput. If you're programming mobile devices, battery efficiency is more important than any other consideration.

      I think it was P.J. Plauger who pointed out that if the program to process the monthly payroll takes three months to run, it's useless.

      What I think you meant to say is that for most programs, whether or not they meet their performance criteria is not limited by CPU cycles. That's certainly true. Most programming tasks can afford to spend some cycles if in return for correctness, programmer productivity or ease of maintenance.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    5. Re:Talk about missing the point. by deKernel · · Score: 4, Insightful

      Performance doesn't matter any more. Correctness and quick development does. FP provides that in abundance. (Of course, correctness is just another way to say "quick development" nowadays, but whatever...)

      Really, performance doesn't count, that must be nice. The two worlds that I have lived in (control systems and financial transaction processing) have performance as king because in both cases, meeting specific performance numbers means large explosions or large fines from networks. Those are naming just two areas, there are quite a few other areas, but I can only speak of the two stated above.

      1) Two words: undefined behavior. You'll find it around every corner in C or C++ (two very different languages, of course) -- this leads to unreasonably hard-to-find bugs. In C++ it's also extremely hard to avoid such behavior consistently -- compilers are happy exploit it for optimizations, but somehow can't provide warnings for all cases where you are (unwittingly) relying on UB.

      I have found that ~90% of the "undefined behavior" is caused by people not properly checking argument values. That is the nature of imperative languages, if you don't know or understand that, I question whether you should be writing code then, sorry.

      2) Really? Haskell or Ocaml do not rely on any of those things you mentioned. Difficult? Perhaps, but see my point #1. Besides, who would you like making your software... someone who's just "learned java" or someone who knows what the fuck they're doing?

      See the above point of my argument...and nice language.

      3) So all FP languages which don't perform as well as C (or order-of-magnitude at least) don't perform as well as C. What an insight. Btw, Haskell is also within OoM of C. Also, see the top of this post

      Sarcasm really doesn't help make your point here.

      4) How hardware works is fucking irrelevant. If compiler for language X can optimize "fib N" to a constant expression it doesn't matter if your C compiler can generate code which executes a million iterations of a fib-computing loop per second. Certainly, we're not quite there yet, but in the C world there's no hope of doing this beyond *really* simple examples (aka not fib), but FP could conceivably get further. (TC is a barrier, but you can still do useful computation even without TC.

      Actually, I have found that understanding just how hardware works makes finding solutions to problems a whole lot easier. Computers function in a particular manor, and I have found that they mirror life more closely than functional languages. Now granted, that is my perception, but the fact that functional languages are still used only in a few disciple sure enforced my opinion.

      After rereading the parent comment, I think your perceived attitude of the author is way out of line. He stated his case clearly AND WITHOUT PROFANITY. I have been developing software for 17+ years, and after all that time, paradigms come and paradigms go, languages come and languages go just like management styles. What matters the most is the person at the keyboard designing and developing the solutions. I can't even count the number of languages that have come and gone through the years, but C and C++ have always been there. I have stopped fighting the fight of "..this language is better because..." and just learned to use both of those languages better. I produce products faster with far fewer defects so I am happy.

      Guess at this point I just need to yell "GET OFF MY LAWN" to complete my old grumpy statements.

    6. Re:Talk about missing the point. by Anonymous Coward · · Score: 0

      That explains why my new tablet doesn't work - I live in the wrong manor :(

    7. Re:Talk about missing the point. by Eivind+Eklund · · Score: 1

      Performance doesn't matter any more. Correctness and quick development does. FP provides that in abundance. (Of course, correctness is just another way to say "quick development" nowadays, but whatever...)

      To adress some of your points:

      1) Two words: undefined behavior. You'll find it around every corner in C or C++ (two very different languages, of course) -- this leads to unreasonably hard-to-find bugs. In C++ it's also extremely hard to avoid such behavior consistently -- compilers are happy exploit it for optimizations, but somehow can't provide warnings for all cases where you are (unwittingly) relying on UB.

      2) Really? Haskell or Ocaml do not rely on any of those things you mentioned. Difficult? Perhaps, but see my point #1. Besides, who would you like making your software... someone who's just "learned java" or someone who knows what the fuck they're doing?

      3) So all FP languages which don't perform as well as C (or order-of-magnitude at least) don't perform as well as C. What an insight. Btw, Haskell is also within OoM of C. Also, see the top of this post.

      4) How hardware works is fucking irrelevant. If compiler for language X can optimize "fib N" to a constant expression it doesn't matter if your C compiler can generate code which executes a million iterations of a fib-computing loop per second. Certainly, we're not quite there yet, but in the C world there's no hope of doing this beyond *really* simple examples (aka not fib), but FP could conceivably get further.

      There's one significant problem with this compared to the C model: The performance becomes very hard to understand. There's one major advantage to the C model: Performance characteristics are fairly easy to understand.

      While I generally like higher level languages, pretending that their drawbacks don't exist is just getting in the way of fixing them (and of their use, as people will think all other claims are the same level of hype).

      This debate is very old - 20 years ago the slogans were "Lisp programmers know the value of everything and the cost of nothing" and "A Sufficiently Smart Compiler..."

      Eivind.

      --
      Doubting the existence of evolution is like doubting the existence of China: It just shows that you're uninformed.
    8. Re:Talk about missing the point. by Anonymous Coward · · Score: 0

      Most of us aren't doing large-scale numeric simulations.

      And for those of us who are, FORTRAN works great.

      Why move to something else when what you're currently using meets all your requirements?

    9. Re:Talk about missing the point. by Pseudonym · · Score: 1

      You have never used FORTRAN + MPI, I take it.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    10. Re:Talk about missing the point. by Anonymous Coward · · Score: 0

      Sorry, a mess of icons isn't inherently better, and if you need a file list visible while coding your workflow is purely veiled ADHD.

    11. Re:Talk about missing the point. by Darinbob · · Score: 2

      Performance matters when so many apps clearly have paid zero attention to it. Students were trained "don't optimize prematurely" but they only remember "don't optimize", without even stopping to think if the rule of thumb is even valid. Word is damn slow. Excel is damn slow. Browsers are damn slow. Web sites that browsers go to are damn slow. Operating systems are damn slow.

      Why is it that with these incredibly fast computers we have today that so many things feel like they run more sluggishly than they did twenty years ago? (not everything, some places do take performance seriously, but as a whole it's overlooked)

      But the wannabe programmers just say "we can get a faster machine and more memory".

    12. Re:Talk about missing the point. by Anonymous Coward · · Score: 0

      Anyone who thinks performance doesn't count is likely writing web apps that nobody (less than a million daily page views? don't make me laugh).

      Serious web devs, mobile devs, application devs, etc ALL care about performance.

    13. Re:Talk about missing the point. by Anonymous Coward · · Score: 0

      Just got my first tablet after 25 years of high power desktops. Browsing any home-grown website is zippy and fun. Browsing just about any popular website is tedium squared. Although I don't have a trace running I can see what's happening in my mind:

      Load page.
      Load external javascript.
      Load more external javascript.
      Load resources external javascript wants.
      Load iframe.
      Load ad graphic for iframe.
      (repeat above two steps 5 times)
      Load comments iframe.
      Load comments.
      Load 40 social media geegaws.
      Load page graphics.
      Load embeds.

      Having a reasonably large screen but low processing power has made me painfully aware that we need to find a new way of doing things web-wise.

      More things need to be "click to load" for example.

      Ooo, remember the LOWSRC attribute? Good times, good times.

    14. Re:Talk about missing the point. by dkf · · Score: 1

      Why is it that with these incredibly fast computers we have today that so many things feel like they run more sluggishly than they did twenty years ago?

      Probably because our computers run more background services, and too many programmers don't understand either parallel programming or the cost of copying. OO also doesn't help performance (since it tends to have poor locality of reference in its memory handling); it compensates by making many programs much easier to write and maintain, but the cost is there.

      But the wannabe programmers just say "we can get a faster machine and more memory".

      That worked very well for a long time. Of course, good programmers also take care to manage memory right and use sensible algorithms; those are the sorts of optimizations that are always a good thing (especially when spiced up with a little critical path analysis). The quip about "don't optimize" is to try to stop idiots from spending ages writing horrible code to make a rare code path faster even though it isn't and never will be a bottleneck. (Only ever optimize — below the level of choosing the right algorithm of course — once you have proved that it is needed by measuring that it is worthwhile.)

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    15. Re:Talk about missing the point. by Anonymous Coward · · Score: 0

      > but FP could conceivably get further

      By past experience I'd say you're delusional if you think compilers will be able to do any significant (> 50% faster) optimization except in corner-cases.
      Unless you are thinking of something like a 200 year time-frame.

    16. Re:Talk about missing the point. by im3w1l · · Score: 1

      Put my thoughts into words.

    17. Re:Talk about missing the point. by Anonymous Coward · · Score: 0

      "So does the missile command application support authentication?"
      "No, but it can serve a million requests per day!"

  39. It's Not The Programming Language, Stupid by gbooch · · Score: 2

    Just be clear, I'm not calling anyone stupid (remember what Clinton said? no no no, not "I did not have sexual relations with that woman." the other thing he said. about the economy.)

    Two thoughts:

    First, in a way, this is a silly discussion. Of course we need new languages. All interesting software-intensive systems are full of little languages (we just write them ourselves in other standard languages).

    Second, it really isn't about the programming language. Yes, different languages make you think/act/work/abstract in fundamentally different ways, but ultimately it is the programming model of the surrounding libraries that has a greater impact on one's productivity.

  40. Some thoughts by jd · · Score: 1
    • A language whose architecture mirrors that of the CPU can ALWAYS be compiled better and cleaner than a language whose architecture differs from that of the CPU (can != is, I'm talking limits not the state of compilers at any given time), but Aspect-Oriented and Object-Oriented CPUs don't exist at this time (although they could)
    • You are ALWAYS better off writing code in a language that suits the problem, rather than making the problem suit the language
    • At present, interfaces between different languages suck - a heterogeneous modular program where modules are written in suitable paradigm for the problem that specific module is designed to solve will have higher requirements to design but will also be cleaner and easier to maintain because you're not force-fitting
    • Compiler design is often flawed - GCC shouldn't optimize at all, for example, as early optimization is often bad optimization and makes platform assumptions that are increasingly invalid; optimization should either be in the linker or moved into a completely different program and run as a distinct stage in the chain
    • Most programmers are badly taught - Java programmers shouldn't be capable of writing programs less well-designed than Cobol programmers because Java should simply not allow the kinds of bad decisions that were commonplace in the 60s - which means a new language won't help unless it's rigorous and many programmers hate rigour because they don't know how to deal with it
    • Those who say they want a new language are often either unaware of what is already out there or aren't interested - they don't so much want a new approach to programming as they want the glory that goes with writing an "important" language

    I wonder, how many of the languages listed on Freshmeat nee Freecode have people here actually used? Which ones do you know well enough to form a good, solid critique on what the language can and cannot do? Which compilers have you contributed code to?

    Probably the answers would be "not many", "very few" and "almost none" respectively. And we're the geeks. We're the ones who are actually interested in this kind of stuff. Yet I'm willing to bet that even we couldn't form a sensible, rational, evidence-based opinion on "what is needed" because none of us has the breadth to know what has already been done and either found "not really to be needed at all" vs. "not used because nobody knows about it" vs. "a great concept but in the wrong language". Even we, the most obsessive bunch of nerds out there, simply don't have that kind of data. I reject utterly, therefore, the idea that anyone else is going to know so much more.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:Some thoughts by David+Greene · · Score: 1

      Er, wow.

      A language whose architecture mirrors that of the CPU can ALWAYS be compiled better and cleaner than a language whose architecture differs from that of the CPU

      Beyond the hyperbole here ("always" is almost never a good word to use), there is no fundamental law that requires this to be true. The language conveys the program semantics. The compiler's job is to map those semantics onto the hardware. Sometimes this is easier than other times but the language design usually has little to do with it. We did used to have special purpose hardware for LISP, object-oriented designs and even polynomials for God's sake. We found out we didn't need them.

      Compiler design is often flawed - GCC shouldn't optimize at all, for example, as early optimization is often bad optimization and makes platform assumptions that are increasingly invalid; optimization should either be in the linker or moved into a completely different program and run as a distinct stage in the chain

      I don't even know what this means but it displays a great misunderstanding of compiler architecture. Compilers are highly modular. There is no one place where program transformation takes place. It is a steady refinement of the program down to the instruction level.

      --

    2. Re:Some thoughts by jd · · Score: 2

      Compiler architecture should be piped, with optimization as the absolute final stage. Compilers really aren't that modular, as demonstrated by the fragility of the API linking the frontend to the backend of GCC. Frontends have to be modified frequently to work with GCC, which would obviously not be the case if they were loosely coupled. This "steady refinement" (the word you want is "reification") is a bloody stupid description and if you don't understand the problem with early optimization you should go back to Software Engineering 101. You're a three digit UID, you really aught to have not only got the Dragon Book and understood it, but moved well beyond that point. Indeed, I'm fairly certain from your comment that you have.

      You've also been around far too long to not know that whilst you can translate any paradigm into any other paradigm, the entanglements between logic and data differ between paradigms and that entanglement remains because it's built into the semantics of the programs.

      The special purpose hardware for LISP was much faster than the general purpose hardware, and the Colossus computer rebuild proved something like 20x faster than the Pentium 1 for cracking Enigma codes because it was designed with that problem-space in mind and the Pentium wasn't.

      The compiler's job is indeed to map the semantics, but where the semantics are highly inefficient on that architecture the compiler can't map any better than that. THAT is why code for the Itanium 2 and later has generally been horrible. The original processor design bugs were ghastly but were largely removed by the second iteration. However, compilers simply couldn't map the code to the architecture. That argument has been had already and you can look back through the Slashdot archives for it.

      If semantics were sufficient and compilers were that great, we'd never use a programming language at all. Z would be sufficient. That defines all the semantics you need and compilers are quite capable of turning Z into instructions. Chances are that although there are hundreds of thousands of Slashdot readers, less than a dozen have ever programmed in Z*. Even hand-turning Z into code is so painful and difficult that you will find professors in computer science (including Linus' old lecturers) stating that it simply cannot be done for any program of any complexity. In fact, I seem to recall one of them posting just that on Slashdot as a rebuff to my complaint that too few people knew Z. (Compared to how long either of us have been on the system, these discussions are "new" so you've doubtless seen them.) If you haven't tried Z, I strongly recommend trying it out. It is by far the most powerful of all the Formal Methods ever developed, anything you can ever write in C can be written in Z (and vice versa), it is absolutely superb for creating provably-correct semantics, but nobody would dream of converting Linux into Z (they could, and it would let you eliminate all the bugs in the logic, leaving only bugs caused by hardware weirdness) because it's just too hard. Nor would anyone dream of writing a complex HPC application in Z, because although you can convert to C you can't convert a convoluted Z program to a C program that is high performance. In theory it would be great - HPC computers aren't cheap to run, so programs that will run correctly first time and every time would obviously be a Good Thing**. In practice, HPC programmers avoid Formal Methods like the plague. You cannot turn a Z program into a fast program.

      *Software Engineering lecturers will likely barf at my claim Z is a programming language, but the fact is that that is exactly what it is. Programming is not distinct from pure maths, it is - and always has been - a subset of pure maths. A programming language is merely a mathematical representation of a problem in a form that uses a specific syntax that can be reified into a form that will run on a Turing-complete system. The fact that some syntaxes are supplied with popular compiler vendors is immaterial. Because compilatio

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    3. Re:Some thoughts by Anonymous Coward · · Score: 0

      Compiler architecture should be piped, with optimization as the absolute final stage. Compilers really aren't that modular, as demonstrated by the fragility of the API linking the frontend to the backend of GCC. Frontends have to be modified frequently to work with GCC, which would obviously not be the case if they were loosely coupled. This "steady refinement" (the word you want is "reification") is a bloody stupid description and if you don't understand the problem with early optimization you should go back to Software Engineering 101. You're a three digit UID, you really aught to have not only got the Dragon Book and understood it, but moved well beyond that point. Indeed, I'm fairly certain from your comment that you have.

      Are you being serious? This is an argument for why GCC is not modular, not compilers in general. For example, LLVM is highly modular.

      Different optimizations apply at different stages of compilation... you know when you have differing semantic information available to guide those optimizations!?!

      Oh, and "reification" does not mean "steady refinement". Reification means "to make real".

      I stopped reading your comment at that point since it just became an even more incoherent jumble of words.

    4. Re:Some thoughts by jd · · Score: 1

      Do you get off on being offensive, stupid or wrong? Since your post is all three, it's hard to tell.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    5. Re:Some thoughts by bar-agent · · Score: 1

      Do you get off on being offensive, stupid or wrong? Since your post is all three, it's hard to tell.

      Glass houses, man.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    6. Re:Some thoughts by jd · · Score: 1

      Triple-glazed, so I can afford to throw stones. Besides, you know I'm right.

      --
      It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    7. Re:Some thoughts by Guy+Harris · · Score: 1

      Do you get off on being offensive, stupid or wrong? Since your post is all three, it's hard to tell.

      I won't address "offensive", as that's a matter of the person offended. I'll ask about "wrong"; if shown not wrong, "stupid" would imply "right by accident".

      So the three assertions made in the post to which you're responding are:

      1. "This is an argument for why GCC is not modular, not compilers in general. For example, LLVM is highly modular."
      2. "Different optimizations apply at different stages of compilation... you know when you have differing semantic information available to guide those optimizations!?!"
      3. "Oh, and "reification" does not mean "steady refinement". Reification means "to make real"."

      If the first is wrong, then there must be no modular compilers. Are you ready to make that assertion? If so, what supports that assertion?

      If the second is wrong, what would "the absolute final stage" of compilation take as input - some intermediate representation, or generated code (as e.g. a peephole optimizer does)?

      If the third is wrong, why should we prefer your use of "reify" to the one from the Oxford Dictionaries Web site?

    8. Re:Some thoughts by David+Greene · · Score: 1

      So there are some interesting arguments in your comment that I'd like to address.

      the entanglements between logic and data differ between paradigms and that entanglement remains because it's built into the semantics of the programs.

      That's true for some (perhaps many) languages. Data models are often difficult to translate. That doesn't invalidate the statement that your use of "always" is simply incorrect. Perhaps my use of "usually" was a bit strong. I was thinking in terms of mainstream languages. They mostly all look similar to each other. Common implementation of C++ inheritance is "only" structs and arrays of function pointers. It's not great semantics for the compiler but projects like Self show that you can get good performance if you're willing to put in the resources to get there. Often it's not worth it and current implementations are "good enough."

      The compiler's job is indeed to map the semantics, but where the semantics are highly inefficient on that architecture the compiler can't map any better than that. THAT is why code for the Itanium 2 and later has generally been horrible.

      Itanium is a really interesting case study. I remember reading and discussing the original IMPACT papers. We quickly came to the conclusion that it wasn't going to work, long before Intel ever shipped an Itanium. Why? Because it required deep dependence analysis on codes primarily written in languages that don't support that (C). The IA64 ISA is a house of cards. If you can't do all of the required static speculation, it falls apart. With enough analysis, profile feedback ,etc. I'm sure one can do it. But it's not worth the effort where the powerful hardware of x86 is so cheap and easy to use. So yes, language semantics matters a lot and hardware engineers need to be aware of the issues. I don't think I've ever claimed otherwise.

      --

    9. Re:Some thoughts by fatphil · · Score: 1

      "Compiler architecture should be piped, with optimization as the absolute final stage."

      Can't agree at all. Rewriting the source code (common subexpression elimination, inlining function calls, constant folding, single static assignment, loop rewriting) should happen early, where the highest level constructs are clearest, and therefore most easy to rewrite. That's where the big optimisations can be made - after that, you're just keyhole optimising.

      --
      Also FatPhil on SoylentNews, id 863
  41. link bait by Mr.+McGibby · · Score: 1

    Please don't click the link.

    --
    Mad Software: Rantings on Developing So
  42. Re:Oh, my! Hehe! by Anonymous Coward · · Score: 0

    Haha this from the man who made an unmeasurably lame "joke" that doesn't even make sense? You need to move out of your "mom"'s basement and quit being so defensive. If that involves paying a bored prostitute, even better, but it's entirely your choice if you'd rather get KBd instead.

  43. ooohhh blinky blinky!!! by Anonymous Coward · · Score: 0

    We need more programming languages like we need blinking text on webpages. What we really need is newbies(and oldie academia types who think they are important) to understand they aren't God's gift to mankind. They aren't smarter. That they don't need to reinvent the wheel. That most of the shit they are trying to implement has already been discussed and turned down for VERY good reasons. But they know everything. Really we need a return to the basics in all realms of programming. Speaking of webpage programming I would like for once to be able to read a news article without it having to load 8000 scripts, 40,000 ads, pictures/video unrelated to the article, on and on. That's basically what these shitheads are asking for, to be able to the place ads more easily, or sell your data more easily, but they want to be able to do it at the kernel level. You know because identity theft and corruption of companies just isn't easy enough with current languages. What they are asking for is the equivalent of Oracle taking over Sun and OpenOffice. They know better! Follow me or else! Ummm No...FU!

  44. Re:No, we need one *better* language, not "more" by PatDev · · Score: 4, Informative
    The idiocy of this comment stems from the fact that it's author must have no experience in programming language design. We are all quite aware that humans are the primary users of our languages. The problem is that it's not helpful to have the peanut gallery always yelling "that one doesn't make me happy, make it more soft and people-like. I don't want to have to map my mental model - make it map its".

    It's all well and good to say "make it understand English", but there are two primary problems with this. First, natural language programming is hard. Really hard. Just getting a computer to understand English with any reasonable reliability is pretty far in the future, and we can't wait for that. Second, we as humans don't really have much success expressing exactly what we want. It's why the most insidious bugs are not in code, but in specification. We so often don't know quite what we want that restrictive languages are actually beneficial, in that they force us to reason consistently.

    And it's not some "saying floating around the internet", it's a very famous quote from Structure and Interpretation of Computer Programs, a seminal text in basic programming language theory and compiler/interpreter design. Most importantly, it's probably the first book you should read if you want to intelligently discuss this topic.

    Another quote you might find interesting:

    When someone says "I want a programming language in which I need only say what I wish done," give him a lollipop.

    - Alan Perlis

    In short, from someone who likes to design programming languages - stop assuming that just because the problem is easy to understand that it is easy to solve. We're not all basement-dwelling geeks who think UNIX is the pinnacle of end-user usability and newbs should just get over it. We aren't pretending that there is no problem, and we're not refusing to educate ourselves on how to solve it.

  45. There are a couple of relational languagues by Colin+Smith · · Score: 1

    Which improve on sql. You mentioned Rel, there's Dee[1] for python. The problem with sql though is the network effect... It's why it's still there.

    With C, python, Perl, Pascal, blah there is no network effect, you talk to the computer, it does stuff. With sql, the computer talks to another computer and the other computer has to understand. So you now have sets of computers that talk the same language; SQL everywhere.

    [1] http://www.quicksort.co.uk/DeeDoc.html

    --
    Deleted
    1. Re:There are a couple of relational languagues by roman_mir · · Score: 1

      SQL is still here because it's domain specific and since the domain is still here (relational DB) the language is still here.

      There is PL/SQL for complex stuff and people can write in their preferred language in many databases anyway, including C, Java, Perl, Python, TCL....

    2. Re:There are a couple of relational languagues by DragonWriter · · Score: 1

      There is PL/SQL for complex stuff

      "Procedural" and "Complex" aren't the same thing.

      And there's only PL/SQL if you are using Oracle, though many databases have SQL-derived procedural languages (mutually incompatible ones, moreso even than the SQL dialects themselves are.)

    3. Re:There are a couple of relational languagues by roman_mir · · Score: 1

      Oracle supports stored procedures in Java as an example. Personally I prefer postgresql.

    4. Re:There are a couple of relational languagues by Colin+Smith · · Score: 1

      SQL is still here because it's domain specific and since the domain is still here (relational DB) the language is still here.

      You haven't explained why it hasn`t yet been replaced by a superior relational language the way other languages have been replaced.

      --
      Deleted
    5. Re:There are a couple of relational languagues by Tablizer · · Score: 1

      It doesn't have to be replaced, just have some serious competition.

  46. Only one problem for me by Anonymous Coward · · Score: 0

    1. Functional programming is pure but the world is stateful. Whenever you read the docs for a functional language they always trumpet the virtues of pure functional programming; but they always have a hack to break it. This is because the world is stateful. If you want to model the world, you need to model state. Maybe there is a purely functional way to model state; but it always looks hacky because they're not modeling it in a straightforward manor. Is it even possible to build a practical CPU that isn't stateful? Why not just get rid of the const keyword in C, default everything to const and add a keyword called "mutable"?

  47. I will keep using my thirty to forty year old by Shivetya · · Score: 1

    language.

    Why not fix the horrible languages that have come since? Seems to me the most popular reason for all the new languages is they always suck thereby insuring a new one to take the place.

    Here is a hint, solid business languages with built in understanding of currency handling (read decimal positioning) are wonderful things... albeit a bit boring.

    Though I really don't mind PHP , lets me expose core business logic that works flawlessly to those services I can't trust

    --
    * Winners compare their achievements to their goals, losers compare theirs to that of others.
    1. Re:I will keep using my thirty to forty year old by Anonymous Coward · · Score: 0

      No. Ruby on rails should be PLOP IN THE HEAD.

      Assembly always is hard, fast and the least portable,
      but as long as their are masochists and pascal,
      the beatings will continue.

  48. Of course it's hard to upgrade old languages by Anonymous Coward · · Score: 0

    But since when is "because it is difficult" a sufficient reason to take the easier path instead of the right one?

  49. Isn't this a more general pattern? by FoolishOwl · · Score: 1

    It seems to me that it's often the case that at some point, it's better to build something new then to keep maintaining and adapting something old. It's an opportunity to rethink things from scratch, to apply what you've learned, and to toss out accumulated cruft. I find this when I upgrade a Linux distribution or replace an entire computer, but I also find it when I move to a new home, or take a new job, or otherwise seriously revise my living conditions. I expect it applies in much broader social contexts -- I'm certainly not the only one who thinks the patent system ought to be scrapped and replaced.

    Complicating this is that there's a need for the self-discipline to focus on maintaining and adapting something that is still in the prime of its utility. But in general, I do think there is a pattern in which it's good to rebuild once in a while.

  50. Re:equally -incompetent- by TaoPhoenix · · Score: 1

    "Frankly, I think the base topic here, the argument for new languages over improvements to existing languages, is to make everyone equally -incompetent-."

    Oh Cool. Harrison Bergeron's world has hit programming.

    Just when you thought you knew how to program, let's make you learn Sapphire on MonoRail.

    --
    My first Journal Entry ever, in 8 years! http://slashdot.org/journal/365947/aphelion-scifi-fantasy-horror-poetry-webzine
  51. Here we go.... by _0x783czar · · Score: 1

    This post was destined to turn into a "Oh yeah? well REAL Programmers use..." argument. I agree with this. No matter what we prefer, the market is only improved by new attempts to improve the power of Programming. I like C based languages, but stepping outside the C Paradigm or even improving the C Paradigm is far from being out of the question. As new needs arise, improved languages will make user and programmers lives so much better. But that doesn't mean we are forced to change until the market deems it necessary. Besides. The market can be slow to change any way. Just ask the military's Fortran programmers.

    --
    ~theCzar
  52. keep building them I will keep using them by codepunk · · Score: 3, Funny

    Keep building new languages, I will surely find a way to bill hours for it.

    Java - billable hours and ass loads of hardware
    PHP - quick and dirty web development cleanup billable hours
    Python - one off get it done quick billable hours
    Perl - systems stuff they will have to call me back in to maintain
    Java Script - client hack more billable hours
    C - debugging more billable hours
    Ruby - billable hours for rewrite to address performance issues including a ass load of hardware .NET - perfect for lock in and selling licenses, rewrite in java once it is determined that hey we need to support other platforms.

    --


    Got Code?
  53. no stinking language by findoutmoretoday · · Score: 2

    Most of the time I just want to sit on top of a database where most of the code is in triggers - calculated fields, a cross between a database and a spreadsheet.  And then some screens stuff to display that data. 

  54. Re:No, we need one *better* language, not "more" by frank_adrian314159 · · Score: 1

    No language is perfect.

    Wrong!

    --
    That is all.
  55. Hear. Hear. I second. All in favor? by Anonymous Coward · · Score: 0

    Carried. Miller Time.

  56. Just Learn To Program by Greyfox · · Score: 1

    In any one of them. Knowing two or three languages in depth will buy you more than chasing after the moon. At some point you're just going to have to sit down and learn to write a program. Doing anything significant in any language is going to be complicated and require some thought process. What I'm saying here is no matter how shiny your newfangled language is, it doesn't mean you can hire chimpanzees to write your program! And if you can, it probably means you can't do anything actually worthwhile in the language.

    --

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

  57. I got a fever by rsilvergun · · Score: 1

    and the only cure is More Programming Languages!

    --
    Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
  58. Clearly... by Anonymous Coward · · Score: 0

    You can write a [insert buzz word language] compiler or interpreter in C, and it likely already is written in C, so C is the best! ;)

  59. Programming Tests by Smallpond · · Score: 1

    Who else skimmed the article and went for the programming tests?

    #1 was not really much about programming and I did horribly on it (13/20)

    #2 was mostly programming and I did well (19/20) Another energy drinks question?

  60. C is for children. by RandomAvatar · · Score: 1

    Anyone who is anyone programs in Brainfuck....

  61. I want new relationships between languages by bugs2squash · · Score: 1

    For example, a suite of compatible languages that allow one to code the same thing in different languages and have a system prove that they have equivalent functionality and if not, spit out meaningful descriptions of what needs to change to converge the implementations.

    --
    Nullius in verba
  62. Ummm... by Anonymous Coward · · Score: 0

    what is it about a music degree that makes learning a new instrument any easier?

    I have a Master's degree. My friend has a PhD. Plenty of ear trained/self taught musicians I know learn new instruments just fine. Learning a new instrument is mostly about mouth/breathing/fingers: dexterity and motor function. Music education is mostly about theory/history/opinion. I can get the analogy you were going for, but think you chose the wrong field.

  63. New languages: Monkey by Anonymous Coward · · Score: 0

    People just seem to be bringing up arguments in defence of their own preferred long-running languages, and there seems to be very little mention of new programming languages -- the entire point of the article. Well, here's one, aimed mainly at web/mobile game apps:

    Monkey

    "Monkey is a brand spanking new programming language that [...] works by translating Monkey code to one of a different number of languages at compile time - including C++, C#, Java, Javascript and Actionscript."

    Monkey's language and compiler are in the public domain, though its game library is proprietary.

  64. The more I learn about C++ ... by Anonymous Coward · · Score: 0

    the more I like Object Pascal.

  65. He said 'tipping point' so it must be true by Anonymous Coward · · Score: 0

    OOH ! THIS ANALYSIS MAKES USE OF THE PHRASE 'Tipping Point'.

    Therefore it must be CUTTING EDGE THEORY

    and TRUTH.

  66. Re:No, we need one *better* language, not "more" by Anonymous Coward · · Score: 0

    Yeah, but if they were to agree with you, they would have to accept paying engineers lots of money to make hard decisions, instead of paying mbas lots of money to make bad decisions.

  67. Reason why established langs are slow to change... by rdean400 · · Score: 1

    is that people get fed up with real or imagined inadequacies and run off to create a new language.

    A new language introduces new and different problems: compatibility with existing code for one. Of course, this problem isn't as big as it once was, because of the JVM and CLR.

  68. Re:No, we need one *better* language, not "more" by Tooke · · Score: 1

    From Paul Graham's website:

    Programs must be written for people to read, and only incidentally for machines to execute.

    Abelson & Sussman, SICP, preface to the first edition

    --
    Anybody want a peanut?
  69. Re:No, we need one *better* language, not "more" by phantomfive · · Score: 1

    The languages designed to provide a system level interface to that machine need to be designed around what a human understands, the way a human understands it.

    You do realize that this was the exact principle behind such delightful languages as COBOL, BASIC, and Applescript, right? Especially look at Applescript, because it was a very bold attempt, and you can learn a lot from its shortcomings....such as why people don't really try that kind of thing anymore.

    --
    "First they came for the slanderers and i said nothing."
  70. Nonsense! All we need is Prolog by littlewink · · Score: 1

    It's only logical!

  71. Please, don't call "language" a "dialect" by Pirulo · · Score: 1

    The definition of what a "programming language" is is wrong by nature and misleading when we are talking about all the variety.

    The real problem is that we don't have several "programming languages", but instead, we have a plethora of programming "dialects".

    We do need another language. Each time we try, another dialect appears.

    1. Re:Please, don't call "language" a "dialect" by Anonymous Coward · · Score: 0

      Shut the fuck up, you wannabe, pedantic moron.

  72. You know what's missing... by Jack9 · · Score: 1

    Any evidence that the statement:
    > It is far, far easier to create a new language from whole cloth than it is to convince the existing user base of a popular language to accept radical changes.
    is true in any way?

    --

    Often wrong but never in doubt.
    I am Jack9.
    Everyone knows me.
  73. Better programmers needed by Corson · · Score: 1
    ("rolling his eyes and groaning that we have quite enough to choose from already")

    Yes, we actually need better programmers rather than new languages. All those examples (Perl, PHP, ECMAscript, Python..) are scripting languages that were developed to make the life of lazy developers and sysadmins easier. Some people seem to have too much time on their hands.

  74. Exactly my point - C# born in 1995. by SuperKendall · · Score: 1

    Since C# at the start was a wholesale ripoff of Java, it's really based in 1995. After all, what about the Microsoft version of Java that predated C# by quite a bit, but was the core for the VM that C# used...

    Also just like Java, it has managed to move substantially past its roots.

    But to claim it was really "born" in 2001 and thus a "21st century language" where the others are not is absurd.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Exactly my point - C# born in 1995. by Anonymous Coward · · Score: 0

      You mean absurd like claiming C# and java are the same language?

  75. Yes it can by Goonie · · Score: 2

    If we're nitpicking, C is not strictly a subset of C++, but it's close enough. Anyway, your argument is flawed. If a feature is unnecessary and makes programs harder to write, debug, and maintain, a language that omits it can be superior to one that includes it. Let's imagine, for instance, a "comefrom" construct that you can insert in arbitrary locations in your code. Would a language that supported "comefrom" be superior to one that doesn't?

    --

    Any sufficiently advanced technology is indistinguishable from a rigged demo
    --Andy Finkel (J. Klass?)
    1. Re:Yes it can by benhattman · · Score: 1

      One language can be better than another for a variety of reasons; expressiveness, conciseness, coherence, readability, safety, and standard library support are the first reasons that come to my mind. You're trivially right that if the only difference between two languages is that one provides an additional confusion/nonsensical keyword, then the subset might arguably be superior for reasons of correctness and safety. But then, that's a strawman argument. For proof, how much does the existence of the ridiculous "goto" construct harm the average C/C++ program? I don't know that I've seen it used once in the last 10 years, so it's hard to argue that a C-- that is just like C, but without that nasty goto would be a great boon. GPs point is correct that C is clearly not better than C++ on the grounds that it is a subset. I'm willing to argue whether or not C++ is actually better than C, but it's certainly not "worse".

  76. Const semantics by etymxris · · Score: 1

    const int SIZE=5;
    int arr[SIZE];

    Second line works in C++, but is a compiler error in C. You have to use #define instead.

    1. Re:Const semantics by Forever+Wondering · · Score: 1

      const int SIZE=5; int arr[SIZE];

      Second line works in C++, but is a compiler error in C. You have to use #define instead.

      Fair enough. But, I would use a #define or an enum (which you _can_ use in C) [particularly for an all uppercase]. And I would prefer those to the const for this example because it's easier to put them in a header file and put the array instance in a .c file.

      If you could replace the "5" with a reference to an extern (e.g. (cast int) &dynamic_size) and define it with a linker option -Adynamic_size=5 [and have it all work], this would be beneficial.

      These are language capabilities, but not necessarily benefits.

      --
      Like a good neighbor, fsck is there ...
    2. Re:Const semantics by Anonymous Coward · · Score: 0

      const int SIZE=5;
      int arr[SIZE];

      Second line works in C++, but is a compiler error in C. You have to use #define instead.

      Um, no. You are completely, totally wrong. It works just fine in C.

      Consider also

      int SIZE=5;
      int arr[SIZE];

      Which is a compiler error in C++, but again, works just fine in C.

      Perhaps you need a compiler that isn't stuck with a version of the language that's been obsolete since 1999?

  77. Re:No, we need one *better* language, not "more" by Anonymous Coward · · Score: 0

    If a computer can fully understand human language, then it can also respond with a fully human like statement. In effect, you're asking for human level AI which would pass the human/computer Turing test. Easy peasy, right?

  78. Nothing wrong with that.... by Anonymous Coward · · Score: 0

    Honestly, I'm all for using whatever language helps get the project done, rather than trying to ram a square peg into a round hole. If you are doing something specialized that a domain-specific language would help with, go for it. AI (artificial intelligence...) programming histroically used LISP. Math people have used Fortran. The Linux kernel uses C. I would not say all these people should switch to "language of the day" just because. But, if someone was doing, say, vision recognition code, and some new language makes that kind of code easier to write, easier to maintain, and easier to tell just what is going on, then by all means use that language rather than having an unholy mess written in C, or Java, or Python.

  79. Re:No, we need one *better* language, not "more" by Anonymous Coward · · Score: 0
  80. Re:No, we need one *better* language, not "more" by SJS · · Score: 2

    Second, we as humans don't really have much success expressing exactly what we want. It's why the most insidious bugs are not in code, but in specification. We so often don't know quite what we want that restrictive languages are actually beneficial, in that they force us to reason consistently.

    Oh, god, yes.

    One of the more important development skills to have is to be able to extract consistent requirements from stakeholders, and then to be able to write them down in such a way that the requirements will be correct and the stakeholder will agree with them.

    When it comes to programming languages, give me a language suited to the problem (all the one-language bigots can go pound sand) that's easier to debug than to rewrite. Large, hairy, complex solutions should eventually result in a new programming language that makes those sorts of things much smaller, far smoother, and simpler.

    --
    Pick One: http://www-rohan.sdsu.edu/~stremler/sigs/sigs.html (Note - disable Javascript first!)
  81. PHP for the many--Lisp for the rest by Compaqt · · Score: 1

    Good that you brought up Lisp.

    It always amuses me how "commando"-type programmers are always complaining about the lack of closures or some such in pedestrian language X.

    Thing is, language X and its cousins are supposed to be dead simple linear-logic languages for the purpose of stuff like "if total_purchase < $50, shipping_surcharge = $10", and so on.

    You're not going to be generating fractals in one-liners in PHP, so stop whining. PHP and the like are for "lite" programmers, i.e., web programmers. That's not disparagement; it's actually praise. PHP is How Stuff Gets Done (like Facebook growing into a 1/2 trillion dollar corporation).

    Meanwhile, if you want a language beauty contest, why not go with LISP and Scheme? These languages allow you to easily extend the language, hence no whining allowed. I seriously doubt anybody's going to come up with a more elegant and extensible language than them.

    So, come on language gourmets, what's the problem?

    Learn Scheme now, and leave PHP as it is.

    --
    I'm not a lawyer, but I play one on the Internet. Blog
  82. Create a language from newbies... by Anonymous Coward · · Score: 0

    I used to teach 68HC11 assembler programming for a long time and towards the end, I wanted to document how new learners created assembly code "wrong". They would intuitively write code that made sense to them. I thought that if I tracked the same "errors" that I was seeing course after course then creating an intuitive language that incorporated the same creative thought process would make programming easier. Unfortunately, the course was dropped and I never got the opportunity to explore the intuitive process further.

  83. How right you are by Anonymous Coward · · Score: 1

    Coming from a background of programming in the 90s it never ceases to amaze some of the younger programmers. I had a client that used a Ruby rake task that took 12 hours to run. This had ran daily for at least a year, they had tried to optimize it - which they just didn't understand how to. They didn't know SQL, for example. I rewrote it using execute() directly and reduced the time down to 20 minutes. Then, just for fun I rewrite it in Perl/DBI and shaved the process down to 5 minutes. You would've thought I was levitating fireballs or something.

    1. Re:How right you are by Pseudonym · · Score: 1

      The kicker is that I'll bet that Ruby program would have still taken hours had it been written in hand-tuned C.

      By the way, this raises another point which is that there's a dual fallacy that that old-school hackers sometimes indulge in. If your program is CPU bound and you need higher performance, the best thing you can do is write well-insulated modular code with carefully designed internal APIs from the beginning. That way, when you find the bottleneck, you can swap out the offending data structures or algorithms and swap in better ones, and everything else should just work.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  84. Re:No, we need one *better* language, not "more" by CodeBuster · · Score: 1

    First, natural language programming is hard.

    In fact, it's probably impossible. English and other natural languages are context-sensitive. The precise meanings of some statement(s) in context-sensitive languages cannot be determined solely from the statements themselves without additional information that is external to the languages. For example, the double entendre. If you want another real world example a rule system that's been mucked up by natural language, you need look no further than the various legal codes and presently in use around the world and the lawyers who profit from and manipulate ambiguities therein.

  85. Re:No, we need one *better* language, not "more" by dkf · · Score: 1

    Large, hairy, complex solutions should eventually result in a new programming language that makes those sorts of things much smaller, far smoother, and simpler.

    Or switching to an existing programming language that is better able to express the problem than the ones you've been used to using. Just because you don't know it doesn't mean it doesn't exist.

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  86. No end goal is defined by ale2011 · · Score: 1

    Thats kind of where the end goal of programming languages needs to be

    No end goal is defined. There is no such a thing as the ultimate programming language paradigm.

    Actually, there is no need to distinguish between program data and instruction data. We do so as long as it's useful. However, the point of computing and communication is just to let data interact. I'd be tented to say that's the point of the Universe as well. Goals, if any, might state what the eventual global entropy is going to be, but that seems to be too far to make guesses.

  87. Re:No, we need one *better* language, not "more" by major_fault · · Score: 1

    There is no way I could agree more with what you said. In fact, I'd even go as far as to say that we need a better natural language that is closer to a programming language not vice versa. Although it's obviously a difficult thing to get right and almost impossible to get it adapted even if it were good enough.

    Natural languages are terribly ambiguous in their meaning. It's so very easy to tell something wrong by making an error in wording or grammar. Especially since different regions actually understand language differently. I live in a small non-English speaking country with a bit more than a million people in it and even here there are native dialects that I can barely understand if at all...

    I think that even SQL is not a good idea and too close to a natural language. I still can't remember which order some statements should be especially in complex queries. Why would anyone think it easier to use and read (not that it's even complex query):

    INSERT INTO `table1` (`col1`, `col2`) VALUES ('1', '2')
    SELECT * FROM `table1` INNER JOIN `table2` ON `table1`.`col1`=`table2`.`col2` WHERE `table1`.`col2`=2

    than it would be something like this. A fictional stricter language where the exact order of statements won't matter at all and where possible syntactic errors are pretty much limited with wrong placement of brackets or quotation marks:

    insert( tables('table1') columns('col1' 'col2') values('1' '2'))
    select( tables('table1' 'table2') columns(all) join('table1 col1' 'table2 col2') where('table1 col2'=2))

  88. I would tend to agree... by Lazy+Jones · · Score: 1

    ... but then I know that the easy to read and understand languages like those in the Wirth family (incidentally also cleaner, more robust and with built-in bounds checks) lost the popularity contest against the abomination that is C. My conclusion is: between readability and less typing, people prefer the latter. Between power to shoot your own foot and mechanisms to prevent ugly bugs, people prefer the former. It's no surprise that several popular scripting languages have essentially taken C and removed types (i.e. the last traces of sanity).

    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
  89. Don't think languages, think paradigms by Required+Snark · · Score: 3, Insightful
    You will be better off if you learn a range of programming paradigms. Knowing how to solve programming issues in a variety of ways will help your problem solving in whatever language you are using, even if it does not support the most appropriate paradigm for the job.

    Having said that, the best way to learn different paradigms is to use languages that are different from each other. Learning only languages that share paradigms will not stretch your abilities that much. For example, in the big picture, C++ and Java are not that far apart.

    My personal experience is that Lisp/Scheme is different enough from any of the C derived languages that it forces you to learn to think a new way. Learning Scheme will make you a better C++ coder. I still haven't spent the time to learn Haskell, but I plan to do so. I think it will improve my abilities no matter what I am working on. Lazy, strict functional programming is far enough removed from what I normally do that I expect to learn a lot of new ways to think about coding.

    --
    Why is Snark Required?
  90. comp.lang.ada FAQ by Lazy+Jones · · Score: 1
    Read this ...

    I believe most reviewers of Ada 9X (and Ada 83 for that matter) will assure you that it was most certainly not designed by committee ;-).

    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
  91. Languages don't have to change slowly by svick · · Score: 2

    I don't think languages have to change slowly. It all depends on the way they are developed.

    Look at C#. It's quite a young language, but it changed tremendously since it started. And now languages like Java and C++ are trying to catch up with it, at least in some aspects (like lambdas).

    In version 1.0, it was mostly a copy of Java, with some enhancements, like properties and delegates. Over time, generics, lambdas (that can be manipulated programatically) and optional dynamic typing were added. And the upcoming version 5.0 will have much better support for asynchronous programming than other languages. All those changes are very useful and can change the way you program.

    I think this proves that popular languages don't have to change slowly. And you can even keep backwards compatibility while doing it.

  92. The COMBINATION of languages is the killer by Anonymous Coward · · Score: 0

    We don't need more languages. By the time I write Java code for a web application that uses JSP and EL syntax, and also emits HTML, CSS, JavaScript, and jQuery, that's what kills me. I have three meta-levels on the same page of code (JSP, emitted HTML/CSS, and emitted JavaScript/jQuery). My mind has trouble distinguishing what belongs at which meta-level. After staring at jQuery code for a few minutes, I still wonder if I'm looking at a snippet of CSS to select something or an anonymous property list in JavaScript. This combination of similar-but-different languages is becoming a nightmare.

    I'd almost rather switch among C, COBOL, LISP, and FORTH - which are all radically different - than among C, C++, Java, Perl, PHP etc which are all similar-but-different.

    How do you get the length of a string? Each C-like language is different.

    strlen()
    length()
    len()
    string.len
    string.length
    string.len()
    string.length()

    ???

    Some C-like OO languages prefer properties to methods (like C#), some are like C and PHP and have a standard function, some are like Perl and randomly use a length() function. I often have to look up how to get the length of a string in an O'Reilly book! This nutty insanity has to stop.

  93. I Miss Turbo Pascal by 9jack9 · · Score: 2

    Now there was a language!

    Turbo Pascal 4.0 was the best. Not because of efficiency, or programming paradigm, or any of that.

    It had an integrated development environment that was a dream to use. The online documentation was helpful. The manual was a masterpiece. It was easy to begin with not very much and to be producing fairly complex results in not much time.

    I am not a programmer by trade. Studied it in school, way back in the 20th century. Since then, every now and then I've done some programming for my own utility or for work projects in all sorts of languages, including programming, macro, and scripting languages.

    Perl 5.2 was the closest I've come to a language I really like since Turbo Pascal. Yeah, the initial syntax learning curve was ferocious, but in the end it wasn't that steep. Sure, no integrated development environment, but a decent text editor was almost as good. The Perl manual pages were masterful. Again, easy to begin with not very much and produce useful results in not much time.

    I'd really like to find my own personal 21st century Turbo Pascal. I don't care about the syntax, although I actually sort of liked the Pascal syntax. I want a tool that is easy to install, that includes a reasonable IDE with conveniences like syntax highlighting and code-completion, useful documentation, and a fairly rapid path from the start line to something useful. I'm willing to give up the IDE if I can get consise and precise syntax documentation and error messages.

    I took a look at Perl 6. I haven't given up on it yet, but it doesn't seem cooked yet. And the documentation left me swimming in a sea of information that never seemed relevant to what i was trying to do.

    I took a look at Clojure. I had a lot of hope for it. I ended up lost in a sea of irrelevancy trying to figure out how to do very basic things.

    Ruby. Couldn't download it. Don't know why. Some website error over a couple of days. Fail. Maybe I'll try again some time.

    Python. There is something that just seems wrong to me about indenting being syntactically significant. But what the heck, I'm willing to set that aside. The documentation isn't bad. My biggest issue with Python is "SyntaxError: bad syntax". That's it? Nearly a hundred years of computer science and the most the computer can tell me about my mistake is "SyntaxError: bad syntax"? I can't even get a "operator expected" message? Okay, so occasionally some sort of indentation error, but mostly just "bad syntax". I haven't completely given up on it, but I got tired of fighting that error message.

    Actually, C# is the best I've found so far. I am really hoping for something better. But I've been able to start from not much and produce small but useful (console) programs in not much time at all. The combination of command-line compiler and my own text editor was enough to get me going. Basic language documentation is woefully deficient, but somehow that wasn't much of a problem. I've developed a love-hate relationship with Visual Studio, though. Can't seem to make it edit just one file, with full syntax and code-completion. It wants "projects" and "solutions". Screw that. I understand the usefulness of that, but if I'm writing a 30 line script that does something useful to some text data, I don't want to go through all the overhead of "projects" and "solutions", I want to create a file, edit, compile, and done. And the on-line help in VS is . . . stupid.

    So, go ahead and jump on me. If any of these are your pet language, and I'm just not getting it, please enlighten me. If you have a different pet language, and I'm just not getting it, please enlighten me.

    But whatever it is it needs to be pretty simple to install the basic environment. Basic documentation needs to be pretty useful. An IDE with syntax-highlighting and code-completion is a big bonus, but I can live without it if there's decent error messages and documentation. And it needs to be useful pretty

  94. Re:No, we need one *better* language, not "more" by SJS · · Score: 1

    Sorry, I was not clear that my base assumption is that we're already trying to use the best language for the problem at hand. There are *still* going to be problems that are large, hairy, and complex, given the other constraints we might be working under.

    If you don't consider at least three viable different languages for a new project, you're not doing your due diligence.

    (Unless, of course, the project is 'use language X on a real-ish problem to see how it really works', and the end result is just a happy side-effect of giving language X an honest go.)

    --
    Pick One: http://www-rohan.sdsu.edu/~stremler/sigs/sigs.html (Note - disable Javascript first!)
  95. Better programmers, not more languages by gillbates · · Score: 1

    The problem is twofold: 1.) Someone who thinks we need more programming languages doesn't understand the problem, but it's generally a moot point because 2.) Someone implementing the latest fad in languages inevitably ends up re-inventing the wheel, albeit poorly.

    The end result is that while 10% of the features of the new language may be novel and interesting, only about 1% of the features will be useful in the practical sense. And 90% of the time spent in language development will be put into recreating existing functionality in the new language. Look at Java, for example. Just when UI design was starting to make sense, Java reimplemented the entire GUI in Java, and threw away a large portion of what had been learned on how to do UIs well.

    And the result? Nobody used the Java UI. Remember Swing? Yeah, I actually wrote GUI apps with it, but Java went the route of the server - hidden from the user, and never ever came close to challenging C++ for work on Desktop apps. Oh, sure, maybe Swing (or whatever they're calling it these days) has improved, but Java missed an entire generation of programmers in the interim.

    The problem today is that by the time your new paradigm catches on, and you've developed all of the attending libraries and functionality to make it competitive with existing languages, the paradigm is already obsolete.

    There really has been very little progress on languages since C++. There's very little that's new, functionally speaking. The new languages of today aren't revolutionizing the software paradigm - more often than not, they're just reimplementations of existing functionality and language paradigms with a new set of strange and irritating behavior. Python's use of whitespace to perform block delimiting is an interesting step backwards - it was first done in COBOL - and it was just as much a defect then as it is today. When I had to learn COBOL in school, I thought it a waste of time until Python came out, and then I recognized the value: it had taught me the danger of making stupid decisions in language design.

    We've come to the point where unless you're using a really old language - older than C - the language is pretty much irrelevant. Granted, some languages are better than others at solving certain problems, but I've yet to find a new language (after Java, that is) that brought something new and important to the realm of computer science. Even Java was a draw - you lost operator overloading and multiple inheritance - in favor of a simpler, more practical paradigm (sound like C, anyone?!). And C# was definitely a step backward; you got none of the advantages of a vm with all of the disadvantages. And Python has just decided to break backward compatibility on a whim, leaving anyone with a substantial codebase out in the cold.

    --
    The society for a thought-free internet welcomes you.
  96. Evolution and Revolution by inglorion_on_the_net · · Score: 1

    I think there are two forces that improve programming languages, much like any other field: evolution and revolution. By which I mean: existing languages evolve by having incremental changes applied to them, and, every once in a while, a new language disrupts the field in a more radical way.

    All of this is accomplished by a process where new concepts and new implementations of existing concepts are constantly being tried in new languages, and, although most of these attempts wither, some concepts eventually make it into day-to-day programming. It isn't always the language that first introduces a concept that succeeds or becomes the champion for that concept, but this constant experimentation is what moves the field forward.

    The way I see it, we need new programming languages for two reasons. First of all, existing languages have well known deficiencies, that are hard to fix because they are fundamental to the language. You need a new language to get rid of them. The other reason is that we need to keep experimenting. Perhaps this does not technically require new languages, but creating a new language is often how new concepts are explored - and the knowledge gained here will eventually make the language you use better.

    --
    Please correct me if I got my facts wrong.
  97. Incomplete subject line by volpe · · Score: 2

    Somebody truncated the "like we need holes in our heads" part.