Yeah, it's frustrating to have to wait longer, but if you don't wait, you're screwing your chances for having more games released for Linux. (There's not a whole lot of concern that if you don't support the Windows version people will stop making Windows games...)
You have reminded me of a quote that serves as a nice counterpoint to your argument:
"It can be shown that a mathematical web of some kind can be woven about any universe containing several objects. The fact that our universe lends itself to mathematical treatment is not a fact of any great philosophical significance." -Bertrand Russell
Um, isn't it old-fashioned 'ingenuity' that caused the y2k problem?:)
"We can shorten the date by two whole digits, but the first two are completely unimportant."
Anal-retentive-can't-take-a-joke-boy answers...
Back in the day, that was a good idea. When programmers came up with the idea of using two digits for the date, most systems had somewhat less than 64 MB of RAM and 10GB hard drives... the problem was just that a few people forgot about that, and when memory requirements loosened up they didn't go back and change things use 4-digit years.
I have always wondered what people who say things like this must think of scientists. Is the idea that at the research labs, PhD's sit around the bong taking hits and saying things like, "Whoa... dude... what if the universe, like, is the result of this huge explosion where there were all these particles and anti-particles and stuff? That would be awesome. Somebody start writing: I feel a paper coming on."
Differing scientific opinion, based on facts, is certainly incredibly important to scientific reasoning. Differing scientific opinion in the absence of facts is just annoying.
Well, while you may want your congresspeople to support LISA, that doesn't mean that doing the project on Earth is a bad idea. I talked to one of the guys involved in this project a few years back and he said that while space-based projects aren't susceptible to as many noise problems, they're massively more expensive than ground-based strategies because
You have to GET the thing into space, which is really frickin' expensive.
You have to make sure the thing is space-proof: ie, it won't die due to the extreme cold or radiation, etc., which is also really frickin' expensive.
As if that weren't enough, if the thing breaks or just doesn't work exactly as expected (these things have to be precise), you can't just go in and fix it- you have to launch a mission or build a new one. Which is, as you can guess, really really frickin' expensive.
Comparatively, swampland is a GREAT place to put one of these things...
The algorithm I was talking about (called "stop-and-copy") works like this: you have two chunks of memory- "old" and "new." You always allocate memory from old. When you need to GC, you start at what's currently in scope (which is in old) and copy it to new. Then you go to everything that you can reach from the objects in scope and recursively copy into new until you've copied everything over. Now you turn "new" into "old" and "old" into "new" and voila, your garbage is collected.
All of the memory that you allocated but that is unreachable doesn't get copied, so that memory is reclaimed. However, you're doing work based on the amount of memory that's still active- if you have 10k of active memory, the GC will copy 10k into new, regardless of whether there's no unreachable data or a million megabytes of unreachable data.
There are other GC schemes, but you'll find that all but the most brain-dead are actually not that bad in terms of their efficiency. The idea of garbage-collection as a bad thing seems to be the result of bad PR and the absence of any popular languages that are fast and that do garbage collection well- as you pointed out, Java does lots of things that make it slower than C++. However, since the most obvious difference between it and C++ is that it is garbage-collected and C++ is not, the conclusion most people come to is that garbage collection must be what makes Java slow. It isn't true, but that's what people see. Oh well...
I feel myself... being pulled... off-topic! Must... resist! No! It's... too... powerful!
Part of the speed problem with Java is not just the VM, but the way the language works (dynamic linking, heaps, gc, OO) etc.
Okay, this is going to sound both strange and very nit-picky, but:
Garbage-collection as slower than hand-allocation is a myth.
If you're familiar with GC algorithms, think about a standard copy-collection scheme: it takes time proportional to the amount of used memory to run, so freeing memory is O("reachable memory"). Now think about deallocation by hand: you free everything you ever allocate, one at a time. That's O("all memory used"). In typical programs memory is allocated all the time but doesn't need to stick around for long, so the memory reachable at any time is quite a bit smaller than all memory.
Don't fear garbage collection. It is your friend. It wants to help you. If it doesn't seem gritty enough, code while watching detective movies or something. =)
Java is a high-level programming language. C is a low-level programming language. Java provides bunches of features that C does not. That means that if you are competent in both Java and C, you will be able to write larger and less buggy applications in Java than in C.
It's not that people don't program in low-level languages because they're too dumb to figure them out. It's that people don't program in high-level languages because they're too dumb to figure out their utility. =)
I agree that it doesn't make sense for normal desktop computers. But what about Palms and their contemporaries? Itty-bitty computers like that (nano-computers? femto-computers?) would benefit substantially from the ability to run non-resident programs. And since Palms, along with ubiquitous networking, are probably the most significant things happening in computer technology right now, it seems to me that distributed apps are a good idea.
I don't know- maybe the inventories would drop in price, maybe not. I mean, Red Hat makes a considerable profit selling GPLed software in computer stores... admittedly, slightly different ballpark. But what if the gov't said that a) it has to be phased in gradually over several years and that b) not everything has to be free, just the most important stuff. So the source for Word has to be free, but not the clip art or the dictionaries or the tutorials or any documentation beyond what's necessary for basic functionality, for example. Add to that that Word is a big honkin' program any way you slice it, and a lot of people would be unhappy having to download it, which would take a while, and use it with no warranty, no technical support, no nothing. Those concerns (the former being mostly for home users, the latter being for mostly business users) might make it attractive to purchase a full licensed version anyway.
I don't know, though, you might be right. However, what if we changed it so that instead of GPLing the code, they were forced to sell the code (for some reasonable price) to anyone who wanted to purchase it, including developers who were developing competing products? That would probably do the trick, too, without making MS give its stuff away free to end-users (gasp!).
Here's an idea that wasn't on the poll, but the more I think about it, the better it seems: the most effective way to break up Microsoft's monopoly might be some variation on forcing them to GPL some core set of their products. Their strongarm position comes from the fact that they have the programmer-hours available to throw together any product that any other company thinks of. Well, if they had to release the source, then they can't screw over other companies with this practice, because the companies they're competing against can just take anything they like from MS's work and use it in their own- the two competing products would both benefit from that competition.
MS still gets the "freedom to innovate" and make money based on the quality of their programmers and products. Other companies get the ability to compete realistically with Microsoft even if they aren't anywhere near Microsoft's size. Computer users everywhere benefit from a huge body of commercial software that now has available source code. Seems to me like everybody would win. (Well, except maybe MS, but hey, that's why it's a punishment, right?)
Seriously, though, the current implementations may not be great in general, but that's not due to the language. Did you read the article a while back that mentioned that Sun's JDK 1.3b1 has beaten C in some speed tests? (Not C++. C.) Encouraging news.
Relax about Java performance. It's not honestly all that bad, and it's getting a lot better all the time.
System.out.println() to print text? What idiot thought of that?
The kind of idiot who decided that System.out.print() was better than printf() is the one who realized that a) it makes sense to chunk system stuff into objects and b) that making you call System.out will remind you that not all platforms HAVE a standard output (remember how Java is cross-platform compatible? Well, it isn't if you call System.out methods!)
...or, even worse, conversion between different variable types... this with a complete and utter lack of typecasting...
Casting is unsafe. The people who designed Java knew that. C is unsafe, Java is safe. There are good reasons for both.
Why anyone would prefer java is beyond me, unless you really *like* slowdowns and writing 3 times as much code.
Err... Java programs are 3 times as much code if you're writing trivial programs. Hello World is quite a bit bigger in Java than in C. If you use Java's OO features well, you will find yourself writing considerably -less- code than you would in C. Not to mention that it's easier to debug (remember how Java is safe? That means you can catch bugs better.)
As a general rule, arrays and structs produce far more efficient code and add to clarity by not hiding what is running which function, in addition to giving the programmer a much better grasp of the actual state of the system (what instructions are being executed, and especially, what the memory looks like).
I'm really surprised that you would make a statement like "arrays are the clearest way to understand your program" after programming anything in Scheme. C memory-isms may be the best way to understand what's happening at the machine-level, but they're a real pain for understanding what's happening at the top level.
In short: if you want to program big things, you'll find that higher-level languages are far easier to use than lower-level languages most of the time. C is one step away from assembly language. That was intentional. Assembly language is a good thing to program in sometimes. However, you'll find you're a lot more productive (as in, you can finish your program faster and make it work better) if you program in a language that provides better tools for abstraction. Allowing you to name functions and call them multiple times with different arguments is certainly not the end-all and be-all of code reusability.
[Scheme's] forced "make everything recursive" is unnatural for most tasks, and a performance drag.
As a side note: it turns out that you can translate recursive functions into non-recursive functions automatically, so that they don't waste stack space needlessly (which is actually the only performance hit you take for a recursive function). Good Scheme implementations do that: if you want proof, run an infinite recursion in Scheme, such as
(define recur (lambda () (recur)))
You'll find that it runs forever. Now run the C version:
void recur() { recur(); }
You'll find that it runs out of stack space after awhile and dies.
(Oh, and if I were you, I wouldn't go around saying things like "Scheme is similar to Perl." Scheme people and Perl people hate each other [half-joke], and their languages are pretty durned different.)
Perl has beaten C++ in performance tests. Not just anybody writing the C++, either- I think that "The Practice of Programming," by Kernighan and Pike, is where I read that. That might be why the original poster said that C++ is inefficient. And there are definitely some wastes in common implementation: templates, for example, while very cool, are well-known for being terribly inefficient in their implementation on most compilers.
(Oh, and incidentally, Lisp machines ran on "functional processors.")
Hmm? That's not what I meant at all... I certainly don't think that there are necessarily no differences, biologically, between men and women even as regards their thinking. I mention sociology because it seems very implausible to ascribe the characteristic of liking metal figurines of cars to a genetic predisposition, nor does it seem likely that you can show a biological root to wearing high heels or skirts. All of these things are culturally based. Reading what sociologists have to say about the differences between men and women is very insightful. For example, the very notion that men and women are different physiologically is not an idea without cultural charge- check out Making Sex by T. Laqueur, particularly ch 5, "Discovery of the Sexes." According to Laqueur, before around the 18th century, women were viewed physiologically as "defective" men.
My point is that even the premise that started this thread out- that men and women are "separate but equal" biologically- can't be fully understood without taking culture into account. Not that there can't be gender-based differences in the way that people think, but that one should not assert that as an explanation of a phenomenon before thinking about gender roles in a given culture.
It seems to me, then, that we can split the phenomenon into two parts:
1) the company wants to make a computer marketed towards girls 2) it chooses to do so by decorating a normal computer with Barbie decorations and bundling Barbie-themed software
The first part is good, or at least indicative of a good social trend: it means that there must be a reasonably-sized female market for computers, and for females as primary operators of computers.
The second part is bad, as is obvious. On the other hand, since preteenaged girls are used to being marketed to with flowers, pink, and Barbie anyway, it strikes me that the marginal extra damage of this particular instance of marketing is small.
I say that not to imply that it is okay to continue to sexually bias toys the way they are, but to make the comparison of the good of part 1 versus the bad of part 2: it seems to me that given those two parts, the sum message is that computers are moving away from being entirely male-associated, as they have been up until very recently, and are moving toward being gender-neutral.
After all, if a Hot Wheels computer is for boys, and a Barbie computer is for girls, doesn't that make my beige box with no decals genderless?
Sigh... yes, there exist natural differences between men and women. Men, for example, have penises, whereas women have vaginas. There also exist socially constructed differences between men and women. For example, boys like Hot Wheels and girls like Barbie in the United States.
Take a sociology class. They're interesting. One thing you'll learn: "politically correct neuter philosophy" is not the product of stupid people complaining about nothing. It is the product of smart people complaining about a social system that they feel separates and devalues a class of people unfairly.
Science likes to pretend that it is immune to societal whims. It is not. That we think of consciousness as "a program running on biological hardware" says more about us than it.
Err... gee... last I checked, we hadn't the foggiest idea of what we are "at the lowest physical level." True, there are electrical impulses, but why do you say that's the lowest level? Do you know?
This is a tad silly... well, probably three or four tads silly, actually. I myself pay some attention to AI from an academic standpoint, and I've never heard of anything that comes close to a general-purpose human-replacer. There exist systems that do some things very well- Deep Blue, for example, is an excellent chess player- but Deep Blue can't put together a basic english sentence, control muscles finely enough to stand up, or tell the difference between your face and a '57 Chevy. AI right now is populated entirely by idiot-savant programs, that can do one thing very well (where "very well" is somewhere between "quite a bit worse than a human" and "Superman-like"), and can't do anything else. This is hardly a-life. It's not even a precursor to a-life, really. The techniques that you use to make an idiot-savant probably won't work to make a generally smart thing.
Furthermore, even if somebody were to come up with an integrated human, the idea that it would then take over the world is quite unlikely. Remember- we program the things! We get to do whatever we want with them! If we say "Don't do X," they don't do it! Period! So if you say "Don't take over the world," they won't. They might get to be popular- they may be a more attractive economic choice for some people than hiring high-school dropouts- but I doubt it, and anyway, that's beside the point.
And before you say "but AI could evolve," I will point out that AI can only evolve in the directions that programmers allow it to evolve. And even "evolve" is an analogy- the performance measure is coded by the programmer, the mutation is coded by the programmer, the feedback interpretation is coded by the programmer- the only way an AI will take over the world is if somebody makes a "take over the world" AI. And try getting grant money for that! =)
Oh, and if you've read 3001, you ought to know better than to trust the sagacity of Mr. Clarke.
I've heard all of the complaints that Schank makes about college education before, and perhaps I'm being heretical, but I just don't buy them. Where I go to school, I take interesting classes from important researchers in the field who also want to teach students what they know, and are often quite good at it. In my upper-level classes, I'm quite aware that my professors are giving me their opinions, rather than unquestionable truths- and so does everyone else in the class. Those of us who are qualified to take upper-level college classes are also qualified to think critically.
And while it's true that if you ask most people why they're going to college, they'll say it's so that they can get a good job or something, that's just camouflage- I have honestly yet to meet someone who isn't in college because they're excited about learning beneath all the layers of "I hate school" socialization. I would be surprised if my university is atypical in those respects among upper universities.
Yeah, it's frustrating to have to wait longer, but if you don't wait, you're screwing your chances for having more games released for Linux. (There's not a whole lot of concern that if you don't support the Windows version people will stop making Windows games...)
You have reminded me of a quote that serves as a nice counterpoint to your argument:
"It can be shown that a mathematical web of some kind can be woven about any universe containing several objects. The fact that our universe lends itself to mathematical treatment is not a fact of any great philosophical significance." -Bertrand Russell
Anal-retentive-can't-take-a-joke-boy answers...
Back in the day, that was a good idea. When programmers came up with the idea of using two digits for the date, most systems had somewhat less than 64 MB of RAM and 10GB hard drives... the problem was just that a few people forgot about that, and when memory requirements loosened up they didn't go back and change things use 4-digit years.
I have always wondered what people who say things like this must think of scientists. Is the idea that at the research labs, PhD's sit around the bong taking hits and saying things like, "Whoa... dude... what if the universe, like, is the result of this huge explosion where there were all these particles and anti-particles and stuff? That would be awesome. Somebody start writing: I feel a paper coming on."
Differing scientific opinion, based on facts, is certainly incredibly important to scientific reasoning. Differing scientific opinion in the absence of facts is just annoying.
Comparatively, swampland is a GREAT place to put one of these things...
The algorithm I was talking about (called "stop-and-copy") works like this: you have two chunks of memory- "old" and "new." You always allocate memory from old. When you need to GC, you start at what's currently in scope (which is in old) and copy it to new. Then you go to everything that you can reach from the objects in scope and recursively copy into new until you've copied everything over. Now you turn "new" into "old" and "old" into "new" and voila, your garbage is collected.
All of the memory that you allocated but that is unreachable doesn't get copied, so that memory is reclaimed. However, you're doing work based on the amount of memory that's still active- if you have 10k of active memory, the GC will copy 10k into new, regardless of whether there's no unreachable data or a million megabytes of unreachable data.
There are other GC schemes, but you'll find that all but the most brain-dead are actually not that bad in terms of their efficiency. The idea of garbage-collection as a bad thing seems to be the result of bad PR and the absence of any popular languages that are fast and that do garbage collection well- as you pointed out, Java does lots of things that make it slower than C++. However, since the most obvious difference between it and C++ is that it is garbage-collected and C++ is not, the conclusion most people come to is that garbage collection must be what makes Java slow. It isn't true, but that's what people see. Oh well...
Okay, this is going to sound both strange and very nit-picky, but:
Garbage-collection as slower than hand-allocation is a myth.
If you're familiar with GC algorithms, think about a standard copy-collection scheme: it takes time proportional to the amount of used memory to run, so freeing memory is O("reachable memory"). Now think about deallocation by hand: you free everything you ever allocate, one at a time. That's O("all memory used"). In typical programs memory is allocated all the time but doesn't need to stick around for long, so the memory reachable at any time is quite a bit smaller than all memory.
Don't fear garbage collection. It is your friend. It wants to help you. If it doesn't seem gritty enough, code while watching detective movies or something. =)
Java is a high-level programming language. C is a low-level programming language. Java provides bunches of features that C does not. That means that if you are competent in both Java and C, you will be able to write larger and less buggy applications in Java than in C.
It's not that people don't program in low-level languages because they're too dumb to figure them out. It's that people don't program in high-level languages because they're too dumb to figure out their utility. =)
I agree that it doesn't make sense for normal desktop computers. But what about Palms and their contemporaries? Itty-bitty computers like that (nano-computers? femto-computers?) would benefit substantially from the ability to run non-resident programs. And since Palms, along with ubiquitous networking, are probably the most significant things happening in computer technology right now, it seems to me that distributed apps are a good idea.
Ummm.... "run anywhere" means run on any hardware, not on any software.
I don't know- maybe the inventories would drop in price, maybe not. I mean, Red Hat makes a considerable profit selling GPLed software in computer stores... admittedly, slightly different ballpark. But what if the gov't said that a) it has to be phased in gradually over several years and that b) not everything has to be free, just the most important stuff. So the source for Word has to be free, but not the clip art or the dictionaries or the tutorials or any documentation beyond what's necessary for basic functionality, for example. Add to that that Word is a big honkin' program any way you slice it, and a lot of people would be unhappy having to download it, which would take a while, and use it with no warranty, no technical support, no nothing. Those concerns (the former being mostly for home users, the latter being for mostly business users) might make it attractive to purchase a full licensed version anyway.
I don't know, though, you might be right. However, what if we changed it so that instead of GPLing the code, they were forced to sell the code (for some reasonable price) to anyone who wanted to purchase it, including developers who were developing competing products? That would probably do the trick, too, without making MS give its stuff away free to end-users (gasp!).
Here's an idea that wasn't on the poll, but the more I think about it, the better it seems: the most effective way to break up Microsoft's monopoly might be some variation on forcing them to GPL some core set of their products. Their strongarm position comes from the fact that they have the programmer-hours available to throw together any product that any other company thinks of. Well, if they had to release the source, then they can't screw over other companies with this practice, because the companies they're competing against can just take anything they like from MS's work and use it in their own- the two competing products would both benefit from that competition.
MS still gets the "freedom to innovate" and make money based on the quality of their programmers and products. Other companies get the ability to compete realistically with Microsoft even if they aren't anywhere near Microsoft's size. Computer users everywhere benefit from a huge body of commercial software that now has available source code. Seems to me like everybody would win. (Well, except maybe MS, but hey, that's why it's a punishment, right?)
...which is what quantum computing is all about. (Well, that and the neat electron tricks you can play with that encoding.)
Ha ha...
"Good process... bad process... I'm the process with the gun."
(fyi, you can use the tag to print fixed-width text. Not as good as <PRE>, but it makes it a little easier to format stuff.)
Hehe...
Seriously, though, the current implementations may not be great in general, but that's not due to the language. Did you read the article a while back that mentioned that Sun's JDK 1.3b1 has beaten C in some speed tests? (Not C++. C.) Encouraging news.
Relax about Java performance. It's not honestly all that bad, and it's getting a lot better all the time.
System.out.println() to print text? What idiot thought of that?
...or, even worse, conversion between different variable types... this with a complete and utter lack of typecasting...
The kind of idiot who decided that System.out.print() was better than printf() is the one who realized that a) it makes sense to chunk system stuff into objects and b) that making you call System.out will remind you that not all platforms HAVE a standard output (remember how Java is cross-platform compatible? Well, it isn't if you call System.out methods!)
Casting is unsafe. The people who designed Java knew that. C is unsafe, Java is safe. There are good reasons for both.
Why anyone would prefer java is beyond me, unless you really *like* slowdowns and writing 3 times as much code.
Err... Java programs are 3 times as much code if you're writing trivial programs. Hello World is quite a bit bigger in Java than in C. If you use Java's OO features well, you will find yourself writing considerably -less- code than you would in C. Not to mention that it's easier to debug (remember how Java is safe? That means you can catch bugs better.)
As a general rule, arrays and structs produce far more efficient code and add to clarity by not hiding what is running which function, in addition to giving the programmer a much better grasp of the actual state of the system (what instructions are being executed, and especially, what the memory looks like).
I'm really surprised that you would make a statement like "arrays are the clearest way to understand your program" after programming anything in Scheme. C memory-isms may be the best way to understand what's happening at the machine-level, but they're a real pain for understanding what's happening at the top level.
In short: if you want to program big things, you'll find that higher-level languages are far easier to use than lower-level languages most of the time. C is one step away from assembly language. That was intentional. Assembly language is a good thing to program in sometimes. However, you'll find you're a lot more productive (as in, you can finish your program faster and make it work better) if you program in a language that provides better tools for abstraction. Allowing you to name functions and call them multiple times with different arguments is certainly not the end-all and be-all of code reusability.
[Scheme's] forced "make everything recursive" is unnatural for most tasks, and a performance drag.
As a side note: it turns out that you can translate recursive functions into non-recursive functions automatically, so that they don't waste stack space needlessly (which is actually the only performance hit you take for a recursive function). Good Scheme implementations do that: if you want proof, run an infinite recursion in Scheme, such as
(define recur (lambda () (recur)))
You'll find that it runs forever. Now run the C version:
void recur() { recur(); }
You'll find that it runs out of stack space after awhile and dies.
(Oh, and if I were you, I wouldn't go around saying things like "Scheme is similar to Perl." Scheme people and Perl people hate each other [half-joke], and their languages are pretty durned different.)
Perl has beaten C++ in performance tests. Not just anybody writing the C++, either- I think that "The Practice of Programming," by Kernighan and Pike, is where I read that. That might be why the original poster said that C++ is inefficient. And there are definitely some wastes in common implementation: templates, for example, while very cool, are well-known for being terribly inefficient in their implementation on most compilers.
(Oh, and incidentally, Lisp machines ran on "functional processors.")
Hmm? That's not what I meant at all... I certainly don't think that there are necessarily no differences, biologically, between men and women even as regards their thinking. I mention sociology because it seems very implausible to ascribe the characteristic of liking metal figurines of cars to a genetic predisposition, nor does it seem likely that you can show a biological root to wearing high heels or skirts. All of these things are culturally based. Reading what sociologists have to say about the differences between men and women is very insightful. For example, the very notion that men and women are different physiologically is not an idea without cultural charge- check out Making Sex by T. Laqueur, particularly ch 5, "Discovery of the Sexes." According to Laqueur, before around the 18th century, women were viewed physiologically as "defective" men.
My point is that even the premise that started this thread out- that men and women are "separate but equal" biologically- can't be fully understood without taking culture into account. Not that there can't be gender-based differences in the way that people think, but that one should not assert that as an explanation of a phenomenon before thinking about gender roles in a given culture.
It seems to me, then, that we can split the phenomenon into two parts:
1) the company wants to make a computer marketed towards girls
2) it chooses to do so by decorating a normal computer with Barbie decorations and bundling Barbie-themed software
The first part is good, or at least indicative of a good social trend: it means that there must be a reasonably-sized female market for computers, and for females as primary operators of computers.
The second part is bad, as is obvious. On the other hand, since preteenaged girls are used to being marketed to with flowers, pink, and Barbie anyway, it strikes me that the marginal extra damage of this particular instance of marketing is small.
I say that not to imply that it is okay to continue to sexually bias toys the way they are, but to make the comparison of the good of part 1 versus the bad of part 2: it seems to me that given those two parts, the sum message is that computers are moving away from being entirely male-associated, as they have been up until very recently, and are moving toward being gender-neutral.
After all, if a Hot Wheels computer is for boys, and a Barbie computer is for girls, doesn't that make my beige box with no decals genderless?
Sigh... yes, there exist natural differences between men and women. Men, for example, have penises, whereas women have vaginas. There also exist socially constructed differences between men and women. For example, boys like Hot Wheels and girls like Barbie in the United States.
Take a sociology class. They're interesting. One thing you'll learn: "politically correct neuter philosophy" is not the product of stupid people complaining about nothing. It is the product of smart people complaining about a social system that they feel separates and devalues a class of people unfairly.
Science likes to pretend that it is immune to societal whims. It is not. That we think of consciousness as "a program running on biological hardware" says more about us than it.
Err... gee... last I checked, we hadn't the foggiest idea of what we are "at the lowest physical level." True, there are electrical impulses, but why do you say that's the lowest level? Do you know?
This is a tad silly... well, probably three or four tads silly, actually. I myself pay some attention to AI from an academic standpoint, and I've never heard of anything that comes close to a general-purpose human-replacer. There exist systems that do some things very well- Deep Blue, for example, is an excellent chess player- but Deep Blue can't put together a basic english sentence, control muscles finely enough to stand up, or tell the difference between your face and a '57 Chevy. AI right now is populated entirely by idiot-savant programs, that can do one thing very well (where "very well" is somewhere between "quite a bit worse than a human" and "Superman-like"), and can't do anything else. This is hardly a-life. It's not even a precursor to a-life, really. The techniques that you use to make an idiot-savant probably won't work to make a generally smart thing.
Furthermore, even if somebody were to come up with an integrated human, the idea that it would then take over the world is quite unlikely. Remember- we program the things! We get to do whatever we want with them! If we say "Don't do X," they don't do it! Period! So if you say "Don't take over the world," they won't. They might get to be popular- they may be a more attractive economic choice for some people than hiring high-school dropouts- but I doubt it, and anyway, that's beside the point.
And before you say "but AI could evolve," I will point out that AI can only evolve in the directions that programmers allow it to evolve. And even "evolve" is an analogy- the performance measure is coded by the programmer, the mutation is coded by the programmer, the feedback interpretation is coded by the programmer- the only way an AI will take over the world is if somebody makes a "take over the world" AI. And try getting grant money for that! =)
Oh, and if you've read 3001, you ought to know better than to trust the sagacity of Mr. Clarke.
I've heard all of the complaints that Schank makes about college education before, and perhaps I'm being heretical, but I just don't buy them. Where I go to school, I take interesting classes from important researchers in the field who also want to teach students what they know, and are often quite good at it. In my upper-level classes, I'm quite aware that my professors are giving me their opinions, rather than unquestionable truths- and so does everyone else in the class. Those of us who are qualified to take upper-level college classes are also qualified to think critically.
And while it's true that if you ask most people why they're going to college, they'll say it's so that they can get a good job or something, that's just camouflage- I have honestly yet to meet someone who isn't in college because they're excited about learning beneath all the layers of "I hate school" socialization. I would be surprised if my university is atypical in those respects among upper universities.