Only if the HD and RAM are upgradable with standard parts, and the can be replaced. And no, using a soldering iron or a heat gun doesn't count, especially if there is a large likely hood of damage.
Until then, I consider $1300 to much for a disposable laptop. That was my problem with the macbook. Although, I probably would have dropped $1300 for the retina mac even with its failings.
I would be ecstatic if they put that display (with a matte coating) on an actual netbook. My netbook has standard RAM, harddrive and a replaceable battery. Its only real weakness is the crap display. I can put up with the CPU being a little slow, but the display is the killer.
I'd submit that Windows 7 doesn't resemble anything like Window 3.1 or Windows for Workgroups other than having a window and an X button to close it.
While I agree with you, I think your memory is failing. The "x" didn't show up until windows 95 and NT 4. Before that you double clicked the app menu (AKA, application system menu, or little "-") to close windows. Or you pressed alt-f4, or single clicked and selected close. I always wondered what exactly the thought process was behind that change, as myself and a lot of other people tended to miss the maximize button and hit the close instead. Plus there were already 3 other ways to close the window..
80x24!! damn you were spoiled, I wrote my first code on an apple ][ with 40x24 on TV. Back then a couple thousand line program was big program. Today I work on projects where 250k is considered tiny. Being able to see or a half dozen 400-500 line functions, header files, documentation, etc all at the same time is a massive boost to productivity. Oh, and i'm using text editors that don't do a lot of window decoration but are still capable of handling version control, diff's, object browsers, window spitting, etc when asked to.
Sure you can get something done on a shitty display, but its like trying to see a whole city when all you have is a tiny flashlight.
The problem with fry's (at least the one near me) is that they stopped carrying any monitors that aren't 1080p. And good luck getting anything that isn't TN. Basically, I subscribed to the see it buy it theory for years, but around 2005 or so, good monitors became impossible to find at brick & mortars.
Fry's had the apple cinema display for a while but I haven't even seen one of those there for a year or so.
With two rotated to portrait mode. That is probably the best setup I've had since the late 90's with CRTs (although the LCD's seem to cause less eyestrain in my case).
I've also got a pair of 24" matte 1920x1200 IPS's with one rotated at home. I've considered assorted Korean monitors, but the DPI is only like 5% higher than the 24" monitors, and frankly I think the pixels are already far to large. I would totally replace them with just about anything that is 150DPI or better, but no one makes a PC monitor like that. Same problem with the laptop I have 1920x1200 in 15", and it kicks the crap out of everything but the macbook. Which I would buy, if apple actually made one with upgradable RAM, HD and battery.
I've been considering buying a nexus 10 and trying find a LCD driver that takes DVI to drive the display. It would be pretty slick to get that display on a netbook form factor PC.
And that is what is wrong with the PC industry, the big PC manufactures can blow themselves, I totally need a new laptop but pretty much all the PC laptops are total junk at this point the only real difference is how much you get ripped off for the privilege.
Which is another stupid area, as being an "unlawful combatant" doesn't remove either your rights as a citizen, xor your rights as a POW. The only thing it removes from you is the ability to choose which case happens to apply.
computers have advanced to the point where we don't need to physically prototype things anymore - it can, and has been, done digitally for well over a decade now. In fact, one of the most complex things that man is currently building (a nuclear submarine, something else new to you but take my word on it) are now routinely and successfully designed and built without any physical prototype.
I think your confusing a couple things here. CAD and simulation packages don't alleviate the need to build a "prototype" before mass production manufacturing. There are always kinks in the process, and building a prototype allows you to verify that everything actually works as expected. In fact in the case of the 878, Boeing built a number ( 6 IIRC ) of "prototypes" they just called them "test planes". Its really common to design things, have them pass simulation and manufacturing rule checks only to discover that no one can actually get part A in place between part B and C. So, back to the computer you go. Same thing here, the final 787 production aircraft was significantly lighter than the "test planes".
In the case of one off products like ships, of course no one builds full size prototypes, they never did. But you had better bet they build small pieces to validate their simulation models, or test particularly difficult portions of the design. That is why in "small" production runs like the navy does for subs, the first couple are always bastard children and nearly always end up getting retired early. They tweak small things and by the 2nd or 3rd model it preforms better, and then they build a dozen or so units which are basically identical.
So, yes, computers have changed the dynamics of designing/building something, but the general trend may be described more like, delayed full scale prototyping rather than none at all.
Microsoft someday will shutoff the activation servers and you will have to move off XP then.
Hmmm, I bet they keep them running another decade or more. Simply because there are a _CRAPLOAD_ of XP machines still out there. I don't want to be MS when some mid size law firm upgrades a harddrive and their XP machine refuses to activate. M$ didn't put a blurb in the EULA that the OS would hard stop working after some number of years (aka your renting this software for 20 years).
I'm betting they would do the same thing they have done for Money and some of their other abandoned software. Release an unlocked version or a patch.
If all you make is garbage don't be surprised if no one wants to buy it. This goes for both Dell/HP/etc and MS. Between them, I almost think they are trying to put themselves out of business.
First MS, if >50% of you users hate your product, maybe you should consider listening to them.
Second, Dell/HP/Intel/etc, yah apple makes cool hardware and gets a nice markup for it. Don't expect to make the same old garbage, in a thin case and get the same markup. Its not just the apple experience, its also the display. If you want me to spend >$1000 on a laptop it had better come with a display better than the one I can get on a nexus 10. I also expect to be able to upgrade the RAM,hard drive and battery two years down the road. Oh, and I want a proper keyboard too, none of this chiclet crap.
What I don't understand is how these manufactures can each offer two dozen different models, and they are basically all the same with slight changes in processor or screen size. Sure none of you manufacture anything anymore, but the least you can do is try to differentiate your products on something other than price.
Otherwise, i'm just going to get a "cheap" tablet with a decent screen, a BT keyboard, and use a remote desktop app. Or I'm going to stick to my 6 Y/O lenovo with a 15" screen that is better than any current dell/HP laptop.
I think they also have a discount on buying older versions too. I even purchased a copy of drawplus a couple years ago because I liked some of its functionality and it was just a few $.
On the other hand we could charge trucks 7000 times as much to roll around and then we'd end up paying it back in the form of higher prices for everything on the shelves at the grocery store, at the mall, or pretty much anywhere else.
Maybe at the mall, because at this point getting icrap from 5k miles away is sort of unavoidable. OTOH, it would help local farmers at the grocery store, as their products would be priced more competitively compared with with stuff flown/trucked in from chili/china. It would also tend to encourage people to eat in season products rather than flying stuff in from new zealand in the dead of winter. Frankly, price increases from gas taxes or local farming isn't going to hurt peoples purchasing power at the grocery store as much as QE1-4, and its continued existence (yah yah, low inflation on icrap, but massive increases in stuff people _have_ to buy ).
Frankly, at this point i'm not sure it would impact the economy that much long run. Sure, some factory in Vietnam is going to see 1/3 as many shoes sold, but in the US, most people could survive just fine with 1/2 as many shoes in their closet or wearing them a few months longer. I was in goodwill a couple weeks ago, and was pretty much shocked by the state of clothing there. Most of it looked like it had never been worn. I could have just as well been shopping at marshalls/tj max.
Not in practice. If you write your constructors to only do minimal initialization (yes, RAII is overrated) and don't overload operators beyond few well-regulated cases, you don't have any need for exceptions.
RAII is a tool, like anything else the zealots can get carried away.
That said, as someone who believes that objects represent things, and code them that way, I find myself starting threads, doing further resource acquisition, self registration, and all kinds of other things that _CAN_ fail in the constructors/destructors. To blithely ignore those problems, or follow every construction with a initialize/finalize type call IMHO misses the point of using C++ over C. Basically, what is being advocated is empty constructor bodies because 99% of basic initialization can be done in the initializers list (and should be if Meyers is correct).
And its not just RAII, if you should happen to create a temporary (generally avoided but sometimes quite useful) you can loose both the ability to report errors as well as the ability to move your initialization out of the constructor..
RAII isn't just about memory management either. The applications I work on are heavily threaded. Using RAII type classes for lock/unlock not only solves the problems with unlocking things during an exception stack unwind, but it strongly encourages clear lock scoping. Its pretty amazing how many lock bugs can be removed through the use of just a few simple rules mostly enforced by the compiler.
I think in the end people who decide exceptions are bad and 100% rule them out of a C++ project for religious reasons (rather then lack of run-time support) do themselves a disservice. It may not be immediately evident but over time it will be.
Discouraging their use as a general error handling mechanism may achieve much the same goals without unduly obfuscating a code base.
Garbage collection does not destroy performance, do not take the poor implementations of some languages as proof of inherent inefficiencies.
I have yet to find a GC language that deals in an acceptable manner with problem sets that stress the memory subsystem.
Its a well studied problem and many papers have been written about the amount of extra physical memory required in a GC system to meet the performance of a non GC one. Sure, if your working set is 1/1000th the memory of a machine GC will be as fast or even faster due to the lazy nature of the GC. But if your working set is even as large as 1/4 the memory of a machine the performance _WILL_ take a big hit. This is not important for single application small dataset desktop environments but its immensely problematic for ones which share the physical memory with other applications, or ones which have large footprints. Machines with 1-2TB of RAM command a significant price premium over ones with 256GB.
Plus, most GC's have big issues when there is a lot of data flow over time, your working set may be fairly small, but if your mixing in a lot of transient short lifetime data its far to easy to confuse many of the GCs out there. Its a darn hard problem to solve, and even in non GC environments with some kind of cache its a difficult problem to solve. So, you come back full circle and you end up using language hints to the GC or rewriting your code to provide hints to the GC that the lifetime of particular pieces of data are short and they should be cleaned up/reused more frequently to avoid polluting the actual working set.
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...
I do wish that exceptions were allowed, but I understand the rationale for avoiding them (it's spelled out in the style guide), and can't disagree with the decision.
From someone who disables exceptions via g++ compiler flags for a few of my projects, and uses them extensively in others... The problem is that the language definition basically requires them. The ugly edge cases and extra code everyone always forgets (nothrow syntax for new) due to laziness can generate the same kind of one in a billion errors that people try to avoid by not having exceptions in their C++ programs. Being unable to signal initialization failures during construction destroys RAII for problems more complex than simple variable initialization.
So, its a case of dammed if you do, dammed if you don't (the performance argument is sort of bogus, unless your throwing exceptions everywhere).
Personally, I think your better off enforcing minimal use of exceptions, and solving the problem higher up at the architectural level with a transaction/thread cancellation model where any unusual exceptions are handed with one or two extremely high level catch routines. It also tends to segregate the error classes. Errors that are common are coded with normal return code handling and appropriate recovery code, uncommon failures tend to get handled with exceptions. The exceptions tend to be verbosely reported, and the operation "amputated" if you will.
Its a dirty work I know, but it is possible to build a reliable grid. It just requires actually investing in the grid, something we stopped doing in the 70's. Now instead of overbuilding the grid, or using the best transmission technologies we scrape 10% off for the stock holders, or the local government to spend on other things.
I am constantly reminded of the photos I saw after hurricane Ike when power was off in huston for a few days. It was a picture of the high voltage lines from one of the private companies (having issues) in the same easement with a public utility from louisiana. The private companies lines were on large sets of wooden polls arranged in a H formation, right next to it were some more high voltage polls but they were the modern single stick aluminum ones set in concrete owned by the public utility. The wooden ones were all leaning over and touching the ground while the aluminum ones were standing there straight and pristine.
No, kernel threads don't behave like user space ones. On UP with preemption disabled, things like spinlocks can be no ops. The protection comes from the fact that interrupts (and therefor scheduler events) are disabled with the *_irqsave() paths.
So, yes, someone with one of the two SMP 386's ever built can no longer run the kernel, but UP 386's have a good chance of continuing to work with little more than build flags.
Just as a side note about 99% of the issues he is having is because he is optimizing the heck out of it. God knows how much time he spent recently re-inventing his own userspace locking on PPC (which is a freeking nightmare anyway) because pthread_mutex_* were two slow for him. So, every other version of FF uses the pthread mutexes except 10.4 fox.
Looks like its the same thing with the compiler move, there appear to be optimization related bugs with the most recent compilers, but instead of disabling the optimizations he chooses to run an older compiler.
What this system desperately needs is a use it, or loose it provision, where anyone leasing the space must actually start using it within a fairly short period of time.
Right now some of these companies lease the space and sit on it for years before rolling out products to avoid having the new product cannibalize their profits on the existing systems. This results in advantages only for companies that are willing to engage in anti competitive practices.
Human vision is slightly wider than it is tall (and actually more like an oval rather than a square), but no where near 16:9/1.77:1. IMAX (1.44:1) is roughly right. And for those that claim the wider aspects are "cooler" I ask, when was the last time you went to an IMAX?
Anyway, why are we letting a couple people in the movie industry dictate monitor sizes? Watching videos is no longer the primary purpose of the majority of screens being sold.
Readability in prose. In code it strongly constrains readability as you end up with 5 line printks, and variables that are intentionally kept short rather than descriptive.
Plus, every line of code looses 8 characters do to initial indent (8 character tabs) of a function. Its nearly impossible to write a single level for if block in the kernel and maintain readability because you have a minimum of 24 characters of white space at the beginning of each line.
I suspect this is why there are goto's all over the kernel. Using proper coding conventions would result in 6-8 levels of nesting in many of the functions if you convert the goto's to while/if/else. Which is simply not possible with 80 columns. The other alternative would be sprinking 100x as many functions around, which would then result in even worse maintainability (due to complicating error handling further).
There are a number of vendors providing high density E5 xeons that probably beat this thing on both performance and density. Supermicro's dual twin puts 4 E5 2600's in a single U. Which works out to 1344 cores in 42U.
Its quite possible that the E5 even beats it on benchmark units/watt as well given that the xeon's probably get 5x-10x the performance per core.
You can cram 64 piledriver cores into 1U, and they have a 140W TDP for the hottest.
I don't really think this chip is aimed at AMD, its aimed at ARM (and friends). The ARM guys have been making a lot of noise lately about how ARM is perfect for the datacenter, and this chip is just intel pointing out that if you want a whole bunch of "low" power and crappy performance CPU's they can provide them too.
Even the name is indication of that, Atom's are CPU's aimed at the ARM market, Xeon's are CPU's aimed at the server market. If they want to shoot at AMD's turf, they shave some cache of the E7 series xeons and lower the price.
Many people have pointed out that even intel's Xeon's are competitive with the ARM server vendors because sure they draw 5-10x the wattage (per core), but they get 20x the performance per core too. So many of the 1U machines actually give better throughput. Look at supermicro's "fat twin" machines. The 1U fat twin can take 4 E5-26xx's or 32 cores per 1U. Or 1440 cores in your 45U rack.
Only if the HD and RAM are upgradable with standard parts, and the can be replaced. And no, using a soldering iron or a heat gun doesn't count, especially if there is a large likely hood of damage.
Until then, I consider $1300 to much for a disposable laptop. That was my problem with the macbook. Although, I probably would have dropped $1300 for the retina mac even with its failings.
I would be ecstatic if they put that display (with a matte coating) on an actual netbook. My netbook has standard RAM, harddrive and a replaceable battery. Its only real weakness is the crap display. I can put up with the CPU being a little slow, but the display is the killer.
I'd submit that Windows 7 doesn't resemble anything like Window 3.1 or Windows for Workgroups other than having a window and an X button to close it.
While I agree with you, I think your memory is failing. The "x" didn't show up until windows 95 and NT 4. Before that you double clicked the app menu (AKA, application system menu, or little "-") to close windows. Or you pressed alt-f4, or single clicked and selected close. I always wondered what exactly the thought process was behind that change, as myself and a lot of other people tended to miss the maximize button and hit the close instead. Plus there were already 3 other ways to close the window..
80x24!! damn you were spoiled, I wrote my first code on an apple ][ with 40x24 on TV. Back then a couple thousand line program was big program. Today I work on projects where 250k is considered tiny. Being able to see or a half dozen 400-500 line functions, header files, documentation, etc all at the same time is a massive boost to productivity. Oh, and i'm using text editors that don't do a lot of window decoration but are still capable of handling version control, diff's, object browsers, window spitting, etc when asked to.
Sure you can get something done on a shitty display, but its like trying to see a whole city when all you have is a tiny flashlight.
The problem with fry's (at least the one near me) is that they stopped carrying any monitors that aren't 1080p. And good luck getting anything that isn't TN. Basically, I subscribed to the see it buy it theory for years, but around 2005 or so, good monitors became impossible to find at brick & mortars.
Fry's had the apple cinema display for a while but I haven't even seen one of those there for a year or so.
With two rotated to portrait mode. That is probably the best setup I've had since the late 90's with CRTs (although the LCD's seem to cause less eyestrain in my case).
I've also got a pair of 24" matte 1920x1200 IPS's with one rotated at home. I've considered assorted Korean monitors, but the DPI is only like 5% higher than the 24" monitors, and frankly I think the pixels are already far to large. I would totally replace them with just about anything that is 150DPI or better, but no one makes a PC monitor like that. Same problem with the laptop I have 1920x1200 in 15", and it kicks the crap out of everything but the macbook. Which I would buy, if apple actually made one with upgradable RAM, HD and battery.
I've been considering buying a nexus 10 and trying find a LCD driver that takes DVI to drive the display. It would be pretty slick to get that display on a netbook form factor PC.
And that is what is wrong with the PC industry, the big PC manufactures can blow themselves, I totally need a new laptop but pretty much all the PC laptops are total junk at this point the only real difference is how much you get ripped off for the privilege.
but deemed unlawful combatants
Which is another stupid area, as being an "unlawful combatant" doesn't remove either your rights as a citizen, xor your rights as a POW. The only thing it removes from you is the ability to choose which case happens to apply.
No, the original idea was so they could form militia and defend themselves without having an expensive military.
Against an oppressive government, with a world class military, DUH!
computers have advanced to the point where we don't need to physically prototype things anymore - it can, and has been, done digitally for well over a decade now. In fact, one of the most complex things that man is currently building (a nuclear submarine, something else new to you but take my word on it) are now routinely and successfully designed and built without any physical prototype.
I think your confusing a couple things here. CAD and simulation packages don't alleviate the need to build a "prototype" before mass production manufacturing. There are always kinks in the process, and building a prototype allows you to verify that everything actually works as expected. In fact in the case of the 878, Boeing built a number ( 6 IIRC ) of "prototypes" they just called them "test planes". Its really common to design things, have them pass simulation and manufacturing rule checks only to discover that no one can actually get part A in place between part B and C. So, back to the computer you go. Same thing here, the final 787 production aircraft was significantly lighter than the "test planes".
In the case of one off products like ships, of course no one builds full size prototypes, they never did. But you had better bet they build small pieces to validate their simulation models, or test particularly difficult portions of the design. That is why in "small" production runs like the navy does for subs, the first couple are always bastard children and nearly always end up getting retired early. They tweak small things and by the 2nd or 3rd model it preforms better, and then they build a dozen or so units which are basically identical.
So, yes, computers have changed the dynamics of designing/building something, but the general trend may be described more like, delayed full scale prototyping rather than none at all.
Microsoft someday will shutoff the activation servers and you will have to move off XP then.
Hmmm, I bet they keep them running another decade or more. Simply because there are a _CRAPLOAD_ of XP machines still out there. I don't want to be MS when some mid size law firm upgrades a harddrive and their XP machine refuses to activate. M$ didn't put a blurb in the EULA that the OS would hard stop working after some number of years (aka your renting this software for 20 years).
I'm betting they would do the same thing they have done for Money and some of their other abandoned software. Release an unlocked version or a patch.
If all you make is garbage don't be surprised if no one wants to buy it. This goes for both Dell/HP/etc and MS. Between them, I almost think they are trying to put themselves out of business.
First MS, if >50% of you users hate your product, maybe you should consider listening to them.
Second, Dell/HP/Intel/etc, yah apple makes cool hardware and gets a nice markup for it. Don't expect to make the same old garbage, in a thin case and get the same markup. Its not just the apple experience, its also the display. If you want me to spend >$1000 on a laptop it had better come with a display better than the one I can get on a nexus 10. I also expect to be able to upgrade the RAM,hard drive and battery two years down the road. Oh, and I want a proper keyboard too, none of this chiclet crap.
What I don't understand is how these manufactures can each offer two dozen different models, and they are basically all the same with slight changes in processor or screen size. Sure none of you manufacture anything anymore, but the least you can do is try to differentiate your products on something other than price.
Otherwise, i'm just going to get a "cheap" tablet with a decent screen, a BT keyboard, and use a remote desktop app. Or I'm going to stick to my 6 Y/O lenovo with a 15" screen that is better than any current dell/HP laptop.
For example Serif gives away software that is a couple versions old here http://www.serif.com/FreeDownloads/
I think they also have a discount on buying older versions too. I even purchased a copy of drawplus a couple years ago because I liked some of its functionality and it was just a few $.
On the other hand we could charge trucks 7000 times as much to roll around and then we'd end up paying it back in the form of higher prices for everything on the shelves at the grocery store, at the mall, or pretty much anywhere else.
Maybe at the mall, because at this point getting icrap from 5k miles away is sort of unavoidable. OTOH, it would help local farmers at the grocery store, as their products would be priced more competitively compared with with stuff flown/trucked in from chili/china. It would also tend to encourage people to eat in season products rather than flying stuff in from new zealand in the dead of winter. Frankly, price increases from gas taxes or local farming isn't going to hurt peoples purchasing power at the grocery store as much as QE1-4, and its continued existence (yah yah, low inflation on icrap, but massive increases in stuff people _have_ to buy ).
Frankly, at this point i'm not sure it would impact the economy that much long run. Sure, some factory in Vietnam is going to see 1/3 as many shoes sold, but in the US, most people could survive just fine with 1/2 as many shoes in their closet or wearing them a few months longer. I was in goodwill a couple weeks ago, and was pretty much shocked by the state of clothing there. Most of it looked like it had never been worn. I could have just as well been shopping at marshalls/tj max.
Not in practice. If you write your constructors to only do minimal initialization (yes, RAII is overrated) and don't overload operators beyond few well-regulated cases, you don't have any need for exceptions.
RAII is a tool, like anything else the zealots can get carried away.
That said, as someone who believes that objects represent things, and code them that way, I find myself starting threads, doing further resource acquisition, self registration, and all kinds of other things that _CAN_ fail in the constructors/destructors. To blithely ignore those problems, or follow every construction with a initialize/finalize type call IMHO misses the point of using C++ over C. Basically, what is being advocated is empty constructor bodies because 99% of basic initialization can be done in the initializers list (and should be if Meyers is correct).
And its not just RAII, if you should happen to create a temporary (generally avoided but sometimes quite useful) you can loose both the ability to report errors as well as the ability to move your initialization out of the constructor..
RAII isn't just about memory management either. The applications I work on are heavily threaded. Using RAII type classes for lock/unlock not only solves the problems with unlocking things during an exception stack unwind, but it strongly encourages clear lock scoping. Its pretty amazing how many lock bugs can be removed through the use of just a few simple rules mostly enforced by the compiler.
I think in the end people who decide exceptions are bad and 100% rule them out of a C++ project for religious reasons (rather then lack of run-time support) do themselves a disservice. It may not be immediately evident but over time it will be.
Discouraging their use as a general error handling mechanism may achieve much the same goals without unduly obfuscating a code base.
Garbage collection does not destroy performance, do not take the poor implementations of some languages as proof of inherent inefficiencies.
I have yet to find a GC language that deals in an acceptable manner with problem sets that stress the memory subsystem.
Its a well studied problem and many papers have been written about the amount of extra physical memory required in a GC system to meet the performance of a non GC one. Sure, if your working set is 1/1000th the memory of a machine GC will be as fast or even faster due to the lazy nature of the GC. But if your working set is even as large as 1/4 the memory of a machine the performance _WILL_ take a big hit. This is not important for single application small dataset desktop environments but its immensely problematic for ones which share the physical memory with other applications, or ones which have large footprints. Machines with 1-2TB of RAM command a significant price premium over ones with 256GB.
Plus, most GC's have big issues when there is a lot of data flow over time, your working set may be fairly small, but if your mixing in a lot of transient short lifetime data its far to easy to confuse many of the GCs out there. Its a darn hard problem to solve, and even in non GC environments with some kind of cache its a difficult problem to solve. So, you come back full circle and you end up using language hints to the GC or rewriting your code to provide hints to the GC that the lifetime of particular pieces of data are short and they should be cleaned up/reused more frequently to avoid polluting the actual working set.
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...
I do wish that exceptions were allowed, but I understand the rationale for avoiding them (it's spelled out in the style guide), and can't disagree with the decision.
From someone who disables exceptions via g++ compiler flags for a few of my projects, and uses them extensively in others... The problem is that the language definition basically requires them. The ugly edge cases and extra code everyone always forgets (nothrow syntax for new) due to laziness can generate the same kind of one in a billion errors that people try to avoid by not having exceptions in their C++ programs. Being unable to signal initialization failures during construction destroys RAII for problems more complex than simple variable initialization.
So, its a case of dammed if you do, dammed if you don't (the performance argument is sort of bogus, unless your throwing exceptions everywhere).
Personally, I think your better off enforcing minimal use of exceptions, and solving the problem higher up at the architectural level with a transaction/thread cancellation model where any unusual exceptions are handed with one or two extremely high level catch routines. It also tends to segregate the error classes. Errors that are common are coded with normal return code handling and appropriate recovery code, uncommon failures tend to get handled with exceptions. The exceptions tend to be verbosely reported, and the operation "amputated" if you will.
Its a dirty work I know, but it is possible to build a reliable grid. It just requires actually investing in the grid, something we stopped doing in the 70's. Now instead of overbuilding the grid, or using the best transmission technologies we scrape 10% off for the stock holders, or the local government to spend on other things.
I am constantly reminded of the photos I saw after hurricane Ike when power was off in huston for a few days. It was a picture of the high voltage lines from one of the private companies (having issues) in the same easement with a public utility from louisiana. The private companies lines were on large sets of wooden polls arranged in a H formation, right next to it were some more high voltage polls but they were the modern single stick aluminum ones set in concrete owned by the public utility. The wooden ones were all leaning over and touching the ground while the aluminum ones were standing there straight and pristine.
No, kernel threads don't behave like user space ones. On UP with preemption disabled, things like spinlocks can be no ops. The protection comes from the fact that interrupts (and therefor scheduler events) are disabled with the *_irqsave() paths.
So, yes, someone with one of the two SMP 386's ever built can no longer run the kernel, but UP 386's have a good chance of continuing to work with little more than build flags.
Just as a side note about 99% of the issues he is having is because he is optimizing the heck out of it. God knows how much time he spent recently re-inventing his own userspace locking on PPC (which is a freeking nightmare anyway) because pthread_mutex_* were two slow for him. So, every other version of FF uses the pthread mutexes except 10.4 fox.
Looks like its the same thing with the compiler move, there appear to be optimization related bugs with the most recent compilers, but instead of disabling the optimizations he chooses to run an older compiler.
What this system desperately needs is a use it, or loose it provision, where anyone leasing the space must actually start using it within a fairly short period of time.
Right now some of these companies lease the space and sit on it for years before rolling out products to avoid having the new product cannibalize their profits on the existing systems. This results in advantages only for companies that are willing to engage in anti competitive practices.
Human vision is slightly wider than it is tall (and actually more like an oval rather than a square), but no where near 16:9/1.77:1. IMAX (1.44:1) is roughly right. And for those that claim the wider aspects are "cooler" I ask, when was the last time you went to an IMAX?
Anyway, why are we letting a couple people in the movie industry dictate monitor sizes? Watching videos is no longer the primary purpose of the majority of screens being sold.
Readability in prose. In code it strongly constrains readability as you end up with 5 line printks, and variables that are intentionally kept short rather than descriptive.
Plus, every line of code looses 8 characters do to initial indent (8 character tabs) of a function. Its nearly impossible to write a single level for if block in the kernel and maintain readability because you have a minimum of 24 characters of white space at the beginning of each line.
I suspect this is why there are goto's all over the kernel. Using proper coding conventions would result in 6-8 levels of nesting in many of the functions if you convert the goto's to while/if/else. Which is simply not possible with 80 columns. The other alternative would be sprinking 100x as many functions around, which would then result in even worse maintainability (due to complicating error handling further).
There are a number of vendors providing high density E5 xeons that probably beat this thing on both performance and density. Supermicro's dual twin puts 4 E5 2600's in a single U. Which works out to 1344 cores in 42U.
Its quite possible that the E5 even beats it on benchmark units/watt as well given that the xeon's probably get 5x-10x the performance per core.
You can cram 64 piledriver cores into 1U, and they have a 140W TDP for the hottest.
I don't really think this chip is aimed at AMD, its aimed at ARM (and friends). The ARM guys have been making a lot of noise lately about how ARM is perfect for the datacenter, and this chip is just intel pointing out that if you want a whole bunch of "low" power and crappy performance CPU's they can provide them too.
Even the name is indication of that, Atom's are CPU's aimed at the ARM market, Xeon's are CPU's aimed at the server market. If they want to shoot at AMD's turf, they shave some cache of the E7 series xeons and lower the price.
Many people have pointed out that even intel's Xeon's are competitive with the ARM server vendors because sure they draw 5-10x the wattage (per core), but they get 20x the performance per core too. So many of the 1U machines actually give better throughput. Look at supermicro's "fat twin" machines. The 1U fat twin can take 4 E5-26xx's or 32 cores per 1U. Or 1440 cores in your 45U rack.
Should have been more clear, mac OS-X PPC.