First, LLVM is not bytecode, LLVM IR has a bitcode serialisation, but that's largely irrelevant. Second, the GCC implementation also went straight to native code without going via C. That doesn't, however, alter the grandparent's point. There is a rewriter in clang that will translate Objective-C into C. Message sending in Objective-C is implemented by a call to the objc_msgSend() function, which takes the receiver and the selector as arguments.
This, however, is where the grandparent's point breaks down slightly, because it is not possible to implement objc_msgSend() in C: it must pass all of its arguments on to the method, and it is not possible to write a C function that passes all of its arguments unmodified to the callee. The C standard is full of things in the standard library that work around this, like fprintfv() and so on.
That said, the GCC and GNUstep runtimes also provide a two-stage lookup, where the runtime just returns a pointer to the method and the compiler calls it. This is possible to implement in pure C, although an equally efficient implementation of the message sending on the caller side would be quite horribly unreadable.
Oh, and full disclosure: I am the maintainer of the GNUstep Objective-C runtime and the open source support for Objective-C in clang.
The only thing you don't get with these is enforcement of visibility with private/public, which isn't strictly required for OO
According to Alan Kay's definition (and, since he coined the term, I'll stick with his definition), hiding objects' internal state from anything outside is one of the three features that are vital to object orientation. You can, of course, implement this with opaque types in C.
The really interesting thing on that page is the market share over time graph. The Chrome and IE lines are mirror images: it looks like almost all Chrome users switched from IE. FireFox has been hovering around 30%, Safari and mobile browsing have been growing, but the big dip in IE usage comes as Chrome usage increases.
Your search queries are sent to the remote server. These provide information about the content of your local documents because you are only likely to be searching for something that you know is in a local document when you want to find one.
It's also bad from a security perspective, because it provides a channel that leaks information about local files to whoever is providing the Internet part of the search, and (if they're not using SSL) anyone who happens to be able to listen in on any network between the two of you.
Balmer is just an example. They don't want to have one of their employees make a disparaging remark about BMWs when the CEO of BMW is looking at a car advert in their in-flight magazine either.
They're not doing this for everyone, they're doing it for people flying first class who might expect to be recognised. They don't want a flight attendant who sees Balmer having laptop problems to attempt to be friendly saying 'mine always crashes too', or similar. That sort of thing can easily lose an airline a lot of money, which is why they already try to brief cabin crew on any VIPs.
If twice as many people are disenfranchised as vote for either major party, then it wouldn't be hard to get candidates into local, state, and so on elections that do represent them. If, however, twice as many people are just lazy as vote for either party then it is much harder.
The problem is not bottom posting, it's quoting the entire message. You should cut the parts that you are not replying to and reply directly under the parts that you are replying to.
24.4% of eligible voters voted for W. 24.7% of eligible voters voted for Gore. 49% of eligible voters did not bother show up at the polls. Irrespective of your political leanings, it's more true to say that a quarter of you are idiots and half of you are dangerously apathetic.
Mod up. If you want a company to, effectively, give away an asset then you need to give them a reason to do so. This typically means either offering them money (which can be counterproductive, as it may make them think that the software is worth more than it is) or persuading them that the goodwill is worth more than sitting on some copyrights for a thing that they're no longer distributing.
The iD case is a bit more interesting, because they make most of their money from selling commercial licenses. Their business model with regard to the open source engines is similar to MySQL AB (before the Sun purchase). You can create non-commercial games with the open source version, but if you want to sell it you buy a proprietary license. More importantly, you can create games for fun with the GPL'd version, and then when a company wants to hire developers to write the next FPS they have a large pool of potential candidates with experience using an iD engine, rather than one of their competitors. Using a license as restrictive as the GPL means that most potential iD customers won't consider using the open sourced version - or any derivatives - instead of the proprietary one.
It was the case with a few games that were open sourced, but that doesn't always matter. I think WarZone was an example, Homeworld definitely was (although not a very successful one). In a lot of cases, the sound library is licensed form a third party and can't be released, but the game can be released with stubs for the sound code and someone else can later add it. The same often happens for cutscene playback, where they licensed a codec for use with the game (more common with older games where the host OS didn't ship anything that was good enough for large cutscenes).
An iPad would be terrible for my mother - the screen is too small for her eyesight, and she'd want to use it with a keyboard most of the time because most of what she does with a computer is writing letters and emails, yet the iPad + dock is very bad for ergonomics. She did borrow an iPad for a couple of weeks from work, but found she almost never used it.
The difference with mobile phones is that they're often replaced because they're broken, not because they're obsolete. A phone is far more likely to be dropped, battered, and damaged than a desktop computer.
"C++" (which, as I understand it, is also hated by most who use it)
Not true, a kind of Stockholm Syndrome seems to affect C++ programmers. There are self-help groups available, but first they need to admit that they have a problem and most are still in denial. Even then, their dislike of the language is nothing compared to the raw hatred experienced by those of us who have implemented the abomination and know exactly how much of it is undefined or implementation defined...
Sales aren't nearly as important as installed base. For a lot of desktop users, 1GHz was the point at which 'fast enough' happened and they stopped upgrading unless something broke. My mother is in this category and is still using a computer from about a decade ago. It's much harder to find someone using a 10-year-old mobile phone, smart or otherwise. Look on eBay and by the time a smartphone is two years old its resale value drops to almost nothing.
It's easy to reduce emissions when you start off with the highest per-capita emissions in the world. It's also easy to reduce emissions when you move your most polluting manufacturing to China.
That's the same thing they said about SGI. They weren't killed by the competitors like IBM, HP, and Sun, they were killed by a startup called nVidia. It wasn't that nVidia did anything particularly clever, the semiconductor technology had just reached the point where you could make a reasonable 3D accelerator cheaply enough that you could stick it on a PCI card and sell it to millions of customers instead of thousands, for a tenth of the price. RIM is in a similar position. Fast mobile CPUs and touchscreens are now cheap. Data is now cheap. Anyone can make a cheap phone that can send and receive email and IM. RIM used to own the market of people who needed email while mobile, but that market is catered to by any phone now. They still have the market of people with some security requirements, but that's smaller.
Battle for Wesnoth is only polished if you are illiterate. Almost all of the text contains painful spelling mistakes. It's a shame, because it's otherwise a good game.
Please mod up. I found the quiz similarly irritating. Half of the questions say you got the answer wrong and then say that the person writing the questions was making assumptions that are not true in the general case and you are wrong for not making the same assumptions.
The problem with header files is that they don't exist in the language. They are purely convention. The preprocessor will insert ANY file that you specify with #include, whether it contains code or declarations. The convention is that header files have a.h extension and only contain declarations, but this is not enforced. Over time, the size of header files grew and it's not uncommon for each compilation unit to contain several megabytes of text, which has to be tokenised and parsed with every compiler invocation, which is why precompiled headers are popular now. Unfortunately, header file include order actually matters and so precompiled headers are a problem - they will be silently ignored in a lot of cases because a change in the include order means that they are invalid. Because C compilers traditionally lacked link-time optimisation, it's also common to include a lot of inline functions in header files. In a modern compiler and language design, these would be compiled to an intermediate representation once and then inlined during the linking phase. In C, the compiler must parse them for every compilation unit. This is even worse for C++, where the compiler must also generate code for them and rely on the linker to remove the duplicates.
No, the hate comes from using C where it's not the right tool for the job. C is a great language if you need all of the low-level control that it exposes. It is the best choice for code where performance is absolutely critical. It is the only sane choice for code where you need to have a very clear idea of exactly what the generated code will look like. It is a terrible language for application development.
Wow, I didn't realise Apple's implementation was so bad. With the GNUstep Objective-C runtime (which I maintain, so some bias here...), I ran some benchmark tests for FOSDEM on ARM Cortex A8, which is our worst-performing platform for this kind of comparison because function calls are so cheap. The cost of a message send was about 1.8 times the cost of a direct call to the function pointer. The compiler can now do automatic caching of the lookups in loops (Apple's can't), and this brings it down to about 1.6 times the cost of a direct call. C++ virtual functions are within the same ballpark.
Note that this doesn't tell the whole story. Because Objective-C does not do the compile-time expansion that C++ does, it generates much smaller code (often 1-2 orders of magnitude) and so gives significantly better instruction cache usage. And, of course, everything within a method runs at exactly the same speed as C.
First, LLVM is not bytecode, LLVM IR has a bitcode serialisation, but that's largely irrelevant. Second, the GCC implementation also went straight to native code without going via C. That doesn't, however, alter the grandparent's point. There is a rewriter in clang that will translate Objective-C into C. Message sending in Objective-C is implemented by a call to the objc_msgSend() function, which takes the receiver and the selector as arguments.
This, however, is where the grandparent's point breaks down slightly, because it is not possible to implement objc_msgSend() in C: it must pass all of its arguments on to the method, and it is not possible to write a C function that passes all of its arguments unmodified to the callee. The C standard is full of things in the standard library that work around this, like fprintfv() and so on.
That said, the GCC and GNUstep runtimes also provide a two-stage lookup, where the runtime just returns a pointer to the method and the compiler calls it. This is possible to implement in pure C, although an equally efficient implementation of the message sending on the caller side would be quite horribly unreadable.
Oh, and full disclosure: I am the maintainer of the GNUstep Objective-C runtime and the open source support for Objective-C in clang.
The only thing you don't get with these is enforcement of visibility with private/public, which isn't strictly required for OO
According to Alan Kay's definition (and, since he coined the term, I'll stick with his definition), hiding objects' internal state from anything outside is one of the three features that are vital to object orientation. You can, of course, implement this with opaque types in C.
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.
The definition earlier might just about squeeze in, but only just, in a cargo-cult completely-missing-the-point kind of way.
The really interesting thing on that page is the market share over time graph. The Chrome and IE lines are mirror images: it looks like almost all Chrome users switched from IE. FireFox has been hovering around 30%, Safari and mobile browsing have been growing, but the big dip in IE usage comes as Chrome usage increases.
Your search queries are sent to the remote server. These provide information about the content of your local documents because you are only likely to be searching for something that you know is in a local document when you want to find one.
It's also bad from a security perspective, because it provides a channel that leaks information about local files to whoever is providing the Internet part of the search, and (if they're not using SSL) anyone who happens to be able to listen in on any network between the two of you.
Balmer is just an example. They don't want to have one of their employees make a disparaging remark about BMWs when the CEO of BMW is looking at a car advert in their in-flight magazine either.
They're not doing this for everyone, they're doing it for people flying first class who might expect to be recognised. They don't want a flight attendant who sees Balmer having laptop problems to attempt to be friendly saying 'mine always crashes too', or similar. That sort of thing can easily lose an airline a lot of money, which is why they already try to brief cabin crew on any VIPs.
I think you mean that American English has refused to incorporate bug fixes from upstream.
If twice as many people are disenfranchised as vote for either major party, then it wouldn't be hard to get candidates into local, state, and so on elections that do represent them. If, however, twice as many people are just lazy as vote for either party then it is much harder.
The problem is not bottom posting, it's quoting the entire message. You should cut the parts that you are not replying to and reply directly under the parts that you are replying to.
accomplishing the destruction of the most hated person on earth since Adolph Hitler.
Obama killed Stalin?! Wow, that should really help countering the arguments from the right-wing that he's a communist!
24.4% of eligible voters voted for W. 24.7% of eligible voters voted for Gore. 49% of eligible voters did not bother show up at the polls. Irrespective of your political leanings, it's more true to say that a quarter of you are idiots and half of you are dangerously apathetic.
Mod up. If you want a company to, effectively, give away an asset then you need to give them a reason to do so. This typically means either offering them money (which can be counterproductive, as it may make them think that the software is worth more than it is) or persuading them that the goodwill is worth more than sitting on some copyrights for a thing that they're no longer distributing.
The iD case is a bit more interesting, because they make most of their money from selling commercial licenses. Their business model with regard to the open source engines is similar to MySQL AB (before the Sun purchase). You can create non-commercial games with the open source version, but if you want to sell it you buy a proprietary license. More importantly, you can create games for fun with the GPL'd version, and then when a company wants to hire developers to write the next FPS they have a large pool of potential candidates with experience using an iD engine, rather than one of their competitors. Using a license as restrictive as the GPL means that most potential iD customers won't consider using the open sourced version - or any derivatives - instead of the proprietary one.
It was the case with a few games that were open sourced, but that doesn't always matter. I think WarZone was an example, Homeworld definitely was (although not a very successful one). In a lot of cases, the sound library is licensed form a third party and can't be released, but the game can be released with stubs for the sound code and someone else can later add it. The same often happens for cutscene playback, where they licensed a codec for use with the game (more common with older games where the host OS didn't ship anything that was good enough for large cutscenes).
An iPad would be terrible for my mother - the screen is too small for her eyesight, and she'd want to use it with a keyboard most of the time because most of what she does with a computer is writing letters and emails, yet the iPad + dock is very bad for ergonomics. She did borrow an iPad for a couple of weeks from work, but found she almost never used it.
The difference with mobile phones is that they're often replaced because they're broken, not because they're obsolete. A phone is far more likely to be dropped, battered, and damaged than a desktop computer.
"C++" (which, as I understand it, is also hated by most who use it)
Not true, a kind of Stockholm Syndrome seems to affect C++ programmers. There are self-help groups available, but first they need to admit that they have a problem and most are still in denial. Even then, their dislike of the language is nothing compared to the raw hatred experienced by those of us who have implemented the abomination and know exactly how much of it is undefined or implementation defined...
Sales aren't nearly as important as installed base. For a lot of desktop users, 1GHz was the point at which 'fast enough' happened and they stopped upgrading unless something broke. My mother is in this category and is still using a computer from about a decade ago. It's much harder to find someone using a 10-year-old mobile phone, smart or otherwise. Look on eBay and by the time a smartphone is two years old its resale value drops to almost nothing.
It's easy to reduce emissions when you start off with the highest per-capita emissions in the world. It's also easy to reduce emissions when you move your most polluting manufacturing to China.
That's the same thing they said about SGI. They weren't killed by the competitors like IBM, HP, and Sun, they were killed by a startup called nVidia. It wasn't that nVidia did anything particularly clever, the semiconductor technology had just reached the point where you could make a reasonable 3D accelerator cheaply enough that you could stick it on a PCI card and sell it to millions of customers instead of thousands, for a tenth of the price. RIM is in a similar position. Fast mobile CPUs and touchscreens are now cheap. Data is now cheap. Anyone can make a cheap phone that can send and receive email and IM. RIM used to own the market of people who needed email while mobile, but that market is catered to by any phone now. They still have the market of people with some security requirements, but that's smaller.
Battle for Wesnoth is only polished if you are illiterate. Almost all of the text contains painful spelling mistakes. It's a shame, because it's otherwise a good game.
Please mod up. I found the quiz similarly irritating. Half of the questions say you got the answer wrong and then say that the person writing the questions was making assumptions that are not true in the general case and you are wrong for not making the same assumptions.
The problem with header files is that they don't exist in the language. They are purely convention. The preprocessor will insert ANY file that you specify with #include, whether it contains code or declarations. The convention is that header files have a .h extension and only contain declarations, but this is not enforced. Over time, the size of header files grew and it's not uncommon for each compilation unit to contain several megabytes of text, which has to be tokenised and parsed with every compiler invocation, which is why precompiled headers are popular now. Unfortunately, header file include order actually matters and so precompiled headers are a problem - they will be silently ignored in a lot of cases because a change in the include order means that they are invalid. Because C compilers traditionally lacked link-time optimisation, it's also common to include a lot of inline functions in header files. In a modern compiler and language design, these would be compiled to an intermediate representation once and then inlined during the linking phase. In C, the compiler must parse them for every compilation unit. This is even worse for C++, where the compiler must also generate code for them and rely on the linker to remove the duplicates.
No, the hate comes from using C where it's not the right tool for the job. C is a great language if you need all of the low-level control that it exposes. It is the best choice for code where performance is absolutely critical. It is the only sane choice for code where you need to have a very clear idea of exactly what the generated code will look like. It is a terrible language for application development.
Wow, I didn't realise Apple's implementation was so bad. With the GNUstep Objective-C runtime (which I maintain, so some bias here...), I ran some benchmark tests for FOSDEM on ARM Cortex A8, which is our worst-performing platform for this kind of comparison because function calls are so cheap. The cost of a message send was about 1.8 times the cost of a direct call to the function pointer. The compiler can now do automatic caching of the lookups in loops (Apple's can't), and this brings it down to about 1.6 times the cost of a direct call. C++ virtual functions are within the same ballpark.
Note that this doesn't tell the whole story. Because Objective-C does not do the compile-time expansion that C++ does, it generates much smaller code (often 1-2 orders of magnitude) and so gives significantly better instruction cache usage. And, of course, everything within a method runs at exactly the same speed as C.