I don't think most people who have posted have grasped the fundamental idea of what RMS is talking about. Here is a little test. Please answer the following questions truthfully:
Do you think it is right for someone to hack a Tivo and add an extra harddrive?
Do you think it should be legal to sell any copy of Windows that you no longer use to someone else?
Do you think quoting a paragraph from a book in a written paper should be an illegal copyright infringement?
If you think at all like me, then your answers are yes, yes, no. I think that if you buy a toy, then you should be able to take it apart and see what else you can make it do. If you buy Windows, you should be able to sell it to someone else after you are done using it. Quoting a paragraph from a book should be fair use.
And yet the Tivo usage agreement says something about no reverse engineering or disassembling. Microsoft does not let you sell copies of Windows, even if you no longer use it. The third example is a right of consumers that is respected by volumes of law. How are they all similar? In every case the author releases their work under a restrictive license. In all three cases I think the restriction should not be legally binding. This means that I think that creators should not be allowed to release their work under any license they choose. I think there are restrictions that should not be enforced, and license "agreements" that I believe do not mean anything. This is what RMS is saying.
Actually Ocaml has a macro system that (I think) is of comparable power to Lisp's macro facilities. It is called caml4p. Basically it duplicates the parser of the interpreter, but with a configurable syntax. So you can declare new control constructs, new keywords, etc., and attach semantic meaning to them. The alternate syntax can then be accepted by the compiler and interpreter through a command-line argument. So the end result is somewhat like Lisp's macro facility, but maybe slightly less convenient to set-up.
A lot of people seem to be saying that it is dangerous to use "alternative" languages for major projects because people that must maintain the code may not be familiar with the language. This is undoubtedly a valid concern. One neat idea to get around this is to use a high-level language as a tool for creating a project written in a lower level language. For example, if the target application is some sort of GUI app, then someone may decide to use Java. But Java is not a particularly high-level language, so you decide to use Lisp. You create a Lisp "environment" that facilitates creating Java source code. Lisp functions create abstract data types representing Java programs with certain attributes, e.g. widgets and widget behaviors. Then you write a Lisp function that translates the data structure into valid Java source code. Developing the program then becomes less of a mundane Java programming task, and more high-level and fun.
This method has a loss of productivity from the added complexity of the task, but this can easily be made up for in increased productivity at the meta-level. I.e. if your application has many buttons with only slightly different functionality, a single Lisp function call creates each button. Changing behaviors and adding or deleting parts of the program becomes simple. Best of all, the end result is a valid Java program that anyone who knows Java can understand. If the person who comes after you does not understand Lisp or the idea of program generation, it doesn't matter. They have a Java program to hack on. If they do happen to understand Lisp, even better, they can pick up where you left off with a big productivity gain. Lisp is particularly suited to this type of thing, but any good high-level language would work.
Why not have the best of both worlds, and develop everything in a high level statically typed and compiled language? You lose some flexibility that a dynamically typed language has (like the ability to call functions that don't exist, and still have the program work up until that call). But I think for most applications this is not a problem. This method also removes the transition from one language to another, which can be costly. So write your programs in OCaml!
Of course it may not be up to you which language to write the software in, but if it is, then seriously consider using another language. C++ is a fun language, but isn't particularly suited for threaded programming nor for high portability. And for most programming tasks, correctness is much more important than raw execution speed. With this in mind, I would suggest using a language other than C++.
I find it amazing that programmers spend so much time looking for good libraries, but don't stop to think about their choice of language and spend the same amount of time looking for a good language to use.
I have also owned and used both HP and TI calculators, and I must say that I vastly prefer TI's. Both brands are physically very well made; maybe the HP's buttons are a little better, I've never had problems with either. The interface to the TI is excellent, very easy, intuitive, and logical. The interface to the HP's is also good. But RPN is not the best choice for scientific work, nor for student work.
For banging up some numbers to get an answer, RPN is indeed faster once you get the hang of it. But for careful work, it is better to have standard notation and a history of commands. Suppose the expression you are trying to evaluate has many terms. It is much better to enter each term into the calculator (in standard notation) and get a result. You then have a list of things you typed, and the responses from the calculator. With RPN you don't get this. Having the history helps with tracking down errors, and with keeping the entire problem in your head. Being able to go back and edit previous terms is wonderful, and you can't do that with RPN.
I don't think it is silly to compare the speed of pipes on Windows and Linux. Yes, it's not a professionally done scientific study. It's a programmer sitting down with a stopwatch and seeing how fast a simple program runs. This is useful to someone who wants to decide how to use pipes in Windows.
For example, Mathematica is a cross-platform application that is broken into two pieces: the kernel and the frontend. The kernel is responsible for all mathematical operations and computations, and the frontend is the GUI interface. These parts run as separate processes, to allow editing of Mathematica files without the overhead of starting the kernel, and also to allow the kernel to crash without taking all your work with it. The kernel and frontend can also run on separate machines.
So how do the two parts of Mathematica communicate? Wolfram could make some sort of COM or CORBA interface, but this would be a lot of extra work specific to one platform. If they use pipes, then it will work on every major platform. Unix has pipes, Windows has pipes, OS X has pipes. Pipes are a good choice for IPC since they are cross-platform. This study shows the developer what to expect from Windows pipes vs. Linux pipes. The conclusion is that Linux is amazingly fast at IPC, and the various Windows are fast enough for most purposes.
This used to be true, but I think this is no longer true. People are more and more likely to work at different computers and expect certain basic applications to work. For example, if I sit down at a random computer I expect it to have internet connectivity, a telnet program to check mail, a word processor, etc. People are treating computers more and more as commodity items. It shouldn't matter what operating system the computer is using; the application is the important thing. The only reason we interact with the operating system is because we have to in order to get work done. If an interface is good for one operating system, why should it be bad for another?
That's funny, when I read the first amendment to the Constitution, I think it says something about congress making no law restricting freedom of speech. You must be looking at some other laws that allow restrictions on what types of speech citizens can make.
How is encrypted speech not speech? I don't agree at all. If I agree with a friend that when I say, "The rooster is crowing" that he will record the Superbowl, is it illegal for me to say "the rooster is crowing" in public? Not allowing people free access to encryption is like banning people from multiplying numbers together (seriously). Schemes like RSA really do involve repeated multiplications.
People should also consider that the Camls R Us team (who have won the competition using OCaml) were the ones running the competition, so they didn't have an entry!
From reading your webpage, it appears that the X25 is a 5x5 array of asynchronous processors that execute an assembly language very similar to Forth. How do they communicate and share information to do useful computations?
No, this would actually be really cool. Make an Apache module which automatically inserts something steganographically into every JPG it serves. Some people put encrypted data into the images, and others just direct it to read from randomly encrypted gibberish. Then the government has to deal with lots of script kiddies who think they are cool by embedding Brittney Spears mp3s into the images from their webpages.
Files in/bin are standard binary executable files that are required for normal system operation. This includes things like the command shell, ls, cp. Any shell script or system script can depend on certain commands being available in/bin.
Files in/sbin are system binaries. These files are usually run by the administrator to configure or control the system. Different Unix operating systems have different commands here.
This is a bad blow for SSH the company. Didn't someone there quit a while ago since he disagreed about the decision to not provide source code to customers?
People "crack" substitution cyphers for fun nowadays. It's one of the puzzle types in those puzzle magazines you buy.
On that thought, maybe that's a good way to explain the "decryption" to the judge. Take an actual excerpt of an eBook encrypted file, then give it to your mother to do just like those cryptagram puzzles. Get her to write up an explanation of how she worked it out, and mail it to a friend. Show the judge the puzzle and her solution, then demand that they also throw your mom in jail for circumventing the encryption on the eBook (and distributing the crack)!
When I took drivers ed. I remember that we learned the rules for when cops can pull you over. Randomly checking for seatbelts was listed as illegal. They have to have a reason to stop you and pull you over, and if they notice your seatbelt isn't on then they can give you a fine. (This was in WA, may have changed and may be different in other states).
People seem to be down on this language, so I'll go for the positive spin. After a couple minutes of browsing the manual, it looks like a cool language. It is the sort of thing you add to your program to give it a scripting language. The advantage of CSS is that it is easy to learn if you already know C (or Java). C isn't the most suitable language for scripting, and they didn't use C directly. Variables are typeless (I think),
it has automatic memory allocation, etc.
Of course, my favorite scripting language of all time is Lua (check it out).
Here's something I would like to see: an interpreter for C code that follows exactly what gcc would do. Then you could make a nice GUI environment for programming, where everything happens as you type it with no compile cycle. Then at the end you compile everything to get speed.
As a grad. student in mathematics, most of my friends are not native English speakers. And I assure you, they appreciate correct English grammar more than the Americans.
There is a big difference from being tolerant of people making honest grammatical mistakes, and from putting up with people who can't be bothered to even make an effort to get things right (and who think it doesn't matter if they get it wrong). I agree with a previous poster. There are too many engineers and computer science students who don't think English skills matter.
It's a lot when you're a teenager that's bored in high school that's trying to program a cool new game. I remember mowing lawns to get the $150 (or whatever) to buy Borland C++ 3.1 (I still use it).
Yes. At UIUC, students own the copyrights to submitted work in general. The one exception that I have a problem with is patentable material. The UIUC policy says that if something is created at UIUC (for example in the lab) and submitted for a class, then any patent rights go to the university. Of course the things that are submitted for assignments are in general nowhere near patentable, but the principle matters.
I can think a better use of $50 to insure that your genes get propagated. It's called asking out that cute girl in class, taking her to a fancy restaurant, then knocking her up.
If you actually read the email, you see that they are awarding prizes and stuff for people that report requests for computers without OEM Windows installed because of a site license. Microsoft says that their site licenses do not cover new computers.
The 7.0 compiler is not reliable. When compiling the NTL libraries, the compiler segfaults. This is bad, compilers are not supposed to crash! Don't tell me that the problem is because the source is no ISO compliant.
If you think at all like me, then your answers are yes, yes, no. I think that if you buy a toy, then you should be able to take it apart and see what else you can make it do. If you buy Windows, you should be able to sell it to someone else after you are done using it. Quoting a paragraph from a book should be fair use.
And yet the Tivo usage agreement says something about no reverse engineering or disassembling. Microsoft does not let you sell copies of Windows, even if you no longer use it. The third example is a right of consumers that is respected by volumes of law. How are they all similar? In every case the author releases their work under a restrictive license. In all three cases I think the restriction should not be legally binding. This means that I think that creators should not be allowed to release their work under any license they choose. I think there are restrictions that should not be enforced, and license "agreements" that I believe do not mean anything. This is what RMS is saying.
Actually Ocaml has a macro system that (I think) is of comparable power to Lisp's macro facilities. It is called caml4p. Basically it duplicates the parser of the interpreter, but with a configurable syntax. So you can declare new control constructs, new keywords, etc., and attach semantic meaning to them. The alternate syntax can then be accepted by the compiler and interpreter through a command-line argument. So the end result is somewhat like Lisp's macro facility, but maybe slightly less convenient to set-up.
This method has a loss of productivity from the added complexity of the task, but this can easily be made up for in increased productivity at the meta-level. I.e. if your application has many buttons with only slightly different functionality, a single Lisp function call creates each button. Changing behaviors and adding or deleting parts of the program becomes simple. Best of all, the end result is a valid Java program that anyone who knows Java can understand. If the person who comes after you does not understand Lisp or the idea of program generation, it doesn't matter. They have a Java program to hack on. If they do happen to understand Lisp, even better, they can pick up where you left off with a big productivity gain. Lisp is particularly suited to this type of thing, but any good high-level language would work.
Why not have the best of both worlds, and develop everything in a high level statically typed and compiled language? You lose some flexibility that a dynamically typed language has (like the ability to call functions that don't exist, and still have the program work up until that call). But I think for most applications this is not a problem. This method also removes the transition from one language to another, which can be costly. So write your programs in OCaml!
I find it amazing that programmers spend so much time looking for good libraries, but don't stop to think about their choice of language and spend the same amount of time looking for a good language to use.
I have also owned and used both HP and TI calculators, and I must say that I vastly prefer TI's. Both brands are physically very well made; maybe the HP's buttons are a little better, I've never had problems with either. The interface to the TI is excellent, very easy, intuitive, and logical. The interface to the HP's is also good. But RPN is not the best choice for scientific work, nor for student work.
For banging up some numbers to get an answer, RPN is indeed faster once you get the hang of it. But for careful work, it is better to have standard notation and a history of commands. Suppose the expression you are trying to evaluate has many terms. It is much better to enter each term into the calculator (in standard notation) and get a result. You then have a list of things you typed, and the responses from the calculator. With RPN you don't get this. Having the history helps with tracking down errors, and with keeping the entire problem in your head. Being able to go back and edit previous terms is wonderful, and you can't do that with RPN.
For example, Mathematica is a cross-platform application that is broken into two pieces: the kernel and the frontend. The kernel is responsible for all mathematical operations and computations, and the frontend is the GUI interface. These parts run as separate processes, to allow editing of Mathematica files without the overhead of starting the kernel, and also to allow the kernel to crash without taking all your work with it. The kernel and frontend can also run on separate machines.
So how do the two parts of Mathematica communicate? Wolfram could make some sort of COM or CORBA interface, but this would be a lot of extra work specific to one platform. If they use pipes, then it will work on every major platform. Unix has pipes, Windows has pipes, OS X has pipes. Pipes are a good choice for IPC since they are cross-platform. This study shows the developer what to expect from Windows pipes vs. Linux pipes. The conclusion is that Linux is amazingly fast at IPC, and the various Windows are fast enough for most purposes.
This used to be true, but I think this is no longer true. People are more and more likely to work at different computers and expect certain basic applications to work. For example, if I sit down at a random computer I expect it to have internet connectivity, a telnet program to check mail, a word processor, etc. People are treating computers more and more as commodity items. It shouldn't matter what operating system the computer is using; the application is the important thing. The only reason we interact with the operating system is because we have to in order to get work done. If an interface is good for one operating system, why should it be bad for another?
How is encrypted speech not speech? I don't agree at all. If I agree with a friend that when I say, "The rooster is crowing" that he will record the Superbowl, is it illegal for me to say "the rooster is crowing" in public? Not allowing people free access to encryption is like banning people from multiplying numbers together (seriously). Schemes like RSA really do involve repeated multiplications.
People should also consider that the Camls R Us team (who have won the competition using OCaml) were the ones running the competition, so they didn't have an entry!
From reading your webpage, it appears that the X25 is a 5x5 array of asynchronous processors that execute an assembly language very similar to Forth. How do they communicate and share information to do useful computations?
No, this would actually be really cool. Make an Apache module which automatically inserts something steganographically into every JPG it serves. Some people put encrypted data into the images, and others just direct it to read from randomly encrypted gibberish. Then the government has to deal with lots of script kiddies who think they are cool by embedding Brittney Spears mp3s into the images from their webpages.
There are eight E's in this sentence.
There are two A's in this sentence.
So you think it should be: there are two As in this sentence? That's a lot of ass.
My father is convinced that double-clicking on links makes the page load faster.
Files in /sbin are system binaries. These files are usually run by the administrator to configure or control the system. Different Unix operating systems have different commands here.
This is a bad blow for SSH the company. Didn't someone there quit a while ago since he disagreed about the decision to not provide source code to customers?
On that thought, maybe that's a good way to explain the "decryption" to the judge. Take an actual excerpt of an eBook encrypted file, then give it to your mother to do just like those cryptagram puzzles. Get her to write up an explanation of how she worked it out, and mail it to a friend. Show the judge the puzzle and her solution, then demand that they also throw your mom in jail for circumventing the encryption on the eBook (and distributing the crack)!
When I took drivers ed. I remember that we learned the rules for when cops can pull you over. Randomly checking for seatbelts was listed as illegal. They have to have a reason to stop you and pull you over, and if they notice your seatbelt isn't on then they can give you a fine. (This was in WA, may have changed and may be different in other states).
Here's something I would like to see: an interpreter for C code that follows exactly what gcc would do. Then you could make a nice GUI environment for programming, where everything happens as you type it with no compile cycle. Then at the end you compile everything to get speed.
There is a big difference from being tolerant of people making honest grammatical mistakes, and from putting up with people who can't be bothered to even make an effort to get things right (and who think it doesn't matter if they get it wrong). I agree with a previous poster. There are too many engineers and computer science students who don't think English skills matter.
It's a lot when you're a teenager that's bored in high school that's trying to program a cool new game. I remember mowing lawns to get the $150 (or whatever) to buy Borland C++ 3.1 (I still use it).
Yes. At UIUC, students own the copyrights to submitted work in general. The one exception that I have a problem with is patentable material. The UIUC policy says that if something is created at UIUC (for example in the lab) and submitted for a class, then any patent rights go to the university. Of course the things that are submitted for assignments are in general nowhere near patentable, but the principle matters.
I can think a better use of $50 to insure that your genes get propagated. It's called asking out that cute girl in class, taking her to a fancy restaurant, then knocking her up.
Move along, nothing to see...
The 7.0 compiler is not reliable. When compiling the NTL libraries, the compiler segfaults. This is bad, compilers are not supposed to crash! Don't tell me that the problem is because the source is no ISO compliant.