It just occurred to me that a non-spammer can do the same thing, but just look at the list of words that defeat the spam filter to see what kinds of email the person receives. They won't be able to see actual email, but if you find out that the phrase "smurf fetish" always gets passed the filter, you can probably guess your target receives and values mail about smurf fetishes.
Probably a good idea to turn off images if using a Bayesian filter, so this kind of privacy violation can't occur.
It does indeed suck. I'm not going to pay for the iLife suite. I would hope that the next major OS upgrade that I do pay money for will include it by default.
Their search appliance for networks probably won't make them huge amounts of money, i think. For one thing, that area is totally commoditized. What Google is doing, Autonomy, Verity, Convera, and even at least two of Yahoo's bought companies (Altavista and FAST) are doing as well. And none of them make decent money out of either.
Also, perhaps Google has improved, but the performance specs I read when they introduced this were hardly impressive, and probably the worst out of the whole group.
Jeez man, can't think of one major food health scare that has held up under scrutiny? How about mad-cow disease, which is big news these days. While meat may still be safe to eat, people have in fact died from this.
The thing is, our lives our complicated. We have tons of chemicals floating around that we reguarly come into contact with. We have no idea of the consequences of most of these chemicals, or their possible interactions. Rationally, we should try and minimize this unknown risk. However, there is no need to panic, I agree.
Also, there is certain evidence to say that something out there is bad for us. Cancer rates for young people have been rising, and no, it's not just a case of better detection or reporting.
But he was clear that he was making a decision based on moral, not scientific principles. A moral decision is always the correct one - and that moral decision can take into account science. Morality is a question of weighing the good and the bad. Banning penicillin would have a lot of downside and not much upside. Banning these fish has no serious downside - that's why it's possible to base a decision on abstract ideals such as not interfering with nature.
That's a strange way of interpreting what he said, He said "it's not a question of science", but you interpret this as "I have no idea what this is about". It sounds like you are the one having a knee-jerk reaction.
Reminds me of a Pohl book (or was it a short story?) "The Midas Effect". The premise was a future in which there was rampant overproduction, and the poor had to consume like mad, while the rich got to live a simple lifestyle.
I've been thinking about this story for a while now. Scarily enough, it's becoming true for certain things. A huge house at the outskirts of your metropolitan area is cheap. What's expensive is a small apartment in the city (depending on your city, of course). Huge washer and dryers? Cheap. Small washer/dryer combo? Expensive.
Things are definitely becoming stranger and stranger...
You can write a simple perl program that makes cleaning out comments very easy. I wrote one that allows me to kill all comments from a particular IP address. Read about it, where else, on my blog.
Nice to see that you didn't RTFA, but merely skimmed it. Graham's not addressing Java, but `hacker radar'--that ability a hacker has to judge a language without actually using it, much like judging a book by its cover; contrary to popular belief this is very possible. To address your `points': Actually I did read it many times, quite carefully. And I did point out that Graham didn't claim to have any experience to back him up. Besides, don't you think it's amusing to accuse me of trashing something I haven't read, and accusing me of not realizing that the article is just a trashing of something he hasn't used?
# Hype: the Graham's point is that good languages don't need hype or ad campaigns--hackers use them because they want to, not because a marketing exec sold them on it. But Marketing execs don't decide on Java. At least in my company, the engineers decided on it, after making a Lisp prototype. What sane company would use Marketing to decide technical issues? # You miss the point: Java is evolutionary, not revolutionary. It is afraid to be new: it uses syntax which is familiar and doesn't bother trying anything new. You say that like it's a bad thing. ALmost all languages have familiar syntax, and for good reason. Graham likes Lisp, and that has an old, old syntax. # The point is that Java is not pushed because it's a Really Cool Programming Language, but because it's part of Sun's anti-Microsoft plan. A good language is big because it's good, not because of its side effects (although those can be quite salutary). Well, Java is not a "cool" programming language, at least not anymore. Cool is fleeting. Perl used to be cool. Then Python was cool. Now Ruby is cool. Or whatever, it's best to use the right tool for the job then worry about what Slashdotters think of your choice. # The point is that adoption is not driven from below but from above--and that most technical directions from above are likely to be incorrect. Okay, but the assumption that Java is widely popular because people who don't understand technology choose it, is an assumption that seems faulty. # The point is that Java's `hipness' is fake: it's not driven by hackers but by advertising. Is there any proof of this? What about all the open-source Java stuff out there? # Large orgs want to hire morons, not hackers. A good language (like a good philosophy or book) doesn't lower itself to its users' level but raises them up to its. Java panders; good languages offer. I think Java could do a better job in the power department, but it was NOT written to allow stupid people to code. It was written to more easily create solid code. See Gosling's blog entry in my original post.
API and threading are features of an implementation (VM, interpreter, compiler), not of a language itself. For example, SBCL has threading [sbcl.org]. Somewhat, but that difference is fast disappearing. Both Java and Python come with a large library by default. Perl has one standard location for your library needs. C++ has the STL. The difference between language and library is blurred. IIRC, STL is part of the C++ spec, for instance. String manipulations are implemented as a library in many languages, but most people would think of that as a core language feature. Etc, etc.
Lisp libraries are getting better, but it's sort of a lost cause. For example, I tried to use UncommonSQL, but it didn't work on my Lisp of choice, OpenMCL. Other Lisp libraries depend on one package system or another. It gets very complicated to consider using a package and thinking "okay, what packaging system does it use. Does it support my particuar Lisp?", etc.
Apart of Lisp, many other FP languages have excelent support for concurrent programming, either emebedded to the language (Erlang, Mozart, Mercury) or as an extensions (Haskell, ML). For example, after doing concurrent programming in Erlang you would certainly complain of being forced to go back to Java.
I've never used Erlang, but no doubt there are languages that do many things better then Java. It can, and should be improved. The nice thing about Java, though, is that there isn't really anything major it doesn't do a good job on.
The portability differences are in the foreign function interface, and in the multiprocessing (aka threading) interface.
Also in filesystem type things, networking type things (IIRC), and basically anything not specified in the ANSI CL spec. This is why XEmacs, who names ever release after some oxymoron, called one of their releases "Common Lisp".
The fact is that, thanks to it's use of garbage collection and because it stores non-primitives on the heap, Java will always be _significantly_ slower than C/C++, no matter whose JIT you are using.
Actually garbage collection could be faster than manual memory deallocation in many situations. Imagine if you have a program who does lots of activity in bursts. If you deallocate everything as you are done, you may do a bunch of deallocation in the bursts, whereas garbage collection may wait until it is idle before deallocating. Bingo, improved performance.
It's sort of like how compiled code can be faster than assembly code. Compiled code can do a bunch of tricks no sane human would do with assembly code (especially if one wants to code assembly for readability).
I just tried the link and the link seems to be working (but a bit slow).
Saying something is the lesser of two evils and loving it are two very different things. When eating your favorite food do you say "Well, it tastes better than manure"? Loving something goes beyond preferring it to something you find really disagreeable. I'd rather get punched in the stomach than poked in the eye, but if it's quite all right with you, I'd rather not have either one!
I never said it was the lesser of two evils. I said it's appreciated for what it is, a nice environment to write serious sever-side apps in. I personally don't love any language, every language has points about it that drive me crazy. But enough people "love" it that the open-source community has tons of interesting Java projects.
There's no denying Java is buzz-wordy. I think it's like designer-brand clothes. You pay a lot for them, everyone thinks you're cool... (fast forward a few years)... they're in the closet (or garbage) you look at old pictures of how you looked back then and wonder "what was I thinking!?"
It's not a matter of buzz-words. When you code serious apps, doing what many other people are doing has serious, logical, tangible worth. I know if there is a problem with the JVM, it's likely someone would have discovered it before me, and Sun will (hopefully) fix the problem in the next point release. IN the meantime, people from all over the world suggests workarounds, etc. I know that the JVM is being used in a lot of different ways, in many different environments.
Sure, my friend can invent the greatest programming language ever, and it could be initially great fun to write in. But if the garbage collector is buggy or doesn't perform well, or the language has performance issues in general or under load conditions, or it behaves extremely erratically under low-memory conditions, or it allows buffer overflow errors, or crashes sporadically for unknown reasons, I will be in hell trying to support this thing I wrote.
10) The wrong people like it. That is, Paul Graham's friends don't like it, people Paul Graham doesn't know like it! What an argument!
Are you attacking the argument or the person that made it?
The argument, if you can call it that. Not that it's any better than the collection of logical fallacies that make up that post. To Graham's credit, he admits that it's just his feelings and not supposed to be an informed look at Java. It's a shame people keep linking to it, as if it is actually a real argument, though.
I know C, C++, Python, Perl (as much as I can stand knowing it), Common Lisp, Emacs Lisp, and a few other languages besides Java. Yes, I sometimes miss Lisp's power when I program in Java, but I more frequently miss Java's great APIs, sane package structure, modern features (many free Lisps don't even have threading!), and portability (see the defsystem lisp package to see how much unreadable bloat you get when trying to make something run across different lisps) when I program in Lisp. So please don't assume I must not know what I'm talking about.
Graham's article is a load of crap. Not having any factual information to say, his arguments against it are:
1) It's bad because it's energetically hyped. Unlike Lisp, where no one uses it because everyone is too busy posting on comp.lang.lisp about how wondeful a language it is?
2) It's aimed low. Gosling has already called bullshit on this argument.
3) It has ulterior motives. So what?
4) No one loves it? Well, those of us who used to use C++ appreciate it a hell of a lot.
5) People are forced to use it. Wrong. Countless companies choose it because it is an appropriate technology.
6) It has too many cooks. I find this a huge advantage to Java. It means their API's very well thought out. It's why Java is nicely internationalizable, for one.
7) It's bureaucratic. Their API's are no more verbose than many languages. Any "bureacracy" that exists is to promote flexibilty.
8) It's pseudo-hip. Like quoting Paul Graham.
9) It's designed for large organizations. True, because large organizations have to do somethign more complicated then the typical perl script can handle. His arguments here are debunked by Gosling in my previous link.
10) The wrong people like it. That is, Paul Graham's friends don't like it, people Paul Graham doesn't know like it! What an argument!
11) Its daddy is in a pinch. I fail to see how this is relevant.
12) The DoD likes it. The DoD also likes the internet, they were one of the first government agencies to really take to it. Does that say something bad about the internet now?
Comparing Java to Lisp or (ugh) Perl is a joke. Well, I think perl is very ugly and counter-intuitive, so let's take Python as an example. If I were to make a simple website, i'd use Python instead of Java. If I were to do a hacker type of activity, something that may not be around 3 years from now, I'd use Python. Or even Lisp if it was something just for me. They'd be wise choices. However, for an enterprise app? Java is an excellent choice.
Your post makes no sense. Just having a big R&D budget doesn't ensure success. How much is spent on search, rather on the scores of other research projects Microsoft has going on?
The fundamental mistake you are making is forecasting a moving Microsoft to overtake a static Google. But Google isn't static, it is moving as well. Recently, Google has been hiring like crazy. It's an open race with Google having a huge head start, and no convincing reason I've heard that Microsoft will overtake them.
Please keep in mind that overcrowded doesn't mean the same thing as "crowded". Overcrowded means that you have more people then the space was designed for. A 1000 unit apartment building with 2500 people living in it is not overcrowded, it's pretty reasonable. A ranch-style house in San Jose in 1999 with 4 renters living on the floor in addition to the 3 people that already live there is overcrowded.
It's not just a question of definition, it's a matter of architecture. Things can get uncomfortable pretty fast when you have more people living in a space then it was designed for. As opposed to just having a lot of people, in which case a good architecture might mean you would never really notice it.
Re:I'll care when native compilers become the norm
on
Preview of Java 1.5
·
· Score: 1
Bad memory design? Wrong. Java's memory management is much better than C's, because Java can move objects in memory around at will, but heap data in C is fixed because of pointers.
Also wrong is the statement that Python and Perl are faster. Every metric I've ever seen shows that Python and Perl are significantly slower than Java. Python especially. If you have proof of your statements, though, I'd love to hear it.
It just occurred to me that a non-spammer can do the same thing, but just look at the list of words that defeat the spam filter to see what kinds of email the person receives. They won't be able to see actual email, but if you find out that the phrase "smurf fetish" always gets passed the filter, you can probably guess your target receives and values mail about smurf fetishes.
Probably a good idea to turn off images if using a Bayesian filter, so this kind of privacy violation can't occur.
It does indeed suck. I'm not going to pay for the iLife suite. I would hope that the next major OS upgrade that I do pay money for will include it by default.
Their search appliance for networks probably won't make them huge amounts of money, i think. For one thing, that area is totally commoditized. What Google is doing, Autonomy, Verity, Convera, and even at least two of Yahoo's bought companies (Altavista and FAST) are doing as well. And none of them make decent money out of either.
Also, perhaps Google has improved, but the performance specs I read when they introduced this were hardly impressive, and probably the worst out of the whole group.
Jeez man, can't think of one major food health scare that has held up under scrutiny? How about mad-cow disease, which is big news these days. While meat may still be safe to eat, people have in fact died from this.
The thing is, our lives our complicated. We have tons of chemicals floating around that we reguarly come into contact with. We have no idea of the consequences of most of these chemicals, or their possible interactions. Rationally, we should try and minimize this unknown risk. However, there is no need to panic, I agree.
Also, there is certain evidence to say that something out there is bad for us. Cancer rates for young people have been rising, and no, it's not just a case of better detection or reporting.
But he was clear that he was making a decision based on moral, not scientific principles. A moral decision is always the correct one - and that moral decision can take into account science. Morality is a question of weighing the good and the bad. Banning penicillin would have a lot of downside and not much upside. Banning these fish has no serious downside - that's why it's possible to base a decision on abstract ideals such as not interfering with nature.
That's a strange way of interpreting what he said, He said "it's not a question of science", but you interpret this as "I have no idea what this is about". It sounds like you are the one having a knee-jerk reaction.
How do we know they aren't virtually married?
Reminds me of a Pohl book (or was it a short story?) "The Midas Effect". The premise was a future in which there was rampant overproduction, and the poor had to consume like mad, while the rich got to live a simple lifestyle.
I've been thinking about this story for a while now. Scarily enough, it's becoming true for certain things. A huge house at the outskirts of your metropolitan area is cheap. What's expensive is a small apartment in the city (depending on your city, of course). Huge washer and dryers? Cheap. Small washer/dryer combo? Expensive.
Things are definitely becoming stranger and stranger...
You can write a simple perl program that makes cleaning out comments very easy. I wrote one that allows me to kill all comments from a particular IP address. Read about it, where else, on my blog.
I don't know either, but check here for news.
No, it is not grep, any more than Google is grep. Grep does not scale. It's a search index.
Nice to see that you didn't RTFA, but merely skimmed it. Graham's not addressing Java, but `hacker radar'--that ability a hacker has to judge a language without actually using it, much like judging a book by its cover; contrary to popular belief this is very possible. To address your `points':
Actually I did read it many times, quite carefully. And I did point out that Graham didn't claim to have any experience to back him up. Besides, don't you think it's amusing to accuse me of trashing something I haven't read, and accusing me of not realizing that the article is just a trashing of something he hasn't used?
# Hype: the Graham's point is that good languages don't need hype or ad campaigns--hackers use them because they want to, not because a marketing exec sold them on it.
But Marketing execs don't decide on Java. At least in my company, the engineers decided on it, after making a Lisp prototype. What sane company would use Marketing to decide technical issues?
# You miss the point: Java is evolutionary, not revolutionary. It is afraid to be new: it uses syntax which is familiar and doesn't bother trying anything new.
You say that like it's a bad thing. ALmost all languages have familiar syntax, and for good reason. Graham likes Lisp, and that has an old, old syntax.
# The point is that Java is not pushed because it's a Really Cool Programming Language, but because it's part of Sun's anti-Microsoft plan. A good language is big because it's good, not because of its side effects (although those can be quite salutary).
Well, Java is not a "cool" programming language, at least not anymore. Cool is fleeting. Perl used to be cool. Then Python was cool. Now Ruby is cool. Or whatever, it's best to use the right tool for the job then worry about what Slashdotters think of your choice.
# The point is that adoption is not driven from below but from above--and that most technical directions from above are likely to be incorrect.
Okay, but the assumption that Java is widely popular because people who don't understand technology choose it, is an assumption that seems faulty.
# The point is that Java's `hipness' is fake: it's not driven by hackers but by advertising.
Is there any proof of this? What about all the open-source Java stuff out there?
# Large orgs want to hire morons, not hackers. A good language (like a good philosophy or book) doesn't lower itself to its users' level but raises them up to its. Java panders; good languages offer.
I think Java could do a better job in the power department, but it was NOT written to allow stupid people to code. It was written to more easily create solid code. See Gosling's blog entry in my original post.
API and threading are features of an implementation (VM, interpreter, compiler), not of a language itself. For example, SBCL has threading [sbcl.org].
Somewhat, but that difference is fast disappearing. Both Java and Python come with a large library by default. Perl has one standard location for your library needs. C++ has the STL. The difference between language and library is blurred. IIRC, STL is part of the C++ spec, for instance. String manipulations are implemented as a library in many languages, but most people would think of that as a core language feature. Etc, etc.
Lisp libraries are getting better, but it's sort of a lost cause. For example, I tried to use UncommonSQL, but it didn't work on my Lisp of choice, OpenMCL. Other Lisp libraries depend on one package system or another. It gets very complicated to consider using a package and thinking "okay, what packaging system does it use. Does it support my particuar Lisp?", etc.
Apart of Lisp, many other FP languages have excelent support for concurrent programming, either emebedded to the language (Erlang, Mozart, Mercury) or as an extensions (Haskell, ML). For example, after doing concurrent programming in Erlang you would certainly complain of being forced to go back to Java.
I've never used Erlang, but no doubt there are languages that do many things better then Java. It can, and should be improved. The nice thing about Java, though, is that there isn't really anything major it doesn't do a good job on.
The portability differences are in the foreign function interface, and in the multiprocessing (aka threading) interface.
Also in filesystem type things, networking type things (IIRC), and basically anything not specified in the ANSI CL spec. This is why XEmacs, who names ever release after some oxymoron, called one of their releases "Common Lisp".
The fact is that, thanks to it's use of garbage collection and because it stores non-primitives on the heap, Java will always be _significantly_ slower than C/C++, no matter whose JIT you are using.
Actually garbage collection could be faster than manual memory deallocation in many situations. Imagine if you have a program who does lots of activity in bursts. If you deallocate everything as you are done, you may do a bunch of deallocation in the bursts, whereas garbage collection may wait until it is idle before deallocating. Bingo, improved performance.
It's sort of like how compiled code can be faster than assembly code. Compiled code can do a bunch of tricks no sane human would do with assembly code (especially if one wants to code assembly for readability).
I just tried the link and the link seems to be working (but a bit slow).
Saying something is the lesser of two evils and loving it are two very different things. When eating your favorite food do you say "Well, it tastes better than manure"? Loving something goes beyond preferring it to something you find really disagreeable. I'd rather get punched in the stomach than poked in the eye, but if it's quite all right with you, I'd rather not have either one!
I never said it was the lesser of two evils. I said it's appreciated for what it is, a nice environment to write serious sever-side apps in. I personally don't love any language, every language has points about it that drive me crazy. But enough people "love" it that the open-source community has tons of interesting Java projects.
There's no denying Java is buzz-wordy. I think it's like designer-brand clothes. You pay a lot for them, everyone thinks you're cool... (fast forward a few years)... they're in the closet (or garbage) you look at old pictures of how you looked back then and wonder "what was I thinking!?"
It's not a matter of buzz-words. When you code serious apps, doing what many other people are doing has serious, logical, tangible worth. I know if there is a problem with the JVM, it's likely someone would have discovered it before me, and Sun will (hopefully) fix the problem in the next point release. IN the meantime, people from all over the world suggests workarounds, etc. I know that the JVM is being used in a lot of different ways, in many different environments.
Sure, my friend can invent the greatest programming language ever, and it could be initially great fun to write in. But if the garbage collector is buggy or doesn't perform well, or the language has performance issues in general or under load conditions, or it behaves extremely erratically under low-memory conditions, or it allows buffer overflow errors, or crashes sporadically for unknown reasons, I will be in hell trying to support this thing I wrote.
10) The wrong people like it. That is, Paul Graham's friends don't like it, people Paul Graham doesn't know like it! What an argument!
Are you attacking the argument or the person that made it?
The argument, if you can call it that. Not that it's any better than the collection of logical fallacies that make up that post. To Graham's credit, he admits that it's just his feelings and not supposed to be an informed look at Java. It's a shame people keep linking to it, as if it is actually a real argument, though.
I know C, C++, Python, Perl (as much as I can stand knowing it), Common Lisp, Emacs Lisp, and a few other languages besides Java. Yes, I sometimes miss Lisp's power when I program in Java, but I more frequently miss Java's great APIs, sane package structure, modern features (many free Lisps don't even have threading!), and portability (see the defsystem lisp package to see how much unreadable bloat you get when trying to make something run across different lisps) when I program in Lisp. So please don't assume I must not know what I'm talking about.
Graham's article is a load of crap. Not having any factual information to say, his arguments against it are:
1) It's bad because it's energetically hyped. Unlike Lisp, where no one uses it because everyone is too busy posting on comp.lang.lisp about how wondeful a language it is?
2) It's aimed low. Gosling has already called bullshit on this argument.
3) It has ulterior motives. So what?
4) No one loves it? Well, those of us who used to use C++ appreciate it a hell of a lot.
5) People are forced to use it. Wrong. Countless companies choose it because it is an appropriate technology.
6) It has too many cooks. I find this a huge advantage to Java. It means their API's very well thought out. It's why Java is nicely internationalizable, for one.
7) It's bureaucratic. Their API's are no more verbose than many languages. Any "bureacracy" that exists is to promote flexibilty.
8) It's pseudo-hip. Like quoting Paul Graham.
9) It's designed for large organizations. True, because large organizations have to do somethign more complicated then the typical perl script can handle. His arguments here are debunked by Gosling in my previous link.
10) The wrong people like it. That is, Paul Graham's friends don't like it, people Paul Graham doesn't know like it! What an argument!
11) Its daddy is in a pinch. I fail to see how this is relevant.
12) The DoD likes it. The DoD also likes the internet, they were one of the first government agencies to really take to it. Does that say something bad about the internet now?
Comparing Java to Lisp or (ugh) Perl is a joke. Well, I think perl is very ugly and counter-intuitive, so let's take Python as an example. If I were to make a simple website, i'd use Python instead of Java. If I were to do a hacker type of activity, something that may not be around 3 years from now, I'd use Python. Or even Lisp if it was something just for me. They'd be wise choices. However, for an enterprise app? Java is an excellent choice.
Yes, true. But only for some languages. Java, for example, cannot do this.
Your post makes no sense. Just having a big R&D budget doesn't ensure success. How much is spent on search, rather on the scores of other research projects Microsoft has going on?
The fundamental mistake you are making is forecasting a moving Microsoft to overtake a static Google. But Google isn't static, it is moving as well. Recently, Google has been hiring like crazy. It's an open race with Google having a huge head start, and no convincing reason I've heard that Microsoft will overtake them.
Examples would include, running a webserver under the System or Administrator account so that once it is compromised, the system is rooted.
As opposed to Linux/Solaris/etc where you have to be root to run your webserver, since only root can open port 80?
The spammer can simply parcel out each individual type of spam over a period of time. So, instead of:
Day 1: Send spam A to 1 million addresses
Day 2: Send spam B to 1 million addresses
Day 3: Send spam C to 1 million addresses
They would
Day 1: Send spam A to 333,333 addresses, send spam B to 333,333 addresses, send spam C to 333,333 addresses
Day 2: Repeat
Day 3: Repeat
Obviously, they would draw this out over more than 3 days, but you get the idea.
Please keep in mind that overcrowded doesn't mean the same thing as "crowded". Overcrowded means that you have more people then the space was designed for. A 1000 unit apartment building with 2500 people living in it is not overcrowded, it's pretty reasonable. A ranch-style house in San Jose in 1999 with 4 renters living on the floor in addition to the 3 people that already live there is overcrowded.
It's not just a question of definition, it's a matter of architecture. Things can get uncomfortable pretty fast when you have more people living in a space then it was designed for. As opposed to just having a lot of people, in which case a good architecture might mean you would never really notice it.
Bad memory design? Wrong. Java's memory management is much better than C's, because Java can move objects in memory around at will, but heap data in C is fixed because of pointers.
Also wrong is the statement that Python and Perl are faster. Every metric I've ever seen shows that Python and Perl are significantly slower than Java. Python especially. If you have proof of your statements, though, I'd love to hear it.
It's not hard to get a reply from Stallman. Just report a bug on emacs, and you'll soon hear from him.