Sorry, I forgot an adjective, condescending. If it makes you feel better to think of me as a student, I'm all for it, send me back and let me do it again.
There are days where I miss Slashdot, this is not one of them. I did read the article (always do) and understood it. You can throw resources at a problem to try and "solve it" by masking the problem(s), but sometimes you actually have to sit down and do the real work to fix it. Sorry if you don't understand that concept.
Thank you for showing me what an arrogant post looks like.;) Far from a student, and I don't think I qualify as "young" anymore but thank you for trying to make assumptions. Engineers like any other group of people come in all different flavors and there is no magic stereotype that helps you figure out which ones are "better" than others; some are loud, some are quiet, some are great at certain things while others are better at other things - blah, blah, blah...
That would be like me asking you to specifically state exactly why Android needs a 16 GB build environment. What I have stated is not that they are doing it wrong, but the fact that if it truly requires 16 GB to build reasonably then they can probably do a better job of organizing the source and/or build environment. Considering most projects, even larger than Android, build fine with far less resources I don't think that's too much of a stretch.
We probably just disagree about this, but being a common way does not mean its a good way - there's also probably a bit of difference between a project the size of SQLite and Android. I do agree compiler optimizations in general should not cause a problem, but in practice I think more judicial reliance on them decreases the effort in maintaining a solution especially as the size and/or scope of the solution evolves. Even if you were bent on bundling all source files up and sending them to the compiler in one shot, I would think that if you truly need a machine with 16 GB of RAM that would be a good indicator its also a good time to better organize and segregate your code in to more discrete and logical pieces.
Nothing arbitrary about it, deliberate would be a better word to use. I'll meet you half way, say instead of a 16 GB or a 640K environment we use an 8 GB build environment?
Forgetting for a second that especially in an embedded style device, I want the results to be very predictable - at what point do you draw the line between compiler optimizations and just plain bad organization or code?
If you're advocating packaging everything up and sending it to the compiler in one shot so it can figure things out - no, I would say that is not a good way to optimize a project especially if it has a large code base.
I think the difference in opinion between the two of us is I think some of those decisions should be pre-determined design decisions and not left up to a compiler trying to figure things out after the fact. The larger the code base, the more strongly I would feel about this.
I know they were just quick examples, but...
"can this function ever throw?" - it's been a while since I went scratching through an object or class file, but wouldn't the compiler already know this from previous compiles?
"is this code reachable?" - unless we're using goto's, isn't this confirmable by module?
"is the memory allocated here always eventually freed?" - I'm not sure a compiler could ever truly know this answer, best case would be management code either injected by the compiler or part of the framework to determine this at runtime.
Annoying? Maybe. Obtuse? No. While I agree optimizations are important, in a project with a code base of this size structured logical components and boundaries is going to be far more important than finding that last piece of code that can be "inlined". Its becoming less of a critical factor with devices supporting 1 GB of RAM, but inlining is not always the most preferential optimization.
My "smart" answer would be not much more than the host operating system itself needs. However, yes, RAM can affect the number of parallel compiles but I think its safe to say in this case we are not optimally limiting the number of symbols and objects that the compiler needs to work at any given time.
One of the better ways? I think a more accurate description would be, lazier ways that often promotes continued inefficiency and bad design. Even with a massive disk cache, I can't think of any good reason that it would take 16 GB to compile anything.
Nice post, except for I'm not the one placing ads, nice try though. If I go to a site and start getting popup ads, I simply no longer go to that site. Problem solved.
Strangely, most sites that I frequent do not use popup ads - so I guess not EVERY site does. In essence, stop bitching and complaining and expecting somebody else to do something about your problem. In this case, the site runs on ads, no visitors, no more ads and no more site.
I know this is Slashdot, but there is really a much easier solution... When you a find a site that does this, stop going to the site - simple. When their traffic tanks maybe they'll remember its actually the visitors that bring life to the site, not advertisers. Advertisers that use this technique, don't buy their products. Why make this more complicated than it needs to be - stop taking their crap.
No, seriously, stop. The only people that want or envision a Citrix or a "web" based primary OS are those in the field or an IT department that wants to get paid the same for doing less.
If you want to know what is going to happen if Windows continues to lose market share due to a higher cost, increased unnecessary complexity and lack of understanding about their consumer base you don't need to guess, simply look at what is happening today. Yes, some of the consumers have gone to Linux but quite a few have gone to an Apple based device with Mac OS X.
I believe virtualization technologies are great, use them every day, but they have a place and purpose and replacing the desktop is not one of those. Same as with Google and Chrome, no, Chrome is not an operating system nor does it even come close. It is, an application, a browser, and a very good one at that.
People, corporate or personal, are tired of messing with their computers just to do simple tasks that are now a part of every day life. So few corporations and developers seem to understand that today.
Think about it: the OS doesn't *really* matter (if it did OS X and Linux and all the rest would never have any users). Even MS knows this, as they prepare to break into the "cloud" market. Even the applications aren't *that* important now, with the number of people working on converters and programs like OpenOffice.
I hope you are jesting, that actually sounds more like something Microsoft would say...;) The operating system does indeed matter, without it the browser or other applications you use every day would have nothing to run on. The problem is few people actually focus on the operating system development, instead they get distracted by trying to branch in to the application arena. Someone who is concentrating on the operating system does not write a mail application, they may write a sample mail application but what they would concentrate on is the common API all applications can use to interact with different mail services.
Even the "NetBook" class of computers, surprise, is running either Windows or more frequently now a variation of a Linux operating system. Apple based their Mac OS X effectively on a BSD implementation, which saved them a bundle I'm sure, but ever wonder why they didn't give away the specific parts they added that define OS X? Umm, it matters...
What Microsoft is doing is what they have said they were going to do all along, cloud or no cloud, which is to attempt to transition into a software as a service model. Translation, figure out a way to monetize mass consumer software so that people perpetually pay an annual license to use the software. No big mystery or grandeur there, that model has been used with businesses for decades, it remains to be seen if it will work on a mass consumer scale.
I agree, except maybe in a few exceptions that I personally truly can not think of, we don't need more top level TLDs. What we do need in my opinion is better usage of the current TLDs and also the elimination of domain squatting.
Sorry, I forgot an adjective, condescending. If it makes you feel better to think of me as a student, I'm all for it, send me back and let me do it again.
There are days where I miss Slashdot, this is not one of them. I did read the article (always do) and understood it. You can throw resources at a problem to try and "solve it" by masking the problem(s), but sometimes you actually have to sit down and do the real work to fix it. Sorry if you don't understand that concept.
Thank you for showing me what an arrogant post looks like. ;) Far from a student, and I don't think I qualify as "young" anymore but thank you for trying to make assumptions. Engineers like any other group of people come in all different flavors and there is no magic stereotype that helps you figure out which ones are "better" than others; some are loud, some are quiet, some are great at certain things while others are better at other things - blah, blah, blah...
That would be like me asking you to specifically state exactly why Android needs a 16 GB build environment. What I have stated is not that they are doing it wrong, but the fact that if it truly requires 16 GB to build reasonably then they can probably do a better job of organizing the source and/or build environment. Considering most projects, even larger than Android, build fine with far less resources I don't think that's too much of a stretch.
We probably just disagree about this, but being a common way does not mean its a good way - there's also probably a bit of difference between a project the size of SQLite and Android. I do agree compiler optimizations in general should not cause a problem, but in practice I think more judicial reliance on them decreases the effort in maintaining a solution especially as the size and/or scope of the solution evolves. Even if you were bent on bundling all source files up and sending them to the compiler in one shot, I would think that if you truly need a machine with 16 GB of RAM that would be a good indicator its also a good time to better organize and segregate your code in to more discrete and logical pieces.
Oh? Just what part makes you think I'm a Java programmer?
Nothing arbitrary about it, deliberate would be a better word to use. I'll meet you half way, say instead of a 16 GB or a 640K environment we use an 8 GB build environment?
Forgetting for a second that especially in an embedded style device, I want the results to be very predictable - at what point do you draw the line between compiler optimizations and just plain bad organization or code?
Organize the project better, and you won't have to make that decision or compromise.
If you're advocating packaging everything up and sending it to the compiler in one shot so it can figure things out - no, I would say that is not a good way to optimize a project especially if it has a large code base.
I think the difference in opinion between the two of us is I think some of those decisions should be pre-determined design decisions and not left up to a compiler trying to figure things out after the fact. The larger the code base, the more strongly I would feel about this. I know they were just quick examples, but... "can this function ever throw?" - it's been a while since I went scratching through an object or class file, but wouldn't the compiler already know this from previous compiles? "is this code reachable?" - unless we're using goto's, isn't this confirmable by module? "is the memory allocated here always eventually freed?" - I'm not sure a compiler could ever truly know this answer, best case would be management code either injected by the compiler or part of the framework to determine this at runtime.
Annoying? Maybe. Obtuse? No. While I agree optimizations are important, in a project with a code base of this size structured logical components and boundaries is going to be far more important than finding that last piece of code that can be "inlined". Its becoming less of a critical factor with devices supporting 1 GB of RAM, but inlining is not always the most preferential optimization.
Well, thanks to your thoughtful and professional response I now realize I have been working with Mickey Mouse compilers for the last two decades.
Is there a reason we would analyze several hundred megabytes of C++ code, at once?
My "smart" answer would be not much more than the host operating system itself needs. However, yes, RAM can affect the number of parallel compiles but I think its safe to say in this case we are not optimally limiting the number of symbols and objects that the compiler needs to work at any given time.
Inlining 12 GB (conservatively) worth of functions, that's the argument? Really?
One of the better ways? I think a more accurate description would be, lazier ways that often promotes continued inefficiency and bad design. Even with a massive disk cache, I can't think of any good reason that it would take 16 GB to compile anything.
No, you're close. Wait until your ISP disconnects you based on the unsupported RIAA claim then file a lawsuit against your ISP and the RIAA members.
Nice post, except for I'm not the one placing ads, nice try though. If I go to a site and start getting popup ads, I simply no longer go to that site. Problem solved. Strangely, most sites that I frequent do not use popup ads - so I guess not EVERY site does. In essence, stop bitching and complaining and expecting somebody else to do something about your problem. In this case, the site runs on ads, no visitors, no more ads and no more site.
I know this is Slashdot, but there is really a much easier solution... When you a find a site that does this, stop going to the site - simple. When their traffic tanks maybe they'll remember its actually the visitors that bring life to the site, not advertisers. Advertisers that use this technique, don't buy their products. Why make this more complicated than it needs to be - stop taking their crap.
No, seriously, stop. The only people that want or envision a Citrix or a "web" based primary OS are those in the field or an IT department that wants to get paid the same for doing less. If you want to know what is going to happen if Windows continues to lose market share due to a higher cost, increased unnecessary complexity and lack of understanding about their consumer base you don't need to guess, simply look at what is happening today. Yes, some of the consumers have gone to Linux but quite a few have gone to an Apple based device with Mac OS X. I believe virtualization technologies are great, use them every day, but they have a place and purpose and replacing the desktop is not one of those. Same as with Google and Chrome, no, Chrome is not an operating system nor does it even come close. It is, an application, a browser, and a very good one at that. People, corporate or personal, are tired of messing with their computers just to do simple tasks that are now a part of every day life. So few corporations and developers seem to understand that today.
Sad...
Because most of them have bought more than one product from the same company before boycotting the company.
Think about it: the OS doesn't *really* matter (if it did OS X and Linux and all the rest would never have any users). Even MS knows this, as they prepare to break into the "cloud" market. Even the applications aren't *that* important now, with the number of people working on converters and programs like OpenOffice.
I hope you are jesting, that actually sounds more like something Microsoft would say... ;) The operating system does indeed matter, without it the browser or other applications you use every day would have nothing to run on. The problem is few people actually focus on the operating system development, instead they get distracted by trying to branch in to the application arena. Someone who is concentrating on the operating system does not write a mail application, they may write a sample mail application but what they would concentrate on is the common API all applications can use to interact with different mail services.
Even the "NetBook" class of computers, surprise, is running either Windows or more frequently now a variation of a Linux operating system. Apple based their Mac OS X effectively on a BSD implementation, which saved them a bundle I'm sure, but ever wonder why they didn't give away the specific parts they added that define OS X? Umm, it matters...
What Microsoft is doing is what they have said they were going to do all along, cloud or no cloud, which is to attempt to transition into a software as a service model. Translation, figure out a way to monetize mass consumer software so that people perpetually pay an annual license to use the software. No big mystery or grandeur there, that model has been used with businesses for decades, it remains to be seen if it will work on a mass consumer scale.
I agree, except maybe in a few exceptions that I personally truly can not think of, we don't need more top level TLDs. What we do need in my opinion is better usage of the current TLDs and also the elimination of domain squatting.