AMAZINGLY, people of different races have physical differences. Cosmetically different -- not 3 arms or purple noses or anything, just small differences. That's a fact. And some people find some of those differences attractive. OHNOES. What a travesty.
The governor wasn't talking about a physical characteristic. RTFA.
You are just trying to defend something you'd desperately like to see happen.
What are you talking about? I don't know if this exploit works or not. All I've pointed out is that your rebuttals are nonsense: an exploit of this type isn't stopped because the root account is "disabled" on Mac OS X. It doesn't matter who is logged in. Your technical explanations are just plain wrong. Do I want this exploit to work? No. I'm posting right now from my iBook. My earlier replies were written at work on my PowerMac. I'm hardly anti-Mac. I'm just annoyed by your attempts to spread misinformation.
But any sudo command DOEs require at least an admin password. and that is my point. This attack cannot proceed without a password.
No, that's not true either. You can get a root shell by exploiting a vulnerability in a process running as root (and yes, despite your claim that root is disabled, there are many processes running as root). You don't need a password. It doesn't matter that you think root is "disabled". I don't know what your background is, but you don't seem to understand UNIX (and Mac OS X) security at all.
No, OS X doesn't enable root logins by default. You can get a root shell in the default configuration by running sudo tcsh from an account with admin privileges.
What is understanding algebra? Is it rules like you cannot add the numerators or demoninators without this happening or that happening or just ideas that fractions exist? Look at calc 2. Most of the integrations are just tricks; CAS completely eliminates the need to memorize tricks. You know what a fraction looks like, you give it to a CAS to simplify it. It's the same as understanding what the square root of a number is and what it is to calculate it.
I'm not advocating that people should memorize all sorts of useless tricks. When I say that my students don't understand algebra, I mean that they can't fluently and correctly perform arithmetic on reals, rationals, and integers (including variables). They misapply the distributive law, they treat non-linear operators as linear, etc. These are fundamental ideas. If a student doesn't know how to add fractions, then it means they simply don't understand arithmetic. I agree that Calc 2 has a lot of "tricks", and some of these aren't terribly useful to most people. However, a CAS doesn't do the thinking for you. If you don't understand what a CAS is doing (at least at a high level), than you won't be able to use it correctly.
Working on a compiler and figuring out the complexity or working on numerical analysis is completely different. You can go on hyperbolas that you need to learn psychology because there is a human computer interface to it. Not every person who works on the compiler needs to analyze the stability of numerical algorithms.
What I gave you was a real example. I use concepts from calculus often in my compiler work. I don't mean I have to perform integration by parts or something like that, but I often have to consider limits, an idea made rigorous through calculus. You're right that some people working on a compiler don't need to be experts on the stability of numerical algorithms, but they should all be familiar with the basics, at least enough to know when stability of these algorithms might become an issue.
You're missing the point here. Does a physicist learn everything and then decide that he will now study quantum mechanics? He chooses what he wants to do and figure out what he needs to learn to understand his chosen field. You can argue physics needs every branch of mathematics, every branch of everything because you can connect the dots somehow or the other. But, that's what I'm totally against. People telling you that you need to learn this and this before you even attempt quantum mechanics; whereas it should be more like attempt quantum mechanics and then figure out what you need to solve the problem that's been bugging you.
I'm not claiming that a physicist should become an expert in abstract algebra before specializing. Rather, a physicist should acquire a broad understanding of the important areas of mathematics so that he can recognize them when they come up, and study them in more depth when necessary. If you go in blind, picking up what you need as you go, you'll spend a lot of time reinventing the wheel and repeating mistakes., and without a broader understanding, you'll often miss important connections and generalizations.
I think the need for algebra skills will go away as the need to find the square root of a number by hand. CAS (Computer Algebra Systems) will completely eliminate the need to muck around with those algebriac fractions. CAS will take out the need for algebra as calculators did for long division and multipication.
This biggest problem I've seen while teaching calculus is that the students don't understand enough algebra. You CANNOT understand calculus without a solid basis in algebra. For that matter, you can't properly use a CAS unless you understand the fundamentals of the algebra you'd like it to perform.
If someone wants to work on discrete structures only - like compilers and databases, what's the point of force-feeding calculus to them?
As a mathematician who also works on a compiler (gcc), I can say that an understanding of calculus *IS* important when working on a compiler. I sometimes need asymptotic approximations of complexity, which require calculus. A compiler and its runtime libraries deal with floating point arithmetic, and analyzing the stability of these algorithms requires calculus.
If someone wants to work in physics only, what's the point of force-feeding the finite group and field theory to them?
Physics requires a lot of abstract algebra. Look at quantum mechanics, quantum computing, etc. Group theory (both finite and infinite, the linear groups, Lie groups, etc.), field theory, linear algebra (tensor algebras, Lie algebras, etc.), homological algebra & algebraic topology, and much more are all a part of modern physics.
Optimizing John Doe software to take advantage of more cores is nearly impossible.
That's absolutely absurd. Many consumer apps are already multi-threaded, and the relevant OS kernels are definitely multi-threaded. Many of the problems these consumer apps handle are embarassingly parallel. In addition, there are libraries (OpenMP, Java threads, etc.) that make it very easy to parallelize these types of code.
If you have the money for an 8 core Opteron box then surely you can just buy 10 cheap dual core boxes, make a cluster and throw on distcc for even faster compilation.
Well, that doesn't scale very well. The Opteron box I use is actually just one node of a cluster.
No flame intended but what are you going to do with those 8 cores? As stated before, there is virtually no consumer software wich takes advantage of 2(or more) cores. As a softwareengineer I can also tell you writing good parralel software is one of themost difficult things. Furthermore it is hard to think of software wich you, the consumer, can use wich can take advantage of parralel programming.
There's plenty of multithreaded software out there that scales naturally to 2 (or 8) processors. Also, you don't need multi-threaded applications to take advantage of multiple processors. Personally, I use an 8 core Opteron box for compiling, and instead of waiting an hour or two for a build to finish on a dual-Xeon box (or even longer on any of my single CPU boxes), I have a complete build in 5-10 minutes.
There's a technique for completely countering the "Trusting Trust" attack, called "Diverse double-compiling". See my web page on countering trusting trust through diverse double-compiling, which includes a link to a paper describing how to do it, and an example where it's been done.
So if you have a trusted compiler, you can build a trusted compiler. What a marvelous insight! How about this: if I had a million dollars, I could be a millionaire!
I was unable to quickly find information on gcc bootstrapping. Can you provide any information describing this process?
It's the standard way to build gcc. See http://gcc.gnu.org/install/build.html. But this doesn't really add security, since you need to trust the compiler used in the first stage of the bootstrap.
It depends on your definitions of the terms "supercomputer" and "cluster." In a cluster, you have many less powerful machines working in concert (passing chunks of data over a network as needed), where as a "supercomputer" is one, huge machine (whith some kind of shared memory scheme). I suppose you can have systems that fall somewhere in between that share characteristics of both, but at least that's how I see it; maybe I have no idea what I'm talking about.
Well, the computer I'm talking about is the world's fastest supercomputer, according to this article. Blue Gene/L is basically a bunch of nodes (each a single board computer with 2 CPUs and RAM) networked together.
What happened to the Apple ads of a "super computer in a box"? No modern Apple systems (those running Intel CPU) are on the list. A guess you can cross supercomputer off the Apple ad list.
Isn't this a bit premature? I mean, Apple hasn't even released an Intel XServe, or even an Intel PowerMac, yet you expect people to have built clusters of them?
That's idiotic. Who cares how you typeset the paper? I use TeX or LaTeX for almost everything I write (I'm a mathematician), but it hardly makes composition seem like engineering. Besides, typesetting an English paper in LaTeX is hardly different than typing it in plain text format.
I think it's a category error to say that a usage is wrong. One often hears people say that C has pass-by-value and pass-by-reference, and it's perfectly clear what they mean.
Yes, it means they don't really understand what they are talking about. It is a fundamental error to believe that one can pass something by reference in C or Java. Just because passing a pointer or object reference by value resembles pass-by-reference semantics, it does not mean that they are the same thing. See http://java.sun.com/developer/JDCTechTips/2001/tt1 009.html
As for whether I understand the difference, it should have been clear that I do from the bracketed portion of my first reply to you.
It's clear that you understand how Java passes parameters. It's not clear to me that you understand how this differs from passing parameters by reference.
OK, but by your logic C doesn't have pass-by-reference either
That's true. C doesn't have pass-by-reference. This isn't by "my logic"; it's just a fact.
contrary to normal usage of the phrase.
Your "normal usage" is wrong. There is an important distinction between passing pointers or Java object references by value, and passing parameters by reference. Just because you don't understand the difference does not mean that it is "contrary to normal usage." From Section 1.8 of Kernighan and Ritchie: "In C, all function arguments are passed 'by value.'... This leads to some different properties than are seen with "call by reference" languages like Fortran..."
I programmed Java for four years before becoming a game programmer. Now I program in C/C++ and let me assure you that your statement is wrong.
Yeah it does nothing because you are swapping references. You are not actually changing the data the objects are referencing. If it were true that java passes all objects via copy (which is what it would do if it passed by value), then java would be several orders of magnitude slower for sufficiently large objects.
heres an example to contradict your assertion:
Your example doesn't show anything. You pass a reference to an object BY VALUE and then change the value of the object itself. There's no contradiction. You simply don't understand the difference between pass-by-value and pass-by-reference.
Objects are always passed by reference, primitive types are always passed by value. (Or if you like, everything's passed by value, but there's no such thing as an object value, so you have to pass an object reference by value...)
The last part is right. Object references are passed by value. This isn't mere pedantry: consider the following code fragment:
public static void swap(Object a, Object b) { Object tmp = a; a = b; b = tmp; }
Because Java does not use pass-by-reference, this method has no effect.
So if you have a trusted compiler, you can build a trusted compiler. What a marvelous insight! How about this: if I had a million dollars, I could be a millionaire!
Now the c++ compiler was gcc, which you've said doesn't have the greatest code generation. But I still would not have expected java to outperform it.
What options did you use with gcc? By default, gcc does very little optimization. Try -O2 or -O3.
and Ritalin seem to be preferred by doctors, and even those are considered strong compared to the latest generation of ADD drugs like Concerta.
Concerta is Ritalin.
That's idiotic. Who cares how you typeset the paper? I use TeX or LaTeX for almost everything I write (I'm a mathematician), but it hardly makes composition seem like engineering. Besides, typesetting an English paper in LaTeX is hardly different than typing it in plain text format.
Yes, it means they don't really understand what they are talking about. It is a fundamental error to believe that one can pass something by reference in C or Java. Just because passing a pointer or object reference by value resembles pass-by-reference semantics, it does not mean that they are the same thing. See http://java.sun.com/developer/JDCTechTips/2001/tt1 009.html
As for whether I understand the difference, it should have been clear that I do from the bracketed portion of my first reply to you.
It's clear that you understand how Java passes parameters. It's not clear to me that you understand how this differs from passing parameters by reference.
That's true. C doesn't have pass-by-reference. This isn't by "my logic"; it's just a fact.
contrary to normal usage of the phrase.
Your "normal usage" is wrong. There is an important distinction between passing pointers or Java object references by value, and passing parameters by reference. Just because you don't understand the difference does not mean that it is "contrary to normal usage." From Section 1.8 of Kernighan and Ritchie: "In C, all function arguments are passed 'by value.' ... This leads to some different properties than are seen with "call by reference" languages like Fortran..."
Yeah it does nothing because you are swapping references. You are not actually changing the data the objects are referencing. If it were true that java passes all objects via copy (which is what it would do if it passed by value), then java would be several orders of magnitude slower for sufficiently large objects.
heres an example to contradict your assertion:
Your example doesn't show anything. You pass a reference to an object BY VALUE and then change the value of the object itself. There's no contradiction. You simply don't understand the difference between pass-by-value and pass-by-reference.
No, I'm not.
Objects are always passed by reference, primitive types are always passed by value. (Or if you like, everything's passed by value, but there's no such thing as an object value, so you have to pass an object reference by value...)
The last part is right. Object references are passed by value. This isn't mere pedantry: consider the following code fragment:
Because Java does not use pass-by-reference, this method has no effect.