Herb Sutter has been doing a lot of work on this stuff over the last 10 years and his blog is full of stuff on what you should do... it's not too nitty gritty in terms of languages and stuff, but it's very informative in terms of understanding the issues and what not. Check out http://herbsutter.wordpress.com/.
Some rules of thumb that I've found useful:
Hide mutexes and locks at (nearly) all costs. If you have a queue class, for example, that has a locking push() function, and someone needs to lock for a series of pushes, don't expose the lock to let them lock things for the series of pushes, but provide a push function that takes a list of items instead. Keep thinking of ways to hide your locking strategies. If your class is deadlock-free then you can be reasonably sure (I've always said "reasonably" but I've never seen it not work either) that you'll never see a deadlock in real life either. Race conditions are a different story, however.
Trying to figure out a solution where you never have to think about the concurrency of things is a scary place to go... Have a logical concurrent model instead. For example, if you work with user's and user's get events, rather than just letting them process any number of events in parallel, it may be reasonable to sequence events per-user and let the users run in parallel.
Locking sucks, but it's necessary. If you think you can get away without having to lock in a dubious situation, you're probably wrong.
Unit test, unit test, unit test. If your classes hide all of your locks, then unit tests cover a ton of cases.
I believe that following strict OO guidelines is even more important when dealing with concurrency than when dealing with general ideas in software... and let's face it, it's extremely important even when not dealing with concurrency:)
You're comparing Java and C++ as though they have some sort of global comparison and you can now use Java for everything that you could use C++ for.
That's deeply flawed.
For some sort of argument like that you need to choose languages that are actually in the same space... perhaps C# and Java would be a better thing to look at if you want to play it that way. In my mind, C# is the choice nearly 100% of the time, from a language perspective over Java.
C++ and Java are extremely different languages and can have very different places to play. The fact that you're making this blanket statement is a problem as you are equating them. Equating them like this is irresponsible and it indicates that you've missed something about both languages... they can't be compared like that. You missed something about C++. Perhaps a lot of somethings.
Trolls are modded insightful?
on
Boost 1.36 Released
·
· Score: 5, Insightful
Why is it that all the trolls are modded up? People that think that Boost is the same as STL are insightful. People that think Boost is for C++ supergeeks are insightful. People that think Boost epitomizes what is wrong about C++ are insightful. Boost represents a serious set of genius level code and design and helps thousands of programmers that understand how good it is.
I understand that trolls exist and that they will always be with us. I understand that ignorant people will continue to post until the end of time. What I don't understand is that the/. community apparently agrees with them. This is supposed to be a community of hard-core geekery that understand things like operating systems, and game programming, and the intricacies of complex, multi-paradigm languages likes C++. What I'm seeing here is that it's populated, in greater numbers, with ignorance and "I heard a sound bite from someone who doesn't know what they're talking about so now I know everything" kinds of people.
Have a look at what you know and what you don't know and then think about how intelligent your opinion actually is, and then post. And when you're modding that post, do the same thing.
You don't use signals and slots when writing games? You know these are for events right? You don't have event based games? Wow. seriously... wow.
Re:Huh. I'm still using STL.
on
Boost 1.36 Released
·
· Score: 1, Insightful
For about the millionth time... Boost != STL. All you've accomplished by saying that is to state that you're an ignorant programmer whom the programming community is happy to leave behind... Let me pull you aside and give you a bit of advice - everyone else please turn away: If you say something's crap and then make it completely obvious that you have absolutely no idea what it is, you look like an idiot who can't even read through a website that isn't slashdot. And you don't want that.
A lot of the other nay-sayers appear to be just useless trolls. You don't, so I'm going to reply.
You're really selling boost and, by derivation, yourself short. Boost makes a ton of things simple and robust. I wrote the following, cross platform C++ code with boost:
asynchronous and robust TCP server in 80 lines of code - and it's decently configurable
a command line options parser that's truly extensible in about 60 lines of code.
a very solid threading model in about 100 lines of code
a synchronized and notification-based queue in about 50 lines of code
... the list goes on for quite a while...
C++ is old and that means that it doesn't have anything like a modern language has. What it's missing, Boost fills in (not completely, mind you, but it does a really good job). With C++ you get speed and controllable code (C# runs a close second, but I still wouldn't write an OS in it), and with Boost you get a ton of ease back in the language as well.
You're doing yourself a serious disservice by not looking into it. The one thing that I can't believe is that you really did look into it, and certainly not twice. If you did, you'd know it's not just a source of "template tricks"... far, far, far from it.
If you're not using boost, I can guarantee you're reinventing the wheel... badly.
Software design and development is refactoring. You learn and learn every day, improving the code and improving the model. Making a model in UML does not mean that it is that way for the rest of its life. It will change... sometimes daily.
I think anything you can do in C++ can also be done in C...
Of course that is true, so long as you keep the scope of "anything" to be "can be computed". But if that's the case, then anything you can do in C you can also do in assembler, or Visual Basic, or Turing...
I've never even heard of anyone taking an OO design and implementing it in a non-OO language, so I think your statement about taking the "pretty diagrams" and then using the "best language to do each part" is dubious at best. In fact, I'd probably go so far as to say that you haven't spent nearly enough time working with object oriented designs and languages to even speak on the subject in this way. I used to say this stuff too, when I thought I understood what C++ and OO were all about, but then I learned I didn't know nearly as much as I thought I did and studied it for years... now I can say I wholly disagree with my former self, and I wholly disagree with you as well.
I'm guessing somewhere between a long time and never.
You've got it on "a long time". After one year of C++, I thought I had it, then after five years, I knew I didn't. Now, after almost ten, I've reached the semi-proficient level, where proficient is measured in terms of Scott Meyers and Herb Sutter level of skill.
But I don't agree with what you're saying about OOP, and most modern programmers would probably side with me. Well designed large scale C apps are not maintainable nearly as well as well designed large scale C++ apps. I've worked on code bases that make my point repeatedly. Redesigning it properly in OO makes all the difference in the world.
I'm sorry, but the parent comment is a bit "out there". If you had said something like, "Programmers don't care what language they program in, so long as they only want to be coding in one language just like they're coding in any other language", then maybe. But come on... It's talk like that which makes completely mediocre programmers. Do you know how long it takes to become truly proficient in C++ and OOP? Do you honestly want to tell me that you can come from Java (which doesn't destructors, for example) and simply apply your OO Java programming to C++ and be "good"?
Different languages exist because language A does not do what language B does. And, yes, they can contain a ton of the same kind of idea, which is exactly the reason you need to become highly proficient in them to get anything real out of them. You need to explore the differences not the similarities. I have worked with enough mediocre programmers and enough non-designers in my life, thanks very much. I want people to get deeper, very very deep into alternate languages so that they can broaden their thinking, not just their basic language skill set.
Learning a new language has little to do with that language and more to do with learning new ways of thinking. When I interview people that say that have any OO language, I grill them on OO more than I do on the intricacies of Java interfaces or C++ memory management. How you think is much more important to me than how many times it takes you to successfully compile a file.
Has anyone thought to ask what closed source is doing? Is it growing exponentially as well? Is it growing faster?
Without something to compare it to, saying that OSS is growing exponentially is about as significant as saying it's growing linearly and all the best programmers have long hair.
When I say "bad enough" I mean such that I can't actually work with it. So I think my "bad enough" is quite different from yours.
You're making the same point... it's not the freedom, it's the quality. It would just have to be "bad enough".
I'd be willing to give up the Unix aspect of my OS as long as it was Free Software. In fact, if Windows was Free Software I'd possibly it and try to improve its flaws.
And here you contradict the original point you made, and the same point you just made above. You might give up the Unix so long as it were "free" but that's not relevant; you'd give up the "free" as soon as you couldn't work with it anymore. You're not abnormal... like I said, this group is huge unless, of course, you want to break up this group into a hundred smaller groups where it would have be "1% bad enough" all the way up to "100% bad enough". Or you could call the group "those who can't work with it anymore". I couldn't work with it anymore... at least not as a desktop OS. As a server OS I'm still going strong with it.
And I believe we've definitely come full circle at this point...
So there is in fact three groups of Linux users: those that don't understand any parts of the freedom aspect, those that understand some parts of the freedom aspect, and those that understand all of the freedoms they get with GPL'ed software.
You left out the one group that I'm talking about, and the one group that started this whole discussion - the very large group that you and I both belong to:
I agree that there are other factors to be considered, and maybe if all of the "free" options were bad enough, I'd even be forced into using something proprietary. But that isn't the case. Since Linux suits my needs and is free (as in freedom),...
This is the group that I'm talking about: The group that is very happy to have the "free" software so long as the "free" software delivers better for them than anything else. In other words, once it stops delivering, once it stops being the best thing for that person, they'll switch and (happily or otherwise) leave the "free" aspect behind. The "license" really doesn't amount to much at all - it's merely something that people can claim to bind themselves to because the software under that license is of high quality. I won't give up the Unix aspect of my OS, but I'll give up the license, just like you said you would do, if the OS didn't "deliver". It stopped delivering so I gave up that one aspect of the software (I mean, most of the other apps I still use because they're not "Linux" apps, as many people like to think). But even that other software I use, I don't use because it's "free"- I use it because it's "good".
And that's my entire point at this position in the conversation - we've whittled things down from the original topic a fair bit.:) Richard Stallman, for example, will never give up the license. He'll use the crappiest thing in existence (or write something new) so long as it's free. You and I, and almost every other Linux user out there, aren't quite that hardened - we care more about the quality of the product, and how well it fits in our way of life than what license it's under. We'll leave behind the "free" software and go proprietary, if that proprietary software works better for us. I did that with OSX... our thresholds for what's "good enough" and "bad enough" are merely different.
Hold on... the reason you use Linux is because it's "free"? That's not a distinguishing reason... why not freeBSD or openBSD or Hurd, or... I'm not saying that it isn't a factor in some peoples' decision to use it, but to say it ranks up there as the most important thing is silly. If Linux were crap, but free as in speech, you wouldn't use it.
But at any rate, you're an edge case. I could easily find another person to counter your personal point of view. Hell, I could probably even find a Linux user who doesn't understand what the GPL is about, what it means, or what "free" really means to the end user. Talking about edge cases in a general sense is really not very productive.
(I deeply apologize for the length of this. I understand if you skim or disregard completely:D)
I agree that there are costs to whatever you choose. The bottom line here, for the moment, is that Linux is not an audio platform of choice. I've tried to get it to do what I want to do (before switching to the Mac) and it was a total non-starter. It was inflexible, bug ridden (yes this aspect may be better now, but...) and totally featureless when it came to the product landscape. Yes there may be some users who are unhappy with what the OSX platform shoehorns them into, but this is not the general case.
Try running you favorite web browser or even text editor from OS 6 or OS 7 on OS X
I can't, as you well know, but let's not just make up requirements here. It's extremely rare when someone says, especially in the audio realm, "Let me run this really really old piece of software!". People clamour for the latest and greatest, in almost any marketplace. Not being able to run ancient software is definitely not something that the vast majority of people want to do.
I can take my Yellow Dog, Mandriva PPC, or Ubuntu PPC stuff and put it on a Power system. Where's Apple?
Let's state the obvious: Apple creates proprietary technology. One of the absolute main reasons I believe that they are so successful at this stuff is because they don't worry or care about every Tom, Dick and Harry's hardware. They run on specific equipment. Do you pay for that in choice? Of course! Are the bulk of Mac users unhappy with the hardware they're forced to run on? No... if they were, they would go somewhere else and run something else. Of course you can always find someone who's unhappy, just like you can always find that one quack that really wants to run his OS7 software on OSX, but let's be realistic and discuss the general case and not the <10% cases.
Also, people don't care about interchanging binaries or libraries... hell, Java has taught us that if nothing else. Remember the "write once, run anywhere" marketing fluff? You never hear that anymore and there's a good reason for it: people don't care about that. I've written a lot of apps in my life and no company, no individual expects to be able to run that same app on a ton of different platforms. When I wrote Java apps, they were geared towards Unix, Solaris specifically, and that's it, and nobody cared at all. Are there edge cases? Of course there are, but arguing edge cases is, as I've alluded to, a waste of time. For each edge case on the right, I can find an edge case on the left and negate the whole thing.
I clearly understand that open source is alive "forever". Don't misunderstand me here... I love open source, I think that it's a truly marvelous way to create software, and I believe that Linux is *the* choice for a backend server. I understand that companies may die, but let's face another fact here: If the company died, it's generally because nobody was using their software, or tons of people were using it and weren't paying for it. In the first case, nobody will care if they die (or that <10% comes back and we're not concerned with that), and in the second case the public deserves what they get.
I understand what you're saying, and you've presented it well, but I really think you're arguing edge cases here. It is not the job of any company, or open source group to deal solely in edge cases, or to put in 80% of the effort for 20% of the audience. There will *always* be edge cases. And let's also not forget what's really happening in the world - very few people are using Linux professionally for audio (actually, I don't know of any but I assume that the number is not actually zero). And, at the very least, almost all (again, I know of none, but it's not fair to say it's zero) commercial and professional applications and plugins are targeted at non-Linux platforms. There is a reason for this, for sure... people are happy to make c
Ah yes. That's it. It was the distro. It's not that he used a recently made distro (which was something of great importance to you before), it was that he didn't use the *right* recently made distro - he did choose the three most popular flavours, I believe, but clearly those aren't right. Of course, he should have read the label: "Only for users that have installed the baby Linux distros in the past - sure this is one of the most heavily developed ones, and one of the most popular, but it's just not for you, kiddo". I guess he missed that one. What if he used one of those "good" distros six months ago? Would that have been shit too? Just a "good and easy distro for the kiddies" made in the last six months would have worked, huh? Wow... this is getting pretty specific and it sounds like you think it's near impossible to have a correct *installation* of the product. We haven't even discussed *using* it yet.
I think I have a much better opinion of Linux than you do... I actually like it - just not as much as OSX. I'm having a really tough time following this flip flopping logic there guy. And I think I have better things to do...
Dead on. You're absolutely right. I simply find programming for the Mac a buttload more fun. The support for coding what Apple has decided is better than anything I've seen. So, as long as you're willing to live inside ObjC/C++/C/Python/Ruby and Cocoa/Carbon then you're really very happy. If you can't live with that then, you're quite right, it's not a great place to be. I've simply found that, given a ton of choice, I've got to settle down to *something* (i.e. I don't code in ObjC/Java/Python/Ruby/C++/KDE/Gnome/wxWidgets/ALSA/OSS all on one project. I'd probably write all of my apps in C++/Python/KDE/OSS and stick with that.) Settling down to the choices that Apple has given, and the really great tools they've given to work with (the new interface builder is really quite nice), it's a very positive settlement.
Hmm... that's sad. I respect the fact that you've used this stuff for a long time, as it means you have an informed and experienced opinion. Clearly you don't recognize the same in others. That does hurt your ability to put forth a convincing argument since it shows that you're rather self-centred and "nobody's as good as me" kind of a thing. Just FYI... that's how it comes across. If you're not willing to give credit where it's due, you're not worth listening to. But I'll give you a shot.
Linux for the desktop is progressing at a much faster pace than any other OS I know of...
Of course it is... it has a long way to go. The first 9 miles of a 10 mile race are a lot easier than the last one, and that last one takes a *long* time to do. Are the developers doing an amazing job? Absolutely. Is Linux an amazing OS? Absolutely. Is it at the point where it belongs on a large number of users' desktops? No, and let's face it... the public has spoken on this one. If they wanted it, they'd use it.
... thus it is the distro's you've done in the last 6 months that count.
Ouch, that really hurt your argument a fair bit. You're saying that 6 months ago, it was shit and someone's opinion would be negative. You're saying that it's so unstable, and changes so much that it can't even remain the same for six lousy months. I could try it six months ago, and have a completely different opinion today. Considering that it's been around for so long, what are you saying? Was it shit all the way up to six months ago? Or was it great two years ago, then shit up to six months ago? Fortunately, I know that it's not that bad... it's pretty stable, and doesn't change so dramatically, so quickly. If it did, then it would be a nightmare to use... upgrade every six months and find a totally different beast in front of you! Yikes!
But to back up what I've said, a coworker worked with Redhat, Debian and Ubuntu over the holidays (having never used Linux before), and he said they were all less than great. He now has a new appreciation for Windows installation and just how sophisticated it must be (great, installing Linux gave him a new appreciation for windows... lovely). I tried to talk him through a few things and he might go and try again to see what he can do, but it was not just "click and go". All installations had problems and once he got them up (and not remotely configured - the video wasn't right on most (even nVidia says, "We simply can't keep up with all the changes in Ubuntu" and they say it probably won't work right), printing didn't work, his raid wouldn't work, etc etc...), he was less than impressed with the UIs. He liked N features from KDE and M features from Gnome, but both on their own left him wanting. He couldn't successfully merge the two. And that was *last week*. Recent enough for you? And that's also your target audience... a non-Linux user. And this guy is actually really sharp when it comes to hardware and Windows. He can make that stuff work really well, so he's not an idiot. After everything he told me, I was impressed he got as far as he did, since he hit so many problems.
I naturally recoil from people who seem to be fanbois, repeat corporate marketing mantras (It just works, etc). OS-X is not near suitable for everyone, yet your post does not even acknowledge market segments.
Again, this is unfortunate. Just because someone uses a marketing phrase doesn't make it wrong. I've got news for you... for me, it just works. I don't fiddle with anything at all... that's the definition of "working out of the box".
While the very low value Apple places on the customer makes me want to root for OSS, I still realize that Linux is not for everyone yet - same as Vista or OS-X.
I never said it was for everyone, but um... OSX is the Desktop Unix with a l
Heh, cuz you have a choice of "flamebait", "troll" and "offtopic" and you can't pick all three, so a roll of 1 or 4 is flamebait, 2 or 5 is troll and 3 or 6 is offtopic. Somebody pulled out their die and rolled a 3 or 6. Personally, I was hoping for flamebait or troll cuz offtopic is really really boring, but hey... you can't have everything:)
Moderation points and karma, they're just bits in the ether. If it's got more than 3 responses, then it is de-facto on topic, <sarcasm>or the topic was wrong to begin with</sarcasm>:P
I don't disagree at all. But I'm not much of a GUI user so it's not a question of switching from KDE to OSX... I used to use ION as my window manager because, personally, KDE was brutal and ION gave me a buttload of great features and stayed the hell out of my way. Now, switching from THAT to OSX has been painful, but it's been totally worth it. I don't "fiddle" with things anymore... hell, I don't even have printing working from my linux box because it requires me to screw around with a bunch of crap to get it going... what the hell is that? I plug it in to the network, and my Mac says "Bonjour!" and I print. It's stuff like that that I got tired of mucking around with. I want to code, I want to surf, I want to edit photos, read email, view attachments, watch movies, etc etc... I don't want to go and modify fstab to get my USB mounts working right, or futz with the printer subsystem to print a document, or install something that can play mp3's from the browser, etc etc... that's all just busy work that I shouldn't have to do. I could switch to Windows, but hey, that would be stoopid. So I switched to the Mac.
At the end of the day, if the UI let's me open terminal windows and surf the net then that's all I need. If your window manager is actually more important than the OS then, yeah, you probably want an X11 unix so that you can use any window manager you want. But I'm more concerned with my machine doing the right thing than how it presents my windows to me.
I use Linux as well... just not nearly as much. I force my wife to use it because I still need it as a server and she uses it as a desktop. I actually did mention earlier that it still can't handle email attachments properly but you might have missed that.
Lighten up, man. Guess what... you know why I've been pushing OSX for two years? Because I switched to it two years ago after 10 years with Linux... and I'm still pushing it after two years... but I guess that's meaningless. I'm sure the 10 years you've logged running OSX (yes, I know it hasn't been around for 10 years) gives you license to know what you're talking about...
... and the whole thing is hard to beat for the grand price of FREE.
While this is very cool (I much enjoy not having to shell out $$ for something), it is a non-issue. Pros (in any field) aren't concerned with the fact that something costs money or doesn't. It's just not an issue.
In fact I would love to know what CoreAudio does so much better than these technologies. Do you have specific features in mind or are you just stating your opinion? I don't know anything about CoreAudio so I would love to know.
This whole discussion is in the realm of opinion, so I can't say I don't have my opinions here, but there are some things that seem to be advantages which outshine the Linux solution (these are CoreAudio and "overall" advantages):
No setup required. Literally just plug in and go. With Linux you may have to recompile your kernel (I had to do this on my latest Linux install to get the chipset right) in the worst case, load a module in the almost worst case, figure out how to get that USB audio interface to be recognized, and what its device assignment is in the really annoying and very bad case, and have to configure things even a little bit in the best case. Linux is not nearly as sophisticated in this area. OSX has gone this extra mile, and that last mile is a long one. I have spent time trying to weed out these kinds of things from programs and it takes a large amount of development.
A documented, stable and controlled API. This is enormous. The documentation is lucid, the design and implementation are both strong and easy to work with and what you need is standardized in the OS. The build system even understands that, if I use API version 6 that I am excluding certain older versions of OSX and will prompt me with, "Are you sure you want to screw old OS versions like this?". Releases are "known entities".
Stable hardware drivers. You're not integrating with every piece of audio hardware out there. Hardware is certified to run in OSX or it isn't. Linux has, unfortunately, an after-the-fact mode of operation. The hardware is released, and it later is supported in Linux. With OSX hardware is released after it is certified in the CoreAudio HAL. When you get the hardware, it tends to just work.
You can't forget your target audience and what their abilities and goals are. In this case, they're musicians. Musicians aren't Unix heads or computer geeks by nature; they're musically centred. They want to make music, and that's they're goal. There's a reason why Macs are preferred over Windows boxes for making music (and art in general), and the same reason applies to why they are preferred over Linux.
I know that installing Linux is WAY easier than it used to be, but I challenge you to do something... every time you make a tweak to your system to make it more usable, write a script, compile the kernel, su to root to do some privileged thing, compile a library, compile an app, download and install some third party piece of the system, respond to errors like "Where's gcc?", deal with odd dependency issues, back up your system, use the command line for anything at all, etc etc... ask yourself if your average heavy metal guitarist is going to have a friggin' clue what the hell you just did. Linux detracts from the goal, and the goal is writing and performing music. Nobody who has that goal in mind wants to deal with anything else. Why would they choose an OS that doesn't get them as close to that goal as possible? We're tech heads... they're not. If everyone were a tech head, then there would be no jobs available for tech heads... and we're very well employed.
Linux is a great OS. It's just not a great desktop OS.
Herb Sutter has been doing a lot of work on this stuff over the last 10 years and his blog is full of stuff on what you should do... it's not too nitty gritty in terms of languages and stuff, but it's very informative in terms of understanding the issues and what not. Check out http://herbsutter.wordpress.com/.
Some rules of thumb that I've found useful:
I believe that following strict OO guidelines is even more important when dealing with concurrency than when dealing with general ideas in software... and let's face it, it's extremely important even when not dealing with concurrency :)
You're comparing Java and C++ as though they have some sort of global comparison and you can now use Java for everything that you could use C++ for.
That's deeply flawed.
For some sort of argument like that you need to choose languages that are actually in the same space... perhaps C# and Java would be a better thing to look at if you want to play it that way. In my mind, C# is the choice nearly 100% of the time, from a language perspective over Java.
C++ and Java are extremely different languages and can have very different places to play. The fact that you're making this blanket statement is a problem as you are equating them. Equating them like this is irresponsible and it indicates that you've missed something about both languages... they can't be compared like that. You missed something about C++. Perhaps a lot of somethings.
Why is it that all the trolls are modded up? People that think that Boost is the same as STL are insightful. People that think Boost is for C++ supergeeks are insightful. People that think Boost epitomizes what is wrong about C++ are insightful. Boost represents a serious set of genius level code and design and helps thousands of programmers that understand how good it is.
I understand that trolls exist and that they will always be with us. I understand that ignorant people will continue to post until the end of time. What I don't understand is that the /. community apparently agrees with them. This is supposed to be a community of hard-core geekery that understand things like operating systems, and game programming, and the intricacies of complex, multi-paradigm languages likes C++. What I'm seeing here is that it's populated, in greater numbers, with ignorance and "I heard a sound bite from someone who doesn't know what they're talking about so now I know everything" kinds of people.
Have a look at what you know and what you don't know and then think about how intelligent your opinion actually is, and then post. And when you're modding that post, do the same thing.
You don't use signals and slots when writing games? You know these are for events right? You don't have event based games? Wow. seriously... wow.
For about the millionth time... Boost != STL. All you've accomplished by saying that is to state that you're an ignorant programmer whom the programming community is happy to leave behind... Let me pull you aside and give you a bit of advice - everyone else please turn away: If you say something's crap and then make it completely obvious that you have absolutely no idea what it is, you look like an idiot who can't even read through a website that isn't slashdot. And you don't want that.
A lot of the other nay-sayers appear to be just useless trolls. You don't, so I'm going to reply.
You're really selling boost and, by derivation, yourself short. Boost makes a ton of things simple and robust. I wrote the following, cross platform C++ code with boost:
C++ is old and that means that it doesn't have anything like a modern language has. What it's missing, Boost fills in (not completely, mind you, but it does a really good job). With C++ you get speed and controllable code (C# runs a close second, but I still wouldn't write an OS in it), and with Boost you get a ton of ease back in the language as well.
You're doing yourself a serious disservice by not looking into it. The one thing that I can't believe is that you really did look into it, and certainly not twice. If you did, you'd know it's not just a source of "template tricks"... far, far, far from it.
If you're not using boost, I can guarantee you're reinventing the wheel... badly.
Software design and development is refactoring. You learn and learn every day, improving the code and improving the model. Making a model in UML does not mean that it is that way for the rest of its life. It will change... sometimes daily.
C++ is the one language to rule them all? OO is the only design method that can solve problems?
Yup... I'm pretty sure that's what I said... oh, wait...
Why do I continue to try and talk to people on this site?
I think anything you can do in C++ can also be done in C...
Of course that is true, so long as you keep the scope of "anything" to be "can be computed". But if that's the case, then anything you can do in C you can also do in assembler, or Visual Basic, or Turing...
I've never even heard of anyone taking an OO design and implementing it in a non-OO language, so I think your statement about taking the "pretty diagrams" and then using the "best language to do each part" is dubious at best. In fact, I'd probably go so far as to say that you haven't spent nearly enough time working with object oriented designs and languages to even speak on the subject in this way. I used to say this stuff too, when I thought I understood what C++ and OO were all about, but then I learned I didn't know nearly as much as I thought I did and studied it for years... now I can say I wholly disagree with my former self, and I wholly disagree with you as well.
I'm guessing somewhere between a long time and never.
You've got it on "a long time". After one year of C++, I thought I had it, then after five years, I knew I didn't. Now, after almost ten, I've reached the semi-proficient level, where proficient is measured in terms of Scott Meyers and Herb Sutter level of skill.
But I don't agree with what you're saying about OOP, and most modern programmers would probably side with me. Well designed large scale C apps are not maintainable nearly as well as well designed large scale C++ apps. I've worked on code bases that make my point repeatedly. Redesigning it properly in OO makes all the difference in the world.
I'm sorry, but the parent comment is a bit "out there". If you had said something like, "Programmers don't care what language they program in, so long as they only want to be coding in one language just like they're coding in any other language", then maybe. But come on... It's talk like that which makes completely mediocre programmers. Do you know how long it takes to become truly proficient in C++ and OOP? Do you honestly want to tell me that you can come from Java (which doesn't destructors, for example) and simply apply your OO Java programming to C++ and be "good"?
Different languages exist because language A does not do what language B does. And, yes, they can contain a ton of the same kind of idea, which is exactly the reason you need to become highly proficient in them to get anything real out of them. You need to explore the differences not the similarities. I have worked with enough mediocre programmers and enough non-designers in my life, thanks very much. I want people to get deeper, very very deep into alternate languages so that they can broaden their thinking, not just their basic language skill set.
Learning a new language has little to do with that language and more to do with learning new ways of thinking. When I interview people that say that have any OO language, I grill them on OO more than I do on the intricacies of Java interfaces or C++ memory management. How you think is much more important to me than how many times it takes you to successfully compile a file.
Has anyone thought to ask what closed source is doing? Is it growing exponentially as well? Is it growing faster? Without something to compare it to, saying that OSS is growing exponentially is about as significant as saying it's growing linearly and all the best programmers have long hair.
You're making the same point... it's not the freedom, it's the quality. It would just have to be "bad enough".
I'd be willing to give up the Unix aspect of my OS as long as it was Free Software. In fact, if Windows was Free Software I'd possibly it and try to improve its flaws.And here you contradict the original point you made, and the same point you just made above. You might give up the Unix so long as it were "free" but that's not relevant; you'd give up the "free" as soon as you couldn't work with it anymore. You're not abnormal... like I said, this group is huge unless, of course, you want to break up this group into a hundred smaller groups where it would have be "1% bad enough" all the way up to "100% bad enough". Or you could call the group "those who can't work with it anymore". I couldn't work with it anymore... at least not as a desktop OS. As a server OS I'm still going strong with it.
And I believe we've definitely come full circle at this point...
You left out the one group that I'm talking about, and the one group that started this whole discussion - the very large group that you and I both belong to:
I agree that there are other factors to be considered, and maybe if all of the "free" options were bad enough, I'd even be forced into using something proprietary. But that isn't the case. Since Linux suits my needs and is free (as in freedom),...This is the group that I'm talking about: The group that is very happy to have the "free" software so long as the "free" software delivers better for them than anything else. In other words, once it stops delivering, once it stops being the best thing for that person, they'll switch and (happily or otherwise) leave the "free" aspect behind. The "license" really doesn't amount to much at all - it's merely something that people can claim to bind themselves to because the software under that license is of high quality. I won't give up the Unix aspect of my OS, but I'll give up the license, just like you said you would do, if the OS didn't "deliver". It stopped delivering so I gave up that one aspect of the software (I mean, most of the other apps I still use because they're not "Linux" apps, as many people like to think). But even that other software I use, I don't use because it's "free"- I use it because it's "good".
And that's my entire point at this position in the conversation - we've whittled things down from the original topic a fair bit. :) Richard Stallman, for example, will never give up the license. He'll use the crappiest thing in existence (or write something new) so long as it's free. You and I, and almost every other Linux user out there, aren't quite that hardened - we care more about the quality of the product, and how well it fits in our way of life than what license it's under. We'll leave behind the "free" software and go proprietary, if that proprietary software works better for us. I did that with OSX... our thresholds for what's "good enough" and "bad enough" are merely different.
Hold on... the reason you use Linux is because it's "free"? That's not a distinguishing reason... why not freeBSD or openBSD or Hurd, or... I'm not saying that it isn't a factor in some peoples' decision to use it, but to say it ranks up there as the most important thing is silly. If Linux were crap, but free as in speech, you wouldn't use it.
But at any rate, you're an edge case. I could easily find another person to counter your personal point of view. Hell, I could probably even find a Linux user who doesn't understand what the GPL is about, what it means, or what "free" really means to the end user. Talking about edge cases in a general sense is really not very productive.
(I deeply apologize for the length of this. I understand if you skim or disregard completely :D)
I agree that there are costs to whatever you choose. The bottom line here, for the moment, is that Linux is not an audio platform of choice. I've tried to get it to do what I want to do (before switching to the Mac) and it was a total non-starter. It was inflexible, bug ridden (yes this aspect may be better now, but...) and totally featureless when it came to the product landscape. Yes there may be some users who are unhappy with what the OSX platform shoehorns them into, but this is not the general case.
Try running you favorite web browser or even text editor from OS 6 or OS 7 on OS X
I can't, as you well know, but let's not just make up requirements here. It's extremely rare when someone says, especially in the audio realm, "Let me run this really really old piece of software!". People clamour for the latest and greatest, in almost any marketplace. Not being able to run ancient software is definitely not something that the vast majority of people want to do.
I can take my Yellow Dog, Mandriva PPC, or Ubuntu PPC stuff and put it on a Power system. Where's Apple?
Let's state the obvious: Apple creates proprietary technology. One of the absolute main reasons I believe that they are so successful at this stuff is because they don't worry or care about every Tom, Dick and Harry's hardware. They run on specific equipment. Do you pay for that in choice? Of course! Are the bulk of Mac users unhappy with the hardware they're forced to run on? No... if they were, they would go somewhere else and run something else. Of course you can always find someone who's unhappy, just like you can always find that one quack that really wants to run his OS7 software on OSX, but let's be realistic and discuss the general case and not the <10% cases.
Also, people don't care about interchanging binaries or libraries... hell, Java has taught us that if nothing else. Remember the "write once, run anywhere" marketing fluff? You never hear that anymore and there's a good reason for it: people don't care about that. I've written a lot of apps in my life and no company, no individual expects to be able to run that same app on a ton of different platforms. When I wrote Java apps, they were geared towards Unix, Solaris specifically, and that's it, and nobody cared at all. Are there edge cases? Of course there are, but arguing edge cases is, as I've alluded to, a waste of time. For each edge case on the right, I can find an edge case on the left and negate the whole thing.
I clearly understand that open source is alive "forever". Don't misunderstand me here... I love open source, I think that it's a truly marvelous way to create software, and I believe that Linux is *the* choice for a backend server. I understand that companies may die, but let's face another fact here: If the company died, it's generally because nobody was using their software, or tons of people were using it and weren't paying for it. In the first case, nobody will care if they die (or that <10% comes back and we're not concerned with that), and in the second case the public deserves what they get.
I understand what you're saying, and you've presented it well, but I really think you're arguing edge cases here. It is not the job of any company, or open source group to deal solely in edge cases, or to put in 80% of the effort for 20% of the audience. There will *always* be edge cases. And let's also not forget what's really happening in the world - very few people are using Linux professionally for audio (actually, I don't know of any but I assume that the number is not actually zero). And, at the very least, almost all (again, I know of none, but it's not fair to say it's zero) commercial and professional applications and plugins are targeted at non-Linux platforms. There is a reason for this, for sure... people are happy to make c
Yer funny :)
Ah yes. That's it. It was the distro. It's not that he used a recently made distro (which was something of great importance to you before), it was that he didn't use the *right* recently made distro - he did choose the three most popular flavours, I believe, but clearly those aren't right. Of course, he should have read the label: "Only for users that have installed the baby Linux distros in the past - sure this is one of the most heavily developed ones, and one of the most popular, but it's just not for you, kiddo". I guess he missed that one. What if he used one of those "good" distros six months ago? Would that have been shit too? Just a "good and easy distro for the kiddies" made in the last six months would have worked, huh? Wow... this is getting pretty specific and it sounds like you think it's near impossible to have a correct *installation* of the product. We haven't even discussed *using* it yet.
I think I have a much better opinion of Linux than you do... I actually like it - just not as much as OSX. I'm having a really tough time following this flip flopping logic there guy. And I think I have better things to do...
Cheers.
Dead on. You're absolutely right. I simply find programming for the Mac a buttload more fun. The support for coding what Apple has decided is better than anything I've seen. So, as long as you're willing to live inside ObjC/C++/C/Python/Ruby and Cocoa/Carbon then you're really very happy. If you can't live with that then, you're quite right, it's not a great place to be. I've simply found that, given a ton of choice, I've got to settle down to *something* (i.e. I don't code in ObjC/Java/Python/Ruby/C++/KDE/Gnome/wxWidgets/ALSA/OSS all on one project. I'd probably write all of my apps in C++/Python/KDE/OSS and stick with that.) Settling down to the choices that Apple has given, and the really great tools they've given to work with (the new interface builder is really quite nice), it's a very positive settlement.
It's "fascism". Now, learn to spell or the Department of the Written Word will come and arrest your family.
(yes, I consider the rest of what you wrote to be nonsense... now don't sue me)
10 years in Linux means nothing to me, heck...
Hmm... that's sad. I respect the fact that you've used this stuff for a long time, as it means you have an informed and experienced opinion. Clearly you don't recognize the same in others. That does hurt your ability to put forth a convincing argument since it shows that you're rather self-centred and "nobody's as good as me" kind of a thing. Just FYI... that's how it comes across. If you're not willing to give credit where it's due, you're not worth listening to. But I'll give you a shot.
Linux for the desktop is progressing at a much faster pace than any other OS I know of...
Of course it is... it has a long way to go. The first 9 miles of a 10 mile race are a lot easier than the last one, and that last one takes a *long* time to do. Are the developers doing an amazing job? Absolutely. Is Linux an amazing OS? Absolutely. Is it at the point where it belongs on a large number of users' desktops? No, and let's face it... the public has spoken on this one. If they wanted it, they'd use it.
... thus it is the distro's you've done in the last 6 months that count.
Ouch, that really hurt your argument a fair bit. You're saying that 6 months ago, it was shit and someone's opinion would be negative. You're saying that it's so unstable, and changes so much that it can't even remain the same for six lousy months. I could try it six months ago, and have a completely different opinion today. Considering that it's been around for so long, what are you saying? Was it shit all the way up to six months ago? Or was it great two years ago, then shit up to six months ago? Fortunately, I know that it's not that bad... it's pretty stable, and doesn't change so dramatically, so quickly. If it did, then it would be a nightmare to use... upgrade every six months and find a totally different beast in front of you! Yikes!
But to back up what I've said, a coworker worked with Redhat, Debian and Ubuntu over the holidays (having never used Linux before), and he said they were all less than great. He now has a new appreciation for Windows installation and just how sophisticated it must be (great, installing Linux gave him a new appreciation for windows... lovely). I tried to talk him through a few things and he might go and try again to see what he can do, but it was not just "click and go". All installations had problems and once he got them up (and not remotely configured - the video wasn't right on most (even nVidia says, "We simply can't keep up with all the changes in Ubuntu" and they say it probably won't work right), printing didn't work, his raid wouldn't work, etc etc...), he was less than impressed with the UIs. He liked N features from KDE and M features from Gnome, but both on their own left him wanting. He couldn't successfully merge the two. And that was *last week*. Recent enough for you? And that's also your target audience... a non-Linux user. And this guy is actually really sharp when it comes to hardware and Windows. He can make that stuff work really well, so he's not an idiot. After everything he told me, I was impressed he got as far as he did, since he hit so many problems.
I naturally recoil from people who seem to be fanbois, repeat corporate marketing mantras (It just works, etc). OS-X is not near suitable for everyone, yet your post does not even acknowledge market segments.
Again, this is unfortunate. Just because someone uses a marketing phrase doesn't make it wrong. I've got news for you... for me, it just works. I don't fiddle with anything at all... that's the definition of "working out of the box".
While the very low value Apple places on the customer makes me want to root for OSS, I still realize that Linux is not for everyone yet - same as Vista or OS-X.
I never said it was for everyone, but um... OSX is the Desktop Unix with a l
Heh, cuz you have a choice of "flamebait", "troll" and "offtopic" and you can't pick all three, so a roll of 1 or 4 is flamebait, 2 or 5 is troll and 3 or 6 is offtopic. Somebody pulled out their die and rolled a 3 or 6. Personally, I was hoping for flamebait or troll cuz offtopic is really really boring, but hey... you can't have everything :)
Moderation points and karma, they're just bits in the ether. If it's got more than 3 responses, then it is de-facto on topic, <sarcasm>or the topic was wrong to begin with</sarcasm> :P
I don't disagree at all. But I'm not much of a GUI user so it's not a question of switching from KDE to OSX... I used to use ION as my window manager because, personally, KDE was brutal and ION gave me a buttload of great features and stayed the hell out of my way. Now, switching from THAT to OSX has been painful, but it's been totally worth it. I don't "fiddle" with things anymore ... hell, I don't even have printing working from my linux box because it requires me to screw around with a bunch of crap to get it going... what the hell is that? I plug it in to the network, and my Mac says "Bonjour!" and I print. It's stuff like that that I got tired of mucking around with. I want to code, I want to surf, I want to edit photos, read email, view attachments, watch movies, etc etc... I don't want to go and modify fstab to get my USB mounts working right, or futz with the printer subsystem to print a document, or install something that can play mp3's from the browser, etc etc... that's all just busy work that I shouldn't have to do. I could switch to Windows, but hey, that would be stoopid. So I switched to the Mac.
At the end of the day, if the UI let's me open terminal windows and surf the net then that's all I need. If your window manager is actually more important than the OS then, yeah, you probably want an X11 unix so that you can use any window manager you want. But I'm more concerned with my machine doing the right thing than how it presents my windows to me.
I use Linux as well... just not nearly as much. I force my wife to use it because I still need it as a server and she uses it as a desktop. I actually did mention earlier that it still can't handle email attachments properly but you might have missed that.
Lighten up, man. Guess what... you know why I've been pushing OSX for two years? Because I switched to it two years ago after 10 years with Linux... and I'm still pushing it after two years... but I guess that's meaningless. I'm sure the 10 years you've logged running OSX (yes, I know it hasn't been around for 10 years) gives you license to know what you're talking about...
... and the whole thing is hard to beat for the grand price of FREE.While this is very cool (I much enjoy not having to shell out $$ for something), it is a non-issue. Pros (in any field) aren't concerned with the fact that something costs money or doesn't. It's just not an issue.
In fact I would love to know what CoreAudio does so much better than these technologies. Do you have specific features in mind or are you just stating your opinion? I don't know anything about CoreAudio so I would love to know.This whole discussion is in the realm of opinion, so I can't say I don't have my opinions here, but there are some things that seem to be advantages which outshine the Linux solution (these are CoreAudio and "overall" advantages):
You can't forget your target audience and what their abilities and goals are. In this case, they're musicians. Musicians aren't Unix heads or computer geeks by nature; they're musically centred. They want to make music, and that's they're goal. There's a reason why Macs are preferred over Windows boxes for making music (and art in general), and the same reason applies to why they are preferred over Linux.
I know that installing Linux is WAY easier than it used to be, but I challenge you to do something... every time you make a tweak to your system to make it more usable, write a script, compile the kernel, su to root to do some privileged thing, compile a library, compile an app, download and install some third party piece of the system, respond to errors like "Where's gcc?", deal with odd dependency issues, back up your system, use the command line for anything at all, etc etc... ask yourself if your average heavy metal guitarist is going to have a friggin' clue what the hell you just did. Linux detracts from the goal, and the goal is writing and performing music. Nobody who has that goal in mind wants to deal with anything else. Why would they choose an OS that doesn't get them as close to that goal as possible? We're tech heads... they're not. If everyone were a tech head, then there would be no jobs available for tech heads... and we're very well employed.
Linux is a great OS. It's just not a great desktop OS.