Slashdot Mirror


GNU Grep and Sed Maintainer Quits: RMS and FSF Harming GNU Project

In a scathing rant posted to a GNU project mailing list, the maintainer of grep and sed announced that he was quitting the GNU project over technical and administrative disagreements. Chief among them: He believes RMS is detrimental to the project by slowing down technical innovation (the example used was RMS's distaste for C++, not exactly a strong point against RMS). Additionally, he noted that the FSF is not doing enough to help GNU "Projects such as gnash are bound to have constant funding problems despite being (and having been for years) in the FSF's list of high priority projects.". Finally: "Attaching the GNU label to one's program has absolutely no attractiveness anymore. People expect GNU to be as slow as an elephant, rather than as slick as a gazelle, and perhaps they are right. Projects such as LLVM achieve a great momentum by building on the slowness of GNU's decision processes, and companies such as Apple get praise even if they are only embracing these projects to avoid problems with GPLv3." The author is quick to note that he has no philosophical disagreements with GNU or the FSF.

309 of 476 comments (clear)

  1. Stallman is the original neckbeard of computing by Anonymous Coward · · Score: 2, Funny

    Enough said.

    Gnu/Anonymous FSF/Coward.

    1. Re:Stallman is the original neckbeard of computing by greg1104 · · Score: 5, Insightful

      No, that would be Thompson and Ritchie. Stallman's neckbeard has spread horizontally to try and compete, but it's still no match for the epic reach into the neck Thompson's has in that shot.

    2. Re:Stallman is the original neckbeard of computing by Mikkeles · · Score: 2

      Better a principled neck-beard than a whiny chin-beard;^)

      --
      Great minds think alike; fools seldom differ.
    3. Re:Stallman is the original neckbeard of computing by Tablizer · · Score: 1

      Enough sed, you mean.

    4. Re:Stallman is the original neckbeard of computing by davydagger · · Score: 1

      back then you just called them "dirty hippies" and "long hairs"

  2. Why does C++ matter? by PhrostyMcByte · · Score: 4, Interesting

    the example used was RMS's distaste for C++, not exactly a strong point against RMS

    So RMS doesn't like C++ -- this doesn't stop people who can use it properly from writing their projects in it, does it?

    Does RMS actually have control over what GNU projects are implemented in? If so, I'd say that's quite a strong point against GNU -- throw the whole "right tool for the job" bit out the window because one dude doesn't like it?

    1. Re:Why does C++ matter? by Anonymous Coward · · Score: 5, Informative

      From TFA (I know, I know, cardinal sin, but I read the article yesterday on LWN):

      However, all Stallman had to offer on the topic was "We
      still prefer C to C++, because C++ is so ugly" (sic). As a result of
      this, the GNU coding standards have not seen any update in years and
      are entirely obsolete.

      So, RMS wasn't involved in the C/C++ switch, but his refusal to acknowledge it has lead to a lack of "C++ is a real thing, we should have a coding standard" across GNU.

      I saw another comment somewhere (that I can't find now) about how, prior to LLVM, RMS *was* opposing many things (I believe, but can't be sure without the source, that the switch to C++ was one of these things), and since LLVM came out as a competitor, RMS has been compelled to be more amicable to change he doesn't personally like.

    2. Re:Why does C++ matter? by Anonymous Coward · · Score: 5, Interesting

      True, but those few people who use C++ correctly seem to have learned their lessons with C. I'm thinking of Sam Leffler, I've held up his clean programming in his HylaFAX software as examples of *how* to do C++, instead of merely holding up the numerous examples of how not to do it.

      Unfortunately for comparisons, Sam is one of the authors of BSD UNIX. Not NetBSD, OpenBSD, FreeBSD, or invent-yet-another-pointless-license-scheme-BSD. But original BSD. *Brilliant* programmer. Junior programmers should review Sam's code to unlearn the bad lessons taught by people who don't understand how object oriented work should be used.

    3. Re:Why does C++ matter? by K.+S.+Kyosuke · · Score: 3, Informative

      So RMS doesn't like C++ -- this doesn't stop people who can use it properly from writing their projects in it, does it?

      Yeah, after they enforce a company-wide ban on multiple inheritance, exceptions, and 95% of the publicly available libraries.

      --
      Ezekiel 23:20
    4. Re:Why does C++ matter? by sg_oneill · · Score: 1

      He's got sway. I actually love RMS's philosophy and the staunchness with which he defends it. But sometimes yeah he's a bit old fashioned like that, and yes he has some sway, because GNU is a specific project, not just a licence.

      Personally I can't stand C++ either, but my decisions affect me alone, not a huge volenteer org I'm heading up.

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    5. Re:Why does C++ matter? by dalias · · Score: 4, Funny

      The GNU coding standard for C++ should be that you use only the subset of C++ that's also valid as C... :-)

    6. Re:Why does C++ matter? by Anonymous Coward · · Score: 3, Informative

      So RMS doesn't like C++ -- this doesn't stop people who can use it properly from writing their projects in it, does it?

      Yeah, after they enforce a company-wide ban on multiple inheritance, exceptions, and 95% of the publicly available libraries.

      The Google style only applies to code written by Google employees. Those publicly available libraries are not banned (except for Boost, and then only certain parts of it).

    7. Re:Why does C++ matter? by sg_oneill · · Score: 1

      Multiple inheritance is actually problematic in a lot of cases, especially for libraries.

      Of course , its like singletons or whatever. Shouldn't do it, but sometimes deadline-practicality wins and its the best tool for the job.

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    8. Re:Why does C++ matter? by Chris+Newton · · Score: 3, Insightful

      True, but those few people who use C++ correctly seem to have learned their lessons with C.

      That may be, at least in part, because many of the less than ideal aspects of C++ come from its C heritage.

      I don’t understand some of the arguments made against C++ by certain “elder statesmen” of the OSS world. It seems they don’t like some of the extra functionality available in C++, seeing it as overcomplicated or too readily able to hide behaviour. In itself, that’s a reasonable concern. But then they use C, and reinvent the same wheels using crude text substitution macros that could be doing or interacting with anything.

      On another forum discussion a few days ago, I saw someone argue that the Linux kernel is very readable, citing this C file as an example. I’m still not sure whether their comment was meant to be sarcasm.

    9. Re:Why does C++ matter? by marcovje · · Score: 4, Informative

      Leffler moved on to FreeBSD afaik, and even was FreeBSD Foundation president for a while

    10. Re:Why does C++ matter? by beelsebob · · Score: 1

      The question is, does that valid C have a different meaning to the also valid C++ :D

    11. Re:Why does C++ matter? by K.+S.+Kyosuke · · Score: 1

      Multiple inheritance is actually problematic in a lot of cases, especially for libraries.

      Actually, multiple inheritance is problematic whenever you don't have a MOP at your disposal, because it's never clear what class precedence linearization is appropriate and whether or not it should be the same one for all cases and problem domains.

      --
      Ezekiel 23:20
    12. Re:Why does C++ matter? by maxwell+demon · · Score: 1

      In almost of the cases where you'd use multiple inheritance, the intersection of the interfaces of the two classes should either be zero, making any precedence questions moot, or obtained through diamonds with virtual inheritance and pure virtual functions in all base classes, so again there's no precedence question because the only class implementing the shared interface at all is the most derived one.

      I'd say if you need to think about precedence, you've probably already done something wrong.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    13. Re:Why does C++ matter? by Sir_Sri · · Score: 5, Interesting

      throw the whole "right tool for the job" bit out the window because one dude doesn't like it?

      Imagine a conversation goes like this. (Imagine that this is a shop that does C development right now).

      New guy: This project that needs doing. I could do it in C++, I could do it a lot faster than in C.

      Old manager guy: If we do it in C++ it means we have to keep C++ capable people on around. Even if you stick around 10 years from now you might be out of practice coding.

      New guy: Ok, but if we don't do it in C++ we're probably not going to get it done at all, because we don't have the resources to do it in C at all.

      Old manager guy: If it means we lock ourselves into a future of more skills than we have, it's not worth doing, because we can't guarantee being able to support it, and I don't want our name on abandonware.

      They'd both be right. And that would be why GNU still doesn't consider itself to have a stable release. If you demand everything be done exactly perfectly you'll never even finish one thing, and if you accept 'good enough' you can easily end up with bits of code clinging to life that you will eventually have to just rewrite.

      I just was on a project where one of the other software guys took all of the function names of a MS windows package, and completely rewrote how quite a lot of them behaved (not just implemented the same API differently, he actually completely changed what the functions do), but that was about 10 years ago. Now, to try and update that code and use the new version of the actual MS api we had a nightmare of a time, trying to figure out what he changed, and why was actually really hard and wasted a lot of money. And yet, it meant he had a working piece of software out the door 10 years ago that kept him in business for 10 years.

    14. Re:Why does C++ matter? by Zero__Kelvin · · Score: 5, Interesting

      "The GNU coding standard for C++ should be that you use only the subset of C++ that's also valid as C... :-)"

      That would not be a very good idea, since certain valid C constructs that are also valid C++ constructs behave differently.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    15. Re:Why does C++ matter? by Zero__Kelvin · · Score: 1

      The answer is a definitive yes! (Pun intended)

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    16. Re:Why does C++ matter? by swillden · · Score: 5, Informative

      So RMS doesn't like C++ -- this doesn't stop people who can use it properly from writing their projects in it, does it?

      Yeah, after they enforce a company-wide ban on multiple inheritance, exceptions, and 95% of the publicly available libraries.

      Google doesn't ban multiple inheritance, though in most cases multiple inheritance of anything but pure interfaces is discouraged, and there's rarely any need for Google engineers to use all of the BOOST libraries, given Google's extensive internal libraries.

      I do wish that exceptions were allowed, but I understand the rationale for avoiding them (it's spelled out in the style guide), and can't disagree with the decision.

      (I write C++ code for Google.)

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    17. Re:Why does C++ matter? by khallow · · Score: 1

      Wow, I never thought I'd see someone admit to using HylaFAX. I remember looking for a lightweight FAX interface back in 2000-2001 for some demo project I was doing. It was a lot better than what else was out there. The MS library stuff in particular was a vast pile of crap and OS-specific of course.

    18. Re:Why does C++ matter? by bored · · Score: 1

      I do wish that exceptions were allowed, but I understand the rationale for avoiding them (it's spelled out in the style guide), and can't disagree with the decision.

      From someone who disables exceptions via g++ compiler flags for a few of my projects, and uses them extensively in others... The problem is that the language definition basically requires them. The ugly edge cases and extra code everyone always forgets (nothrow syntax for new) due to laziness can generate the same kind of one in a billion errors that people try to avoid by not having exceptions in their C++ programs. Being unable to signal initialization failures during construction destroys RAII for problems more complex than simple variable initialization.

      So, its a case of dammed if you do, dammed if you don't (the performance argument is sort of bogus, unless your throwing exceptions everywhere).

      Personally, I think your better off enforcing minimal use of exceptions, and solving the problem higher up at the architectural level with a transaction/thread cancellation model where any unusual exceptions are handed with one or two extremely high level catch routines. It also tends to segregate the error classes. Errors that are common are coded with normal return code handling and appropriate recovery code, uncommon failures tend to get handled with exceptions. The exceptions tend to be verbosely reported, and the operation "amputated" if you will.

    19. Re:Why does C++ matter? by 21mhz · · Score: 1

      I do wish that exceptions were allowed, but I understand the rationale for avoiding them (it's spelled out in the style guide), and can't disagree with the decision.

      From someone who disables exceptions via g++ compiler flags for a few of my projects, and uses them extensively in others... The problem is that the language definition basically requires them.

      Not in practice. If you write your constructors to only do minimal initialization (yes, RAII is overrated) and don't overload operators beyond few well-regulated cases, you don't have any need for exceptions.

      The ugly edge cases and extra code everyone always forgets (nothrow syntax for new) due to laziness can generate the same kind of one in a billion errors that people try to avoid by not having exceptions in their C++ programs.

      std::bad_alloc basically does not happen for run-of-the-mill allocations in most deployment environments today, so you can ignore it: an out-of-memory kill will get your program more often anyway, and you can't have a software safeguard for that.
      Checking for allocation failure may be useful for a few scenarios where huge buffers are allocated, but those can be done with customized code, or better, rewritten to never rely on allocating buffers with sizes approaching that of physically available memory.

      --
      My exception safety is -fno-exceptions.
    20. Re:Why does C++ matter? by bored · · Score: 1

      Not in practice. If you write your constructors to only do minimal initialization (yes, RAII is overrated) and don't overload operators beyond few well-regulated cases, you don't have any need for exceptions.

      RAII is a tool, like anything else the zealots can get carried away.

      That said, as someone who believes that objects represent things, and code them that way, I find myself starting threads, doing further resource acquisition, self registration, and all kinds of other things that _CAN_ fail in the constructors/destructors. To blithely ignore those problems, or follow every construction with a initialize/finalize type call IMHO misses the point of using C++ over C. Basically, what is being advocated is empty constructor bodies because 99% of basic initialization can be done in the initializers list (and should be if Meyers is correct).

      And its not just RAII, if you should happen to create a temporary (generally avoided but sometimes quite useful) you can loose both the ability to report errors as well as the ability to move your initialization out of the constructor..

      RAII isn't just about memory management either. The applications I work on are heavily threaded. Using RAII type classes for lock/unlock not only solves the problems with unlocking things during an exception stack unwind, but it strongly encourages clear lock scoping. Its pretty amazing how many lock bugs can be removed through the use of just a few simple rules mostly enforced by the compiler.

      I think in the end people who decide exceptions are bad and 100% rule them out of a C++ project for religious reasons (rather then lack of run-time support) do themselves a disservice. It may not be immediately evident but over time it will be.

      Discouraging their use as a general error handling mechanism may achieve much the same goals without unduly obfuscating a code base.

    21. Re:Why does C++ matter? by 21mhz · · Score: 1

      That said, as someone who believes that objects represent things, and code them that way, I find myself starting threads, doing further resource acquisition, self registration, and all kinds of other things that _CAN_ fail in the constructors/destructors. To blithely ignore those problems, or follow every construction with a initialize/finalize type call IMHO misses the point of using C++ over C. Basically, what is being advocated is empty constructor bodies because 99% of basic initialization can be done in the initializers list (and should be if Meyers is correct).

      I advocate that too, with the proviso that the member initializer also does nothing significant except trivial initialization. I've seen it going bad where a constructor did blocking I/O in a basic UI window class.

      If you look at libraries like Qt, the construct/set options/use pattern is not as unnatural as its dumb application may seem. The split is usually like this: the constructor creates an empty or minimally usable object; setters allow it to be customized in a descriptive manner (as opposed to an arbitrarily ordered list of arguments in a constructor); then there is an action method telling what you want to do with the object. It's also still expected from the destructor to finalize any state associated with the object without any explicit finalization method needed, so not all of RAII's benefits are lost.

      RAII isn't just about memory management either. The applications I work on are heavily threaded. Using RAII type classes for lock/unlock not only solves the problems with unlocking things during an exception stack unwind, but it strongly encourages clear lock scoping. Its pretty amazing how many lock bugs can be removed through the use of just a few simple rules mostly enforced by the compiler.

      Any class designed to be used as a helper in automatic scope should be RAII indeed. But it's not a sufficient justification for using the pattern for arbitrarily passed values, where C++ just fails to provide adequate solutions out of the box.

      I think in the end people who decide exceptions are bad and 100% rule them out of a C++ project for religious reasons (rather then lack of run-time support) do themselves a disservice.

      No, it's precisely the bad run-time implementation and its integration with other language features. I have no problems using exceptions in Java, Python, or other runtime environments where they work.

      --
      My exception safety is -fno-exceptions.
    22. Re:Why does C++ matter? by bug1 · · Score: 1

      C is and will always will be more efficient with hardware than C++ (for equally skilled programmers). Its also true that hardware resources will only become cheaper, so that advantage becomes less and less meaningful.

      A lot of older programmers value hardware efficiency more the programmer efficiency, and younger programmers dont see the value in that.

    23. Re:Why does C++ matter? by Alioth · · Score: 1

      I find that file you cite very readable. It's well formatted, it's clear what the code is supposed to do etc., comments where necessary. Why do you think it's sarcasm?

      I'm not a kernel dev, btw. It is entirely possible that I find that file eminently readable because I read a lot of other people's perl scripts...

    24. Re:Why does C++ matter? by Chris+Newton · · Score: 1

      C is and will always will be more efficient with hardware than C++ (for equally skilled programmers).

      Why would you say that?

      There’s always been a great deal of emphasis in C++ on not paying any performance penalty for features you’re not using. Using the roughly common subset of the languages should yield similar results either way.

      As far as the extra features in C++, I don’t see any reason to assume that (for example) a virtual function dispatch via a vtable in C++ should be less efficient than the old “look up a pointer in a jump table” techniques in C that serve a similar purpose. If anything, it should be the other way around, as the C++ compiler has a little more semantic information that it could potentially use to optimise the generated code for each target hardware platform.

    25. Re:Why does C++ matter? by narcc · · Score: 1

      Its also true that hardware resources will only become cheaper, so that advantage becomes less and less meaningful.

      I keep hearing this, yet it seems that hardware isn't keeping up its end of the bargain...

      (To clarify: Software seems to be getting less efficient at faster pace than hardware is getting faster and cheaper.)

    26. Re:Why does C++ matter? by wdef · · Score: 1

      Operator overloading can be a nightmare, it's a bad idea and it's needless: http://news.ycombinator.com/item?id=559976

    27. Re:Why does C++ matter? by Chris+Newton · · Score: 1

      I find that file you cite very readable. It's well formatted, it's clear what the code is supposed to do etc., comments where necessary. Why do you think it's sarcasm?

      Well, for one thing, it’s just code in a file. There is no obvious indication of how this code fits into the wider design of the program, because C doesn’t have much of a module/namespace system. (There are some comments right at the end that seem to be about build order dependencies, but it’s not clear to me what they are trying to achieve. I assume there is some sort of project standard that requires them.)

      Next, consider the first function, xor_blocks. It appears to take about 20 lines of code just to call one of four other functions based on how many entries are in an array that was passed in. A significant proportion of the code is only there because the input arrived as a void** and a count rather than a typed array. The rest is repeating essentially the same pattern of code almost verbatim four times. It’s not clear whether the four do_N functions are completely different algorithms or just the same algorithm using defaults if there aren’t enough inputs provided. In the former case, you could express the entire function in about five or six lines in numerous other mainstream languages, most of which would just be a look-up table identifying the required functions. In the latter case, the entire 20+ line function would probably be redundant in many languages. And I see no reason another language that can express this kind of logic without the overheads shouldn’t generate code behind the scenes that is still 100% as efficient as the example.

      A little further down, we start defining macros like BENCH_SIZE. When these are later used elsewhere, you can’t tell whether you’re working with a constant or a function call with side effects. (This is a big objection I have to complaints that C++ overloaded operators could do almost anything, coming from people who then argue that we should use C instead because everything is explicit.)

      That brings us to the second big function, do_xor_speed, in which we again encounter our ambiguous struct containing function pointers and void* parameters. This time, we also use a magic number, rely on (presumably) a global variable and implicit side effects for the main loop control logic, apparently try very hard not to let that loop be optimised in some unspecified way, and cause various implicit side effects on some other (I assume) global variable.

      The final major function, calibrate_xor_blocks, has similar issues, and further complicates things by interweaving local macro definitions that mean some of the code isn’t executed, or is executed but is immediately overridden anyway, as well as apparently obfuscating a simple function call behind another macro with a name that looks like a regular function itself.

      Now, I do realise that a lot of this is how a lot of industrial C gets written in practice. I also realise that there are few realistic choices for a low-level, systems programming language today, and none that I know of has much better readability than C. But that doesn’t negate the criticism that the C code has fairly horrible readability/maintainability properties compared to what could be achieved in a more expressive language.

    28. Re:Why does C++ matter? by Chris+Newton · · Score: 2

      I respectfully disagree. I’ve worked on heavily numerical code in both C++ and Java. Writing horrors like (a.Multiply(a).Add(b.Multiply(b))) instead of a*a+b*b gets old after about the first five minutes. Also, I’m still waiting to meet the programmer who will make those * operators do division just to trick me, yet who writes Multiply to do multiplication as we’d all expect.

    29. Re:Why does C++ matter? by drinkypoo · · Score: 1

      'd both be right. And that would be why GNU still doesn't consider itself to have a stable release. If you demand everything be done exactly perfectly you'll never even finish one thing

      Did you ever actually install and run the hurd? I did. They weren't anywhere near chasing perfection, they were still trying to make it useful.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    30. Re:Why does C++ matter? by cheesybagel · · Score: 1

      It's arguable most of the uses for it should be in the standard language implementation to begin with.

    31. Re:Why does C++ matter? by ais523 · · Score: 2

      Also, IIRC the ban on exceptions is because they had a lot of existing code that wasn't exception-safe and didn't want to break it, rather than because they think they're a bad idea in general.

      --
      (1)DOCOMEFROM!2~.2'~#1WHILE:1<-"'?.1$.2'~'"':1/.1$.2'~#0"$#65535'"$"'"'&.1$.2'~'#0$#65535'"$#0'~#32767$#1"
    32. Re:Why does C++ matter? by bug1 · · Score: 1

      I say C++ is slower than C because; as more abstraction is placed between the programmer and the hardware, it gets more difficult for the compiler to achieve the same quality of code.

      C++ is Object Oriented, to do OO requires more abstraction, OO is used to make problems easier for Humans to understand, not to make it easier for hardware.

    33. Re:Why does C++ matter? by vilanye · · Score: 1

      You shouldn't be hiring people that are not polyglots and can not seamlessly move from language to language. Those that can't are not programmers, they are language X end-users, AKA API monkeys. Do not hire programming language end-users, hire programmers and your little what-if vanishes.

    34. Re:Why does C++ matter? by bames53 · · Score: 1

      If an abstraction is being properly used in C++ then a C version program would probably be best with the same abstraction. If C++ has some language support for that abstraction which C lacks and which allows the program intent to be expressed more directly then there's no reason to imagine that whatever hand-built layers are used for that abstraction in C are necessarly going to be better than the more direct expression in C++.

      For example, if a program should use dynamic dispatch then a compiler is likely to do better optimizing C++'s virtual functions (using common techinques such as devirtualization) than it will do with some hand-rolled dynamic dispatch systen in C.

      The only way C comes out ahead is when comparing well written C to poorly written C++, e.g. a C program that properly does not use dynamic dispatch to a C++ program that uses virtual functions gratuitously.

    35. Re:Why does C++ matter? by ShakaUVM · · Score: 1

      >>I donâ(TM)t understand some of the arguments made against C++ by certain âoeelder statesmenâ of the OSS world. It seems they donâ(TM)t like some of the extra functionality available in C++, seeing it as overcomplicated or too readily able to hide behaviour. In itself, thatâ(TM)s a reasonable concern. But then they use C, and reinvent the same wheels using crude text substitution macros that could be doing or interacting with anything.

      This is a reasonable criticism. I started very heavy into object-oriented programming, but after I shot myself in the foot with it enough times, I started appreciating C a lot more.

      I still write in C++, since some of the added features just make life easier (like // comments), but my code looks very C-ish. I'll use objects when necessary, but I do my best to avoid anything that hides complicated behavior.

    36. Re:Why does C++ matter? by Saija · · Score: 1

      OMG you just bring back to my mind memories of my first Linux installs: a brand new copy of suse, can't remember the version, maybe 4 or 5, still have the companion book which have some yellow fractals on the cover.
      Good ol' times on '99...

      --
      Slashdot ya no es que lo era! ;)
    37. Re:Why does C++ matter? by bug1 · · Score: 1

      C has an advantage in corner cases due to the flexibility of its lower level.

      So if there is a need to use two separate abstraction layers, then a 'hand rolled' version might be able to find savings that a compiler wouldn't look for as its treating them separately for external reasons.

      But like i said initially, the benefits only get less meaningful with time.

      Programmer/team preference is way more important than any real technical difference between C and C++

    38. Re:Why does C++ matter? by swillden · · Score: 1

      Personally, I think your better off enforcing minimal use of exceptions, and solving the problem higher up at the architectural level with a transaction/thread cancellation model where any unusual exceptions are handed with one or two extremely high level catch routines.

      I agree, but this doesn't counter the argument laid out in the Google style guide, which boils down to "it's really hard to safely add exceptions into a large code base which wasn't written with exception safety in mind."

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    39. Re:Why does C++ matter? by swillden · · Score: 1

      I'm glad some people actually like living their corporate lives in a straight jacket... I for one, do not. It's called lowest-common denominator programming and it's what is wrong the world. If smoeone can't understand something, no can use it.

      What exactly are you referring to? Exceptions in C++? If so, did you actually read the rationale in the style guide? Its conclusion is that exceptions are a good thing on balance, but that retrofitting them onto a large code base (hundreds of millions of lines of code) which was not written to be exception-safe is not feasible. It's not a matter of being straight-jacketed, it's a matter of making appropriate engineering tradeoffs in a context where extreme scalability and reliability is a basic requirement, and agility is a critical business goal.

      "Lowest common denominator" is not a good description of the programming done at Google, BTW.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  3. Re:slightly off topic by AliasMarlowe · · Score: 1, Interesting

    RMS is OK (not perfect, but OK).
    For Paolo Bonzini, the grapes, they are sour...

    --
    Those who can make you believe absurdities can make you commit atrocities. - Voltaire
  4. Distaste of C++ by BenoitRen · · Score: 5, Insightful

    I knew about Linus Torvalds's distaste of C++, but not Richard Stallman's. What is it with open-source leaders and their irrational hate of C++?

    1. Re:Distaste of C++ by russotto · · Score: 5, Insightful

      I knew about Linus Torvalds's distaste of C++, but not Richard Stallman's. What is it with open-source leaders and their irrational hate of C++?

      It's not irrational, or at least probably isn't. C++ is a horrible language, and I say this as a professional C++ programmer.

    2. Re:Distaste of C++ by AliasMarlowe · · Score: 1

      irrational

      That word does not mean what you apparently think it means...

      --
      Those who can make you believe absurdities can make you commit atrocities. - Voltaire
    3. Re:Distaste of C++ by Anonymous Coward · · Score: 5, Funny

      My distaste of C++ cannot be expressed as a fraction.

    4. Re:Distaste of C++ by BenoitRen · · Score: 1

      Most professional code is horrible, so I don't think that lends any weight to your opinion.

      I find "C++ is horrible" to be an opinion that has become easily parroted.

    5. Re:Distaste of C++ by Animats · · Score: 5, Interesting

      C++ is a horrible language, and I say this as a professional C++ programmer.

      C++ stands alone as the only major programming language with hiding but without memory safety. Strostrup is in denial about this, which prevents fixing the problem.

      Templates don't help. Trying to make templates into a compile-time programming environment results in a language that makes Perl look readable. Just because templates are a Turing-complete term-rewriting system doesn't mean you want to use them that way. Papering over the safety issues with templates doesn't help; the mold always seeps through the wallpaper. Usually at system calls that demand raw pointers.

      (Somewhere in the 1980s, low-level programming took a wrong turn. We had Pascal, the Modula family, and Ada. Things seemed to be getting better. Then Modula crashed and burned along with DEC, and Ada declined due to its bulk and overly expensive compilers. We all had to go back to C. That we're still stuck there is embarrassing. It's probably the worst major engineering standard since the British buffer-and-chain coupler from 1830 still in wide use.)

    6. Re:Distaste of C++ by thsths · · Score: 4, Insightful

      > I knew about Linus Torvalds's distaste of C++

      And for good reason, C++ in kernel space is a recipe for disaster. Some parts of it may be useful, others would be highly inappropriate.

      > What is it with open-source leaders and their irrational hate of C++?

      There is nothing irrational about it. C++ is one of the most powerful compiled languages ever conceived, but it is very ugly. It also supports just about any programming paradigm, badly, making the choice between them especially hard. Every other language out there has more focus and more style, except maybe perl.

    7. Re:Distaste of C++ by BenoitRen · · Score: 3, Insightful

      Yes, it does:

      • 1. without the faculty of reason; deprived of reason.
      • 2. without or deprived of normal mental clarity or sound judgment.
      • 3. not in accordance with reason; utterly illogical: irrational arguments.
      • 4. not endowed with the faculty of reason: irrational animals.
    8. Re:Distaste of C++ by TheRaven64 · · Score: 2

      As a C++ programmer, you don't hate C++. You only truly hate the language after trying to implement it and reading the ambiguous, informal description of it that they have the cheek to call a specification.

      --
      I am TheRaven on Soylent News
    9. Re:Distaste of C++ by Trepidity · · Score: 5, Interesting

      If anything, the dislike for C++ from people who use C++ regularly is much deeper than the more casual dislike that C programmers have. C programmers just think C++ is too complex and unnecessary, but C++ programmers find themselves so consumed by their dislike they end up doing things like writing a point-by-point rebuttal to the entire C++ FAQ.

    10. Re:Distaste of C++ by PhrostyMcByte · · Score: 4, Interesting

      What is it with open-source leaders and their irrational hate of C++?

      I don't think it's irrational. It's just for different reasons than many individuals may have.

      It is perfectly possible for someone extremely competent in C++ to write code that someone else, with an equal level of knowledge and experience, can't make heads or tails of without some serious review time.

      And then there's an additional problem that, because C++ is such a complex language, it's possible for people with more experience to write better code that people with less experience simply can't yet understand. And by less experience, I mean someone who understands the problem and the general solution, but only has 5 years of heavy C++ use. This problem of pure language complexity and a huge ramp-up time may not be unique to C++, but it's something C does not really suffer from.

      I say this as someone who absolutely loves C++ and uses it daily. I love the complexity. I love to play around with templates to do some micro-optimization that I'd probably never put in live code. But I must say, the idea of being a maintainer -- reviewing and committing a diverse set of patches like Linus has to do -- for a C++ project sounds incredibly daunting for the reasons given above.

      Often, this leads to atrocious usage guidelines that significantly hamper the flexibility and power of the language in an attempt to make it more accessible.

    11. Re:Distaste of C++ by BenoitRen · · Score: 1

      I take it this means that you don't like C++ because it doesn't babysit your memory usage? If you add memory safety it would lose compatibility with C and lose a lot of its power.

    12. Re:Distaste of C++ by mwvdlee · · Score: 1

      What is it about C++ that using just the C parts from it still makes it horrible?
      Every programming language has bad parts; use the parts that aren't bad.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    13. Re:Distaste of C++ by PhrostyMcByte · · Score: 3, Interesting

      And for good reason, C++ in kernel space is a recipe for disaster.

      I hear this fairly often, but never with any compelling argument behind it. What parts of C++ wouldn't work well for kernel-mode, exactly? How are these specific parts, combined, enough to give a blanket "recipe for disaster" statement?

      The one poor argument I've heard is that some C++ features requires runtime support, and people seem to think this runtime support is some user-mode voodoo that is impossible to implement in kernel-mode. Which is complete nonsense.

      I've written drivers (albeit for Windows, not Linux), and I'm a bit of a language lawyer when it comes to C++. I can't say I've ever encountered a problem in kernel-mode where I thought C++ wouldn't be able to do the job. And not with some crappy subset of it, either. I mean full-blown, properly-used C++.

    14. Re:Distaste of C++ by larry+bagina · · Score: 1

      Bjarne Stroustrup is the father of c++. If you go read his interviews about why he created c++, you'll see that he hates C. But C was popular so he built C++ on top of it. Think about that. If you married a girl and told her she's fat and ugly and you only married her because her dad's rich.. that might upset her.

      Think about that and some of the C++ design decisions take on a new light. For example, std::auto_ptr (deprecated in c++11) didn't work with arrays because you should use std::vector instead. But you need that array for C interoperability or better performance? Well fuck you. That said, c++11 is much nicer but it's still moving further and further away from C.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    15. Re:Distaste of C++ by darkHanzz · · Score: 4, Interesting

      On the other hand, it's the only mainstream language I know that supports both very low-level and very high-level programming style. This can be a real plus for compute intense signal processing, were a small minority of the code really requires low-level implementations. Being able to mix that with high-level abstractions (e.g. linear algebra factorizations) can give both efficient and maintanable code.

    16. Re:Distaste of C++ by VortexCortex · · Score: 5, Interesting

      Agreed. There are edge cases in the language where the bolted on features don't work together because the implementation issues weren't fully considered before the feature was adopted, and efficiency is a higher priority that not having exceptional cases in syntax. Since most of the language works with itself you only develop this hatred if you've got experience in other nicer languages with syntax isn't broken in places, or until you've mastered the language and been prevented from using it by its own design. The crux of the problem is two fold: C++ tries to distance itself from implementation details, while accepting implementation details as limitations for language constructs (polymorphism + multiple inheritance + template class + method & operator overloading == uninstantiated functions and indeterminate or uncompilable code) C++11 has addressed some of this, but IMO the language just isn't complete! Furthermore the strain is compounded due to C++ being forced to squeeze the substance of its syntax out of the meager scraps of symbol space left over from the voracious host language, C (without support for which the language would have never seen widespread adoption).

      Thus, the hatred graph is like a bathtub curve: It seems irrational to those intermediately knowledgeable about the language, but perfectly sane to many new comers and seasoned veterans of C++. A large amount of adoption is due to ease of code migration from C to C++, as opposed to say, Java, and is thus won on no real merit of the language itself, but by it's martyrdom at the altar of compatibility with C. Many of the C to C++ converts never "move the furniture", so to speak, and thus the missing paneling in the corner or dark stains under the rugs is never known to them.

      That said, I still use the language, it has its merits, but never all of its features at once -- That's impossible, unlike with most every other language that exists. This is where the hatred has its roots.

      Imagine a great Enchantresses who can open their spell book and can command the full fabric of her reality, then imagine a Powerful C++ Wizard who's book of spells has contradictory elements and seemingly arbitrary restrictions based only on the syntax of the spell definitions, they've each trained a mighty Sorcerer who's now well versed in both arcane books of magic, and its his turn to take on an apprentice. The sorcerer advises against C++ for the most serious of wizardry since more elegant alternatives exist. However, the young apprentice can't fathom why... The simple C++ spells she learned seem to work fine, a natural extension of the C illusionist lessons she learned; Did not re not her object oriented magic of mops and buckets allow cleaning the kitchen floors with any sort of bucket and mop? It's unthinkable that this spell shouldn't be applied to every floor -- NAY -- every surface and abolish cleansing chores forevermore... Soon the Sorcerer arrives to dispel the tangled templated abominations of multi-inherited broom-mop-bucket hybrids so overloaded they're smashing stacks of dishes with their many scrubbing appendages, and overflowing the tower with heaps of infinite buckets.

    17. Re:Distaste of C++ by PhrostyMcByte · · Score: 2

      +1. High-level features are not mutually exclusive with low-level ones. C++ being "unsafe" in some areas is not something people are in denial about -- it is a purposeful tradeoff for providing unbeatable performance when you need it.

      Want more safety? Performance not an issue? There are better languages for those cases than C++, and it's a programmer's prerogative to use them, not a standard body's job to adapt the language for something it isn't intended for.

    18. Re:Distaste of C++ by Animats · · Score: 2

      C++ being "unsafe" in some areas is not something people are in denial about -- it is a purposeful tradeoff for providing unbeatable performance when you need it.

      This is widely believed, but wrong. You don't have to go all the way to garbage collection to get memory safety. Most of the problems with buffer overflows stem from the language design concept that the language usually has no clue about how big an array is. If the compiler knows about array sizes, it can not only check them, it can optimize the checking. Bolt-ons via templates or macros can't do that efficiently.

    19. Re:Distaste of C++ by maxwell+demon · · Score: 1

      It also supports just about any programming paradigm, badly, making the choice between them especially hard.

      So C++ is bad because it doesn't force you to use a specific paradigm? I'd say that's one of the strengths of C++. Yes, it means you have to think more. But I don't consider that a ad thing. Especially if the forced paradigm would lead to suboptimal code because your problem (or worse, just part of your problem) is more naturally described in a different paradigm. Or you'd be fighting the other language to make your code fit (like in Java building pseudo-classes only to hold "global" functions which cannot be global just because the language doesn't allow it).

      Note that I don't claim that C++ doesn't have its problems (the most important one being its overly complicated syntax, which in large parts comes from being compatible with C, but in some parts also comes from bad decisions in C++-specific features). C++ is definitely not the best language possible. but its advantages over the existing languages (at least those I know) are large enough to make it still better than those despite its problems.

      Especially in my view the languages which start with the expressed goal of improving on C++ (at least those I know) throw out the baby with the bathwater. Which is a shame because C++ could win a lot if properly redesigned without the compatibility baggage (both to C, and to earlier versions of C++).

      --
      The Tao of math: The numbers you can count are not the real numbers.
    20. Re:Distaste of C++ by betterunixthanunix · · Score: 1

      Want more safety? Performance not an issue? There are better languages for those cases than C++,

      There are also better languages if you want both safety and performance.

      --
      Palm trees and 8
    21. Re:Distaste of C++ by maxwell+demon · · Score: 1

      But if you build custom structures using macros on top of C (and if you look at the gcc source code, you'll find they did that a lot), you'll be no better off. Instead of learning advanced C++, you'll be learning advanced project-specific macro-based structures.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    22. Re:Distaste of C++ by YurB · · Score: 3, Informative

      Linus doesn't like C++ because he's a kernel programmer. It's important to him what the CPU actually does, i.e. what machine code gets produced (more or less). RMS may not like C++ because he's from the old generation of programmers who were dealing with all the slow and big machines and for whom object oriented programming may seem just too abstract, too conceptual and far from the machine code... RMS also likes Lisp more than Python, and Lisp is also a very old language.

    23. Re:Distaste of C++ by innocent_white_lamb · · Score: 2

      Do yourself a favour and take a look at glib. God's gift to C programming -- the string handling alone is worth its weight in, well, gstrings...

      --
      If you're a zombie and you know it, bite your friend!
    24. Re:Distaste of C++ by Kjella · · Score: 2

      +1. High-level features are not mutually exclusive with low-level ones. C++ being "unsafe" in some areas is not something people are in denial about -- it is a purposeful tradeoff for providing unbeatable performance when you need it. Want more safety? Performance not an issue? There are better languages for those cases than C++, and it's a programmer's prerogative to use them, not a standard body's job to adapt the language for something it isn't intended for.

      The problem with that argument is that 90%+ of any given application is not performance critical. In many cases I'd argue almost none of the code is performance critical because the limitation sits between the keyboard and the chair, particularly when it comes to writing desktop apps like KDE, Gnome, Firefox, OpenOffice and so on. Far from all tings are critical on the back end either, as long as they get done on time. C++ is like using a scalpel all the time because it's a damn sharp knife, which probably works but it's not practical for anybody, not even trained surgeons. Speaking of better languages, what choices are there for writing something like KDE or Gnome? Java? C#? ObjectiveC? Or something entirely different? It's easy to find faults with C++, it's a bit harder to see the better alternative.

      --
      Live today, because you never know what tomorrow brings
    25. Re:Distaste of C++ by Xordin · · Score: 1

      Totally agree. I've maintained a couple of C++ codebases in my time. It would take weeks to expand my C++ knowledge to where I could understand the favorite language patterns of the old maintainer.

      Running old C++ code through Valgrind is hilarious. It's hard to believe how many things even experienced C++ coders get wrong.

    26. Re:Distaste of C++ by Xordin · · Score: 5, Informative

      Reading Linux Torvalds on C++ might be instructive:
      http://harmful.cat-v.org/software/c++/linus

    27. Re:Distaste of C++ by greg1104 · · Score: 1

      Supporting C++ requires more complexity out of the compiler and the runtime libraries you're linking with. Since bugs are proportional to complexity, you're suffering from those even if you only use the C features. Using a more complex language should come with some payback, an improvement in productivity that is greater than what you're paying in overhead. Whether C++ really has such a net gain in productivity is obviously controversial.

    28. Re:Distaste of C++ by TrekkieGod · · Score: 5, Interesting

      If anything, the dislike for C++ from people who use C++ regularly is much deeper than the more casual dislike that C programmers have. C programmers just think C++ is too complex and unnecessary, but C++ programmers find themselves so consumed by their dislike they end up doing things like writing a point-by-point rebuttal to the entire C++ FAQ.

      I think they're just more vocal. Not everyone hates C++. My job involves writing in C, C++, and C#. I love C++. In my ideal world, I'd have C++ with all the .net libraries (and no, managed C++ isn't that. C# is far preferable to writing in managed C++, as C# is actually a pretty good language and managed C++ doesn't give you any of the cool features of C++ that C# doesn't have).

      I find people's arguments against C++ to be quite illogical. For example, one of the reasons I really like the language is because it can do true multiple inheritance. People everywhere will then immediately correct me with, "multiple inheritance is bad, mmk?" Then they'll back up that statement by talking about the diamond problem, and how I should use interfaces. I do use interfaces, but they're not a replacement for multiple inheritance because it's still forcing me to duplicate code when I wouldn't otherwise have to. Besides, the language handles the problem in a reasonable way (the order in which you define the inheritance matters), and, as a programmer, if you're inheriting from two classes that have a method with the same signature, then those methods should be virtual, and you should override the method to do exactly what you want. The diamond problem isn't this beast for which there is no reasonable solution. It's just something you need to be cognizant of when coding.

      There's also the people who complain about all the incredibly hard to debug crazy stuff people do with templates. You're really just complaining about bad coding. Templates allow you to build more reusable code than generics, and that's how you should use them. If you're going beyond that just because they're turing complete and you can do more with them, well...you might as well complain about C after looking at last year's winner of the obfuscated C contest.

      --

      Warning: Opinions known to be heavily biased.

    29. Re:Distaste of C++ by Xordin · · Score: 1

      For a reasoned distaste of C++, see:
      http://yosefk.com/c++fqa/defective.html

      A proper distaste of C++ is best acquired by taking over a legacy C++ project.

    30. Re:Distaste of C++ by Xordin · · Score: 1

      It's impossible to use templated code (even "well tested" code like the STL) without having to debug template issues yourself.

      Even std::list is so unbelievably tricky to use that writing your own C list would give you better quality.

    31. Re:Distaste of C++ by Kawahee · · Score: 3, Interesting

      It sounds like you have more experience than myself, but after reading the below article I was of the opinion that C++ in a kernel is not a good idea right now.

      C++ for Kernel Mode Drivers: Pros and Cons

      The advice seems somewhat relevant for platforms other than Windows.

      --
      I'll subscribe to Slashdot when I see a month without a dupe, a typo, or an article the "editors" didn't read.
    32. Re:Distaste of C++ by betterunixthanunix · · Score: 1

      Every programming language has bad parts; use the parts that aren't bad.

      That would mean, as a first step, not using pointers. Which would rule out something as simple as hello world.

      --
      Palm trees and 8
    33. Re:Distaste of C++ by Anonymous Coward · · Score: 1

      Then use std::array or std::vector

    34. Re:Distaste of C++ by webmistressrachel · · Score: 2

      Which ones are they then? Head up the performance axis (away from safety) and we get assembly or binary. Head down (toward safety) and we get, errr, vb and javascript?

      Name these languages that offer more performance AND safety than C++, or GTFO. And I'll get modded troll for calling a spade a spade with your bull.

      --
      This tagline was transcoded to result in at least one smirk. If you experience failure to smirk, please consult your Gen
    35. Re:Distaste of C++ by celle · · Score: 4, Funny

      " the string handling alone is worth its weight in, well, gstrings..."

            If they're empty gstrings that's not saying much.

            capcha: adorable

    36. Re:Distaste of C++ by innocent_white_lamb · · Score: 1

      A gstring automatically resizes itself to fit anything that you want to put into it! (Check the documentation for details.)

      Incidentally, glib can be used independently from Gnome and the like.

      --
      If you're a zombie and you know it, bite your friend!
    37. Re:Distaste of C++ by betterunixthanunix · · Score: 3, Interesting

      When you write C the "right way", you end up basically manually coding, what C++ gives you automatically.

      In C++, you still have to do things by hand that other languages give you automatically (and in ways that need not be the case). For example:

      • Multiple dispatch
      • Dependent types (templates get you 1/100 of the way there)
      • Continuations
      • Handling correctable errors (there is no real mechanism for saying, "OK, I fixed the problem, now you can try the operation that caused the error")
      • Embedded languages (operator overloading gets you 1/100 of the way there on this one as well)
      • Partial evaluation
      • Currying
      • Pattern matching / unification
      • Invoking the compiler at run time

      ...and that is not even an exhaustive list. Some of these features are related to each other; for example, continuations make error recovery a non-problem. The lack of a powerful macro system and the enormously complex grammar make it hard to implement these features without modifying your C++ compiler, which is very much non-trivial (compare to Lisp, where new features can be added via the macro system; this is how object oriented programming was first added to Lisp).

      The standards committee missed its chance to really make C++ competitive against modern languages with C++11. I suspect they will miss the mark again in C++14, and probably in C++17 as well. Eventually C++ is going to die, because programmers will be less concerned with things like compatibility with the error-prone and incomprehensible programming techniques of the 1970s and more concerned with solving bigger problems and writing reliable code (I seriously doubt that C++ will be a winner in healthcare systems; there is just too much working against C++ there, and too little in its favor).

      --
      Palm trees and 8
    38. Re:Distaste of C++ by cats-paw · · Score: 1

      not too mention SML which is a really nice language to use for large projects.

      it's amazing how pervasive C still is.

      --
      Absolute statements are never true
    39. Re:Distaste of C++ by mvdwege · · Score: 1

      How about Ada?

      --
      "I know I will be modded down for this": where's the option '-1, Asking for it'?
    40. Re:Distaste of C++ by betterunixthanunix · · Score: 1

      OCaml comes to mind; FFTW was written in OCaml. Lisp also comes to mind; CL-PPCRE outperformed libpcre (C, not C++, but how exactly would C++ help speed up regular expression parsing?). Both languages are safer than C++ (in many sense of the word "safe"), and both perform on par with C++ (unless the programmer is ignoring performance).

      Really, your one-dimensional view of performance versus safety is simplistic and, well, one-dimensional.

      --
      Palm trees and 8
    41. Re:Distaste of C++ by maxwell+demon · · Score: 1

      I think C++ is all but horrible.

      Judging from the rest of your comment, I don't think you think that. C++ being "all but horrible" would mean C++ being almost horrible. What you obviously mean is C++ being not at all horrible.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    42. Re:Distaste of C++ by maxwell+demon · · Score: 1

      Because that way you'd not get the ownership transfer semantics of auto_ptr. And of course if you tried to use that pointer with auto_ptr, you'd be firmly into trouble.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    43. Re:Distaste of C++ by ewibble · · Score: 1

      I agree with the comments these features would be valuable additions to C++, but this does not make it any worse than C which I assume RMS uses. Templates while by no means perfect are a vast improvement from passing around void *. As with any feature care needs to be taken to use them appropriately.

      I think the argument is they won't even move to C++, I have had this problem trying to convince people at my work to switch, C++ isn't the best language for the job but at least it is a little bit of progress, for goodness sake you can even write the exact same code as in C.

      Also why is hiding an memory safety linked, C is lacking in memory safety just as much as C++, maybe even more so you can't even append to a string in C without worrying about memory.

    44. Re:Distaste of C++ by maxwell+demon · · Score: 1

      While there are indeed many things which could be profitably added to C++ (I don't agree about all items on your list, though; for example I'd hate it if every program compiled with C++ had to include a C++ compiler), remember this is about people who prefer C to C++. C gives you not a single of the items on your list.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    45. Re:Distaste of C++ by phantomfive · · Score: 1

      If you add memory safety it would lose compatibility with C and lose a lot of its power.

      That C compatibility is overrated. Every language, Java, TCL, Perl, Python, C#, etc. has a mechanism for calling into C code.

      C++ can theoretically be mixed with C in the same file, but in practice no one actually does that. We all write C in our .c files, and C++ in our .cc files, and call back and forth.

      --
      "First they came for the slanderers and i said nothing."
    46. Re:Distaste of C++ by phantomfive · · Score: 1

      Name these languages that offer more performance AND safety than C++

      Heck, even Java can be safer and more performant if you call into JNI for the tight loops. C++ attempts to optimize all the wrong things. C++ wasn't made for efficiency; if you want to make an efficient C++ program, you will inevitably use a subset of C++, though figuring out which subset to use will be hard, and may vary from compiler to compiler. Why would you do that to yourself?

      --
      "First they came for the slanderers and i said nothing."
    47. Re:Distaste of C++ by russotto · · Score: 2

      The problem with that argument is that 90%+ of any given application is not performance critical. In many cases I'd argue almost none of the code is performance critical because the limitation sits between the keyboard and the chair, particularly when it comes to writing desktop apps like KDE, Gnome, Firefox, OpenOffice and so on.

      This sort of reasoning is what gets us bloated and slow desktop apps.

      Far from all tings are critical on the back end either, as long as they get done on time.

      Except that CPU you're wasting is CPU you can't use for other things. It's expensive to build a data center twice as big because your code performs poorly.

    48. Re:Distaste of C++ by Rockoon · · Score: 1

      I'm not going to sit here and pretend that multiple inheritance is good or bad, because quite frankly thats not the point. I am also not going to pretend that templates are good or bad, because that too isnt the point.

      The real question is "are these things done well?"

      I'll tackle the templates vs generics.

      C# generics surely has some warts on it, but what C# generics does do it also does well. A specific and quite well defined re-use problem was tackled in a highly simple and competent manner.

      C++ templates on the other hand.. it seems like the specific and well defined problem templates tackle is the problem of people speaking negatively about C++ with regards to re-use problems. "this solves that problem once and for all.. ONCE AND FOR ALL!!"

      Templates solve the re-use problems in the same way that physics solves my wreath hanging problem.

      --
      "His name was James Damore."
    49. Re:Distaste of C++ by mwvdlee · · Score: 1

      Pointers are only difficult if you use pointer math. Just treat them as references like you would in Java and C#.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    50. Re:Distaste of C++ by Kjella · · Score: 4, Interesting

      This sort of reasoning is what gets us bloated and slow desktop apps.

      No, it's what keeps people from ever getting around to fixing those issues because they're still busy chasing down application crashes and memory leaks, combined with a fear of throwing out bad code in favor of new code with equally severe bugs. Do any kind of profiling and you will see it's all long tail, a few sections of code are called extremely often and the rest rarely if ever during normal operation as they're error handlers and such.

      Except that CPU you're wasting is CPU you can't use for other things. It's expensive to build a data center twice as big because your code performs poorly.

      More expensive than the time and cost spent developing, maintaining and dealing with the fallout of bugs in your high performance delicate code? And again it's the long tail, you probably have 10% of the software you use taking 90% of the capacity leaving 10% for the other 90%. Even if their execution time doubled you'd need 110% capacity, not 200% capacity. All I'm saying is write your slow code as clean, safe and maintainable as possible and optimize the few things that really matter.

      --
      Live today, because you never know what tomorrow brings
    51. Re:Distaste of C++ by gnasher719 · · Score: 1

      It is perfectly possible for someone extremely competent in C++ to write code that someone else, with an equal level of knowledge and experience, can't make heads or tails of without some serious review time.

      That person would be extremely competent in C++, but totally incompetent in software development. And yes, I've seen some of those.

      I have written bits of C++ code (not many) that are totally non-obvious and hard to understand. But only if I had a very good reason, and only with documentation added why this was done and how it works.

    52. Re:Distaste of C++ by PhrostyMcByte · · Score: 1

      None of the C++ features listed in that link are inherently incompatible with kernel-mode. They're all simply a lack of support in the compiler to target the environment.

    53. Re:Distaste of C++ by Dixie_Flatline · · Score: 1

      I've been programming professionally in C++ for ten years, and I'll be the first to admit that I stay away from a lot of the so-called 'powerful' features. In fact, in the games industry, we tend to stay away from that stuff in general. It's the nature of systems that have a lot of churn, both in features and maintainers. An engine is pretty old if it's five years old. Ten years (which I've seen) is really the limit of usefulness. The code needs to run fast, be debugged quickly and under pressure, and be reliable. So we use a fairly limited subset of the language.

      But I still don't like it. My problem with it stems from two things (which is kind of just one thing):

      1) There's a lot of discovered functionality; and
      2) The specification is huge and difficult to implement properly.

      The first is actually a result of the second, and that mostly comes down to templates. Template meta-programming wasn't intended. It's interesting stuff that's an accidental result of making a Turing complete language and bolting it onto the side of the primary language. And frankly, it's a solution to a problem that never should have existed in the first place. The things that templates do have been implemented in other languages before.

      But that second point is the real kicker. I remember when the C++ standard was confirmed to NOT have a bad recursion in it. That was just around ten years ago, and it's a story I remember reading here. But what I also remember is that professional compiler writers were showing up and commenting about how insane the spec is. They often set out to make a perfect compiler that implemented everything, but they always gave up after tearing out their hair and going half insane.

      To me, that's a huge issue that sits in the back of my mind. How good can a language be if the specification isn't understood BEFORE the compiler is written? How well implemented is the compiler that I'm using? How far can it be trusted?

      I'm no great shakes as a compiler programmer—I've only implemented one that was a limited subset of pascal, in my university days—but I'm confident that given some time and impetus, I could actually write a C compiler that worked. I can basically guarantee that I'd never be able to do the same with C++. And is the increase in expressive power sufficient to make me believe that the trade-off is worth it? Obviously C can go a long way on its own.

      At the end of the day, it's usually the algorithms that make the difference, and most of us can make a go of it in any language. But philosophically, I really just can't get behind what C++ is.

    54. Re:Distaste of C++ by smash · · Score: 1

      Typically, 90% of CPU time is spent in 10% of the code.

      If you shave 10-20% off 10% of the runtime of your app, you have made a 2% improvement. At what cost? Often readability, maintainability, etc. Not to mention going through 90% of the code in the app to shave that 10-20%.

      1-2% is not worth it. Profile. Optimise hotspots. Premature and/or un-necessary optimisation is BAD. You don't see game programmers writing the glue code in assembly any more either.

      --
      I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
    55. Re:Distaste of C++ by russotto · · Score: 1

      Do any kind of profiling and you will see it's all long tail, a few sections of code are called extremely often and the rest rarely if ever during normal operation as they're error handlers and such.

      That's exactly the opposite of long tail. Long tail means the tail as a whole is significant, though any given item in it is quite small.

      More expensive than the time and cost spent developing, maintaining and dealing with the fallout of bugs in your high performance delicate code?

      Yes. Because high performance code doesn't necessarily have to be "delicate". It does mean you can't copy objects around willy-nilly because you're afraid of mutability (functional languages, I'm looking at you). It means you probably don't want a garbage collector -- and if you do, you have to be just as careful about memory allocation as if you didn't, which kind of defeats the purpose. It means you can't just call std::do_something (or your language's equivalent) unless you know that std::do_something has decent performance for your class, which probably means you need to know more about its implementation than you'd prefer. You also have to know more about your compiler than you'd like, making sure you give it opportunities to optimize.

      Sometimes you do need to resort to fragile and/or nonstandard tricks, but not often.

      All I'm saying is write your slow code as clean, safe and maintainable as possible and optimize the few things that really matter.

      This is where C++ shines, as much as that turd can shine. You can write most of your code as clean, safe, and maintainable as possible (within the limits of C++; you're still in template hell), and go pretty much as nasty as you want in the tricky sections without leaving the language.

    56. Re:Distaste of C++ by BenoitRen · · Score: 1

      Please, spare us. That article is mostly hot air. There's very little substance to be found.

    57. Re:Distaste of C++ by Darinbob · · Score: 1

      I would prefer a style mid way between bare C and full blown C++. Templates are a often misued, though can be helpful when used rarely and judiciously (ie, not generics or boost). Exceptions when implemented well are nice, however they do in no way remove the need for careful thought when implementing error handling. Of most importance though is that C++ makes it a lot easier to modularize your code (stick common stuff into classes or name spaces) and has better type checking and safety as well as link time function call checking.

    58. Re:Distaste of C++ by Darinbob · · Score: 1

      Runtime support is a massive headache when you're on an embedded system or in a kernel. Granted every language has some sort of run time layer to be supported, which is not portable. In C it's not too bad though, just copy your sections to the right spot in memory. C++ just the start up is suddenly a lot harder; constructors to be called before main(), an explosion of linker section types, exception tables for stack unwinding and "personality", etc. It can also be much harder to control the sections that things are in depending on the compiler, since C++ does a lot of implicit code generation (ie, if you've got a virtual function table, does it end up in a code section or a data section?).

      In the kernel you're not using a "hosted" environment which changes the C++ standard in subtle ways. You may even have code that you want to execute during bootup before any static constructors have been initialized, and you're definitely never going to be running after main() is called.

      Neither C nor C++ is clearly best, I've done embedded systems with both. C++ definitely gives you more flexibility with modularization and the type checking is nice. But when you're really in the low level code you end up using something that looks just like C except maybe some namespaces/classes, more consts, and better type checking.

    59. Re:Distaste of C++ by vux984 · · Score: 1

      The diamond problem isn't this beast for which there is no reasonable solution. It's just something you need to be cognizant of when coding.

      A solution using MI isn't necessarily bad on its own, and it's easy "be cognizant when coding" when you are designing and implementing something from scratch to solve a problem. MI can even seem elegant.

      But when you come back to it and start maintaining and extending it... more often than not the previous 'elegance' of MI rapidly becomes regrettable.

      There's also the people who complain about all the incredibly hard to debug crazy stuff people do with templates.

      The problem with templates starts right with debugging issues that crop up with the STL. Even the compile time errors are frequently cryptic or even outright incomprehensible.

    60. Re:Distaste of C++ by Codifex+Maximus · · Score: 1

      C is intrinsic in my opinion. C++ can get very complicated.

      --
      Codifex Maximus ~ In search of... a shorter sig.
    61. Re:Distaste of C++ by jimbo · · Score: 1

      Yeah. To expand on that. Typical personal development goes like this:

      1. novice/intermediate: using and learning.
      2. Experienced/expert: Enamoured with self, confident, vast knowledge and ability to write intricate and complex code.
      3: Seasoned Software Developer: Writing easy to understand and maintainable code, "simple is beautiful".

      This kind of personal development applies to many things in life, architecture, engineering disciplines, etc. etc. the three steps typically also lands within certain age groups due to human nature.

    62. Re:Distaste of C++ by master_p · · Score: 1

      C++ can easily do multiple dispatch, by using templates.

      No mainstream programming language has a depentent type system yet. Not even Haskell.

      Continuations are difficult to do without sacrificing the "don't pay for what you don't use" principle, which is a lot more important than continuations.

      Handling correctable errors can (and should) be handled at library level, and c++ can perfectly do that. Exceptions are for exceptional situations.

      C++ does DSLs fine, there is little need for anything beyond operator overloading.

      C++ does partial evaluation just fine, thanks to templates.

      C++ does currying just fine as well, thanks to templates and function objects.

      C++ does pattern matching just fine, and now that it has lambdas it is easier and more natural than ever before.

      And since you haven't bothered with googling the points you make, I won't either. Life is short.

    63. Re:Distaste of C++ by Marxdot · · Score: 1

      As many will say in this thread, it's a horrid language.

    64. Re:Distaste of C++ by Marxdot · · Score: 1

      Or just spend five minutes writing your own much slimmer, faster, and just Generally Better versions of whatever you may want from glib.

    65. Re:Distaste of C++ by Marxdot · · Score: 1

      'Pointer math' is not difficult at all.

      What is it about C++ that using just the C parts from it still makes it horrible?

      Well, partly the fact that the same C++-compatible C source will take an order of magnitude longer to build with a C++ compiler than with a C compiler because of the ever-increasing ambiguity introduced in C++, and partly the fact that there's no reason to use C++ and I'm not a masochist, thanks.

      Every programming language has bad parts

      Nah.

      use the parts that aren't bad.

      Yes, I'll use C.

    66. Re:Distaste of C++ by Marxdot · · Score: 1

      What is 'properly-used C++'? First the essential C++ advocacy catchphrase was 'don't use the bits you don't like', now it's 'you're not using it properly'.

    67. Re:Distaste of C++ by tyrione · · Score: 1

      On the other hand, it's the only mainstream language I know that supports both very low-level and very high-level programming style. This can be a real plus for compute intense signal processing, were a small minority of the code really requires low-level implementations. Being able to mix that with high-level abstractions (e.g. linear algebra factorizations) can give both efficient and maintanable code.

      Objective-C.

    68. Re:Distaste of C++ by darkHanzz · · Score: 1

      Objective-C.

      I've always wondered about the dynamic typing: How does that hold up in large projects, with dozens of programmers ? For me, the static typing of c/c++ catches a lot of errors/typos in function call arguments.

    69. Re:Distaste of C++ by jvkjvk · · Score: 1

      Your reply us unfortunately wrong, however.

      Given that C++ is turing complete, any 'spell' that the "Great Enchantress" can create well, so can the C++ guru. There is not a single thing the enchantress can do with her compiled spell that the wizard cannot, and that's the fact, jack.

      Fact is, the end result for the great Enchantress is exactly the same if they misuse their language constructs or implementation details.

      You can argue that you don't like how you have to go about the syntax construction, but fair is fair, they are both equally powerful in EFFECT.

    70. Re:Distaste of C++ by TheRaven64 · · Score: 1

      Glib is a tool for people who have a problem for which C is not the correct tool, yet insist on trying to use C.

      --
      I am TheRaven on Soylent News
    71. Re:Distaste of C++ by gweihir · · Score: 1

      C++ is actually a very good example of how to not design an OO language. As such it can be used to great advantage explaining good and bad language design. And, unlike Java (which is also a very badly designed OO language), C++ allows for easier examples than Java with its low S/N ratio.

      Caveat: I learned OO with Eiffel, one of the few languages where it has actually been done right.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    72. Re:Distaste of C++ by ardiri · · Score: 1

      ... because real programmers use C :)

      nothing like doing some polymorphism and inheritance via casting of pointers! :) - good C code can destroy even the best written C++ code if it is done right. unfortunately (and i know this will mod me down); the kids of today just dont get how vital C code was back in the day. they want to do everything in a "higher" level language that is supposedly more cross platform. C is the only true cross platform language out there.

      RIP: dennis ritchie.

    73. Re:Distaste of C++ by optikos · · Score: 1

      [C++ is] the only mainstream language I know that supports both very low-level and very high-level programming style.

      Apparently you don't know Ada2005 and Ada2012. Ada2005 & Ada2012 have richer low-level capabilities than C++1998 and C++2003, although once LLVM's clang and GCC's g++ and Microsoft Visual C++ all support all of {N2239, N2427, N2748, N2752, N2547}, C++2011 will then conceivably have greater expressivity than Ada2012 regarding concurrency-atomicity declarations. Ada2005 & Ada2012 is capable of nearly all of C++2003's major high-level capabilities, except meta-template programming because Ada's generics are not themselves Turing-complete as a functional (sub)language via recursive generics-/template-expansion, as C++1998-&-later's templates are. The more that I utilize C++'s meta-template programming, the more that I consider it a botched kludge straight from Hell, so Ada lacking meta-template programming is a Good Thing. Conversely, Ada has a rich amount of reflection via its tick (i.e., apostrophe) suffixes on identifiers; reflection is what meta-template programming is often used for in C++ anyway.

      The Ada2012 Language-Reference Manual, Ada2012 Rationale, and other interesting Ada2012 materials are at: http://www.ada2012.org/

    74. Re:Distaste of C++ by sjames · · Score: 1

      The problem is more along the lines that C++ encourages making the wrong trade-offs. If you really need the performance offered badly enough to give up safety, C is the right choice (you can use explicit object orientation there if you like, it works well in the Linux kernel for example). OTOH, if you really need flexibility that C doesn't offer, you probably can afford a language with memory management and bounds checking and would enjoy the even greater flexibility that those offer.

      That's not to say C++ should never have been. We needed to explore the space between structured programming and object oriented programming and C++ was exactly that exploration. However, because of C++ we know things now that we didn't then, so we can do better than C++ for object oriented programming.

    75. Re:Distaste of C++ by sjames · · Score: 1

      This sort of reasoning is what gets us bloated and slow desktop apps.

      No, we get slow bloated apps because programmers desperately try to make C++'s promise of reusable classes live up to expectations by doing, undoing, and redoing over and over through child classes. Even more so because C++ doesn't offer sufficiently flexible type handling. The result is that the apps spin around in spirals very fast but only get to their destination slowly.

      It's funny how often a 'slow' interpreted language that offers that flexibility outruns C++ on the desktop by virtue of better written and more maintainable software.

    76. Re:Distaste of C++ by guacamole · · Score: 1

      I have known of RMS's' distaste for C++ from as far back as 1999. Just take the KDE debacle for example. Certainly, the biggest issue that FSF had with KDE was in QT's (the library KDE was and is based on) non-free license. However, the fact that it used C++ was up there close to the license issue.

      Can sympathize with them as well as with those who don't like C. I know C well, as well as several scripting languages, and just started learning C++. The complexity is just mind boggling. At the same time, using C to tackle a problem is like specifying to a carpenter where to place each molecule to build a chair. Both are very hard to code in for general problems IMO. Can't wait to move onto Java or C#.

    77. Re:Distaste of C++ by mwvdlee · · Score: 1

      Pointer math is difficult in that it is incredibly easy to make very unforgiving, and often difficult to trace errors and security holes and rarely reflects the concepts that it models. As a general rule of thumb; pointer math in a library or framework = good, pointer math in ordinary code = bad. Exceptions apply where obvious.

      People often complained that C++ performs worse than C because of all the overhead. Truth is that C++ commonly outperforms C because it's much easier to model, understand and optimize at the algorithm level. C++ outperforms C because humans are limited.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    78. Re:Distaste of C++ by PhrostyMcByte · · Score: 1

      What is 'properly-used C++'? First the essential C++ advocacy catchphrase was 'don't use the bits you don't like', now it's 'you're not using it properly'.

      By "properly" I mean fully, with no features left out. I'd hoped to have implied that with the context you left out, "not a subset," but maybe I did that poorly. Exceptions, RTTI, non-trivial static variables, the full standard library, and even the thread storage class included.

      "Don't use the bits you don't like" is kind of a stupid catchphrase, certainly not one of C++. If it had any mantra, it might be "don't pay for what you don't use".

    79. Re:Distaste of C++ by PhrostyMcByte · · Score: 1

      Garbage collection has its uses. C++ makes resource management trivial and safe, so really it wouldn't be used for the same reasons as other languages tend to like it for, but they do exist. I'll actually be happy to see if WG21 can find a way to get it into the language cleanly and efficiently.

      Maximally efficient compile-time bounds checking is possible right now, thought there are so many places where this can't work that it would provide only a slight safety -- and language support for this wouldn't do any better.

      Run-time bounds checking is something we already have. Every random-access container in the standard library has an at member function which throws an exception if the given index is out of bounds.

    80. Re:Distaste of C++ by Marxdot · · Score: 1

      'Pointer math' where it is clear = good. Silly, opaque code = bad.

      Truth is that C++ commonly outperforms C

      It depends.

      it's much easier to model, understand and optimize at the algorithm level

      What. No it isn't.

    81. Re:Distaste of C++ by betterunixthanunix · · Score: 1

      C++ can easily do multiple dispatch, by using templates.

      As we all know, that is "easy," especially compared to languages that have multiple dispatch built in.

      No mainstream programming language has a depentent type system yet.

      Non-mainstream programming languages have dependent types. What's stopping C++? That could be something that really helps C++ shine -- you know, something that actually sets it apart in a positive way from other languages.

      Continuations are difficult

      I know, and that is the typical excuse. That is why it took over a decade to fix the template/right shift problem, and that is why C++ falls behind high level languages: the standard avoids things that are "hard."

      Handling correctable errors can (and should) be handled at library level, and c++ can perfectly do that. Exceptions are for exceptional situations.

      Well, as an exercise, figure out how an I/O library should handle an attempt to write to a full disk. Should it open a GUI dialog? Should it just die?

      Or, do you think this is an exceptional situation, and that the client code also needs to know how to retry or abort whatever operation failed? Luckily, we have languages that do not break encapsulation like this.

      C++ does DSLs fine

      OK, add operator@ to the language.

      C++ does partial evaluation just fine, thanks to templates.

      In other words, the programmer can implement this by hand, using templates, and get something that works sort-of like how it would work in a language that has it built in. Which is exactly what I was replying to: the objection that C forces you to do things that are built-in to C++.

      C++ does currying just fine as well, thanks to templates and function objects.

      See above.

      C++ does pattern matching just fine, and now that it has lambdas it is easier and more natural than ever before.

      C++ does not do pattern matching at all. You get a switch statement, which gives you some small amount of pattern matching on values, and some amount of pattern matching on function arguments. Otherwise, you are stuck trying to implement it yourself (see above) or finding another way.

      Life is short.

      Yes, life is short. That's why people who have hard computational problems are not using C++; they have more important things to do than deal with C++ and it's barely-usable feature set.

      --
      Palm trees and 8
    82. Re:Distaste of C++ by betterunixthanunix · · Score: 1

      On the other hand, it's the only mainstream language I know that supports both very low-level and very high-level programming style.

      It is not the only one that supports this; it is, however, the only one that manages to botch it so badly. Lisp programmers have been doing this for decades; likewise, ML and Ada support this.

      The problem with C++ is that the low-level constructs are hard to escape -- you have to work very hard to ensure you don't wind up using a primitive pointer, a fixed-width integer, a floating point number, etc. C++ programmers must do extra work to remain at a high level -- extra work to ensure that "42" becomes an arbitrary-width integer, extra work to ensure that string literals become string objects and not pointers, extra work to ensure that a rational number type is used rather than floating point numbers.

      On the other hand, in Lisp, you need to do extra work to get low-level things. You need to explicitly tell your compiler that you want "42" to be a fixed-width integer (usually, Lisp programmers do this for optimization purposes); it is very hard to deal with primitive pointer types, which are not even standardized (there is no way to make such things portable or safe). Even when you get something low-level, you need to work hard to ensure that it stays low-level; something as simple as incrementing a fixed-width integer requires you to explicitly say that the result should be fixed-width (otherwise, you get an arbitrary-width integer, because the language won't set up a situation where an overflow might occur unless you explicitly ask for that).

      --
      Palm trees and 8
    83. Re:Distaste of C++ by Jheaden · · Score: 1

      Oh if only this were true!

      The code base I'm currently working with mixes the hairiest aspects of C and C++ in a single file. And this isn't old code either, its maybe a year old and causing me nothing but grief.

    84. Re:Distaste of C++ by Joey+Vegetables · · Score: 1

      OK, I will grant you that (and I do not consider Ada to be mainstream). But what would be the upside of choosing C++ rather than a higher level language (e.g., C#, Python, or maybe in your case Fortran) plus C for the places where maximal performance and/or hardware access are required?

    85. Re:Distaste of C++ by darkHanzz · · Score: 1

      The one thing that trips me up with python is the link to C++. Cython seems a bit hakish, ctypes requires plain C. Plus, I'd like to be able to move algortihms from high level to low-level once profiling indicates that it's a performance critical part. That's easier if both high- and low-level are the same language. Keeping everything in one language is simple. Once a build-system is set-up, re-compiling+running a C++ program takes about as much time as starting a python script. Both C++ and python applications can be fast or slow to startup, determined by how many dll's/dependencies are loaded. So for a quick test, I'd prefer python, for anything serious I use C++.

    86. Re:Distaste of C++ by phantomfive · · Score: 1

      I'm sorry, that sounds horrible. At least if it's only a year old, there isn't enough of it that it can't be rewritten in a year!

      --
      "First they came for the slanderers and i said nothing."
  5. pot meet kettle by gbjbaanb · · Score: 2

    However, all Stallman had to offer on the topic was "We
    still prefer C to C++, because C++ is so ugly" (sic).

    well, score one for technical argument and intellectual reasoning.

    If ugliness was a consideration, then surely GNU should be moving to a beautiful language, such as C#. If no, then WTF does subjective qualities of a language have to do with anything, there's no problem with any language as long as it is understandable (and I contend that means individual coding style rather than anything in-built - C can be so obfuscated they have competitions for it!).

    the problem with all of this is the usual geek tendency of arrogance - where one always thinks he has the mental superiority to everyone else, and this is the biggest single detriment to the OSS community of all.

    1. Re:pot meet kettle by Steauengeglase · · Score: 1

      I'm just some guy on the street, but I was pleased to read it and see that it was for pragmatic and not political reasons. At least a pragmatic problem can have a pragmatic solution instead of turning into a ideological mess.

    2. Re:pot meet kettle by Anonymous Coward · · Score: 1

      As opposed to the ability to follow simple syntactic rules and spelling practices, such as capitalizing the first letter of your sentences or learning when to use parentheses instead of misusing "-" to separate a parenthetical comment. And let's not forget repeating part of a sentence part of a sentence part of a sentence part of a sentence part of a sentence part of a sentence.

      The problem is that C++ _encourages_ such levels of abuse by failing to even report such syntax errors as errors. The compiler often blindly accepts massive errors, such as miscasting of variables, as valid syntax. This makes debugging far more complex. Don't get me *started* on the results of operator overloading encouraged by C++.

    3. Re:pot meet kettle by Steauengeglase · · Score: 1

      I'll take a language fight over a commie GPL v. capitalist proprietary license v. any other license style fight any day of the week. At least the former doesn't end with totalitarianism v. global corporatism.

    4. Re:pot meet kettle by ChrisMaple · · Score: 2

      Operator overloading is essential to the readable implementation and use of new data types. Consider a new class of 192 bit integers. Would you rather read
      a=add192(mul192(c,d),mul192(d,add192(e,f)))
      or
      a=c*d+(d*(e+f))
      ?

      --
      Contribute to civilization: ari.aynrand.org/donate
    5. Re:pot meet kettle by dotgain · · Score: 1

      Bah, I'll take 'long long long long int' over that any day.

    6. Re:pot meet kettle by Marxdot · · Score: 1

      Most languages are doing just fine without operator overloading.

  6. 2000 called by Fished · · Score: 1

    The year 2000 called. They want their "obvious" back.

    --
    "He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
  7. "Pointed criticism", but hardly "scathing rant". by Anonymous Coward · · Score: 5, Informative

    I advise people to read the actual message; this summary is exaggerated.

  8. Re:I often disagree with RMS, but... by TheRaven64 · · Score: 3, Insightful

    C++ is crap, but when the alternatives are a tasteful subset of C++ and a half-arsed reimplementation of a horrible subset of C++ in C macros, I'd rather take C++ and bitch about it than suffer in C. There are very few places where C++ is the right tool for the job, but C is often not the right tool for these either.

    --
    I am TheRaven on Soylent News
  9. Holy slanted summary, Batman! by murdocj · · Score: 4, Informative

    The posting is NOT a "scathing rant", it's a pretty clear, calm and well-reasoned explanation as to issues that the author sees with GNU and GNU software development. There's no flamebait, no ranting, no name-calling.

    1. Re:Holy slanted summary, Batman! by statusbar · · Score: 3, Informative

      Absolutely.

      Also, one of the interesting points about the primary reasoning behind the creation of the CLANG compiler was not because of the GPL license.

      it was because the developers wanted to make GCC more powerful, so that it could be used as a library.

      Stallman refused to allow the features to be added even though they were not asking for the GPL licensing to be changed.

      So the developers started CLANG. In c++. as a library.

      Watch this for some very interesting history and features:

      http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys

      --
      ipv6 is my vpn
    2. Re:Holy slanted summary, Batman! by iluvcapra · · Score: 2

      But RMS's position on not modularizing GCC isn't irrational, at least from his perspective -- his concern is that if GCC is made into a set of libraries, vendors will write proprietary front- and middle- ends to do all the (awesome) stuff Clang/LLVM do, and this would lead to a vicious cycle where all development on the GNU toolchain would be diverted from the hard-to-monetize GPL's GCC, and into the BSD or proprietary libraries people stick onto it.

      HIs refusal to make GCC into a library is his strategy for making sure commits keep coming into GCC. And in OSS, he who receives the commits has the power.

      --
      Don't blame me, I voted for Baltar.
    3. Re:Holy slanted summary, Batman! by Nemyst · · Score: 1

      (the example used was RMS's distaste for C++, not exactly a strong point against RMS)

      That offhand remark was a rather obvious red flag. Regardless of what you think on the subject, your opinion has no place in what should be a neutral, objective summary relating facts. Sigh.

    4. Re:Holy slanted summary, Batman! by dkf · · Score: 3, Informative

      HIs refusal to make GCC into a library is his strategy for making sure commits keep coming into GCC. And in OSS, he who receives the commits has the power.

      The problem with that strategy is that it keeps you as king of a shrinking castle; many potential community members decide they don't want to put up with the attitude and go elsewhere. Sure, there are faster ways to become irrelevant, such as taking everything private and selling out to Ora... err... EvilSoft, inc., but the trend is still down if you don't try to properly maintain the community.

      I've seen it said that the internet sees censorship as damage and tries to route around it. It's true for other types of over-strict control too. It doesn't matter whether the control freak has good reasons for doing it either; the internet doesn't care for the moral strength of the reasons, it just sees the outcome. RMS's opposition to the things that some wanted to do with GCC has prompted the creation of an open competitor that is sapping much of the potential strength they might've otherwise had. This long-term threat to GCC is largely of their own making.

      Oh well, I'll probably use GCC for a few years more at least; old habits die hard (and I never wanted to write a C compiler in the first place, so the internal complexity was an issue far off my radar).

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    5. Re:Holy slanted summary, Batman! by Beetle+B. · · Score: 1

      The posting is NOT a "scathing rant", it's a pretty clear, calm and well-reasoned explanation as to issues that the author sees with GNU and GNU software development. There's no flamebait, no ranting, no name-calling.

      1. It is scathing.

      2. The person who wrote it describes it as a rant (see the subject line).

      --
      Beetle B.
    6. Re:Holy slanted summary, Batman! by Darinbob · · Score: 1

      Well, you could say that instead it is his fear that someone somewhere might use free software to do non free stuff is what is irrational.

    7. Re:Holy slanted summary, Batman! by statusbar · · Score: 1

      This is what I don't understand - If GCC is under the GPL, and was modified to be a library, under the GPL the front ends / library clients that use it would ALSO have to be released under the GPL. The original developers had no problem with that. So what, exactly, would the problem be for RMS? It could only have increased the pervasiveness of GNU/GCC. And if there was some problem that RMS knows about then this would be a problem with the specific license that GCC uses.

      --
      ipv6 is my vpn
    8. Re:Holy slanted summary, Batman! by iluvcapra · · Score: 1

      It's not a settled issue as to wether or not a work under its own license may dynamically link to a GPL'd library. The FSF says that if your code links to a GPL library, that makes your code a derivative work of the library. Not everybody believes this, it's never been tested in court, and this theory would seem to run contrary to the rationale behind the FSFs claim the GNU Classpath is not a derivative work of Java.

      That said, even if the FSF's reasoning were to prevail, it would be too easy for someone to write a wrapper around a Modular GCC that allowed people to save intermediate work for use by their own tools. The whole point is people love the huge number of language frontends and the assembly generation, but want to do their own static analysis and AST and middle-stuff. If RMS keeps all of the code tightly-coupled, then people can't bootstrap their own proprietary compilers with the work he put into the parts that don't suck.

      It's pretty shitty, but it's a normal way of doing business. I work in the film industry and there's the company you might have heard of called "Panavision," they make crappy cameras but awesome lenses, so what they do is they make their lenses only fit a proprietary mount that only their cameras have. RMS is sorta doing that.

      --
      Don't blame me, I voted for Baltar.
    9. Re:Holy slanted summary, Batman! by mbkennel · · Score: 1

      Peace will come when Stallman loves open source coders more than he hates capitalists.

    10. Re:Holy slanted summary, Batman! by drinkypoo · · Score: 1

      HIs refusal to make GCC into a library is his strategy for making sure commits keep coming into GCC. And in OSS, he who receives the commits has the power.

      The problem with that strategy is that it keeps you as king of a shrinking castle; many potential community members decide they don't want to put up with the attitude and go elsewhere

      This might wind up being a good thing for gcc users, even. It would be nice if there were some meaningful competition to gcc, because sometimes you wind up with code you can't compile without gcc because everyone assumes everyone has it, which makes it really annoying when you're having a problem with gcc or trying to milk more performance out of some code with another compiler. On some platforms, gcc produces an inferior result to other compilers for some code, so it sucks to be tied to it.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    11. Re:Holy slanted summary, Batman! by statusbar · · Score: 1

      Good points. So the issue is really with the GPL license enforceability....

      I wonder if the same issues are at hand with GCCXML : http://www.gccxml.org/HTML/Index.html

      One could make a library that just spawns a sub-process running GCCXML, then grab the result and pass the appropriate parts of the parse tree to the caller.

      No linking involved, no GPL violations either.

      --
      ipv6 is my vpn
  10. Re:I often disagree with RMS, but... by BenoitRen · · Score: 1

    Except C++ isn't crap.

  11. Re:I often disagree with RMS, but... by pointyhat · · Score: 1

    Prove it!

  12. Re:grep -p by Bill+Dimm · · Score: 2

    This gives some ways to accomplish the same thing.

  13. Re:slightly off topic by Anonymous Coward · · Score: 1

    Do you even understand what the expression "sour grapes" means? Because I am struggling mightily here to try and see how what you just said makes any sense at all.

  14. Re:I often disagree with RMS, but... by Anonymous Coward · · Score: 4, Funny

    Except C++ isn't crap.

    Pshaw. Well, I guess we can't really blame the Inferiors. Until you mature, I suppose you won't have a lush, fully-grown neckbeard whispering in your ears the dark secrets of why any programming language invented past 1972 is inherently worse. Trust me, everything will make so much more sense once you've heard the beard. Then you'll understand why we ONLY decided to grudgingly tolerate C after we made it more baroque than necessary to ensure our own job security. This entire "easier to write code" fad will certainly pass.

  15. Define horrible by ArchieBunker · · Score: 1

    For the people who don't program, can you define why its "horrible"?

    --
    Only the State obtains its revenue by coercion. - Murray Rothbard
    1. Re:Define horrible by Jeremy+Erwin · · Score: 1

      Is this some sort of role playing exercise? "Imagine you don't know how to program?"

    2. Re:Define horrible by betterunixthanunix · · Score: 4, Funny

      If C++ were a car, the accelerator would be a pedal located under the passenger seat, a dial on the radio, and a lever in the trunk. Most users would just shift into neutral, which would be a 14 step process, and push their car around the block; they would then point to this as a major accomplish, and would note that once the car is in neutral it is powerful -- after all, you can always shift into drive if you really need to!

      --
      Palm trees and 8
    3. Re:Define horrible by sourcerror · · Score: 1

      the accelerator would be a pedal located under the passenger seat, a dial on the radio, and a lever in the trunk.

      No, that's the brake pedal.

    4. Re:Define horrible by ArchieBunker · · Score: 1

      Yes, I don't know the first thing about C or C++ for that matter. If C++ is indeed so horrible then why was it invented and why is it still being used?

      --
      Only the State obtains its revenue by coercion. - Murray Rothbard
    5. Re:Define horrible by Marxdot · · Score: 1

      ArchieBunker realizes that markets are not so infallibly rational after all. Popularity tends to be inversely proportional to goodness, particularly when committees, stupidity, marketing, and very many buzzwords & fads are involved.

    6. Re:Define horrible by LingNoi · · Score: 1

      It's like starbucks and coffee snobs.

  16. Re:grep -p by kthreadd · · Score: 3, Interesting

    lol AIX who uses that shit

    /me raises hand

    It's not modern or "sexy", but it is incredibly stable.

  17. Re:I often disagree with RMS, but... by statusbar · · Score: 1

    All languages are crap at some level and for some uses.

    But watch this from Bjarne last february for some insight in C++11:

    http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Keynote-Bjarne-Stroustrup-Cpp11-Style

    --
    ipv6 is my vpn
  18. You're full of shit. Ever hear of RAII? by Anonymous Coward · · Score: 5, Insightful

    When using RAII sensibly, C++ does offer excellent support for babysitting your memory usage. In fact, it offers superb support for managing any sort of a resource that needs to be allocated and later deallocated. There is no good equivalent in C.

    These days, C++'s modern smart pointer classes make memory management a complete non-issue. You get very predictable and effortless freeing of memory, all without having the performance of your app destroyed by garbage collection like you do when using a language like Java, C# or Ruby.

    This is just the power of C++ in action. It lets you easily build minimal-cost abstractions upon C.

    1. Re:You're full of shit. Ever hear of RAII? by Anonymous Coward · · Score: 1

      If you're a stellar coder building from the ground up, C++ is fantastic, especially for cheap performance and rapid development of flexible structures and object hierarchies.

      However, if you're adopting someone else's code, C++ IS A DOG PERIOD. Chances are, 99.99% of the time, you'll grow grey hair trying to dechipher what was meant by that template library, these three different class-hierarchies, or why the hell they use C randomly all over the place...!

      I loved C++ in my teens, but got over it. Other's code just wasn't worth it, and coding it all myself wasn't worth it either.

      Ruby I feel is on the right track. Not Rails. Ruby.

    2. Re:You're full of shit. Ever hear of RAII? by betterunixthanunix · · Score: 1

      These days, C++'s modern smart pointer classes make memory management a complete non-issue.

      So, do you need shared_ptr, weak_ptr, or unique_ptr? I ask because (a) choosing the wrong one will create bugs in your code and (b) this is another example of something that is automatically determined in other languages.

      This is just the power of C++ in action.

      Yes, it certainly is: the power to create inflexible programs that act as magnets for bugs.

      --
      Palm trees and 8
    3. Re:You're full of shit. Ever hear of RAII? by K.+S.+Kyosuke · · Score: 1

      You get very predictable and effortless freeing of memory

      I don't think so. Once you start deallocating a large tree or a similar structure, it will be very far from being effortless, and the only predictable thing is that it will hang your code for a while. The only benefit you'll get over GC is that this hiccup will take place at a precisely defined spot.

      Anyway, RAII in C++ is a bad joke. If you like the idea so much, switch to D. It's much saner.

      --
      Ezekiel 23:20
    4. Re:You're full of shit. Ever hear of RAII? by gbjbaanb · · Score: 1

      so what you're saying is that when there's a fuckup in the code that causes a big problem, you'd rather it happened at random rather than in a deterministic place where you can see it occur, easily see what the problem is and fix it.

      There are plenty of cases where GC is a joke, not being able to clean up your code until it feels like it doesn't make for better or more reliable systems. (an example, I have a WCF service, it uses log4net to log stuff, and I use its property system to add the caller's ip. But where there's an exception, the pop doesn;t occur in the service Dispose method because the framework has decided to hang on to it and free it up later. So the next log gets 2 ip addresses logged.. So what would be nice clean code in C++ becomes a mess of manually handling Exception exceptions in order to bypass the system so it works). GC is for lazy-ass programmers who don't know better.. RAII is for lazyass programmers who know and love what it does for them.

    5. Re:You're full of shit. Ever hear of RAII? by Anonymous Coward · · Score: 1

      this is another example of something that is automatically determined in other languages

      I'd like to know which languages can automatically determine when a weak pointer can be used.
      High-level languages normally automatically "determine" that you need a shared_ptr even when you don't. weak pointers have to be created explicitly, while auto_ptr and unique_ptr don't exist.
      While using shared pointers by default works, the overhead is often unacceptable, particularly in the sort of area where C++ is widely used. auto_ptr, scoped_ptr and unique_ptr have no overhead and are sufficient 90% of the time.

    6. Re:You're full of shit. Ever hear of RAII? by colinrichardday · · Score: 1

      I'd like to know which languages can automatically determine when a weak pointer can be used.

      In a language without pointers, never.

    7. Re:You're full of shit. Ever hear of RAII? by petermgreen · · Score: 1

      AIUI there are two reasons to use weak pointers

      1: to allow for references which you need to stay arround as long as the object exists but you don't want them to keep the object in existance.
      2: when you are using a memory management model (typically reference counting) that cannot clean up cycles of garbage and therefore requires you to avoid creating cycles in any structure that could become garbage.

      Afaict point 2 forces you to make a lot of pointers "artifically weak" to avoid cycles which in turn means you have to be very careful to keep a reference around to the root of a data structure to keep parts of it from being freed too early. That is the price you pay for using automatic reference counting as your memory management strategy.

      Of course tracing GCs have their own problems. Afaict the reason java runs with a low memory limit by default is to make sure that the gc is forced to run before the program eats up too much memory and drives the system into swap death.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
    8. Re:You're full of shit. Ever hear of RAII? by Darinbob · · Score: 2

      Smart pointers are a band aid really, a way to get something the superficially resembles garbage collection in a more traditional pascal/c like language. Scoped pointers are useful but limited, and reference counting has been known to be a faulty memory management system for decades. A big drawback of both is that it encourages novices (and even some veterans) into thinking that memory management is easy.

      Garbage collection does not destroy performance, do not take the poor implementations of some languages as proof of inherent inefficiencies.

    9. Re:You're full of shit. Ever hear of RAII? by Darinbob · · Score: 1

      GC when designed well and used well is a great tool. However it often gets messed up, with bad implementations or misguided attempts to have "finalization". It often gives you better performance than manual allocation and deallocation especially if it moves memory around which can improve locality of reference. The drawback of GC is that it really requires a high level language. And for a great implementation you need some OS and CPU support for it (ie, to flag pages as dirty, etc)t; though for simple scripting languages not designed for performance you can get away with a portable implementation in C.

    10. Re:You're full of shit. Ever hear of RAII? by fnj · · Score: 1

      Contrary to the other respondents, AC is spot on. At the risk of excluding some very minor cases where they may be called for, "naked" pointers should, and need, NEVER be used in a C++ program. If you find them there, it means a poor quality C++ programmer (who may be a good C programmer) has used them ignorantly, or the code is very archaic.

      Garbage collection is a nod to terrible programmers who are not up to the task of managing their own resources in code. Smart pointers are a far superior, better controlled way to manage resources. And there are other resources besides memory, which garbage collection offers no support whatsoever in managing, but C++ idioms manage very well, and in very deterministic and optimized fashion.

    11. Re:You're full of shit. Ever hear of RAII? by fnj · · Score: 1

      No, actually it is garbage collection which is obviously the band-aid, in support of poor quality programmers who shouldn't even be working on code.

      Smart pointers are far more efficient and deterministic than garbage collection, and similar C++ methodology allows managing things other than memory, which garbage collection does help you with at all.

      Clearly you don't have a single clue how RAII works.

    12. Re:You're full of shit. Ever hear of RAII? by Darinbob · · Score: 1

      Oh? Explain how to do something like Lisp w/o garbage collection, or defend why it's only for poor quality programmers.

    13. Re:You're full of shit. Ever hear of RAII? by bored · · Score: 2

      Garbage collection does not destroy performance, do not take the poor implementations of some languages as proof of inherent inefficiencies.

      I have yet to find a GC language that deals in an acceptable manner with problem sets that stress the memory subsystem.

      Its a well studied problem and many papers have been written about the amount of extra physical memory required in a GC system to meet the performance of a non GC one. Sure, if your working set is 1/1000th the memory of a machine GC will be as fast or even faster due to the lazy nature of the GC. But if your working set is even as large as 1/4 the memory of a machine the performance _WILL_ take a big hit. This is not important for single application small dataset desktop environments but its immensely problematic for ones which share the physical memory with other applications, or ones which have large footprints. Machines with 1-2TB of RAM command a significant price premium over ones with 256GB.

      Plus, most GC's have big issues when there is a lot of data flow over time, your working set may be fairly small, but if your mixing in a lot of transient short lifetime data its far to easy to confuse many of the GCs out there. Its a darn hard problem to solve, and even in non GC environments with some kind of cache its a difficult problem to solve. So, you come back full circle and you end up using language hints to the GC or rewriting your code to provide hints to the GC that the lifetime of particular pieces of data are short and they should be cleaned up/reused more frequently to avoid polluting the actual working set.

    14. Re:You're full of shit. Ever hear of RAII? by Darinbob · · Score: 1

      Generational garbage collectors do well with transient objects. Ie, generational scavengers assume all new objects are ephemeral and so just scans older items which are presumably fewer in numbers, any new that ends up referenced will be promoted to an older generation.

      However like many of them they will take up more memory so you're right there.

    15. Re:You're full of shit. Ever hear of RAII? by gbjbaanb · · Score: 3, Insightful

      I hear this a lot - that it is faster, and my observations ( of a fair few GC-based language systems) are that is is tosh.

      It is faster to allocate - any system that doesn't care about memory usage is, and given an infinite block of memory that you always allocate from the end is super fast. The problem comes when you have to compact - this is a pretty slow operation. You'd never think about writing an app that copied large blocks of memory about every second, yet this is exactly what the GC does once your app gets going. De-allocation is also slower that most other systems as it has to consider finalisation (which, as you noted is shite) but it is necessary - you cannot have the system deallocate an object while it contains other resources that require freeing, and you cannot have a high-level language that mandates you to manually free those things (C does that, its a fine language for its purposes, but its not considered as high a level as you want).

      Then locality of reference, this is also mostly meaningless. I know you want memory blocks to be contiguous (imagine a string where each character was in wildly different memory locations), but compare what the GC gives you compared to the C style of allocating a block of memory and filling it with data - in a GC system you can allocate memory all over the place, and the GC will compact it to a point, but those blocks will never be exactly next to each other - which is what you want for the performance benefits. If you have a c style array, or a c++ vector, then you do get this kind of performance gain (at a cost of having to copy the memory into the pre-allocated buffer, but that's still no slower than the GC copying the same data when it does a compaction).

      So think about what the GC really gives you - the ability to pretend you don't care about memory.

      I'd say they made a huge mistake when designing GC systems, in that they always make it work with memory, but then apply it to objects. Object lifecycle is different to memory, you want objects to disappear when they're no longer used, only in some cases can you tell the system to destroy the object when it feels like it, but in most cases you want the object to clean itself up properly. There's no real reason why they couldn't have put RAII style semantics in (ie by making the system generate automatic calls to a destructor - like Microsoft now does with the using() syntax) and let the GC manage the memory allocation only.

      But still, for performance, a GC is nowhere near as fast as a deterministic program. Just look at the performance counters in a .NET app to see the GC going bonkers. I've seen it compacting the heap hundreds of times a second in a decently written large app.

    16. Re:You're full of shit. Ever hear of RAII? by Darinbob · · Score: 1

      Classic GC showed up with very fine grained language. Languages that had at least one allocation in every line of code, often more. Lisp, Smalltalk, functional languages like ML, etc. Many allocations are done implicitly. This is very different from things like .NET where allocations are relatively few and often done explicitly.

      As for the locality of reference, it really means that you don't end up with pages that are mostly empty, which is very important especially on a time shared system. It's not so big a deal with caches today, especially on systems with huge amounts of multi tiered caches.

      Those languages were also designed with very constrained memory compared to modern systems, such as 1 to 4 MB, very different from a GC design where you can just let a gigabyte fill up before worrying about it and put the mark and scan on a separate processor even. I think the modern system designs really have eliminated a lot of need to do GC smarter, at least for a basic application.

    17. Re:You're full of shit. Ever hear of RAII? by K.+S.+Kyosuke · · Score: 1

      so what you're saying is that when there's a fuckup in the code that causes a big problem, you'd rather it happened at random rather than in a deterministic place where you can see it occur, easily see what the problem is and fix it.

      Deallocating stuff is not a "fuckup". The problem is that C++ forces you to do the cleanup 1) in a continuous block of run time that is difficult, if not impossible to break up into more manageable pieces, 2) with the individual steps being overly expensive, because you need to maintain invariants (allocator state) after every single deallocation. This ends up as being very expensive. With certain modern GCs, however, you can 1) delay the deallocation, 2) run it piecewise, if necessary, that is, concurrently with doing useful work, 3) run it in parallel with doing useful work, i.e., you can dedicate a core for it. (Azul has been doing it for years on custom HW, and recently, they've ported their GC technology onto generic PC systems in form of the Zing memory manager.) I don't see any way of doing this in C++. Care to show me?

      --
      Ezekiel 23:20
    18. Re:You're full of shit. Ever hear of RAII? by K.+S.+Kyosuke · · Score: 1

      Smart pointers are far more efficient and deterministic than garbage collection

      Which is brilliant, as long as your programs are deterministic themselves. How about throwing concurrency into the bag? Dijkstra has always said that the only way of fighting nondeterminacy is to completely embrace it (or something like that, look at his guarded command language, for example)

      --
      Ezekiel 23:20
    19. Re:You're full of shit. Ever hear of RAII? by vilanye · · Score: 1

      It is not a fuckup on the programmers part, it is deficiencies in C++. In the case the poster gave, there is really nothing you can do in C++ to clean up trees gracefully and without interrupting the execution.

    20. Re:You're full of shit. Ever hear of RAII? by vilanye · · Score: 1

      Not with Java. Allocation is faster than malloc and deallocation is basically free. http://www.ibm.com/developerworks/java/library/j-jtp09275/index.html

    21. Re:You're full of shit. Ever hear of RAII? by vilanye · · Score: 1

      And Java now has stack allocation for short-lived objects so the last memory advantage C++ had is now gone.

    22. Re:You're full of shit. Ever hear of RAII? by gbjbaanb · · Score: 1

      "is basically free".

      lolol.

      deallocation is only basically free when you don't do it. Otherwise, you have to compact the heap - which is most certainly not free - or you'll either run out of memory, or you'll have to start allocating using a next-free-block algorithm, just like malloc does.

    23. Re:You're full of shit. Ever hear of RAII? by gbjbaanb · · Score: 1

      Languages like .NET allocate a massive amount of memory - objects are new'ed all over the place, and internally even more so.

      Take a look at the GC allocations counters in perfmon to see just how "few" allocations are actually done, you'll be surprised. Then take a look at the GC collection counters for an even bigger surprise.

      Locality of reference is the huge thing today - my 3ghz CPU only runs that fast if it can read memory, and it can only read at that speed from L1 cache (which is quite tiny). Sure they have MBs of cache at L2 or L3, but that's still slow, just faster than main RAM. So unless your app can fit into the L1 cache, its going to run slowly (relatively), and I mean slowly like its swapping (as it will be - swapping to the other caches or main RAM).

      The other aspect of a GC language is that it makes it easy for allocation to occur, so all these languages (which admittedly might be due to other factors, not the GC) tend to use a lot more ram than other types of system. More RAM = less that can fit in that cache = slower.

      Letting the GC fill up a gig of ram just means you have to wait a little longer before you see it stall, which won't be very long on today's systems that gobble up a gig in no time. Then it just has more work to do compacting the large heap - which is why one performance fix to GCs was generational collection - ie running the GC on a smaller set of the heap. This is why you don't see the GC pauses you used to on old Java programs.

  19. He sounds like a whiny teenager by Anonymous Coward · · Score: 1

    I re-read Bonzini's post, and his complaints seem to boil down to this:

    1. There are no official or de facto C++ coding standards for GNU projects. There cannot be an official one because of Richard Stallman's opposition to C++. Not that his voice matters anymore to those working in the trenches, but hey, it's still annoying.

    2. The FSF isn't doing enough to help the GNU projects, either with funding or PR.

    3. It simply isn't "cool" to be associated with a GNU project anymore.

    Not saying that these aren't valid reasons for moving on... people make career decisions for any number of reasons. However it IS bad form to blast this out in a public forum as one's last act as official maintainer. Because many people read and remember the headline without reading and evaluating the content.

    I predict that Mr. Bonzini will soon regret that he doesn't work for a boss with such a detached style as Stallman.

    1. Re:He sounds like a whiny teenager by KermodeBear · · Score: 4, Insightful

      3. It simply isn't "cool" to be associated with a GNU project anymore

      That isn't quite what he said.

      3) Attaching the GNU label to one's program has absolutely no attractiveness anymore. People expect GNU to be as slow as an elephant, rather than as slick as a gazelle, and perhaps they are right. Projects such as LLVM achieve a great momentum by building on the slowness of GNU's decision processes, and companies such as Apple get praise even if they are only embracing these projects to avoid problems with GPLv3.

      Being part of GNU is not an emblem of technical leadership anymore, either. "If it is done poorly in Unix, feel free to replace it completely with something totally different and better". Is this still true of today's GNU?

      He said that GNU isn't attractive because the leadership isn't effective. It takes too long to make decisions. Sounds to me like "analysis paralysis", or at least typical management where people are too busy playing politics instead of trying to create something awesome.

      --
      Love sees no species.
    2. Re:He sounds like a whiny teenager by LingNoi · · Score: 1

      Sounds to me like "analysis paralysis", or at least typical management where people are too busy playing politics instead of trying to create something awesome.

      Yes, that pretty much sums up the FSF for as long as I can remember.

  20. Re:grep -p by Anonymous Coward · · Score: 1

    A lot of US credit unions and community banks use AIX to run the core process. The Microsoft equivalent in the credit union world is Jack Henry and Associates Symitar core process which only runs on AIX.

  21. Re:I often disagree with RMS, but... by Anonymous Coward · · Score: 4, Insightful

    That's why all of the leading DBMS's and most Triple-A video games are primarily written in C++, as well as the guts of Google's search engine, Amazon's order and fulfillment system, Microsoft Office and Exchange server, etc.

    Because these people don't realize that C++ sucks that's why!

  22. Christmas by dutchwhizzman · · Score: 1

    It's Christmas and we have nerd rage on the intertubes. At least it's less boring than reading facebook updates or twitter feeds....

    --
    I was promised a flying car. Where is my flying car?
  23. Comptibility with C... by betterunixthanunix · · Score: 2
    1. What compatibility with C? C and C++ diverged long ago; there is now only a non-empty intersection of the two languages.
    2. High-level languages often include an FFI, and that FFI is usually able to call compiled C functions. Lisp does it, Haskell does it, even Java supports this (and by extension, so do JVM languages like Scala).
    3. How is continuing to support the language that allowed programmers to create many of the most infamous bugs in the history of computing a source of language power? When I think of language power, I think more of things like the ML type system, the Lisp macro system, embedded definite clause grammars, etc. -- things that enable programmers to write code in a single day that would take weeks of effort to get right in C++.
    --
    Palm trees and 8
    1. Re:Comptibility with C... by maxwell+demon · · Score: 1

      What compatibility with C?

      The compatibility that you can freely exchange data structures with C code, as long as C knows about the data structure in question (which in good approximation means anything not containing classes or references).

      If C++ arrays included sizes, you'd not be able to receive them from C code, and not to pass structures containing arrays to C code. If you're writing pure C++ code, you generally shouldn't use raw arrays anyway.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:Comptibility with C... by maxwell+demon · · Score: 1

      Not much care is needed. Basically, in all but the most contrieved cases if the C compiler eats your definition then it will also understand your data structure. Especially you don't need to maintain separate C headers and C++ headers, but you cannot do that with Java.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    3. Re:Comptibility with C... by petermgreen · · Score: 1

      the vast majority of C structures are also C++ structures and will end up with the same binary representation in both.

      Making a header for a C library that can be used in both C programs C++ programs is basically a matter of adding a bit of boilerplate at the start and end and avoiding some of the hariest C constructs. The ease of doing so and the popularity of C++ combine to make the vast majority of C libraries available to C++ coders with nothing more than a #include.

      Whereas with most other languages even if they support efficient direct calls to C functions* you have to completely rewrite the function declarations and data structure definions and hope you got the mappings right so that the types match up in a portable manner. Sometimes there are automatic converters but in my experience they have trouble handling all but the simplest cases.

      * Java for example doesn't, they expect you to write a C or C++ wrapper to interface between native and java code. There is a third party hack called JNA but IIRC it comes at a severe performance cost.

      --
      note: i'm known as plugwash most places but i screwd up registering that here somehow in the past and now can't register
  24. Re:grep -p by jedidiah · · Score: 4, Funny

    > lol AIX who uses that shit

    Employers.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  25. Re:I often disagree with RMS, but... by jedidiah · · Score: 2

    The leading DBMSs?

    Those are likely older than you are.

    Probably not as much C++ in there as you think.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  26. yosefk is a Pussy by Anonymous Coward · · Score: 1, Insightful

    He didn't master the tool called "C++", so he got himself a toy called "C#". Now he bitches about the tool when in reality his own conceptual and practical incompetence is to blame.

  27. Re:Who Gnu by jedidiah · · Score: 3, Insightful

    It's like I just got out of a hot tub time machine and it's 1995.

    Glacially slow development in GNU projects? That's not new.

    Linux would not exist without the annoying aspects of GNU and the FSF. They would have made their own kernel in a timely fashion and Linus may never have been motivated to make his own.

    In other news: water is wet and apples fall out of trees.

    --
    A Pirate and a Puritan look the same on a balance sheet.
  28. Re:grep and sed need routine maintenance? by maxwell+demon · · Score: 1

    wow, you'd think they would be pretty much done by now

    Well, the post is actually a sed release message. Here's the start:

    I am pleased to announce the release of GNU sed 4.2.2. The latest
    release has the following bug fixes and new features:

    * don't misbehave (truncate input) for lines of length 2^31 and longer

    * fix endless loop on incomplete multibyte sequences

    (There are actually quite a few more points)

    Line lengths of more than 2^31 are probably not that common (indeed, even about a decade ago that would have exceeded maximal file size), so it's no surprise that it only came up now (indeed, some vendors would probably just have documented it as limitation of their program instead of fixing it). Also, multibyte characters for sure weren't in the original specification of sed.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  29. Is this about Copyright Assignment? by Xordin · · Score: 2

    The LWN article linked to is about "Copyright assignment" (http://lwn.net/SubscriberLink/529522/854aed3fb6398b79/)

    The author seems to complain that he cannot retain copyright over his work.

    Does that mean he doesn't want to code for free anymore?

    1. Re:Is this about Copyright Assignment? by BitZtream · · Score: 1

      Retaining copyright and coding for free are not mutually exclusive.

      It's only misunderstanding GPL zealots who think that.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
  30. Horribleness in C++ by betterunixthanunix · · Score: 5, Insightful

    It is not hard to find examples of why C++ is bad. C++ is statically typed, but fails to deliver the sort of type system power that ML gives programmers. C++ is object oriented, but provides no metaobject protocol and forces programmers to resort to its clumsy templates system to do things that are not hard in languages with MOPs. C++ programmers are expected to figure out whether or not they should use a shared_ptr, weak_ptr, or unique_ptr, or if they should just give up on smart pointers and try to manage memory deallocation on their own (and, of course, there is no garbage collector, not even an optional one). The fact that "move semantics" and "r-value references" are considered to be highlights of C++11 speaks volumes about C++.

    For me, the major issues in C++ are not even the lack of features, although most people start there; I point to the difficulty with writing reliable code in C++ as the most important problem. C++ exceptions are only useful in cases where there is no possible way to recover from an error. There are situations in C++ where exceptions are the only way to signal an error; thus there are situations in C++ where recoverable errors become unrecoverable for no reason other than deficiencies in the language. Worse still, the very situations where exceptions are the only way to signal an error also happen to be the situations where throwing an exception is dangerous: constructors and destructors. Beyond handling errors, there is the lengthy list of undefined behavior in C++, much of which could have been defined without any ill effects. The C++ standard even fails to rule out programs that could not possibly make any sense; for example, having a non-void function without any return statements (yes, most compilers will warn you about that -- but warnings are not part of the standard, and if most compilers can detect this there is really no excuse for the standard not explicitly forbidding it).

    It is not hard to understand why "C++ is horrible" has become the go-to response to any comment about C++. It is a horrible language, and it is likely a culprit in the billions of dollars wasted on software bugs each year (buffer overflows, dangling pointers, etc.). It is a horrible language because it is inflexible, it lacks expressive power, and it makes things that are simple in other high-level languages needlessly difficult (how do you give the user a macro system that allows them to extend any feature of your program in C++? In some languages, that is as simple as giving the user access to a REPL, from which they can override or extend any behavior.). We are, unfortunately, stuck with this language, and will likely be stuck with it for a while (though I am hopeful that the need for reliable healthcare software will ultimately kill C++, MUMPS, and other awful languages).

    --
    Palm trees and 8
    1. Re:Horribleness in C++ by maxwell+demon · · Score: 2

      Worse still, the very situations where exceptions are the only way to signal an error also happen to be the situations where throwing an exception is dangerous: constructors and destructors.

      There's nothing dangerous in throwing from constructors. Of course destructors are a different matter.

      It is not hard to understand why "C++ is horrible" has become the go-to response to any comment about C++. It is a horrible language, and it is likely a culprit in the billions of dollars wasted on software bugs each year (buffer overflows, dangling pointers, etc.).

      So you claim you'd get more buffer overflows and dangling pointer with C++ than with C? I strongly doubt that. Remember, this is about C++ being a horrible language compared to C.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:Horribleness in C++ by Man+On+Pink+Corner · · Score: 4, Insightful

      I think the most revealing comment about C++ comes from Stroustrup himself, in the first line of the preface to the first edition of The C++ Programming Language.:

      "C++ is a general purpose programming language designed to make programming more enjoyable for the serious programmer."

      I suppose if you enjoy connecting car batteries to your testicles you might enjoy programming in C++ as well. But for the rest of us, this line adequately demonstrates how little self-awareness Stroustrup brought to the language design process.

    3. Re:Horribleness in C++ by betterunixthanunix · · Score: 3, Interesting

      There's nothing dangerous in throwing from constructors. Of course destructors are a different matter.

      Unless the object is being constructed in the global scope, in which case there is nowhere for the catch block to be placed. Or if the object is being constructed as part of the destructor of another object, which would happen if you were using smart pointers and the destructor passed a smart pointer object to some function.

      Remember, this is about C++ being a horrible language compared to C.

      Fair enough, although for all of the complexity of C++ it does little to solve the problems we see with C (perhaps not more dangling pointers, but not substantially less either).

      --
      Palm trees and 8
    4. Re:Horribleness in C++ by maxwell+demon · · Score: 1

      Unless the object is being constructed in the global scope, in which case there is nowhere for the catch block to be placed.

      OK. Global objects with constructors have enough problems in C++ even without exceptions that I'd avoid them anyway.

      Or if the object is being constructed as part of the destructor of another object, which would happen if you were using smart pointers and the destructor passed a smart pointer object to some function.

      If the destructor code doesn't add a proper try/catch around that code, it's a problem of the destructor passing the smart pointer, not of the constructor of the class pointed to. Note that an exception could also be thrown by the operator new called from the new expression inside the smart pointer code, thus the constructor not throwing is no guarantee to getting no exception in this case. Of course exceptions are only safe if the calling code is written to correctly handle them. That's not specific to constructors.

      Fair enough, although for all of the complexity of C++ it does little to solve the problems we see with C (perhaps not more dangling pointers, but not substantially less either).

      Here I disagree. A lot of things where you need pointers in C can be written using C++'s container classes where the pointers are well hidden and already managed for you. In C++ you'd need to use pointers there which then could dangle if you get it wrong. Moreover, a lot of the cases where you have to use pointers can be done with RAII/smart pointers. Provided smart pointers won't dangle either, and even self-written RAII is so dead simple that it is hard to get wrong once you've learned the basics. It probably depends on the type of programs you write, but I'd say that C++ reduces dangling pointers a lot.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    5. Re:Horribleness in C++ by bored · · Score: 3, Interesting

      But for the rest of us, this line adequately demonstrates how little self-awareness Stroustrup brought to the language design process.

      Nah, what I read when I see that is, if your going to be writing code for 30-40 years, spending a few to learn the details of an extremely powerful tool will make the remaining much more satisfying.

      Of course you should spend a little time getting proficient in some alternatives. You may find that they agree with your more. But, I've been writing C++ code for nearly 20 years now. I've programmed professionally in a few other (non C based), and played around with dozens of others in my spare time. What I find is that for the core of a project I tend to return to C++, and I enjoy that work. Sure there may be significant amounts of code written in other languages (often for the UI) better suited to some particular task, but C++ tends to be the glue binding everything together, if for no other reason that its higher level than C, yet interfaces very cleanly with the C binary calling conventions. It also tends to be a language I can depend on to provide a reasonably efficient solution to any problem I may come across. I find, time and time again, doing work in a "higher" level language, some language feature turns out to be a fatal Achilles heel requiring some really hacky solution (often dropping to C) to solve.

      Modern servers, are amazing pieces of hardware, but I don't think a lot of the programmers writing code on them really realize it. When I see a little 4U server pulling down tens of GB/sec of external IO, and pumping millions of transactions a second, I wonder why the management UI (probably written in java) checking the status of a piece of hardware takes 30 seconds to start and lags for a second or two every time I click something. I wonder what it could possibly be doing that pegs out a 3Ghz CPU for longer than it took to boot an apple II GS at 2.5Mhz. I think, hey its running some kind of long self test, but I know that the self test options on buried elsewhere and take even longer...

    6. Re:Horribleness in C++ by jimbo · · Score: 1

      Exactly.

      It takes several years to become a good C++ developer and some don't have what it takes but for the experienced developer it's a very powerful and enjoyable tool. I've been at it for a while too (decades) and enjoy C++.

      C++ requires a bit more to master but it is worth it.

    7. Re:Horribleness in C++ by 21mhz · · Score: 1

      If the destructor code doesn't add a proper try/catch around that code, it's a problem of the destructor passing the smart pointer, not of the constructor of the class pointed to. Note that an exception could also be thrown by the operator new called from the new expression inside the smart pointer code, thus the constructor not throwing is no guarantee to getting no exception in this case. Of course exceptions are only safe if the calling code is written to correctly handle them. That's not specific to constructors.

      Thanks for spelling out why C++ is a horrible language for getting, you know, real shit done rather than grappling with the language.

      Fortunately, there are ways to make it usable by ignoring problematic parts of the language and standard libraries, and many real-world projects have them applied to their coding guidelines.

      --
      My exception safety is -fno-exceptions.
  31. Re:grep -p by maxwell+demon · · Score: 2

    Of course the complete functionality of grep can be obtained with a awk or perl script. So unless you consider grep an useless legacy program, that's not much of an argument against the option.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  32. Re:I often disagree with RMS, but... by betterunixthanunix · · Score: 2

    Yeah, and here are some applications that run in demanding environments, that were not written in C++, and that you would probably be hard-pressed to write in C++ (at least with the same results):

    https://en.wikipedia.org/wiki/Dynamic_Analysis_and_Replanning_Tool

    https://en.wikipedia.org/wiki/FFTW

    http://www.haskell.org/haskellwiki/Haskell_in_industry

    Hm, that's interesting -- demanding environments, high stakes, and no C++. This might be a clue; it is the experience of a team working in another demanding environment, that used some C++ code but mostly Lisp, who were not terribly impressed by what they saw with C++ (it seems like it was more of a chore for them):

    http://www.paulgraham.com/carl.html

    Of course, that was ten years ago. Times have changed; now C++ has r-value references and smart pointers!

    --
    Palm trees and 8
  33. Re:I often disagree with RMS, but... by Man+On+Pink+Corner · · Score: 1

    Also, the barber says you need a haircut.

  34. Re:grep -p by ottothecow · · Score: 1
    Yup. I use SAS on AIX pretty much every day at work. Just a few (3-4?) years ago, they finished migrating from zOS.

    I've never talked to anyone about the reasons why AIX was chosen over something else...it may have had more to do with the hardware they wanted to run (and/or re-use)

    --
    Bottles.
  35. MOD PARENT UP! by Anonymous Coward · · Score: 1

    There is no shortage of insightful and very detailed negative critiques of C++ on strictly objective engineering grounds, but the parent distills just the essence of the argument and does so without raising heat. Well written and very concise.

    As both an educator and a freelance developer who has worked in many commercial C++ teams, I can only shudder at the extreme myopia of those who advocate in favor of C++ for applications development. It has its useful niche, certainly, like all languages do, but that niche is not large-scale applications development. To use an unsafe language for that purpose is to knowingly accept that your application will be bug-ridden and a wide open security risk. This is not negotiable.

    Large programs have bugs in proportion to their size, this absolutely cannot be avoided, and to make matters worse, C++ has by far the most complex syntax and semantics of any programming language in existence, which amplifies the inherently high bug rate of the unsafe language. If you do not accept this, then you are in denial of CompSci fundamentals and a direct contributor to the software crisis.

    Use some insight, people. You can't juggle for long periods of time with a bunch of scalpels without cutting yourself. And you can't program large applications with an unsafe language without the software equivalent of blood and pain. Use some judgment.

    1. Re:MOD PARENT UP! by SomeKDEUser · · Score: 1

      It's because of people like you that once in a while a horrible, slow, unresponsive desktop app is foisted upon users. Because java or c#.

      I write c++. I know which part of my code will be touched by less experienced programmers, and I code these parts without the most esoteric bits of the language. I know which parts need speed and low-level optimisations. And I know which part will require extensibility. C++ allows both the genericity and the low-level optimisation. No language has quite the range of possibilities c++ has. Great power, great responsibility and all that.

      Mem leaks are easily fixed if you a) don't create them, and b) run you code through valgrind once in a while. Large programmes are typically sensitive to runtime performance, and the performance of the whole thing might well evaporate from a thousand small overheads from "safe languages".

      But at the end of the day, no amount of language design will save you from programmer errors...

  36. Re:slightly off topic by WaywardGeek · · Score: 5, Interesting

    The comments below seem no more relevant than this "slightly off topic" thread... I find that unfortunate. Of people who have made the world a better place, I list RMS near the top. He's done so in a selfless manner that makes me proud to be human. Sure, I don't agree with him half the time, but if I could trade my life for one where I could do as much good as he's done, yeah... I'd do it. Have you ever heard of Gandhi? Ever read about that flake? He slept (as in sleeping - not sex) naked with young girls to prove to himself he could control his animal impulses. Yet few argue about what Gandhi did for the world. It kills me to hear about people complaining about RMS's views on C++, on which he happens to be mostly right, and even if you disagree this is not naked girl territory. We should acknowledge the outcome of his life's effort: the world runs on free software. Standing ovation for RMS! Imagine how much harder it would be to write awesome code if we didn't have all this free stuff!

    That said, RMS both promotes and harms the goals of the free software movement. As the "Cathedral and the Bazaar" pointed out, RMS brings a central control view to free software that is counter to the whole environment that made GNU/Linux awesome. Debian, IMO, epitomizes this flaw. Rather than helping young new programmer share code and ideas, you have to pray to the Debian Gods and hope they take pity on your pitiful new package before it can be share across the Debian universe. Sure, Debian has it's place... deep in the innards of server racks where 99.9% up time is required, but not on a bright young programmer's desktop. If you want to be part of the new innovative group of coders, go learn about programming for Android.

    I hope this message can finally be heard by RMS and those most central to the free software movement: we volunteer programmers are sick and tired of dealing with the wall of red tape you've built. Please get out of the way and let us do our thing. But you're right about C++.

    --
    Celebrate failure, and then learn from it - Nolan Bushnell
  37. RMS suppressed C++ and Flash for the same reason by Anonymous Coward · · Score: 1

    RMS suppressed C++ and Flash support for the same reason Adobe and Microsoft are fading them away: Because they were and are ill conceived crap meant to wall garden programmers with property libraries and complexities that rely on a dedicated and nontransferable skill set.

    Writing in C++ is only done out of ignorance or reliance on property libraries. No person in his right mind chooses it. Hell, even Microsoft is trying to put it aside in favor of C# and this guys are crazy as Win8.
    I tend to think the only reason there's even a C++ compiler in Linux is because the GCC guys felt bored with C since it was so rock solid perfect and decided to experiment. I'm completely serious. Most of the linux kernel is shiny-new-feature driven and the compiler is much the same.

  38. Irreconcilable off-by-1 item index differences? ;) by D4C5CE · · Score: 1

    This boils down to these three points:
    1) To put it somewhat bluntly,

    ...to RMS, these absolutely had to be points 0 thru 2? ;-)

  39. The takeaway for me is... by mccrew · · Score: 4, Funny

    I guess the big news here to me was that GNU grep and sed were being maintained. :)

    --
    Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
    1. Re: The takeaway for me is... by jfengel · · Score: 1

      Seriously. Do they require any actual work? Or are they just upgrading the features to the point where they can read email and browse the web?

    2. Re: The takeaway for me is... by drinkypoo · · Score: 1

      Seriously. Do they require any actual work? Or are they just upgrading the features to the point where they can read email and browse the web?

      You can trivially find out precisely what work is going on (i.e. from the bug queue from grep) and see that it's generally maintenance. You could trivially have found this out by searching for "gnu grep bugs", e.g. with google.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  40. Ruby is NOT on the "right track". by Anonymous Coward · · Score: 1, Interesting

    I'm sorry, I find it extremely laughable that you can suggest that "Ruby is on the right track."

    Nearly everything about Ruby is wrong. That's why it has such a rotten community surrounding it, and such rotten frameworks and apps (like Rails) built upon it. Pick just about any factor, and Ruby will be doing it the worst way possible.

    1) Performance: Ruby's performance is virtually always abysmal, while C++ code generally performs very well. This makes Ruby pretty much unusable for anything serious. When foolish people do try to use it for something serious, they usually end up having to throw far more hardware than should be necessary at it, or have to rewrite their code in a better-performing language.

    2) Portability: C++ is far more portable than Ruby. It's also much more convenient to distribute C++'s binaries to end users than it is to have to distribute a Ruby implementation, or have the user try to provide the correct version themselves.

    3) Community: The C++ community is made up of some of the best minds there are. These people usually have extensive academic backgrounds, followed by decades of real-world software development experience. They are professionals in every sense of the word. The Ruby community, on the other hand, is absolutely toxic. But that's not surprising, given how many of them are still inexperienced teenagers, and "manchild" is the best way to describe the ones who are older. Oh, the C++ community also welcomes women, and treats them as equals, while the Ruby community has been shown to hold extremely sexist and bigoted attitudes toward women.

    4) Maintainability: The features of C++ help with the creation of large-scale software systems, often worked on by thousands of people over many years. C++ software is extremely maintainable compared to Ruby code. Ruby advocates failed ideas like dynamic typing and monkey patching, both of which hurt the maintainability of an application. It's far easier to get up-to-speed with a complex C++ system than it is to do so with even a simple Ruby app.

    5) Developer Productivity: C++ has far more robust development tools, including compilers, IDEs and debuggers, than we see available for Ruby. Furthermore, C++'s compiled nature catches many issues early, which makes unit testing and bug fixes far less of an issue than we find when using Ruby.

    I think you get the idea. It's clear that C++ is superior to Ruby in essentially every way. In reality, there's no comparison between the two. C++ is the more sensible language to use, even for web development.

    1. Re:Ruby is NOT on the "right track". by vilanye · · Score: 1

      1. Performance has nothing to do with language design and everything to do with implementation. For 99% of the use cases Ruby is fast enough.
      2. Yeah, C++ is more portable. What percentage of programs run on more than one platform, 5%? 1%? Rarely an issue
      3. How is the Ruby community toxic, I think you are getting Ruby and Rails confused. The rails community is where the drama is, not the ruby community. If you can find a humbler man than Matz, I would like to see it.
      4. Like C++, in the hands of a crappy coder, you get an unmaintainable mess, but in skilled hands Ruby is terse, easily readable, infinitely flexible and a joy to maintain. It is obvious that you don't have the first clue about Ruby. I will take your 100,000 line C++ program and put it up a functionally equivalent 10,000 line Ruby program in a maintenance contest any day of the week. An order of magnitude less lines of code and next to no line noise in Ruby makes it way more maintainable.
      5. productive> environment to> >>. If you have to rely on the compiler to do your debugging you have lost the maintainability you claim. Ruby is compiled by the way.
      I think it is clear that you have zero experience and knowledge of ruby.

    2. Re:Ruby is NOT on the "right track". by vilanye · · Score: 1

      Stupid slashdot wiped my angle brackets, my point that got eaten is that C++ is lost in a sea of angle brackets, worse than lisp with parens.

  41. Heretic or Apostate by JDOHERTY · · Score: 1

    "The author is quick to note that he has no philosophical disagreements with GNU or the FSF." - oh so he's a heretic not apostate, thank Linus! But get the pyre going anyway.

  42. Re:Who Gnu by LizardKing · · Score: 1

    Linux would not exist without the annoying aspects of GNU and the FSF. They would have made their own kernel in a timely fashion and Linus may never have been motivated to make his own.

    Interestingly, the original architect of the Hurd kernel wanted to use 4.4BSD as a starting point, but was overrulled by Stallman who wanted to use Mach.

  43. Re:RMS is holding free/open source back by dkf · · Score: 1

    We are about ten years overdue for someone to lead the FSF. All the successes in open source and free software have been despite RMS, not because of him.

    You might be more fair and qualify that with the word "recent". RMS has been on his crusade for free software for far longer than 10 years, and some of the key enabling things early on were tools he and the FSF created. GCC was a crucial part of this, as it broke the specter of vendor lock in at the tool chain (a real threat at one point).

    But the world has moved on.

    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  44. Re:grep -p by ThePhilips · · Score: 2

    If you are talking about the "uptime" stability

    As somebody who actually occasionally uses AIX, but most and foremost who does support for HA system for past 5+ years, let me just say that the uptime stability of any system is asymptotically equivalent to the minimum distance idiot admins are kept from it. Farther you keep idiots away from important system - the system which you want to have great uptime - longer the uptime gets.

    Otherwise, our AIX 5.x, 6.x and 7.x boxes run pretty well over here and with great uptime (500+ days between reboots; most commonly rebooted for network/storage reconfiguration or power outlet/physical relocation). Yeah, system is out-dated, mostly sucks and is unused. But try to think of it positively, as about the "glass half-full": Thanks God It's Not HP-sUX!!!!!!!!

    --
    All hope abandon ye who enter here.
  45. this is just plain... by korgitser · · Score: 1

    ...awk-ward!

    --
    FCKGW 09F9 42
  46. Re:RMS suppressed C++ and Flash for the same reaso by maxwell+demon · · Score: 1

    C++ is an open standard. You can even compile it with the GNU compiler. There's absolutely nothing proprietary about C++.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  47. ESR latest project, a python disaster by loufoque · · Score: 2, Interesting

    This reminded me of the latest project of ESR: a system to replace the CIA IRC bot that sends messages to IRC channel when people commits things to repositories. http://www.catb.org/esr/irker/
    He chose to implement it in Python, probably because of distaste for C++.

    After several days of trying to use it and running into severe bugs (random crashes, often locks up, doesn't deal well with unstable connections, excessive memory and CPU consumption, data races and general unreliability -- and of course it required latest python and some very svn version of some library dependency, no fun otherwise) I gave up on trying to fix it and rewrote it from scratch in C++ instead.
    In two hours I had a working lightweight and extremely robust implementation of the protocol he defined. I followed the project for a while and it seems it kept having major usability issues for weeks, to the point where many people were reporting bugs and contributing hacks to fix them.

    All because it was poorly designed and overengineered. The guy actually made the whole thing multi-threaded (with no knowledge of how to synchronize things properly) even though it wasn't needed.
    I think one of the bad aspects of that old generation of notorious hackers is that they're not that good, but their name pulls people in.

  48. Re:RMS suppressed C++ and Flash for the same reaso by loufoque · · Score: 2

    There is nothing about C++ that makes it proprietary.
    It's designed by a committee in which both companies and academia are very active.

    As someone part of both the C and C++ standards committees, I can tell you that interest in evolving the C++ language is much higher than in evolving the C language.
    Some of that evolving is done by academia which do it for the pleasure of making programming languages better, while companies do it to better push their technologies. For a couple of examples IBM is interested in standardizing decimal floating-point, since their hardware natively supports it, while Intel and Microsoft are working on standardizing parallel features.

  49. Re:grep -p by toastyman · · Score: 5, Funny

    I worked with a Russian programmer of very few words, who willingly ran AIX as his desktop OS. When asked why, he said "I enjoy the strict confines of AIX."

    I had absolutely no idea how to respond to that.

  50. Emacs, gcc etc all over again by dbIII · · Score: 2

    His style of running things and divergent goals from the actual projects just rubs people up the wrong way at times. With emacs it was the ability to take advantage of features in an X-Windows environment (which the hurd didn't have, so he forked emacs away from the developer) and with gcc it was to improve compilation of linux binaries (which didn't help hurd).

  51. Summary is missing the link to the scathing rant.. by D'Sphitz · · Score: 3, Informative

    In a scathing rant posted to a GNU project mailing list

    Where is this scathing rant? All I can find is a extremely polite, well written airing of grievance and resignation.

  52. Re:slightly off topic by BenoitRen · · Score: 1

    It kills me to hear about people complaining about RMS's views on C++, on which he happens to be mostly right

    Except he's not.

  53. Re:grep -p by Anonymous Coward · · Score: 2, Insightful

    As an IBM employee, I am equally without words.

  54. Re:I often disagree with RMS, but... by rev0lt · · Score: 3, Insightful

    Yeah, and here are some applications that run in demanding environments, that were not written in C++, and that you would probably be hard-pressed to write in C++ (at least with the same results):

    Example 1: a DSL. Nice, but for demanding environments, go check ADA - full blown OOP - and generally slower than C++.
    Example 2: A FTT routine, how nice. Having worked with assembly implementations on several architectures, hardly a good example - except if you look at all that "demanding" software that also uses FFT in C++. And its not like C++ is a black container unable to use 3rd party libraries.
    Example 3: A fringe functional language. Don't get me wrong, I actually like some of the concepts of Haskell, but it is not a mainstream language, nor is an "industry standard" (except some specific companies), And Haskel is actually SLOWER than C++. A lot.

    Why are you bitching about "demanding environments"? Can you enumerate which companies RMS has worked for? Because what I see is a guy completely out of touch with reality. And you may like him a lot, thats your problem, but if he had his way, you'd be compiling your ghc with EGCS today. If you think C++ is so broken, tell me - what is the size (bytes) of an unsigned int in C? Why promote so shamelessly such a defect-prone language - specially after a decade of vunlerabilities related to the poor implementation of the standard library? Why don't you bitch about that?
    And you have *tons* of demanding environment examples done with C++, Python, PHP, Java, Ruby, C#/.NET, etc. and only a few done in pure assembly. Even most operating systems try to use as little assembly as possible. So your point is?

    Disclaimer: I don't even like C++. It has most of the atrocities of C coupled with a half-assed OO support.

  55. Re:An epic case of MISSING THE WHOLE FUCKING POINT by unixisc · · Score: 1

    You are right about Stallman's extreme Leftist views, and being familiar w/ your link, I'm not sure why you say that he attacks bad people. While people can have different opinions about Bush, Romney, Obama and so on, the causes Stallman embraces worldwide are wacko Left. In the Mid East, w/o saying so in so many words, he backs Jihad terror groups against Israel. And his views on pedophilia and necrophilia - how on earth can anyone consider that mainstream? And the grep/sed guy has only noticed that he is a problem now?

    From the OP

    Additionally, he noted that the FSF is not doing enough to help GNU "Projects such as gnash are bound to have constant funding problems despite being (and having been for years) in the FSF's list of high priority projects.". Finally:

    "Attaching the GNU label to one's program has absolutely no attractiveness anymore. People expect GNU to be as slow as an elephant, rather than as slick as a gazelle, and perhaps they are right. Projects such as LLVM achieve a great momentum by building on the slowness of GNU's decision processes, and companies such as Apple get praise even if they are only embracing these projects to avoid problems with GPLv3."The author is quick to note that he has no philosophical disagreements with GNU or the FSF.

    He is partly right, and a better case in point is HURD. Nothing makes the FSF look like a bunch of opportunistic thieves than abandoning HURD for all practical purposes, and trying to hijack Linux instead under a brand 'Linux-libre'. Also, by starting so many GNU projects when there ain't enough people to complete the first few, they have not done themselves any favors. Like I pointed out in the Trisquel thread, most of the GNU programs are geared towards programmers. I mean lisp, guile, scheme, et al - how important is it to support all languages, as opposed to supporting a handful, and then using those to create quality software?

    The choice of whether to program in C, C++, Objective-C, Objective-C++, C#, Java or whatever should be a decision of individual programmers, since the FSF is not a company. RMS makes things ugly when he opposes bytecode distribution, even though that achieves a lot of the portability and helps proliferate Java software across various platforms. In this case of C++, regardless of whether C++ is better or worse than C - and obviously, the programming world is divided on that issue - it would be a better idea to have all the tools available and let the programmers decide. But RMS, contrary to his 'freedom' sloganeering, has never been about choice in software any more than he is about choice in his pet issues - politics.

    Also, nothing demonstrates Stallman's anti-business attitudes better than his advocacy about 'freedom'. First, all the software had to be liberated, and when programmers asked how they should make their money, he stated that they could make their documentation a service. When programmers started doing that, he started demanding that the documentation should be free. When programmers, in order to get around the software support issues, started offering application services, he came out w/ AGPL. When TiVo, using legitimate GPL conditions, came out w/ a product where the code could not be altered, he came out w/ a new GPLv3 in which he had a specific clause slamming the company, calling it the 'anti-TiVoization' clause. Which company in their right mind would want to make their software GPL, knowing that even if they figured a way to make money, Stallman will do what he can to close that loophole?

    On a final note, I agree w/ other posters above as well - I had no idea that grep & sed were still under maintenance. Honestly, the author should think of writing something new, instead of something that existed from the 70s. Maybe things like extending Qt to cover Objective-C, or some such activity, which would be more useful than maintaining the functionality of 2 utilities that nobody other than programmers use.

  56. Whoa by nomadic · · Score: 1

    Someone actually maintains sed and grep? I would think after FORTY years you can probably just let grep do its thing on its own.

  57. STL doesn't work? by Frankie70 · · Score: 1

    It works fine for me. I have been using Microsoft's STL for 10 years now without problems - it's implemented by Plauger.

  58. Re:Who Gnu by rev0lt · · Score: 1

    Linux would not exist without the annoying aspects of GNU and the FSF.

    Given that Linux did not start as a GPL project, I seriously doubt it. And it is widely known that Linux was started because of licensing issues with Minix, and because 386BSD wasn't available.

    They would have made their own kernel in a timely fashion and Linus may never have been motivated to make his own.

    A couple of years after Linus started Linux, the 386BSD was made freely available. Even considering that Hurd was started almost one year before Linux, if not for Linus work (and all the volunteers), RMS and the whole GPL thinggy would be a remainder of the nineties, like pagers and AOL, while we'd be using BSD-derived workstations.

  59. Re:RMS is holding free/open source back by rev0lt · · Score: 1

    GCC was a crucial part of this

    What you know today as GCC was done as "fork-and-merge". There was a lot of resistance in integrating the patches/changes provided by EGCS. Had he get away with it, GCC would probably be dead, and you'd be running a fork of it.

  60. Software liberation not necessary for open source by unixisc · · Score: 1, Interesting

    but this is my account of Richard Stallman's presentation to the Yorktown High School Computer Club for anyone who would be interested.

    Reading that linked article reminded me - the printer deal that was the cause of him starting this whole thing - it could have been solved w/o an anti-business manifesto demanding that all software be free. All he needed to have done was demand that whenever software changes hands - legally or illegally, the source code must accompany it. He needn't have said squat about re-distribution rights.

    After all, a lot of companies did agree that open source, as in making sure that source code always accompanies binaries, is a good idea. As long as they are allowed to restrict distribution to only their paying customers, this is not an anti-business business model. The software vendor sells their software - both binaries and source code - to their customers, and in the license, they explicitly prohibit its redistribution. That way, if the customer needed to customize the thing for their own usage, they could hire their own programmers, dip into the source code, make whatever modifications they need, and use it in-house, w/o threatening the business of the ISV. Or if the ISV goes tits up, the customer can hire their own programmers to maintain that software as long as they need to, rather than be forced to sink cash into a new platform. This is a win-win scenario for both the ISV and customers.

    By focusing on the liberation of software, rather than just ensuring that the source accompany the binaries, Stallman screwed a fantastic opportunity here - maybe deliberately, given his Marxist world views. The above idea would preserve the interests of ISVs as well as that of customers, making it truly workable. But by insisting that the ISV can't prevent re-distribution, Stallman made the GPL essentially a poison pill. After all, as it has been demonstrated, there are very few ways to make money on software that is GPLed. All this would also have avoided a gazillion licenses, since most of the variations are due to variations in redistribution clauses.

    Open-source, as defined by OSI, has some of the same issues by insisting on the freedom of re-distribution. Since they are not leftist fanatics like Stallman, one would hope that at least they would see it this way, and allow for a total non-free software to get open source endorsements as long as source code accompanied the binaries. That would achieve all the OSI goals of promoting better software, while also earning it the broad based support of the software industry.

    Getting back to the FSF, the other issues that they espouse, such as security & privacy, are things they could support, but which are totally separate issues from open source. One could put bots and other spyware into open sourced software as well, and a consumer would still have to know where to look for them to flush them out. Instead, have totally different movements on those other issues.

    But given how everyone knows that TINSTAAFL, the 'free-software' or 'software-freedom' concept has to go. Free is a beautiful word, and doesn't deserve to be maligned by the Orwellian language of Stallman and his club.

  61. Re:Who Gnu by unixisc · · Score: 1

    Is he still w/ the project?

  62. Easy solution: by Tablizer · · Score: 1

    Just Grep the 'net for a new maintainer

  63. Re:slightly off topic by siride · · Score: 1

    All your little anecdote proves is that someone wrote some bad code, even if it was well-documented. I've seen plenty of unreadable C, Perl and Python, to say nothing of Java or .NET. Object orientation can be very clean, and it can be very dirty if you don't know what you're doing or don't care.

  64. Re:Software liberation not necessary for open sour by Ironchew · · Score: 3, Insightful

    He needn't have said squat about re-distribution rights.

    Except that redistribution rights are important today. Why should a company be able to restrict me giving away copies of programs?

    Open-source, as defined by OSI, has some of the same issues by insisting on the freedom of re-distribution. Since they are not leftist fanatics like Stallman, one would hope that at least they would see it this way, and allow for a total non-free software to get open source endorsements as long as source code accompanied the binaries. That would achieve all the OSI goals of promoting better software, while also earning it the broad based support of the software industry.

    As far as Stallman is concerned, it's the philosophy that comes first, not "industry support" of whatever the current fad is.

    Stallman screwed a fantastic opportunity here - maybe deliberately, given his Marxist world views.

    Your political dog-whistling really doesn't have any bearing on the merits of Free software.

  65. Re:grep -p by sourcerror · · Score: 3, Funny

    Why he didn't just use BSD(M)?

  66. Re:I often disagree with RMS, but... by statusbar · · Score: 1

    ...More like the barber shows you the cool new shaver that you didn't understand and that he helped design.

    An interesting exercise is to compare the internals of Clang, written in more modern C++ versus gcc, written in C, and to decide for yourself which one you'd rather maintain.

    http://llvm.org/svn/llvm-project/cfe/trunk/

    http://gcc.gnu.org/viewcvs/trunk/gcc/

    Note that Clang is written in modern C++ and is also faster than GCC.

    One benchmark shown is that clang loading a parse tree of 'precompiled headers' is almost the same time as it takes to just compile the headers.

    FWIW, I'm switching to Clang wherever it is supported because of all of the regressions in GCC for vectorization in C and C++ since GCC 4.2

    --
    ipv6 is my vpn
  67. The alternative is... Gnome 3, Windows 8, Unity by SmallFurryCreature · · Score: 2

    Lets face it, we have recently had some experience with projects that are the core of computing where it went terribly wrong. The GNU tools are so basic to Linux that if they underwent the same rapid development as others, they become unusable. On the other hand, if they don't keep up, they become obsolete. And when it comes to a tool chain, you can't just modernize one because it is part of a chain and it would break the chain. Simply chaining a few parameters for grep would destroy how many scripts?

    You can't even just rewrite it in a new structure while keeping the interface the same because that would mean your new version would need to achieve in months a complete feature and robustness parity with the original program. This was one of the things that bit Gnome 3 hard, it just wasn't complete when it was supposed to take over from its predecessor. Stuff like Hurd and Grub 2 suffer similar programs, their goals may be noble and far reaching but they are/were for a long time not even suited as a replacement in all but the most trivial setups.

    And frankly, I don't care if the GNU toolset is slow as hell or doesn't get many new gadgets... many of these programs are so essential, so basic to unix style computing that you can wonder if they ever need to evolve. How long has a hammer been a hammer and just right for being a hammer?

    Proof me wrong, write a new grep tool. Get it adopted and supported. It will be a very long road. And all along the road you will have a tool that is not yet as widely installed, robuust, tested, documented and understood. The end destination better be paradise to make that worth it.

    This guy might be disappointed with RMS support now but just wait until he tries to get support for an alternative grep for people to use, document, bug report, debug. Many have tried such things, most failed.

    --

    MMO Quests are like orgasms:

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

  68. Fortran! by mbkennel · · Score: 1

    "Name these languages that offer more performance AND safety than C++"

    Yes, Fortran. Fortran 2003/2008 is a very good conventional straight-forward programming language, except for I/O. It has a better memory and execution model for high-performance computing.

    http://en.wikipedia.org/wiki/Fortran#Fortran_2003

    And it supports successful code-reuse, proven empirically over decades, even when hobbled with backward compatibility with ancient cruft/

    www.netlib.org

    Fourier transform routines written in the 1960's are still good. Ugly to look at, but it will compile and link and work just fine.

    http://www.netlib.org/go/realtr.f

    And of course it doesn't omit obvious things like FUCKING MULTIDIMENSIONAL ARRAYS for real, in the language, and interoperable everywhere. And they can start at 1 or 0.

    And a pointer is not the same as an allocatable array/structure.

  69. Re:slightly off topic by Eskarel · · Score: 1

    These weren't naked "girls" they were naked girls, as massively underage.

  70. Re:An epic case of MISSING THE WHOLE FUCKING POINT by Elendil · · Score: 1

    > Billions have been wasted rewriting the same code (at times in roundabout ways) just to avoid copyLEFT restrictions!

    Billions have been wasted rewriting the same code (at times in roundabout ways) just to avoid proprietary restrictions, too. People who want to use copyleft code only have to release their changes, it's not such a big deal...
    From the point of view of the software ecosystem, I'd say that the GNU toolchain has given birth to what I consider the most successful open-source project ever, namely Linux (probably a billion-dollar success overall), mostly under the GPL. From an industrial point of view, copyleft hasn't harmed Google too much, and Apple is definitely not a model for free software.

  71. Re:grep -p by CAIMLAS · · Score: 3, Insightful

    As someone who administers AIX but am historically from the Linux side of things, I have seen quite a few oddities on this supposedly-stable OS of IBM's, AIX.

    I have seen the kernel get clobbered by authentication systems and PAM, repeatedly. It doesn't handle OOM conditions nearly as well as Linux does (though you can tune it to a similar degree, if only because Linux borrowed a lot from their implementation). I've seen a great deal more erratic behavior (eg. daemons crashing, lack of responsiveness, etc.) on AIX when approaching OOM conditions (with or without swap - just whenever the slab space is almost all used) than I ever have on Linux.

    If it were so stable, it wouldn't need patching primarily for stability as regularly as it does from IBM. Sorry, but from where I'm sitting, AIX has a lot more patches being released for a great deal more things than RHEL does, for very basic things. IMO, the biggest reason AIX is even used specifically is due to legacy, and institutional knowledge - AIX knowledge doesn't go as stale as quickly as Linux distro-specific knowledge does, because nothing ever changes - ever - on AIX, they just add more stuff.

    And, of course, the hardware AIX runs on is pretty much just pure awesomeness. That's the biggest reason AIX should even be considered.

    (Funny enough, the VIO and/or HMC on most "AIX" equipment appears to be some neutered and highly customized version of SuSE, so technically, AIX can only really be as stable as Linux is.)

    --
    ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
  72. Eheh, explain Linux vs BSD then by SmallFurryCreature · · Score: 3, Insightful

    Microsoft LOVES BSD, they can take code from it and never contribute anything back. But it is Linux that got popular not BSD.

    BSD has its supporters, like MS, who don't actually do anything to support it. Linux has supporters, like IBM, who do massive contributions.

    The GPL has won, the only ones who hate is who want stuff totally free and not contribute anything back. Well, for those people there is BSD. Enjoy.

    The fact that Linux is on its way to become the biggest OS, the most used and the most installs (thanks to Android) says enough that the GPL works a LOT better then BSD in encouraging industry AND consumer adoption.

    And still kiddies who never will amount to anything claim that all the Linux users and contributors are wrong. OPEN YOUR EYES!

    --

    MMO Quests are like orgasms:

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

    1. Re:Eheh, explain Linux vs BSD then by davydagger · · Score: 1

      "Microsoft LOVES BSD, they can take code from it and never contribute anything back. But it is Linux that got popular not BSD. "

      its because many of the companies, that profit from the based linux communities, give back. IBM, Intel, RedHat, etc....

    2. Re:Eheh, explain Linux vs BSD then by WaywardGeek · · Score: 1, Insightful

      I was going to reply with something along the same lines... GNU GPL won. The world runs on GNU as well as other respected FOSS licenses. You're point that Linux is becoming the world's most used OS is quite relevant. Linus continues to make software easier to write and share, with tools like git. However, the most popular GNU/Linux distros went the other way - binary incompatibility, complex and out dated package managers, and gate-keepers who revere the stability of their distro to the detriment of progress. With Android, Google wiped GNU off of Linux and started over, with a far simpler. more secure, and stable computing model. Then they opened it to developers who could publish any crappy app they like. The result is hundreds of thousands of apps, most of which are useful to someone.

      Free software developers like me need a new home, where we can share code and apps as easily as people sell binary-only apps on Android. Computing continues forward, but GNU/Linux lags behind. Last night, I watched my daughter using an iPad with a keyboard, and I had the sudden realization that I was watching the future of computing: touch screens with keyboards where all the software is rewritten or massively customized for this environment. She was moving her hands like lightning, zooming and panning, and then hammering out text on the keyboard, faster than any keyboard/mouse combo could allow. With the Minecraft PE app, she showed that creating 3D content on a tablet is faster than the best desktop environment, and even first-person-shooters are more natural. I remain pessimistic that we can build successful free software tablet environment starting with GNOME or KDE. A free (as in freedom) software app store for Android would be awesome. I'd love to see a free software Android fork with a modern package manager and native development tools.

      --
      Celebrate failure, and then learn from it - Nolan Bushnell
    3. Re:Eheh, explain Linux vs BSD then by cheesybagel · · Score: 3, Interesting

      Actually I think Google is getting bitten by their choice to use the Apache license for most of their Android software. It started with Amazon and Baidu developing their own OS and giving none of the code back and it is going to get worse before they realize the damage and re-license.

    4. Re: Eheh, explain Linux vs BSD then by Concern · · Score: 1

      +1

      --
      Tired of Political Trolls? Opt Out!
    5. Re:Eheh, explain Linux vs BSD then by Dr.Dubious+DDQ · · Score: 1

      "A free (as in freedom) software app store for Android would be awesome." Check out F-Droid. "I'd love to see a free software Android fork with a modern package manager and native development tools." Not quite a complete project for what you want, but BotBrew is a start... Also, if it's ever possible to install FirefoxOS on more than a handful of devices, it sounds like a possible contender for the niche, too.

    6. Re:Eheh, explain Linux vs BSD then by MysteriousPreacher · · Score: 2

      Microsoft LOVES BSD, they can take code from it and never contribute anything back. But it is Linux that got popular not BSD.

      BSD has its supporters, like MS, who don't actually do anything to support it. Linux has supporters, like IBM, who do massive contributions.

      The GPL has won, the only ones who hate is who want stuff totally free and not contribute anything back. Well, for those people there is BSD. Enjoy.

      The fact that Linux is on its way to become the biggest OS, the most used and the most installs (thanks to Android) says enough that the GPL works a LOT better then BSD in encouraging industry AND consumer adoption.

      And still kiddies who never will amount to anything claim that all the Linux users and contributors are wrong. OPEN YOUR EYES!

      Well done. You're wrong in exactly the opposite direction to the people you claim to be wrong. To be more charitable, you're working from a pretty odd definition of "popular".

      For the sake of argument, let's say that Linux (mainly through Android and various appliances) has the largest installed base? Does that make Linux popular? Undoubtably, yes! Does that make BSD licensed code unpopular? No.

      Is Android Linux? Sure, in the pure sense of the word "Linux". i.e. the Kernel. What about the predominantly Apache licensed userland? Is that Linux? In common parlance it is a Linux distro - albeit not your father's Linux. How about Mac OS X, with its various BSD and MIT licensed guts. Pretty popular, even if it's in a minority on desktop and mobile. What about OpenSSH?

      The GPL hasn't won over BSD, you numpty. At best, the GPL for certain projects is doing what its users wanted. Same is true for BSD licensed projects. It's about what the authors want! This is entirely a competition in the diseased minds of zealots who claim victory where there really is no competition. It's like fucking 100 women in order to claim victory over a guy who's happily married and not interested in sticking his cock in anything with compatible genitals.

      I'm fucking sick of this BSD/GPL/Apache/MIT/Billy Bob's Friend's Cousin's 3rd Public License v2.3 fanboy war. Just use what's best for you, and license under whatever best suits your goals. Just don't be a fucking moron and use a license that requires x, and whine when y doesn't come. Don't go claiming victory just because you have to pack your balls in ice. That's just not what everyone wants, and if the married guy wants to fuck Belize hookers, he's a moron.

      --
      -- Using the preview button since 2005
    7. Re:Eheh, explain Linux vs BSD then by WaywardGeek · · Score: 1

      Thanks for the informative reply! I was hoping a well informed geek out there would save me the trouble of finding projects like f-droid and BotBrew. These sound like two projects I'll have to take seriously.

      --
      Celebrate failure, and then learn from it - Nolan Bushnell
  73. Re:Software liberation not necessary for open sour by countach · · Score: 2

    Yeah, and then every man and his dog would have to re-implement that fix independently. Your suggestion is bat-shit crazy.

  74. Ideas and the real world by medoc · · Score: 1

    MySQL: C++
    Mozilla: C++
    Libre/OpenOffice: C++
    Qt/KDE: C++
    Etc.

    Let the brainy people discuss why C++ is such a bad language in theory and go back programming...

  75. We know we're really screwed by SpaghettiPattern · · Score: 1

    We know we're really screwed when the maintainer of cat gives up.

    --

    I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
  76. Re:slightly off topic by SomeKDEUser · · Score: 1

    By "young" he means 8-year-old. Not quite what you may have been thinking.

  77. Re:RMS suppressed C++ and Flash for the same reaso by cpghost · · Score: 1

    You're confusing some proprietary C++ libraries with the C++ standard and the C++ Standard Library that both have nothing proprietary in them and that are cross-platform.

    --
    cpghost at Cordula's Web.
  78. The poster child for the GNU development process by DrXym · · Score: 1

    If you want to see how a good idea can brought to its knees by politics, correctness and an extreme lack of pragmatism then look no further than Hurd. Here is a project which started before Linux and development was so glacial and bogged down in politics that Linus Torvalds preferred to write his own kernel from scratch than wait any longer. It seems a lot of other people agreed with him which is why Linux is practically ubiquitous and Hurd isn't. It's not the only GNU project infamous for its extreme lack of progress so perhaps there is a stigma attached to the name.

  79. Re:An epic case of MISSING THE WHOLE FUCKING POINT by Marxdot · · Score: 1

    Pair of insane, rambling commenters.

  80. Re:slightly off topic by LingNoi · · Score: 1

    Yet few argue about what Gandhi did for the world. It kills me to hear about people complaining about RMS's views on C++, on which he happens to be mostly right,

    No, I take the 12+ year maintainer over the guy that hasn't done any serious coding in a decade (one liners to emacs lisp plugins don't count before you come back with that shit).

  81. Re:grep -p by davydagger · · Score: 1

    awk replacing grep - getting in a mac truck to get the groceries.

    perl script - getting in a race car for the same

    I'm just trying to type ls -l |grep something into an interactive bash shell, simple simple shit, that breaks.

  82. Clarifications on LLVM by the Sed Maintainer by tyrione · · Score: 1

    Apple is the primary funder of LLVM and the creator of Clang, LLDB, and following them is Google and dozens of other major corporations contributing to the LLVM Projects.

  83. Re:slightly off topic by narcc · · Score: 1

    Be careful. There are still primitive parts of the internet where that kind of talk is considered blasphemy.

  84. Re:RMS is holding free/open source back by ThePhilips · · Score: 1

    Still, early versions of GNU libc and cc in the 80s and 90s where crucial. At the time it was not only the open source model which was doubted - it was doubted whether "bunch of unemployed hippies" can write anything as sophisticated and of production quality. FSF/GNU under RMS guidance had managed it.

    EGCS happened much later, in the end of the 90s. As old saying goes (I have forgotten original wording), person who have contributed something major to development eventually becomes a major impediment to development himself. RMS religious zeal was important instrument to persist through the times of total commercialization of the software. Now, after he made sure that open source exists and thrives, he himself is more of an obstacle to the future of what he had created.

    --
    All hope abandon ye who enter here.
  85. Re:slightly off topic by cheesybagel · · Score: 1

    Try developing a cross-platform C++ application and we will see if you start agreeing with RMS or not.

  86. Re:grep -p by cheesybagel · · Score: 1

    Heck you could replace everything: grep, awk, sed with perl. That guy is just being stupid.

  87. Re:I often disagree with RMS, but... by cheesybagel · · Score: 1

    Clang is faster at producing slow code.

  88. Re:Software liberation not necessary for open sour by braeldiil · · Score: 2

    The "printer thing" is actually a red herring. The act that started RMS on his path was a lot simpler - all his coworkers at the MIT AI lab left. Stallman had finally found a place where he was comfortable, then thay all left to try and make a little money. RMS threw a hissy fit and set about taking all their original ideas and releasing them as free software. His stated goal was to drive them out of business - either to punish them for leaving or maybe to force them back to the lab. The printer story developed later, in an effort to make it seem not nearly so petty.

  89. Anonymous Coward is a Pussy by leaen · · Score: 1

    He didn't master the tool called "C++", so he got himself a toy called "C#". Now he bitches about the tool when in reality his own conceptual and practical incompetence is to blame.

    Basic advice on trolling: Follow hyperlinks to get superficially correct posts and avoid mistakes like writing about embedded guy that he exclusively uses C#

  90. Re:slightly off topic by MareLooke · · Score: 1

    Honestly, the same goes for the GNOME project. Just have a read here. This situation is possibly even worse for FLOSS in the long run than the FSF's conservativeness.

    FLOSS development is supposed to be about choice, I find it very unsettling that various entities try to take that choice away. "If you're not a GNOME project you don't matter, in fact we'll actively try to make your life harder." is basically what they say.

    The same can be said about the entire systemd debacle, is it an improvement over what we have now? Maybe so, but that is irrelevant to this discussion, but the way they are trying to force it on everyone whether you need it or not, whether you want it or not is sickening and unworthy of a FLOSS project.

    Personally I'll take the FSF's slowass development, seemingly archaic policies and Stallman's insistence on correcting every use of "Linux" to "GNU/Linux" over the current trend emanating from the likes of the GNOME project.

  91. Yawn... by Spugglefink · · Score: 1

    Grep maintainer quitting. 900 billion people use grep. Somebody else will maintain it. Nothing to see here, move along.

  92. Re:RMS suppressed C++ and Flash for the same reaso by alexo · · Score: 1

    RMS suppressed C++ and Flash support for the same reason Adobe and Microsoft are fading them away: Because they were and are ill conceived crap meant to wall garden programmers with property libraries and complexities that rely on a dedicated and nontransferable skill set.

    Writing in C++ is only done out of ignorance or reliance on property libraries. No person in his right mind chooses it. Hell, even Microsoft is trying to put it aside in favor of C#.

    Could have fooled me.

  93. Re:Software liberation not necessary for open sour by jythie · · Score: 2

    I had not hear this part of the tale. Can you site a reference?

  94. Re:I often disagree with RMS, but... by statusbar · · Score: 1

    GCC has been effectively re-written many times during that time. I myself was involved in the porting of G++ v1.38 (before GNU G++ was part of GCC) to run self-hosted on the Atari ST, back in 1989 or 1990. I don't think anything still exists from that code base in GCC 4.7 at all.

    --
    ipv6 is my vpn
  95. Re:I often disagree with RMS, but... by statusbar · · Score: 1

    That's not true in general, and not true specifically when generating SIMD code for SSE4 or ARM NEON.

    All the latest GCC versions 4.4, 4.5, 4.6 have serious regressions in SIMD optimizations, it actually went backwards in efficiency over the years.

    Final code efficiency is the primary reason why I needed to switch to Clang.

    It is a real pain btw to have to have two C compilers for a single embedded device!

    --
    ipv6 is my vpn
  96. Oh thank Christmas! by mbourgon · · Score: 1

    I got what I wanted for Christmas, early - proof that we can still have a flamewar about News for Nerds!

    --
    "Sometimes a woman is a kind of religion, she can save your soul & set you free from all your sins" - Bad Examples
  97. The GPL has not won by martinschrder · · Score: 2

    Care to show me the GPLed webserver that outshines Apache in marketshare? Or the GPLed DNS-server that outshines BIND in marketshare? Or the GPLed SSH implementation that dwarves OpenSSH's marketshare? And can you explain why Apache OpenOffice seems to win against LibreOffice? And when did Firefox switch to the GPL? And why are so many projects switching from GCC to LVM? So where in your world did the GPL win? But of course, if you think that Linux is becoming the world's most used OS...

  98. Leading DBMS in C++ by martinschrder · · Score: 1

    All leading DBMS are much older than C++. PostGres and MySQL are written in C. I doubt hat Oracle and IBM rewrote their DBMS in C++. And of course Derby is written in Java. :-)

  99. What's a "Good" Language? by mike4ty4 · · Score: 1

    For all the people saying "C++ is bad", I'm curious: what would you consider a _good_ programming language?

  100. Re:slightly off topic by Pseudonym+Authority · · Score: 1

    Have you considered that the fault doesn't lie with C++, but that you might just be a shitty programmer?

  101. Re:Software liberation not necessary for open sour by unixisc · · Score: 1

    No. If there is a bug in the original software, the vendor can fix it, and release the fix to either all its customers, or those who ask, depending on the situation. If customer A wants a feature added that nobody else is interested in, A can implement it in-house and use it. If customer B needs something else, B can do the same. But let's say that the ISV finds out that a whole bunch of customers want a particular feature, they can issue that to all their customers, or put it in their next release and resell them - whichever works better. Bug fixes would be something that the ISV would have to do to keep its installed base happy, but aside from that, other changes that are wanted by only a few customers can be left to them to make. Even if they make it independently, no harm done, since that code won't be re-distributed.

  102. Re:slightly off topic by garaged · · Score: 1

    Have you ever spent time with him outside the speech sessions?

    He is anything but selfless, he is extremely arrogant and interested in money to be called selfless.

    I agree with a lot of what he says, but he is the classic example of "do as I say, not as I do"

    --
    I'm positive, don't belive me look at my karma
  103. Nerd Haiku by threc · · Score: 1

    FFS FSF! rm RMS!

    --
    What do you get when you cross a mountain-climber with a mosquito? Nothing! You can't cross a scaler with a vector.
  104. Re:I often disagree with RMS, but... by cheesybagel · · Score: 1

    GCC is in version 4.7.2. I have a set of FP heavy code which runs faster in GCC with '-Ofast -march=native' than Clang with all the optimizations turned on. This also seems to be the case for everyone else I know using X86. I have no idea how the performance in ARM is like.

  105. Re:I often disagree with RMS, but... by statusbar · · Score: 1

    For me, with GCC 4.7.2, the -ftree-vectorize fails miserably compared to GCC 4.3 for code that is already prepared for SSE or NEON vectorization.

    --
    ipv6 is my vpn
  106. Re:RMS is holding free/open source back by rev0lt · · Score: 1

    Still, early versions of GNU libc and cc in the 80s and 90s where crucial. At the time it was not only the open source model which was doubted - it was doubted whether "bunch of unemployed hippies" can write anything as sophisticated and of production quality. FSF/GNU under RMS guidance had managed it.

    RMS was hardly an "unemployed hippie" - at least no more than the guys who wrote the BSD. The idea that GCC (as an opensource C compiler) was "novel" is also a nice fairytale - pcc exists since the seventies.

    EGCS happened much later, in the end of the 90s. As old saying goes (I have forgotten original wording), person who have contributed something major to development eventually becomes a major impediment to development himself. RMS religious zeal was important instrument to persist through the times of total commercialization of the software. Now, after he made sure that open source exists and thrives, he himself is more of an obstacle to the future of what he had created.

    That epic battle between commercial software and open-source only exists on RMS's head and on a handful of follower's heads. Fact is that OSS predates RMS, many commercial software relies on it, GPL itself is an aberration (and the internet as you know it would not exist if base libraries that implement protocols were GPL and not BSD), and most relevant OSS today isn't even GPL - the big exceptions are Linux Kernel (that actually didn't start as a GPL project), and GCC itself.

  107. Re:RMS is holding free/open source back by ThePhilips · · Score: 1

    That epic battle between commercial software and open-source only exists on RMS's head and on a handful of follower's heads. Fact is that OSS predates RMS [...]

    Predates him, indeed. But you have probably forgotten that pretty much all *NIX and *BSD clones - actively developed clones - have abandoned it. Throw in here the USL v. BSDi case, and actually there was a period of time when there was no open source - except for the FSF/GNU.

    pcc exists since the seventies.

    Riiiight. It has, as BSD, fathered piles of *commercial* forks. Yet itself AFAIK it still can not even claim full ANSI C support - least C++ support or support of any arch except x86/x64. So how that rich history "since the seventies" played out?? Stagnation and irrelevance, because every good idea got implemented - in a commercial fork.

    The point being before RMS, OSS was equivalent to BSD. What sucked for very obvious reasons. But RMS had showed that it can be improved upon with his community-centric license. And things have improved since then.

    --
    All hope abandon ye who enter here.
  108. A good argument against C++ in OS's by tjstork · · Score: 1

    Is that it simplifies language binding. If you have the core stuff written in C, its fairly easy to bind to it from any language, whereas C++ is much more difficult - if not impossible, as I don't even think there is a standard C++ ABI. Certainly not on Windows. So, if you have your core os stuff written with C bindings, then, any language maker can talk to it, so that, if users want OOP languages, they can use anyone of them, not just C++.

    --
    This is my sig.
  109. Re:RMS is holding free/open source back by rev0lt · · Score: 1

    But you have probably forgotten that pretty much all *NIX and *BSD clones - actively developed clones - have abandoned it.

    Its a mixed bag. Even the most used *NIX deskop operating system is still (mostly) opensource. On the other hand, during the 80's, very few UNIX manufacturers actually invested on x86 architecture, and traditionally microcomputer software was distributed in binary form (for several reasons, not only because of so-called "trade secrets).

    Throw in here the USL v. BSDi case, and actually there was a period of time when there was no open source - except for the FSF/GNU.

    Since - at the time - Linux was also mostly unusable as a real kernel, to compile UNIX GNU stuff you'd already need to have a workstation WITH an operating system, and a compiler (if you need to compile GCC).

    Yet itself AFAIK it still can not even claim full ANSI C support - least C++ support or support of any arch except x86/x64.

    It was "the facto" standard compiler for BSD operating systems until 1994 - and while is no match for modern GCC, probably one of the reasons it was ditched was because of proper x86 support - Keep in mind that this compiler is older than the x86 ISA. Also, only the _new_ version is x86/x64 only. You may not like it, but it exists and was a viable option - far far away from the RMS speech of "before me there were none". And if you like C++ with GCC, well - do not thank RMS for it.

    The point being before RMS, OSS was equivalent to BSD.

    And after RMS, they still aren't GPL. Other than the Linux Kernel (not at all related to RMS) and GCC, almost every other major project stays away from both the FSF and the GPL, while the business model RMS despises adapts to its limitations (eg. the Linux kernel is riddled with commercial hooks for 3rd party - closed source - modules and extensions; see eg. kernel namespaces).