I mentioned it in another thread, but I'll mention it here too.
The supposed risk is NOT meant to be due to phones lighting fuel vapours. The supposed risk is that the phone induces an electric current inside the hose while the fuel is moving through it, which then ignites the fuel when it hits air.
I'm not saying that the "phenomenon" is real, but I am saying that all (two) of these mythbuster-type shows haven't tested it properly.
The word "philosophy" comes from two Greek words: philos meaning "friend" and sophia, meaning "wisdom". The philosophy of science is a subfield of philosophy.
I always heard that it wasn't the vapours which were the problem. It's when fuel is moving through the hose because the signal from the phone induces an electric current in the fuel. Moreover, my local RACV (kind of like the AA) guy claimed to have watched videos of this phenomenon happening.
Religion on the other hand is based largely on the acceptance of predetermined and absolute "truths", answers that are absolute and definitive.
If you'd ever had a conversaion with a theologian of a mainstream religion on this topic, you'd know better.
By "mainstream", of course, I conveniently ignore any lunatic fringe/extremist elements, thus defining any religion which doesn't fit my argument as not "mainstream". I'm fully aware of this. Nevertheless, if you speak to a theologian of any mainstream religion, chances are you'll find they have more questions than answers.
Fred Brooks is also a Christian. I believe that two thirds of the "RSA" team, Adi Shamir and Leonard Adleman, are Jewish (Shamir is, not 100% certain about Adleman). I know Amr Sabry (who you probably haven't heard of unless you're into programming language research) is Muslim. Mitch Kapor teaches Transcendental Meditation. I also heard somewhere that Guy Steele is religious, but I'm not 100% sure about that.
Whoa! Pulling a fast one. All nickels are coins; not all coins are nickels. You can't conflate religion will philospohy, and then go on to use philosophy to support your argument.
All I can say is: Go back and read the original post, and respond to what it said, not what you thought it said. The original poster deliberately did not suggest that it's religion's job to ask questions like "why".
Wrong. Religion claims to answer the whys, but there's no reason to think they get it right.
Read what the parent poster said again. The post never claimed that religion answers the "whys". Let me quote again:
Science tells us about what we can observe and test; religion illuminates things that are by nature untestable, like morality, ethics, compassion, and love for our fellow man.
If it helps, substitute "philosophy" for "religion", because religion is really a part of philosophy.
For example, in the case of morality and ethics, science tries to find out what we can do, but philosophy tries to find out what we should and should not do. Science, for example, has resulted in technology that can keep people alive on machines long after they would otherwise have died. Philosophy asks: Is this a good idea in all cases?
Simiarly, science gives us tools to help determine who committed a certain crime. But it cannot (and should not attempt to) answer the question of what is "justice".
Dawkins falls into the same trap that many scientists (whether theist or atheist) fall into, namely, assuming that every field of human endeavour is science. They are not. Most touch on science in various ways (just as most touch on philosophy, for that matter) but they are not science.
Another example: The biology of perception and cognition touch on the fine arts, such as music. But the study of the fine arts isn't the same study as the study of science.
Exactly. The original "study" is correct in that Linus didn't invent very much at all, but they fail to acknowledge that this is completely beside the point. Linus constructed the Linux kernel from scratch. Like all people who progress humanity, he only did so by standing on the shoulders of giants.
For what it's worth, Henry Ford didn't invent the automobile, either, but even decades later, we'd hardly accuse him of theft. Moreover, he built cars that existing drivers would already know how to drive by making them look like the cars that were there beforehand.
The situation is similar to what Darrel Huff in How to Lie with Statistics refers to as "the semi-attached figure". If you can't prove something, prove something else and pretend they're the same. So, for example, you say your toilet cleaner "kills germs faster" and strongly imply, though never right-out say, that this has something to do with your family's health even though it probably doesn't.
Worst of all, this kind of thinking completely ignores how human progress happens. It's the myth of the genius all over again. Progress happens on the fringes of what we already have. When you get down to it, every work is a derivative work (except in the legal sense of the term). Einstein couldn't have come up with the idea of relativity without centuries of work by smart physicists and mathematicians before him.
Hell, Unix is just a castrated version of Multics, right?
My wife is from the US. Now admittedly this may be regional, but she uses the term "the fourth of July" to refer to the holiday and the term "July 4th" to refer to the day on which the holiday falls.
My point stands, though. People in the US use "day/month" occasionally.
Similarly, my favourite programming language is Brainf***. It's better because it takes so much effort and brain power even to write "hello world" that once I've done it, I know I've gotten it right.
You do realize that practically all bible versions are copyrighted right?
So is all GPL'd software. Your point?
There are 450+ translations or partial translations of the Bible into English, but only about a dozen or so are really any use these days. You can buy printed copies of most of these quite cheap from many places. If you don't feel like spending money, there are copies available on the internet.
Hell, there are a lot of people willing to give copies to you. Pretty much any hotel room anywhere in the Western world has a copy that you are free keep if you want.
All of this (except for the free copies in hotel rooms!) is true for pretty much all mainstream religions. Scientology is the odd one out, in that they don't want you to know what they believe until you hand them a considerable amount of money.
Thing is, however, the reader posted a chunk of copyrighted text (who the hell copyrights their own religion?) and the scientologists used the DMCA to cut it down.
Most religions would fall over backwards for the chance to teach you about what they believe. Scientologists would rather that you didn't know what they believe, but want you to join anyway. And people think this is a real religion?!
You have to be worried when a guest presenter on Good Morning America sets up something called the "International Academy of Digital Arts and Sciences". Seems like these days you can call yourself anything you want as long as you're the one who gets in first.
The title "advanced graphics algorithms" is highly misleading. These algorithms are only really any use for real-time 3D graphics, which is a fairly small subset of computer graphics in general.
Admittedly, it happens to be an area that's worth a fair amount of money these days (i.e. games), but if you're considering it as a career, the deadlines are tight, the hours are lousy and the pay isn't great. Consider another area of advanced computer graphics instead.
Don't call it "pirate" unless you believe that unauthorised use of the radio spectrum is ethically equivalent to attacking ships on the high seas, kidnaping and murdering the people on them.
You don't micro-optimise unless the compiler doesn't do the job well enough. But nowadays, you almost never have to. Your superior brainpower can mostly be freed from the mundane details of your hardware and instead you can concentrate on using more suitable algorithms or data structures.
Indeed, the best thing you can do to get your code running fast is to write it with good abstractions. That way, when you find a performance problem, you can swap some old code out and swap some new code in and everything else will still work.
Djirbal, an Australian Aboriginal language, has that too. There are actually four "genders" in their language. Roughly:
Masculine - men/boys, the moon and most animals
Feminine - women/girls, the sun, fire, dangerous things such as stinging trees and weapons, bodies of water (where dangerous spirits live) and animals which young people are not allowed to catch.
Vegetable - Basically, edible plants
Neuter - Everything else
A good description of this is in George Lakoff's excellent work Women, Fire and Dangerous Things: What Categories Reveal about the Mind, which you should definitely read. It's not just about Djirbal; it's mostly about cognition and language.
Well, it is. Solaris is a derivative work of Unix.
Whether Sun's changes taken on their own, with the Unix parts removed, is a derivative work... well, that's something that SCO would really, really like to argue, but neither law nor reason are on their side.
Exactly. Goedel, Escher, Bach won the Pulitzer, which isn't the Nobel Prize, but it looks just as good on a writer's resume as a Nobel Prize does on a scientist's.
You're right. Let me expand on what I meant, because I don't think it came across well.
The "with-this-and-that" approach can be made to encapsulate by defining it in such a way that it will work with abstractions. Haskell's "using" function does the job quite nicely, for example. An abstraction (in OO, it would be an object; in FP, it would most likely be a higher-order function) encapsulates the bundle of resources which you need for the operation.
I said that "with-this-and-that" solves a large proportion of resource management problems. That's true. The 5-10% that they don't solve are inherently hard to solve to begin with.
Let's try an analogy on for size.
When you talk about multi-threaded programming with certain people, they will say, "multi-threaded programming has problems, so use a single-threaded event loop or multiple processes". They're almost right. Avoiding threads does solve 90-95% of syncrhonisation problems. If your problem is inherently sequential or each task has a quick turn-around time, then an event loop (or even better, coroutines) will avoid problems. If your problem is inherently parallel and SMP scalability is desired, multiple processes will avoid problems.
What they fail to point out is that these are the easy cases. If your problem is somewhere in between there, then you have a hard concurrency problem which only multithreading can solve. They see complex solutions with leaky abstractions and assume threads are broken. No, threads are not broken. The problem was difficult to begin with, and so the solution is tricky.
Similarly, with resource management, you do see leaky abstractions sometimes not because they're poorly designed, but because the problem is so difficult that every other candidate solution is worse. Once again, I work with highly scalable database servers, so this may be my bias coming into play. We deal with horrible concurrency problems (though not as horrible as some hard real-time programmers do) and our solutions are correspondingly complex.
In fact, most programs in those languages never need to manage anything but memory. Academia is like that.
Ah, yes. Any language which isn't procedural is "academia only".
There are many counter-examples, some of which I can't really talk about. Probably the most famous is Erlang, a functional language used to implement highly scalable, fault-tolerant telephone exchanges. Declarative symbolic languages like O'Caml are also widely used in bioinformatics, but somebody will probably dismiss that as "academia", too. (Admittedly, memory is usually the most critical resource that bioinformatics software has to manage.)
Lisp's "with-this-and-that" and C#'s "using" construct also just paper over the hole [...]
Actually, they solve a fairly large proportion of resource management problems. Many resource acquisitions really are scoped. I work writing highly scalable database servers for a living (in C++, incidentally) and I can report that for our domain at least, this is true most of the time.
"Resource acquisition is initialisation" is an extremely good discipline for object-oriented-esque imperative languages, such as C++. Still, you have to remember that in C++, object lifetimes are still scoped! Even those which are stored on the heap are still, when you get down to it, managed by scoped objects. Those which aren't are, when you get down to it, managed manually. In other words, "resource acquisition is initialisation" doesn't free you from manual resource management, it just pushes it to a higher level. Another way to think about this is that it effectively ties related resources together, letting you manage them as an abstracted bundle.
Still, most of the time, outside of "academia", the abstractions still leak. In our database server, for example, you still have to be aware of what locks are held when to avoid deadlock, no matter how much you abstract it. So even if you don't have to write code to manage resources manually, you still have to go through most of the thought processes that you would if you did manage them manually.
A more fundamental problem is that memory is only one of many resources a typical industrial program must manage. GC takes over memory management, but leaves the other scarce resources -- file descriptors, sockets, mutexes, database connections -- to be managed manually, as in C. (Java has this problem, for instance.) "Finalization" simply cannot provide the necessary guarantees.
Agreed, with a few caveats. Note that I'm not a Java programmer, and I don't particularly like Java, but nevertheless:
Java does not require you to manage mutexes manually. The synchronized keyword takes care of it.
Java also provides finally, which does provide guarantees that finalization doesn't. It's not pretty, but it works for maybe 90% of your resource cleanup jobs.
I think that the manual resource cleanup is not a fault of GC as such. The problem here, I think, is that the paradigms of "imperative programming" and "system manages stuff for you" are inherently incompatable.
Further on the last point, I submit as evidence the classic example of a stack implemented as a Vector in Java. When you pop an element, you must null out the entry otherwise the element will remain referenced and hence not be GC'd. So even when you have garbage collection, if you're programming imperatively, you still need to do some memory management manually! Even with C++ and smart pointers, if you're implementing something like this (which, thanks to the STL, you probably don't have to) you still need to null out a smart pointer or destruct an object manually. (Note: C++ never claimed to be a garbage collected language, so this isn't false advertising on C++'s part.)
OTOH, you almost never see declarative programmers (ML, Haskell, Prolog, Scheme, whatever) having to do this. That's why I think it's the mix of GC and imperative programming which causes these odd issues rather than just GC.
Reference counting can interact nicely with multithreading on modern (post `96) hardware - most modern CPUs have this nice "compare-and-swap" atomic operation, which can be used to manage refcounts without any form of locking.
On most platforms (IA32 being an exception, for reasons to be outlined below), no, it doesn't require explicit OS-level locking, but it does require a load/store barrier and cache synchronisation. On some architectures, this can be even more expensive than a cache miss.
Intel IA32 chips don't require these because a) they don't use load/store buffers, and b) caches are automagically synchronised. The downside is that IA32 chips don't vertically scale very far. You can't put more than about 4 Pentia on a single motherboard before the cache synchronisation overhead swamps the bus completely. (Thankfully, IA32 systems are fairly cheap to scale horizontally, but that's another story.)
I mentioned it in another thread, but I'll mention it here too.
The supposed risk is NOT meant to be due to phones lighting fuel vapours. The supposed risk is that the phone induces an electric current inside the hose while the fuel is moving through it, which then ignites the fuel when it hits air.
I'm not saying that the "phenomenon" is real, but I am saying that all (two) of these mythbuster-type shows haven't tested it properly.
The word "philosophy" comes from two Greek words: philos meaning "friend" and sophia, meaning "wisdom". The philosophy of science is a subfield of philosophy.
I always heard that it wasn't the vapours which were the problem. It's when fuel is moving through the hose because the signal from the phone induces an electric current in the fuel. Moreover, my local RACV (kind of like the AA) guy claimed to have watched videos of this phenomenon happening.
Did the mythbusters check this scenario?
If you'd ever had a conversaion with a theologian of a mainstream religion on this topic, you'd know better.
By "mainstream", of course, I conveniently ignore any lunatic fringe/extremist elements, thus defining any religion which doesn't fit my argument as not "mainstream". I'm fully aware of this. Nevertheless, if you speak to a theologian of any mainstream religion, chances are you'll find they have more questions than answers.
Fred Brooks is also a Christian. I believe that two thirds of the "RSA" team, Adi Shamir and Leonard Adleman, are Jewish (Shamir is, not 100% certain about Adleman). I know Amr Sabry (who you probably haven't heard of unless you're into programming language research) is Muslim. Mitch Kapor teaches Transcendental Meditation. I also heard somewhere that Guy Steele is religious, but I'm not 100% sure about that.
All I can say is: Go back and read the original post, and respond to what it said, not what you thought it said. The original poster deliberately did not suggest that it's religion's job to ask questions like "why".
I love the Weinberg quote, BTW.
Read what the parent poster said again. The post never claimed that religion answers the "whys". Let me quote again:
If it helps, substitute "philosophy" for "religion", because religion is really a part of philosophy.
For example, in the case of morality and ethics, science tries to find out what we can do, but philosophy tries to find out what we should and should not do. Science, for example, has resulted in technology that can keep people alive on machines long after they would otherwise have died. Philosophy asks: Is this a good idea in all cases?
Simiarly, science gives us tools to help determine who committed a certain crime. But it cannot (and should not attempt to) answer the question of what is "justice".
Dawkins falls into the same trap that many scientists (whether theist or atheist) fall into, namely, assuming that every field of human endeavour is science. They are not. Most touch on science in various ways (just as most touch on philosophy, for that matter) but they are not science.
Another example: The biology of perception and cognition touch on the fine arts, such as music. But the study of the fine arts isn't the same study as the study of science.
Exactly. The original "study" is correct in that Linus didn't invent very much at all, but they fail to acknowledge that this is completely beside the point. Linus constructed the Linux kernel from scratch. Like all people who progress humanity, he only did so by standing on the shoulders of giants.
For what it's worth, Henry Ford didn't invent the automobile, either, but even decades later, we'd hardly accuse him of theft. Moreover, he built cars that existing drivers would already know how to drive by making them look like the cars that were there beforehand.
The situation is similar to what Darrel Huff in How to Lie with Statistics refers to as "the semi-attached figure". If you can't prove something, prove something else and pretend they're the same. So, for example, you say your toilet cleaner "kills germs faster" and strongly imply, though never right-out say, that this has something to do with your family's health even though it probably doesn't.
Worst of all, this kind of thinking completely ignores how human progress happens. It's the myth of the genius all over again. Progress happens on the fringes of what we already have. When you get down to it, every work is a derivative work (except in the legal sense of the term). Einstein couldn't have come up with the idea of relativity without centuries of work by smart physicists and mathematicians before him.
Hell, Unix is just a castrated version of Multics, right?
My wife is from the US. Now admittedly this may be regional, but she uses the term "the fourth of July" to refer to the holiday and the term "July 4th" to refer to the day on which the holiday falls.
My point stands, though. People in the US use "day/month" occasionally.
Not really.
Similarly, my favourite programming language is Brainf***. It's better because it takes so much effort and brain power even to write "hello world" that once I've done it, I know I've gotten it right.
Only in the US, and a lot of the time, not even then. Do you customarily call your national holiday "July 4th"? Didn't think so.
So is all GPL'd software. Your point?
There are 450+ translations or partial translations of the Bible into English, but only about a dozen or so are really any use these days. You can buy printed copies of most of these quite cheap from many places. If you don't feel like spending money, there are copies available on the internet.
Hell, there are a lot of people willing to give copies to you. Pretty much any hotel room anywhere in the Western world has a copy that you are free keep if you want.
All of this (except for the free copies in hotel rooms!) is true for pretty much all mainstream religions. Scientology is the odd one out, in that they don't want you to know what they believe until you hand them a considerable amount of money.
Most religions would fall over backwards for the chance to teach you about what they believe. Scientologists would rather that you didn't know what they believe, but want you to join anyway. And people think this is a real religion?!
You have to be worried when a guest presenter on Good Morning America sets up something called the "International Academy of Digital Arts and Sciences". Seems like these days you can call yourself anything you want as long as you're the one who gets in first.
Yours sincerely,
Bitch Sex Demigod from Hell
The title "advanced graphics algorithms" is highly misleading. These algorithms are only really any use for real-time 3D graphics, which is a fairly small subset of computer graphics in general.
Admittedly, it happens to be an area that's worth a fair amount of money these days (i.e. games), but if you're considering it as a career, the deadlines are tight, the hours are lousy and the pay isn't great. Consider another area of advanced computer graphics instead.
Don't call it "pirate" unless you believe that unauthorised use of the radio spectrum is ethically equivalent to attacking ships on the high seas, kidnaping and murdering the people on them.
Wrong. Dead wrong.
You don't micro-optimise unless the compiler doesn't do the job well enough. But nowadays, you almost never have to. Your superior brainpower can mostly be freed from the mundane details of your hardware and instead you can concentrate on using more suitable algorithms or data structures.
Indeed, the best thing you can do to get your code running fast is to write it with good abstractions. That way, when you find a performance problem, you can swap some old code out and swap some new code in and everything else will still work.
Djirbal, an Australian Aboriginal language, has that too. There are actually four "genders" in their language. Roughly:
A good description of this is in George Lakoff's excellent work Women, Fire and Dangerous Things: What Categories Reveal about the Mind, which you should definitely read. It's not just about Djirbal; it's mostly about cognition and language.
Well, it is. Solaris is a derivative work of Unix.
Whether Sun's changes taken on their own, with the Unix parts removed, is a derivative work... well, that's something that SCO would really, really like to argue, but neither law nor reason are on their side.
Exactly. Goedel, Escher, Bach won the Pulitzer, which isn't the Nobel Prize, but it looks just as good on a writer's resume as a Nobel Prize does on a scientist's.
I re-read what I said, and I did indeed say something that I didn't mean to say. You're right; my apologies.
You're right. Let me expand on what I meant, because I don't think it came across well.
The "with-this-and-that" approach can be made to encapsulate by defining it in such a way that it will work with abstractions. Haskell's "using" function does the job quite nicely, for example. An abstraction (in OO, it would be an object; in FP, it would most likely be a higher-order function) encapsulates the bundle of resources which you need for the operation.
I said that "with-this-and-that" solves a large proportion of resource management problems. That's true. The 5-10% that they don't solve are inherently hard to solve to begin with.
Let's try an analogy on for size.
When you talk about multi-threaded programming with certain people, they will say, "multi-threaded programming has problems, so use a single-threaded event loop or multiple processes". They're almost right. Avoiding threads does solve 90-95% of syncrhonisation problems. If your problem is inherently sequential or each task has a quick turn-around time, then an event loop (or even better, coroutines) will avoid problems. If your problem is inherently parallel and SMP scalability is desired, multiple processes will avoid problems.
What they fail to point out is that these are the easy cases. If your problem is somewhere in between there, then you have a hard concurrency problem which only multithreading can solve. They see complex solutions with leaky abstractions and assume threads are broken. No, threads are not broken. The problem was difficult to begin with, and so the solution is tricky.
Similarly, with resource management, you do see leaky abstractions sometimes not because they're poorly designed, but because the problem is so difficult that every other candidate solution is worse. Once again, I work with highly scalable database servers, so this may be my bias coming into play. We deal with horrible concurrency problems (though not as horrible as some hard real-time programmers do) and our solutions are correspondingly complex.
Ah, yes. Any language which isn't procedural is "academia only".
There are many counter-examples, some of which I can't really talk about. Probably the most famous is Erlang, a functional language used to implement highly scalable, fault-tolerant telephone exchanges. Declarative symbolic languages like O'Caml are also widely used in bioinformatics, but somebody will probably dismiss that as "academia", too. (Admittedly, memory is usually the most critical resource that bioinformatics software has to manage.)
Actually, they solve a fairly large proportion of resource management problems. Many resource acquisitions really are scoped. I work writing highly scalable database servers for a living (in C++, incidentally) and I can report that for our domain at least, this is true most of the time.
"Resource acquisition is initialisation" is an extremely good discipline for object-oriented-esque imperative languages, such as C++. Still, you have to remember that in C++, object lifetimes are still scoped! Even those which are stored on the heap are still, when you get down to it, managed by scoped objects. Those which aren't are, when you get down to it, managed manually. In other words, "resource acquisition is initialisation" doesn't free you from manual resource management, it just pushes it to a higher level. Another way to think about this is that it effectively ties related resources together, letting you manage them as an abstracted bundle.
Still, most of the time, outside of "academia", the abstractions still leak. In our database server, for example, you still have to be aware of what locks are held when to avoid deadlock, no matter how much you abstract it. So even if you don't have to write code to manage resources manually, you still have to go through most of the thought processes that you would if you did manage them manually.
One more thing.
Agreed, with a few caveats. Note that I'm not a Java programmer, and I don't particularly like Java, but nevertheless:
Further on the last point, I submit as evidence the classic example of a stack implemented as a Vector in Java. When you pop an element, you must null out the entry otherwise the element will remain referenced and hence not be GC'd. So even when you have garbage collection, if you're programming imperatively, you still need to do some memory management manually! Even with C++ and smart pointers, if you're implementing something like this (which, thanks to the STL, you probably don't have to) you still need to null out a smart pointer or destruct an object manually. (Note: C++ never claimed to be a garbage collected language, so this isn't false advertising on C++'s part.)
OTOH, you almost never see declarative programmers (ML, Haskell, Prolog, Scheme, whatever) having to do this. That's why I think it's the mix of GC and imperative programming which causes these odd issues rather than just GC.
On most platforms (IA32 being an exception, for reasons to be outlined below), no, it doesn't require explicit OS-level locking, but it does require a load/store barrier and cache synchronisation. On some architectures, this can be even more expensive than a cache miss.
Intel IA32 chips don't require these because a) they don't use load/store buffers, and b) caches are automagically synchronised. The downside is that IA32 chips don't vertically scale very far. You can't put more than about 4 Pentia on a single motherboard before the cache synchronisation overhead swamps the bus completely. (Thankfully, IA32 systems are fairly cheap to scale horizontally, but that's another story.)