I can't quite decide what a first order object is... if someone has a good definition, I'd be curious to see it.
Here are the generally accepted definitions we use in programming language theory:
The term you want is "first-class object". A first-class object is one that can be passed to and returned from a function.
A "first-order object" is anything that is not a function. A first-order function is a function which can be passed or returns a first-order object. A second-order function is a function that can be passed or returns a first-order function. Thus, we say that a language is higher-order if functions of order n can be passed to or returned from functions of order n+1 for any n. A language is first-order if its functions are all first-order.
Of course, this presupposes that certain properties are satisfied. For example, you can pass to and return functions from functions in C, but C is not considered higher-order. When you return a nested function, you need to be able to retain the local bindings of variables from the enclosing scope, forming what is called a closure. You can't do this in C. The same is also true, incidentally, for Emacs LISP.
BTW, regarding Python features like significant whitespace (layout) and first-class tuples. Both of these are quite old concepts. I think Landin's language ISWIM, which dates back (correct me if I'm wrong) to the 60's had this. Among modern languages, Haskell also uses layout syntax. In fact, probably many of the best features of Python are features that grew to maturity in the functional language community. For example, Haskell also has first-class tuples and higher-order functions, and of course things like the map function are just part of your daily bread and butter. Incidentally, Haskell is also being used increasingly for Internet scripting and CGI, and it has the advantages over Python that it is strongly typed, lazy and much more efficient; yet there still exist interpreters, etc. for it.
I think programmers, hackers and techies in general who believe in freedom of information need to establish a lobby group/SIG now before all our rights are obliterated by the legislation promulgated by corporate lobbies and the absurd things going on at the US patent office now. The longer we wait, the worse it will get.
I wish there were some laws, or at least MORALS which software companies followed, and resulted in user choice for every modification(within reason) to the user's computer.
I strongly disagree with this sort of attitude. I definitely believe that software manufacturer's should take responsibility for ensuring that their software operates properly, and that they make the exact specification of a program public, but I don't think that that should become a legal matter. How could you possibly enforce such a thing?
If you run an application on your computer, and it destroys some valuable settings or even files, that's your fault, especially if it's free (as in beer). No one forced you to run it or install it. No one twisted your arm. Certainly you want to prevent that sort of thing, but preventing it is a security matter; it should be enforced by software, not legislation.
Suppose it did become a law. Here's a really extreme example. Some newbie downloads a program which wipes his hard drive, and he sues the maker. We can imagine many scenarios. Maybe the program is actually intended to wipe drives; that's its purpose. Maybe the program is an HD utility. Maybe the program didn't come with proper documentation. Maybe the program is just buggy. In any case, the newbie was too rash or he didn't bother to read the docs or there were no docs but he was stupid enough to trust it anyway.
Now the newbie's lawyer has to prove that the program is malicious in some way. Obviously an HD utility is not a malicious program, so you might not think that such a case would stand up in court. But suppose the docs did not describe the functionality well enough, or correctly. Now the lawyer has a big opening: he can claim, using our new hypothetical law, that the software maker was irresponsible in distributing such software. What's the extrapolated result? People stop distributing software that can do anything useful for fear of being sued. Wonderful.
Software is not malicious or irresponsible: software makers are. We agree on this, right? Now here's the crux of the problem: you cannot deduce the intent of the maker from the behavior of their software. Every program has a legitimate use. Even so-called viruses. A virus, is after all, a very efficient way of widely spreading (or gathering!) information. Of course, we do not call useful viruses "viruses". Sometimes we call them robots or agents. What distinguishes a virus from an agent is the intent of the maker.
I hope AOL wins this suit. I don't want to see lawmakers deciding what is a malicious program and what isn't.
Quantum computing is one thing I have been meaning to learn a little about but never found the time for. Judging from the description above, it sounds like purely functional programming languages like Haskell, Opal and DSSSL would be killer apps on a quantum computer: in FP, there are no irreversible state changes, there is exactly one result and intermediate results are not observable since loops are generally performed by recursion rather than iteration. It may turn out that for quantum computers FP is a much more "low-level" paradigm than imperative programming...
if there is anything resembling a universal language in this world, it's English.
You wouldn't say that a century ago. You won't say that in a century.
A century ago, there was no global communications system. In a century matters might well change, I agree. But probably as long as America is the world's most powerful economic, technological and military force, English will remain the de facto lingua franca. Also, it seems unlikely that all the scientific results which have accumulated in English form will be translated wholesale into another language any time soon. (OTOH, programming and specification languages are approaching a state where mathematics can be codified to a reasonable degree, so this may turn out to be unimportant.)
Dubbed versions of films are hardly ever as popular as subtitled ones
Goes with the country. Try to find a subtitled film in a medium-sized Spanish town. Try to find a non-English nor Spanish dubbed film.
I suppose this is probably true. I am speaking from my experience in Japan, where if you go to a video rental shop you will find that 85% of the copies of a new release are subtitled, and all of the old releases are.
it will probably be Chinese, if only because 1/5 of the planet speaks the language.
The languages. But it's quite probably we'll switch to some form of Chinese.
I was actually discounting Cantonese. Far, far more people speak some form of Mandarin.
We already have a "Universal Language." It's called English.
I'm not trying to be facetious; I'm not saying English is better than other languages; and I'm not saying that English will serve you best, or even tolerably well in all places; but it is an inevitable conclusion you must come to after spending any reasonable length of time abroad: if there is anything resembling a universal language in this world, it's English.
English is already a lingua franca in technical and many academic fields. Many universities in non-English-speaking countries actually demand that graduate students write their theses in English, because that is the best way to ensure its diffusion. Some such schools even conduct their classes themselves in English.
The Hollywood movie industry has also no doubt played a large part in helping to making English (not to mention Western culture) palatable and popular the world over. Dubbed versions of films are hardly ever as popular as subtitled ones (exception: kiddie films).
Is English the best choice for a universal language? Definitely not from the point of being easy to learn. Esperanto would be much better. But realistically Esperanto doesn't have a chance. If English ever encounters a contender, it will probably be Chinese, if only because 1/5 of the planet speaks the language.
I've been thinking alot about patents and the USPTO as of late, and I've begun to realize a much more politically effective and valid way to make the non-technical understand just how corrupt the US Patent system really is.
Covert taxation backing a none-too-subtle amount of graft.
Dear Mr. Kaminsky,
Your use of a "thesis statement and supporting evidence" is in violation of our patent on Logically Supported Critical Argumentation Technology (US patent #591273297689786576). Please refrain in the future from using this method of reasoning or we will be forced to enjoin our lawyers to initiate legal measures against you and your employers.
Yours Truly,
Walter P. Quackmeyer Everything Under The Sun Enterprises(R)
P.S. Don't bother replying either; such an action would likely be in violation of our Witty Rejoinder Technology (US Patent #98217439102738) and would also put you in danger of receiving legal action.
P.P.S. The style of humor presented in this article is covered by our pending patent, Cynical/Sarcastic Humorous Remarks Technology.
Here are the generally accepted definitions we use in programming language theory:
The term you want is "first-class object". A first-class object is one that can be passed to and returned from a function.
A "first-order object" is anything that is not a function. A first-order function is a function which can be passed or returns a first-order object. A second-order function is a function that can be passed or returns a first-order function. Thus, we say that a language is higher-order if functions of order n can be passed to or returned from functions of order n+1 for any n. A language is first-order if its functions are all first-order.
Of course, this presupposes that certain properties are satisfied. For example, you can pass to and return functions from functions in C, but C is not considered higher-order. When you return a nested function, you need to be able to retain the local bindings of variables from the enclosing scope, forming what is called a closure. You can't do this in C. The same is also true, incidentally, for Emacs LISP.
BTW, regarding Python features like significant whitespace (layout) and first-class tuples. Both of these are quite old concepts. I think Landin's language ISWIM, which dates back (correct me if I'm wrong) to the 60's had this. Among modern languages, Haskell also uses layout syntax. In fact, probably many of the best features of Python are features that grew to maturity in the functional language community. For example, Haskell also has first-class tuples and higher-order functions, and of course things like the map function are just part of your daily bread and butter. Incidentally, Haskell is also being used increasingly for Internet scripting and CGI, and it has the advantages over Python that it is strongly typed, lazy and much more efficient; yet there still exist interpreters, etc. for it.
I think programmers, hackers and techies in general who believe in freedom of information need to establish a lobby group/SIG now before all our rights are obliterated by the legislation promulgated by corporate lobbies and the absurd things going on at the US patent office now. The longer we wait, the worse it will get.
I strongly disagree with this sort of attitude. I definitely believe that software manufacturer's should take responsibility for ensuring that their software operates properly, and that they make the exact specification of a program public, but I don't think that that should become a legal matter. How could you possibly enforce such a thing?
If you run an application on your computer, and it destroys some valuable settings or even files, that's your fault, especially if it's free (as in beer). No one forced you to run it or install it. No one twisted your arm. Certainly you want to prevent that sort of thing, but preventing it is a security matter; it should be enforced by software, not legislation.
Suppose it did become a law. Here's a really extreme example. Some newbie downloads a program which wipes his hard drive, and he sues the maker. We can imagine many scenarios. Maybe the program is actually intended to wipe drives; that's its purpose. Maybe the program is an HD utility. Maybe the program didn't come with proper documentation. Maybe the program is just buggy. In any case, the newbie was too rash or he didn't bother to read the docs or there were no docs but he was stupid enough to trust it anyway.
Now the newbie's lawyer has to prove that the program is malicious in some way. Obviously an HD utility is not a malicious program, so you might not think that such a case would stand up in court. But suppose the docs did not describe the functionality well enough, or correctly. Now the lawyer has a big opening: he can claim, using our new hypothetical law, that the software maker was irresponsible in distributing such software. What's the extrapolated result? People stop distributing software that can do anything useful for fear of being sued. Wonderful.
Software is not malicious or irresponsible: software makers are. We agree on this, right? Now here's the crux of the problem: you cannot deduce the intent of the maker from the behavior of their software. Every program has a legitimate use. Even so-called viruses. A virus, is after all, a very efficient way of widely spreading (or gathering!) information. Of course, we do not call useful viruses "viruses". Sometimes we call them robots or agents. What distinguishes a virus from an agent is the intent of the maker.
I hope AOL wins this suit. I don't want to see lawmakers deciding what is a malicious program and what isn't.
Quantum computing is one thing I have been meaning to learn a little about but never found the time for. Judging from the description above, it sounds like purely functional programming languages like Haskell, Opal and DSSSL would be killer apps on a quantum computer: in FP, there are no irreversible state changes, there is exactly one result and intermediate results are not observable since loops are generally performed by recursion rather than iteration. It may turn out that for quantum computers FP is a much more "low-level" paradigm than imperative programming...
A century ago, there was no global communications system. In a century matters might well change, I agree. But probably as long as America is the world's most powerful economic, technological and military force, English will remain the de facto lingua franca. Also, it seems unlikely that all the scientific results which have accumulated in English form will be translated wholesale into another language any time soon. (OTOH, programming and specification languages are approaching a state where mathematics can be codified to a reasonable degree, so this may turn out to be unimportant.)
I suppose this is probably true. I am speaking from my experience in Japan, where if you go to a video rental shop you will find that 85% of the copies of a new release are subtitled, and all of the old releases are.
I was actually discounting Cantonese. Far, far more people speak some form of Mandarin.
BH
We already have a "Universal Language." It's called English.
I'm not trying to be facetious; I'm not saying English is better than other languages; and I'm not saying that English will serve you best, or even tolerably well in all places; but it is an inevitable conclusion you must come to after spending any reasonable length of time abroad: if there is anything resembling a universal language in this world, it's English.
English is already a lingua franca in technical and many academic fields. Many universities in non-English-speaking countries actually demand that graduate students write their theses in English, because that is the best way to ensure its diffusion. Some such schools even conduct their classes themselves in English.
The Hollywood movie industry has also no doubt played a large part in helping to making English (not to mention Western culture) palatable and popular the world over. Dubbed versions of films are hardly ever as popular as subtitled ones (exception: kiddie films).
Is English the best choice for a universal language? Definitely not from the point of being easy to learn. Esperanto would be much better. But realistically Esperanto doesn't have a chance. If English ever encounters a contender, it will probably be Chinese, if only because 1/5 of the planet speaks the language.
BH
Dear Mr. Kaminsky,
Your use of a "thesis statement and supporting evidence" is in violation of our patent on Logically Supported Critical Argumentation Technology (US patent #591273297689786576). Please refrain in the future from using this method of reasoning or we will be forced to enjoin our lawyers to initiate legal measures against you and your employers.
Yours Truly,
Walter P. Quackmeyer
Everything Under The Sun Enterprises(R)
P.S. Don't bother replying either; such an action would likely be in violation of our Witty Rejoinder Technology (US Patent #98217439102738) and would also put you in danger of receiving legal action.
P.P.S. The style of humor presented in this article is covered by our pending patent, Cynical/Sarcastic Humorous Remarks Technology.