When a straight white male commits a crime, whether it's big and atrocious, or it's indistinguishable from a random piece of street crime, nobody will ever assume that there is such a thing as straight white male terrorism, and hence lump you in with him. This is yet another reason why I'm happy that I'm a straight white male.
You're right. The four states of matter should be more correctly called the four familiar states of matter, because everything that you can see in your everyday life is in one of those states.
However, the concept of a "state of matter" doesn't actually exist in nature. They're just words we apply to configurations that matter can find itself in, to help organise our thinking.
Yeah, this. What the AC may be confused about is that faster than light travel is (as far as we know) not possible in space, but the distance between two points can increase faster than light could travel because there's nothing stopping space itself from expanding that fast.
Actually, that's not just what I'm talking about. Destructors and RAII are C++'s implementation of stack unwinding, but it's not the first example and not necessarily the best example.
If you think of a program or language as implementing a virtual machine which satisfies certain axioms, an "undesired event" (UE for short; this is the term that Parnas and Wurges used in the original paper on exceptions from 1976) may cause some of those axioms to no longer hold. The job of UE handling is, then, to restore the virtual machine from an "impossible" or "defective" state (where the axioms don't hold) to a "valid" state (where they do).
IIRC, Lisp's unwind-protect operation predated setjmp/longjmp in C.
Do you know how C++ implements this? With longjmp.
C++ is a language, not an implementation. Cfront used longjmp, but pretty much every implementation since uses a native implementation because longjmp imposes far too much overhead if you never throw an exception.
Besides, even if this point were true, it would be irrelevant. Consider the analogous argument: Do you know how C implements longjmp? With assembler.
C++ exception handling is extremely cheap if memory is not tight (storing EH records isn't hideous, but isn't free either) and you never throw an exception. If you never throw, the speed difference is unmeasurable most of the time.
Yeah, exactly. What the writeup calls "appeasing a ceremonial type checker" is more properly called "debugging".
Don't get me wrong, I like the thrill of the chase, the satisfaction of tracking down a really hard bug, as much as anyone. But I like programming even more. Using a well-designed type checker, I can find bugs in my program and convince myself that I'm programming rather than debugging.
setjmp and longjmp do many useful things, but stack unwinding is not one of them, and it's far from "easily and automatically". If you're trying to do the same thing as a real exception system, setjmp/longjmp imposes a large maintenance overhead (and significant run-time overhead, but the maintenance overhead is arguably much more important) on your program, even if you never raise an exception.
Incidentally, I do have a few quibbles with the list you responded to. C programmers do object creation and destruction just fine, it's only exception raising and stack unwinding which requires the manual effort. And RAII is a means, not an end in itself.
Write a robust system that has a sufficiently complex job to do, on time and on budget.
In particular, if you find yourself having to write an interpreter first, you probably should have used another language. (Unless, of course, the interpreter is the job.)
I wouldn't call this "evil". But they should, if they're acting in good conscience, drop the phrase "universally accessible" from their corporate mission statement.
Most people using GTalk these days are doing so because it came on their Android phone, and they needed a Google account to buy apps.
Most people I know are using Google Talk because it works anywhere. It has an Android client, and a MacOS client (Messages), and a Linux client (typically Pidgin), and even a web client which works if you're behind a corporate firewall.
Admittedly, most people I know aren't most people. Nonetheless, dropping XMPP makes Google Talk much, much less useful.
Actually, there are several degenerate cases of social networks which could be thought of as anti-social.
First, there's the romantic option of a social network with only two members. Then, there's the narcissistic option of a social network with only one member. A true anti-social network, however, would have no members.
With respect to E.O. Wilson, he is a relic of a bygone era. Back in his day, biology was stamp collecting. Today, it's a predictive science. I've spent too many hours of my life butting heads with biologists who don't understand even first year undergraduate level statistics but still want to design experiments which give meaningful quantitive results.
(Incidentally, the future is bright, because thankfully, the younger generation gets it.)
The ideal employee is someone who can do one thing extremely well, and known enough in a lot of other areas to know that an expert should be consulted should a problem arise in that area.
If you want only graphics artists who can program, prepare to have some really shitty artwork. Any artist worth shit is not going to be a programmer because they'll have spent that time honing their artistic skills instead of wasting it on learning how to code.
There is a middle ground, you know.
Nobody would expect an expert chemist to be an expert statistician. They are different jobs requiring different skill sets. But would you hire a chemist who had no understanding of statistics whatsoever?
We are already at the point where pretty much every professional job requires at least some number literacy, and some knowledge of project management, and any number of other things to a not-especially-onerous level of competence. Any artist "worth shit" knows how to create art, but they also know how to manage their time, and how to manage colleagues and clients (and possibly underlings), and how to manage a budget (even if it's only a modest budget). An artist without these ancillary skills, or a lack of willingness to acquire them, is useless.
We are getting to the point where for some professions, code literacy is another one of these required ancillary skills.
Muslim + crime == terrorism.
When a straight white male commits a crime, whether it's big and atrocious, or it's indistinguishable from a random piece of street crime, nobody will ever assume that there is such a thing as straight white male terrorism, and hence lump you in with him. This is yet another reason why I'm happy that I'm a straight white male.
Bugger, I'll come in again...
You're right. The four states of matter should be more correctly called the four familiar states of matter, because everything that you can see in your everyday life is in one of those states.
However, the concept of a "state of matter" doesn't actually exist in nature. They're just words we apply to configurations that matter can find itself in, to help organise our thinking.
Precisely.
OK, not precisely. Two points at the same place at the same time is one point, not two points. But I knew what you meant.
Today, we call them "solid", "gas", "plasma", and "liquid" respectively.
Yeah, this. What the AC may be confused about is that faster than light travel is (as far as we know) not possible in space, but the distance between two points can increase faster than light could travel because there's nothing stopping space itself from expanding that fast.
Actually, that's not just what I'm talking about. Destructors and RAII are C++'s implementation of stack unwinding, but it's not the first example and not necessarily the best example.
If you think of a program or language as implementing a virtual machine which satisfies certain axioms, an "undesired event" (UE for short; this is the term that Parnas and Wurges used in the original paper on exceptions from 1976) may cause some of those axioms to no longer hold. The job of UE handling is, then, to restore the virtual machine from an "impossible" or "defective" state (where the axioms don't hold) to a "valid" state (where they do).
IIRC, Lisp's unwind-protect operation predated setjmp/longjmp in C.
C++ is a language, not an implementation. Cfront used longjmp, but pretty much every implementation since uses a native implementation because longjmp imposes far too much overhead if you never throw an exception.
Besides, even if this point were true, it would be irrelevant. Consider the analogous argument: Do you know how C implements longjmp? With assembler.
Please ask Google what "stack unwinding" means. It doesn't mean resetting the stack pointer.
C++ exception handling is extremely cheap if memory is not tight (storing EH records isn't hideous, but isn't free either) and you never throw an exception. If you never throw, the speed difference is unmeasurable most of the time.
Yeah, exactly. What the writeup calls "appeasing a ceremonial type checker" is more properly called "debugging".
Don't get me wrong, I like the thrill of the chase, the satisfaction of tracking down a really hard bug, as much as anyone. But I like programming even more. Using a well-designed type checker, I can find bugs in my program and convince myself that I'm programming rather than debugging.
setjmp and longjmp do many useful things, but stack unwinding is not one of them, and it's far from "easily and automatically". If you're trying to do the same thing as a real exception system, setjmp/longjmp imposes a large maintenance overhead (and significant run-time overhead, but the maintenance overhead is arguably much more important) on your program, even if you never raise an exception.
Incidentally, I do have a few quibbles with the list you responded to. C programmers do object creation and destruction just fine, it's only exception raising and stack unwinding which requires the manual effort. And RAII is a means, not an end in itself.
Write a robust system that has a sufficiently complex job to do, on time and on budget.
In particular, if you find yourself having to write an interpreter first, you probably should have used another language. (Unless, of course, the interpreter is the job.)
I hear what you're saying, but I can see the argument that future network protocols should be designed with mobile battery life in mind.
Sounds like Twitter.
I guess that makes sense. So what open standard shall we replace XMPP with?
I find it hard to believe that there was never a decent iOS XMPP client until recently. But dumber things have happened, I guess.
I wouldn't call this "evil". But they should, if they're acting in good conscience, drop the phrase "universally accessible" from their corporate mission statement.
Most people I know are using Google Talk because it works anywhere. It has an Android client, and a MacOS client (Messages), and a Linux client (typically Pidgin), and even a web client which works if you're behind a corporate firewall.
Admittedly, most people I know aren't most people. Nonetheless, dropping XMPP makes Google Talk much, much less useful.
Actually, there are several degenerate cases of social networks which could be thought of as anti-social.
First, there's the romantic option of a social network with only two members. Then, there's the narcissistic option of a social network with only one member. A true anti-social network, however, would have no members.
Excuse me while I go register nullspace.com.
Informative AND funny.
More to the point, in the Seth McFarlane version Neil deGrasse Tyson recalls winning a date in Mexico with Gary Coleman.
Don't thank me, thank the manatees.
Gagh is best eaten live.
FWIW, I don't want to chow down on exoskeleton either. I want my insects prepared properly.
Glyphosphate is fairly safe, but POEA (which is the surfactant component of Roundup) is not, at least if you're a fish.
Besides, Roundup is nearing the end of its useful life thanks to weed resistance.
Even without transgenics, we produce more than enough food to feed the world's population as it is today.
What we don't know is how to distribute it efficiently. In particular, we don't know how to avoid wasting a large proportion of it.
With respect to E.O. Wilson, he is a relic of a bygone era. Back in his day, biology was stamp collecting. Today, it's a predictive science. I've spent too many hours of my life butting heads with biologists who don't understand even first year undergraduate level statistics but still want to design experiments which give meaningful quantitive results.
(Incidentally, the future is bright, because thankfully, the younger generation gets it.)
The ideal employee is someone who can do one thing extremely well, and known enough in a lot of other areas to know that an expert should be consulted should a problem arise in that area.
If you want only graphics artists who can program, prepare to have some really shitty artwork. Any artist worth shit is not going to be a programmer because they'll have spent that time honing their artistic skills instead of wasting it on learning how to code.
There is a middle ground, you know.
Nobody would expect an expert chemist to be an expert statistician. They are different jobs requiring different skill sets. But would you hire a chemist who had no understanding of statistics whatsoever?
We are already at the point where pretty much every professional job requires at least some number literacy, and some knowledge of project management, and any number of other things to a not-especially-onerous level of competence. Any artist "worth shit" knows how to create art, but they also know how to manage their time, and how to manage colleagues and clients (and possibly underlings), and how to manage a budget (even if it's only a modest budget). An artist without these ancillary skills, or a lack of willingness to acquire them, is useless.
We are getting to the point where for some professions, code literacy is another one of these required ancillary skills.