GNU Grep and Sed Maintainer Quits: RMS and FSF Harming GNU Project 476
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.
Stallman is the original neckbeard of computing (Score:2, Funny)
Enough said.
Gnu/Anonymous FSF/Coward.
Re:Stallman is the original neckbeard of computing (Score:5, Insightful)
No, that would be Thompson and Ritchie [wikipedia.org]. 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.
Re: (Score:3)
Better a principled neck-beard than a whiny chin-beard;^)
Why does C++ matter? (Score:5, 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?
Re:Why does C++ matter? (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.
Re:Why does C++ matter? (Score:5, Funny)
Re: (Score:2)
The question is, does that valid C have a different meaning to the also valid C++ :D
Re:Why does C++ matter? (Score:5, Interesting)
That would not be a very good idea, since certain valid C constructs that are also valid C++ constructs behave differently [wikipedia.org].
Re:Why does C++ matter? (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.
Re: (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
Re:Why does C++ matter? (Score:5, Informative)
Leffler moved on to FreeBSD afaik, and even was FreeBSD Foundation president for a while
Re:Why does C++ matter? (Score:4, 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.com].
Re: (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 [google.com].
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).
Re: (Score:3)
Re: (Score:2)
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.
Re:Why does C++ matter? (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.com].
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.)
Re: (Score:2)
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.
Re:Why does C++ matter? (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.
Distaste of C++ (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++?
Re:Distaste of C++ (Score:5, Insightful)
It's not irrational, or at least probably isn't. C++ is a horrible language, and I say this as a professional C++ programmer.
Re:Distaste of C++ (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.)
You're full of shit. Ever hear of RAII? (Score:5, Insightful)
When using RAII [wikipedia.org] 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.
Re: (Score:3)
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 language
Re: (Score:3)
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 e
Re:You're full of shit. Ever hear of RAII? (Score:4, 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.
Re: (Score:3)
+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.
Re: (Score:3)
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.
Re: (Score:2)
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.
Re: (Score:3)
+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
Re: (Score:3)
This sort of reasoning is what gets us bloated and slow desktop apps.
Except that CPU you'r
Re:Distaste of C++ (Score:5, 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.
Comptibility with C... (Score:3)
Re: (Score:2)
Do yourself a favour and take a look at glib [gnome.org]. God's gift to C programming -- the string handling alone is worth its weight in, well, gstrings...
Re:Distaste of C++ (Score:5, Funny)
" the string handling alone is worth its weight in, well, gstrings..."
If they're empty gstrings that's not saying much.
capcha: adorable
Re: (Score:3)
Re:Distaste of C++ (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 [yosefk.com].
Re:Distaste of C++ (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 [yosefk.com].
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.
Define horrible (Score:2)
For the people who don't program, can you define why its "horrible"?
Re:Define horrible (Score:5, Funny)
Re: (Score:2)
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.
Re:Distaste of C++ (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.
Horribleness in C++ (Score:5, Insightful)
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).
Re:Horribleness in C++ (Score:5, 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.:
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.
Re:Horribleness in C++ (Score:4, 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...
Re:Horribleness in C++ (Score:4, 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).
Re:Distaste of C++ (Score:4, 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:
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).
Re: (Score:2)
irrational
That word does not mean what you apparently think it means...
Re:Distaste of C++ (Score:5, Funny)
My distaste of C++ cannot be expressed as a fraction.
Re: (Score:3, Insightful)
Yes, it does:
Re:Distaste of C++ (Score:5, 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.
Re:Distaste of C++ (Score:4, 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++.
Re:Distaste of C++ (Score:5, Informative)
Reading Linux Torvalds on C++ might be instructive:
http://harmful.cat-v.org/software/c++/linus [cat-v.org]
Re:Distaste of C++ (Score:4, 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 [microsoft.com]
The advice seems somewhat relevant for platforms other than Windows.
Re:Distaste of C++ (Score:4, Interesting)
Re:Distaste of C++ (Score:5, 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 [googlecode.com] that significantly hamper the flexibility and power of the language in an attempt to make it more accessible.
Re: (Score:3, Informative)
pot meet kettle (Score:3)
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.
Re: (Score:2)
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.
Re: (Score:2)
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.
Re: (Score:3)
a=add192(mul192(c,d),mul192(d,add192(e,f)))
or
a=c*d+(d*(e+f))
?
2000 called (Score:2)
"Pointed criticism", but hardly "scathing rant". (Score:5, Informative)
I advise people to read the actual message; this summary is exaggerated.
Holy slanted summary, Batman! (Score:5, 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.
Re:Holy slanted summary, Batman! (Score:4, 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 [msdn.com]
Re: (Score:3)
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 fo
Re:Holy slanted summary, Batman! (Score:4, 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).
Christmas (Score:2)
Is this about Copyright Assignment? (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?
The takeaway for me is... (Score:5, Funny)
ESR latest project, a python disaster (Score:3, 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/ [catb.org]
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.
Summary is missing the link to the scathing rant.. (Score:4, Informative)
Where is this scathing rant? All I can find is a extremely polite, well written [gmane.org] airing of grievance and resignation.
Re: (Score:2, Interesting)
RMS is OK (not perfect, but OK).
For Paolo Bonzini, the grapes, they are sour...
Re:slightly off topic (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++.
Emacs, gcc etc all over again (Score:3)
The alternative is... Gnome 3, Windows 8, Unity (Score:3)
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 c
Re:Software liberation not necessary for open sour (Score:4, 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.
Eheh, explain Linux vs BSD then (Score:4, 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!
Re: (Score:3)
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 Apach
Re: (Score:3, Interesting)
Re: (Score:3)
Yeah, and then every man and his dog would have to re-implement that fix independently. Your suggestion is bat-shit crazy.
Re: (Score:3)
Re: (Score:3)
Re:I often disagree with RMS, but... (Score:4, Insightful)
Re:I often disagree with RMS, but... (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!
Re: (Score:3)
The leading DBMSs?
Those are likely older than you are.
Probably not as much C++ in there as you think.
Re: (Score:3)
https://en.wikipedia.org/wiki/Dynamic_Analysis_and_Replanning_Tool [wikipedia.org]
https://en.wikipedia.org/wiki/FFTW [wikipedia.org]
http://www.haskell.org/haskellwiki/Haskell_in_industry [haskell.org]
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
Re:I often disagree with RMS, but... (Score:4, 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.
Re: (Score:2)
Prove it!
Re: (Score:2)
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 [msdn.com]
Re:I often disagree with RMS, but... (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.
Re: (Score:3)
This [gnu.org] gives some ways to accomplish the same thing.
Re:grep -p (Score:4, Interesting)
lol AIX who uses that shit
/me raises hand
It's not modern or "sexy", but it is incredibly stable.
Re:grep -p (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.
Re:grep -p (Score:4, Funny)
Re:grep -p (Score:4, 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.)
Re: (Score:3)
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 co
Re:grep -p (Score:5, Funny)
> lol AIX who uses that shit
Employers.
Re:He sounds like a whiny teenager (Score:5, Insightful)
That isn't quite what he said.
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.
Re:Who Gnu (Score:4, 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.
Re: (Score:3)
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 i