Microsoft cannot beat Linux anymore than it can beat mathematics. They are not competitors. Call it a "type mismatch", if you will.
The contest here is between the organization known as Microsoft and the organization known as the Chinese government. I do not necessarily disagree here about the winner, but it's important to be clear about who lost if Microsoft won.
The term "IT" is somewhat nebulous, but in general I think of it as meaning roughly what "DP" (Data Processing) meant 25 years ago. There's a strong emphasis on a businessy approach to things, and if you work in this area, a lot of your time may end up being spent on vendor management and rote maintenance tasks, as opposed to creating things. This isn't necessarily bad, if that's what you want to do.
I have BS and MS degrees in CS, but I've worked some jobs that could be described as IT-ish. One nice thing about CS degrees is that you can do CS or IT with it, and if the latter, you'll tend to come in with a presumption of extra knowledge (kind of like being a pilot in the Air Force makes you an officer automatically). If you get a degree called IT, on the other hand, it might be slightly more difficult to get into high-level programming/software engineering jobs. A degree with the words "Information Technology" may be associated with the local "HiTech Institute" in the minds of many. None of this really matters if you have skill, but it'll make some difference in getting you in the door on your first job.
It's more important to choose something you like doing most days and to kick some ass on your first real job than which degree you choose.
Steve Jobs tried to get special rights from the FSF to use GCC in NextStep, and the FSF said no, never. So, NeXT used GCC - the runtime part of Objective-C was proprietary though - and had to share the Objective-C support. They needn't have worried. Does anyone outside of Apple use Objective-C?!
If you don't use Microsoft Office, but you offer to fix someone's computer that does, can Microsoft apply the terms of that EULA to you, even though you never agreed to it? Microsoft would certainly argue that the answer to this is YES, so it doesn't seem like much of a reason to feel sorry for them.
Well, sure, it's true. Although, I'm wrong often enough about what's in my sock drawer that I'm not sure I'd quite want to say that I know what's in there at any given time (unless I've just looked). And, as a detail, if I form a mental image of what's in the drawer, that image is always incorrect in the details, so that's another way that I don't know.
Occam's Razor is a great heuristic for guessing, but I wouldn't put it in the same class as, say, testing a hypothesis about a coin's fairness by flipping it 1000 times.
Any previous advanced civilization on earth would have depleted its mineral resources in its rise to high technology, just as we have. This is a good point. Consider though--if the civilization grew sufficiently advanced, perhaps they would gain the ability to erase signs of their existence with great ease. If they had that, plus a sort of cosmic Sierra Club mentality ("Take only pictures...") or Prime Directive mindset, perhaps they simply decided to leave the planet in the condition it would have been in had they not advanced.
(Keeping simulism in mind, I can't take either position very seriously.)
Turning this around, could it be that we already cannot see crucial pieces of evidence about the origin of the universe, life as we know it, or whatever?
Just as an example, current thinking is that we're the first technically advanced society on earth, because we see no archaeological traces of previous societies. But, what if the previous society (or societies) had advanced technology that (a) was used to scrub the earth of their low-tech origins, and (b) left no traces when the society vanished, much as ice sculptures leave no traces when they melt?
Is there any real evidence against this sort of thing? (Occam's Razor, I know. But that's an incredibly pitiful rebuttal...)
Looks interesting. The main problem for me with many of these alternative keyboards is that it's not clear how control/alt/etc modifiers are handled. For me this is quite important.
I was thinking about this during a spell of RSI years ago and came up with this (weegie). It's almost usable, at least to the kind of person who'd consider learning Dvorak or a Twiddler.
I'd love it if someone could figure out something better than our current keyboard/mouse arrangement.
This is true enough, but an awful lot of damage will occur in the time that it takes to happen.
If there were a perfect oracle that could somehow evaluate the total net damage the Microsoft monopoly has done (relative to what would have occurred without it), I wonder what the total would be. Billions of man-hours wasted? Tens of thousands of lives lost?
Well, I was a persistent failure as a lecturer, but not in math logic. In my undergrad program, there were a number of redundant math logic courses taught by the math, CS, and philosophy departments. By taking several, I managed to get out of a number of requirements without being forced to learn a lot.:-)
As a veteran of many a math logic class, I can assure you that "up to" means "not more than"--exactly that and nothing else. So, if your provider advertises "up to 1.5 Mb/s", 0 Mb/s would satisfy their claim, whereas 2.5 Mb/s would not.
Perhaps they're capping their rates because their customers claimed that they were not actually getting "not more than" the claimed rate.:-)
(I don't know what we're all complaining about--this is exactly how capitalism (which we love) is supposed to work.)
I recently downloaded Intel's compiler to see whether my C++ code would run faster on it--I ended up giving up on it (for now) after spending a day trying to get it to work. I'm sure their compiler has many whizzy features in it, but for me, they don't really matter unless they're in GCC. I hope Intel will realize that it's in their interest to migrate these advances there.
Okay. If you prefer, I'll say that this is how I want the default I/O library to behave. The important thing is that this is the behavior that the naive, untrained, or forgetful (read "human") programmer gets.
Note that although I used I/O as my example, because it's such an important example, there are many other parts of the system that should probably work like this. See Python, for example, for other examples (consider the behavior of "int('foo')", for example). I'm sure there are other languages that do this, too, but I'm not sure which ones.
These are all great ideas, and examples of what should be done. As you're implying, I don't think that the correct behavior can be chosen automatically--it requires design by the programmer.
But, given that we have a situation where nothing has been explicitly done by the programmer, the question remains: what should the default behavior be? I would argue that in that (very common in the real world) case, errors should never be silently ignored, and that it's better to give the end user something to start from.
Please check your errors. I see far too many projects coded in Python that just barf stacktraces to the console if anything unexpected happens.
I'm not against error checking--I do it obsessively, myself. The issue I was addressing is what happens when errors are not checked, for whatever reason. In that scenario, which as we know is extremely common, the choice is between
a (somewhat) helpful error message followed by program termination, or
silently ignoring the error, likely resulting in invalid program behavior/output
I believe that languages should fail safe because the former option is virtually always preferable. (And I have spent many hours debugging the fallout from the latter.)
Assume every action will fail and handle it appropriately.
True enough, but this misses my point. The question is: What happens when a programmer fails to properly handle errors?
This happens all the time, either because the programmer is not sufficiently competent, or simply misses a check, or because the program in question is a prototype that got pushed into production without being reworked.
Having the language produce useful error messages by default does not preclude an other strategy regarding error handling, resource deallocation, etc. It wouldn't necessarily even need to be done via exceptions. It just needs to change the default strategy from fail-silently to fail-safe, which is what you really want if you care at all about reliability and correctness.
The contest here is between the organization known as Microsoft and the organization known as the Chinese government. I do not necessarily disagree here about the winner, but it's important to be clear about who lost if Microsoft won.
I have BS and MS degrees in CS, but I've worked some jobs that could be described as IT-ish. One nice thing about CS degrees is that you can do CS or IT with it, and if the latter, you'll tend to come in with a presumption of extra knowledge (kind of like being a pilot in the Air Force makes you an officer automatically). If you get a degree called IT, on the other hand, it might be slightly more difficult to get into high-level programming/software engineering jobs. A degree with the words "Information Technology" may be associated with the local "HiTech Institute" in the minds of many. None of this really matters if you have skill, but it'll make some difference in getting you in the door on your first job.
It's more important to choose something you like doing most days and to kick some ass on your first real job than which degree you choose.
...considering your signature... ;-)
Funny to see our would-be patriots tying themselves in knots trying to defend this one.
Get real. Libby was involved neck-deep in giving up Plame...
Occam's Razor is a great heuristic for guessing, but I wouldn't put it in the same class as, say, testing a hypothesis about a coin's fairness by flipping it 1000 times.
(Even if there was a visible pink unicorn in the room, I couldn't be sure of it, though that's kind of a different argument.)
(Keeping simulism in mind, I can't take either position very seriously.)
Just as an example, current thinking is that we're the first technically advanced society on earth, because we see no archaeological traces of previous societies. But, what if the previous society (or societies) had advanced technology that (a) was used to scrub the earth of their low-tech origins, and (b) left no traces when the society vanished, much as ice sculptures leave no traces when they melt?
Is there any real evidence against this sort of thing? (Occam's Razor, I know. But that's an incredibly pitiful rebuttal...)
Looks interesting. The main problem for me with many of these alternative keyboards is that it's not clear how control/alt/etc modifiers are handled. For me this is quite important.
I was thinking about this during a spell of RSI years ago and came up with this (weegie). It's almost usable, at least to the kind of person who'd consider learning Dvorak or a Twiddler. I'd love it if someone could figure out something better than our current keyboard/mouse arrangement.
If there were a perfect oracle that could somehow evaluate the total net damage the Microsoft monopoly has done (relative to what would have occurred without it), I wonder what the total would be. Billions of man-hours wasted? Tens of thousands of lives lost?
Well, I was a persistent failure as a lecturer, but not in math logic. In my undergrad program, there were a number of redundant math logic courses taught by the math, CS, and philosophy departments. By taking several, I managed to get out of a number of requirements without being forced to learn a lot. :-)
Perhaps they're capping their rates because their customers claimed that they were not actually getting "not more than" the claimed rate. :-)
(I don't know what we're all complaining about--this is exactly how capitalism (which we love) is supposed to work.)
Hanrahan's first task will be to come up with a catchy slogan to summarize Microsoft's position on Linux...
I recently downloaded Intel's compiler to see whether my C++ code would run faster on it--I ended up giving up on it (for now) after spending a day trying to get it to work. I'm sure their compiler has many whizzy features in it, but for me, they don't really matter unless they're in GCC. I hope Intel will realize that it's in their interest to migrate these advances there.
Yeah, you have to look at the whole picture. Being able to walk down the street naked is not the sine qua non of freedom...
Note that although I used I/O as my example, because it's such an important example, there are many other parts of the system that should probably work like this. See Python, for example, for other examples (consider the behavior of "int('foo')", for example). I'm sure there are other languages that do this, too, but I'm not sure which ones.
But, given that we have a situation where nothing has been explicitly done by the programmer, the question remains: what should the default behavior be? I would argue that in that (very common in the real world) case, errors should never be silently ignored, and that it's better to give the end user something to start from.
Looks good--I wish it were enabled by default.
I'm not against error checking--I do it obsessively, myself. The issue I was addressing is what happens when errors are not checked, for whatever reason. In that scenario, which as we know is extremely common, the choice is between
I believe that languages should fail safe because the former option is virtually always preferable. (And I have spent many hours debugging the fallout from the latter.)
True enough, but this misses my point. The question is: What happens when a programmer fails to properly handle errors?
This happens all the time, either because the programmer is not sufficiently competent, or simply misses a check, or because the program in question is a prototype that got pushed into production without being reworked.
Having the language produce useful error messages by default does not preclude an other strategy regarding error handling, resource deallocation, etc. It wouldn't necessarily even need to be done via exceptions. It just needs to change the default strategy from fail-silently to fail-safe, which is what you really want if you care at all about reliability and correctness.