I already moderated in this thread but I couldn't see any good response to you post to moerate up so I think it's better to post than moderate in this situation.
A few days ago I read that article: http://www.linuxworld.com/story/43614.htm which is a response by "an Adjunct Professor at Duquesne University School of Law teaching upper-level intellectual property law" to some GPL related FUD spewed by a "retired physicist".
In that avery interesting article there was these two extract that are related to your question (first is an example like yours but with a Patent license instead of Copyright license):
"but I cannot make the license conditional upon the president of ABC standing on his head for one hour every Tuesday morning at 9:00 am. Why? That condition has no relationship to the benefits I can expect to gain from my status as a patent holder."
"If we take this principle and apply it to the GPL, the original licensor is conditioning his license to the world at large on one simple condition - "If you want to copy and make derivative works of my code, you have to license those derivatives under a license like this one...." [...] It relates directly to the benefits the copyright holder can expect to obtain. A copyright holder benefits by having sole control of his copyrighted work [...] The copyright holder in this case is merely conditioning his license to create derivative works on the condition that such derivatives be licensed under similar terms, to prevent the licensee (for example) from copying his code and incorporating it into a proprietary product for which she can then charge money, competing with the original copyright holder, and denigrating the benefits the copyright holder derives from his copyright."
"Sure. The problem is that this is not the case for most software; most people do not consider the possibility that the FSF might not act in their best interests."
Given that the FSF board of director includes, among other, RMS, Eben Moglen and now Lawrence Lessig and due to the way I have seen them argue for Free Software I do not consider such a possibility very likely in the foreseeable future.
This is also probably the case for Bradley Kuhn, Gerald Sussman and the last board member (whose name I do not remember) but I do not know quite as much about their point of view to take it into account (although this is a lack that you encouraged me to do).
Also, I think that I will try to see if the FSF has any kind of charter that limits the freedom of movement of its board (and I do not know what kind of legal binding power such a charter would confer if it was broken).
Anyway, while I think that it is possible that the FSF can turn evil I also believe it to be very unlikely in the foreseeable future and even if they did turn evil we would just fork every project under the GPL v2 and continue from there. Sure, they still would control a huge amount of code but the situation would be much better than before the FSF was founded for the Free Software community would also control that huge amount of code via the fork.
In other word, I consider the FSF turning evil the Free Software equivalent to an asteroid threat: something that is possible and happened in the past* but with astronomical odds stacked against it and while it could happen tomorrow and while we are gonna keep looking out for the threat we ain't gonna lose any sleep over it.
* Well, not with the FSF but with other human organisations turned bad
"has the freedom to write the GPLv3, with which GPL software by default can be automatically moved to."
Not quite true.
By default, if you put it under the GPL but do not specify a version number, you can use any version of the GPL you want to redistribute the software. If you put a version number then you can only redistribute it under that version of the GPL (like Linux). If you put a version number and "any later version" then you can also redistribute it under any GPL version that is greater than the originally licensed version number.
So in your example of a company/somebody taking control of the FSF and issuing a GPLv3 that the community doesn't like we would do just like with the XFree86 license change and fork all this "GPL v. x.y or any later version" software by choosing only the GPL v. x.y that we like and continue development on that.
The FSF could still use the code up to the fork with the new GPL but wouldn't be able to use the new code in the fork since that code is only available under the old GPL.
That's exactly the same as with the XFree86 license change (although in your example the FSF turns evil whereas the XFree guys haven't).
If you are really concerned that you will not like the next GPL version you can always license your code only to the GPL version you like, like Linus did.
I'm afraid that your fears are nothing new and have already been dealt with.
I am not sure that the difference between having all the processors and memory in the same case and having them in different cases is all that significant *on a conceptual level*.
If you look at a Pentium IV it is like a Cray in that its different processors have equal access to the memory via the shared frontside bus but this turn out to become a bottleneck if the bus is not fast enough.
If you look at an Opteron it is more like a cluster in that the memory is attached to different processors and the processors are attached together by another bus so that accessing the memory attached to another processor probably isn't quite as fast as accessing the memory directly attached to the processor doing the access.
What I mean is that if we had a fast enough ethernet link between boxes then the difference between a cluster and a cray would only be cosmetic.
Of course this lead to the question of what is the internal architecture of this new Cray machine. Are the processors all accessing the same pool of memory at the same speed or are they having slight delays between different pools of memory and using NUMA to adress that?
Given that they talk about using AMD chips I would guess the latter, which would put them in the same conceptual basket as clusters, but with their conceptual cluster having big badass network links between themselves.
In other words, cryptography is but a link and even if it is the strongest link you have your weakest link still defines the maximum security of your system.
I don't buy that because a function needs to be logically nested it needs to be lexically nested as well.
It doesn't have to but when a function is only used by another function it helps to be able to visually relate them (wasn't that your point about using indentation?).
And procedural languages reveal structure via whitespace far better than nested languages. That's why such rules were invented for them - because people were violating the structure by writing as if the code was nested.
I must say that I really don't see how you can come to that conclusion but I guess that we agree to disagree.
As for embedded comments, I said EMBEDDED - not before, after or at ends of lines. If you have a program consisting primarily of nested code, comments are forced to be separated from the code. If you keep your nesting limited to a couple lines, this is presumably no problem. I was talking about anything more than that.
Would you care for an example?
Do you mean something like having the comment in the middle of the expression? If so it seems that it would reduce readability by breaking the structure.
If you are talking about literate programming then I must say that I have difficulty imagining having it done in functional languages the same way it is done for procedural languages.
The examples I saw of literate programming for functional languages were not coupling documentation and code all that much (the documentation was above the code, not weaved with it).
However I feel that it is a different discussion to embedding comments (which I don't understand what you mean by it).
In any event, the primary problem is that LISP code is designed to be machine processable, not human readable or even logically structured.
I must say that this statement makes me smile.
Lisp traditionally was slow because it did not map directly to the way a computer execute a program.
Since then we have learned how to optimise compilation so that it gives comparable speed to procedural languages but it still doesn't map very well to how a machine process a program.
If you mean by "machine processable" that it exposes the syntactic tree normally built by the compiler then I agree with you.
But that is considered a feature and it is both the reason for most people's hate of Lisp (because it is what causes all theses parentheses) and much of its power (because it allows program writing programs due to the easy and regular structure, all this done via macros).
As for logically structure, Lisp is based on lambda calculus, that is, Lisp *IS* mathematics to a high degree. How more logically structured can you get?
The bottom line remains that if LISP were a superior language for internal documentation purposes, it would be used as such. It isn't because it isn't.
Since when are we talking about internal documentation? We were talking about Lots of Insipid and Stupid Parentheses and their consequences in the design of Lisp.
This is obviously a religious conversation on your end, however, which I don't feel inclined to continue.
Given that you shout things that are totally opposite to reality I must say that I personally think that you are talking by your own computer language religious dogmas so I guess we won't ever agree.
However, if you do not want to continue this conversation maybe you will want to start another one.
Namely, what do you think of XML?
After all, whereas a lisp s-expression is an opening parenthese, a function/macro name, a subexpression and then a closing parenthese (like this: (recipe (ingredients...) (instructions...)); XML is a label in bracket (combining the opening parenthese and the name) followed by a subexpression and followed by a slash-preceded label in brack
Re:'Canada's national newspaper' !?!?!
on
Linux in Canada
·
· Score: 1
"So, when do we all start group therapy?"
LOL.
I don't have any problem actually. Of course working with a mix of Spanish, Portuguese, Iraqui, Venezuelians and English (of course) helps smooth the differences.
Re:'Canada's national newspaper' !?!?!
on
Linux in Canada
·
· Score: 1
"I live in Canada and work in the states. I'm in Mississippi right now. I FEEL YOUR PAIN. I'm pretty sick of even the nicest people, upon hearing where you're from, having to dump on you all the stupid and mostly untrue BS they've heard about your country, and what they think is wrong with it."
I'm a Frenchman living in England. How do you think *I* feel?
For the last thirty years, people have been exhorted to use indentation and other lexical structural means to expose program structure in order to reduce bugs and the cost of program maintenance which is many times the cost of program development.
Which the functional style encouraged by Lisp helps to do.
With procedural style programming you do one thing after another it is less natural (if possible at all in some languages) to nest functions that should logically be nested so that you have to put what should be the inner function of an outer function above/below it and unnecessarily pollute the namespace with one more name (luckily there are modules).
Procedural languages are more likely to have their code be visually monotone, only going from top to bottom.
Functional languages are more likely to have their code be visually flowing not only from top to bottom but from left to right, exposing more structure.
I must say I really cannot see how you can argue that Lisp is worst at exposing structure than, say, C (unless you are trolling me of course but for now I assume you aren't).
Now imagine several hundred thousands lines of code crushed into a few hundred with parentheses.
Ridiculous.
Ridiculous indeed and quite possible too, if you have a 4 miles wide monitor that is.
If your code starts to become too indented you will simply reorganise it so that you have a few inner functions in a let/let*/letrec and the body of the code calls them instead of having their definition in it.
With a lot of imagination you can take any principle to the extreme and conclude that that principle is total bunk, but it is a problem with you, not with te principle (and now I really must say that I feel like you are trolling me given your use of two laughable arguments).
presumably without any comments since how do you embed comments in nested parentheses readably?
The same way I would comment in C; either before a code block or after or at the end of the line for small comments.
You seem to believe that because Lisp encourages indentation it encourages excessive indentation. This is not the case because excessive indentation also makes the code harder to write.
You wouldn't have the code flow totally vertically like C, nor have it flow totally horizontally (unreadable) but it would wave horizontally as it progresses vertically, going right gradually then going back to the left as a logical block ends, then progressing right again.
I tried posting some sample code but the filter kicks in given that it flows right with increasingly more whitespace on the left.
I see that as supporting my point: you can post procedural code because it doesn't use the horizontal space (and therefore whitespaces) to expose the structure but given that Lisp uses whitspaces on the left of the line to expose the structure of the code horizontally the filter kicks in and whines about too many spaces.
If you want to see them e-mail me at rousseauj1SP@Myahoo.com (remove the SP M of course).
"In addition, if you bike, you're using a tool to help you. When you're running, it's you and the road and nothing else to help you. The sense of achievement is more."
What about your shoes? Unless you are running bare-footed, in which case I bow to you.
"True, you can go further and longer on a bike, but it's still not really the same."
True, you can go further and longer with shoes, but it's still not really the same.
Somebody is gonna reply "feet? We didn't have no stinkin' feet when we where young lads, AND WE LIKED IT THAT WAY!"
"If I wanted something easy on me, I'd have chosen knitting."
Don't worry, when the joints in your legs are all used up with the higher impact of running you can still use your hands to knit while we continue to bike;)
What I do is I use a stationary bike when I read Slashdot or browse the web in general.
I took the cover to change my harddrive off and use it to keep the front of the laptop from falling off (it's solid enough to support the laptop without breaking... so far) while the back rests on the handlebar.
It's a bit harder to type that way: the part of the palms of my hands near the wrists is resting on the bike's "computer" for support which is alright but the same "computer" blocks the synaptic pad so using the mouse is much more complicated (hurray for keyboard bindings*).
That way I can indulge in Slashdot reading without shame of all the time I spend there.
Also, while I generally use the lowest resistance because of the length I use it, it is good to sometime crank it up for 1/2 minutes to give your legs and your heart a more varied workout (and the lowest resitance feels so much easier after using more resistance for a while).
I do intend to combine it with weight training later on but I would like to see how I would look with similar muscle mass and little fat and I don't feel in a hurry to lose weight so it's deferred for later.
* Any advice on software to reduce mouse use on Linux? (fedora core 1, soon 2, or Debian).
C frequently uses traditional parentheses (()), pointy parentheses ({}) and square parentheses ([]).
Lisp (Scheme in this example) frequently uses parentheses (()) and dash-preceded parentheses for vectors (#()).
So two kinds of parentheses instead of three.
QED;)
Now it is put as a joke but it should show you that if you realise that C uses different syntactical elements for nesting bits of syntax (function arguments, blocks of code, array parameters) where Lisp is more regular and that if you count all these different syntactic elements I don't think you would get all that many more parentheses for Lisp.
The part that would tend to add more parentheses to Lisp is when precedence operators in C allow the programmer to omit some parentheses. Because it has an prefix syntax you cannot do that in Lisp (unless you have a way to go from a prefix syntax to an infix one like (+ 2 {3 * b + c / 6} for example but then you are outside of Lisp's syntax so it doesn't really count).
Anyway, even if Lisp syntax really had that many more parentheses than C (and C-style) syntax I wouldn't mind it given that they are not superfluous.
Question: Would you learn a Lisp that used indentation, like Python, instead of parentheses to represent nesting?
AFAIK, Dylan is (mostly) Scheme without the Lisp syntax.
As for the syntax, the inventor of Lisp himself thought that it would be replaced by a more traditional syntax but the power given by having the syntax model the parse tree and having the same syntax for code and data made is such that oterh syntaxes didn't become popular with those that grokked Lisp so it stuck with it (I don't have the reference handy but I am reasonably sure that it was in one of Paul Graham's papers).
After a bit of searching:.From "Revenge of the Nerds" (http://www.paulgraham.com/icad.html):
Quoting McCarthy (the inventor of Lisp): "Another way to show that Lisp was neater than Turing machines was to write a universal Lisp function and show that it is briefer and more comprehensible than the description of a universal Turing machine. This was the Lisp function eval..., which computes the value of a Lisp expression.... Writing eval required inventing a notation representing Lisp functions as Lisp data, and such a notation was devised for the purposes of the paper with no thought that it would be used to express Lisp programs in practice."
"Steve Russell said, look, why don't I program this eval..., and I said to him, ho, ho, you're confusing theory with practice, this eval is intended for reading, not for computing. But he went ahead and did it. That is, he compiled the eval in my paper into [IBM] 704 machine code, fixing bugs, and then advertised this as a Lisp interpreter, which it certainly was. So at that point Lisp had essentially the form that it has today...."
From "History of Lisp" (1978) (quoted here: http://www.lisp.org/table/syntax.htm): McCarthy: "... Another reason for the initial acceptance of awkwardnesses in the internal form of LISP is that we still expected to switch to writing programs as M-expressions [infix format]. The project of defining M-expressions precisely and compiling them or at least translating them into S-expressions was neither finalized nor explicitly abandoned. It just receded into the indefinite future, and a new generation of programmers appeared who preferred internal notation to any FORTRAN-like or ALGOL-like notation that could be devised.... One can even conjecture that LISP owes its survival specifically to the fact that its programs are lists, which everyone, including me, has regarded as a disadvantage. Proposed replacements for LISP... abandoned this feature in favor of an Algol-like syntax, leaving no target language for higher level systems".
So Lisp had other syntaxes, they just didn't become popular (for Lispers).
"And usually a troll is a mythical being that lives under bridges and eats people who pass by."
Yeah, but do they roast them, mince&boil them or smash them?
"Hopefully I'm collecting some good karma somewhere.
All I can say is that if you are it probably isn't in Redmond nor in Provoh(sp?).
Nah, it's obviously Microsoft that saw what an horrible thing SCO was doing and gave them a trojan horse to help Linux along.
I already moderated in this thread but I couldn't see any good response to you post to moerate up so I think it's better to post than moderate in this situation.
A few days ago I read that article: http://www.linuxworld.com/story/43614.htm which is a response by "an Adjunct Professor at Duquesne University School of Law teaching upper-level intellectual property law" to some GPL related FUD spewed by a "retired physicist".
In that avery interesting article there was these two extract that are related to your question (first is an example like yours but with a Patent license instead of Copyright license):
"but I cannot make the license conditional upon the president of ABC standing on his head for one hour every Tuesday morning at 9:00 am. Why? That condition has no relationship to the benefits I can expect to gain from my status as a patent holder."
"If we take this principle and apply it to the GPL, the original licensor is conditioning his license to the world at large on one simple condition - "If you want to copy and make derivative works of my code, you have to license those derivatives under a license like this one...." [...] It relates directly to the benefits the copyright holder can expect to obtain. A copyright holder benefits by having sole control of his copyrighted work [...] The copyright holder in this case is merely conditioning his license to create derivative works on the condition that such derivatives be licensed under similar terms, to prevent the licensee (for example) from copying his code and incorporating it into a proprietary product for which she can then charge money, competing with the original copyright holder, and denigrating the benefits the copyright holder derives from his copyright."
Does that answer your question?
"Sure. The problem is that this is not the case for most software; most people do not consider the possibility that the FSF might not act in their best interests."
Given that the FSF board of director includes, among other, RMS, Eben Moglen and now Lawrence Lessig and due to the way I have seen them argue for Free Software I do not consider such a possibility very likely in the foreseeable future.
This is also probably the case for Bradley Kuhn, Gerald Sussman and the last board member (whose name I do not remember) but I do not know quite as much about their point of view to take it into account (although this is a lack that you encouraged me to do).
Also, I think that I will try to see if the FSF has any kind of charter that limits the freedom of movement of its board (and I do not know what kind of legal binding power such a charter would confer if it was broken).
Anyway, while I think that it is possible that the FSF can turn evil I also believe it to be very unlikely in the foreseeable future and even if they did turn evil we would just fork every project under the GPL v2 and continue from there. Sure, they still would control a huge amount of code but the situation would be much better than before the FSF was founded for the Free Software community would also control that huge amount of code via the fork.
In other word, I consider the FSF turning evil the Free Software equivalent to an asteroid threat: something that is possible and happened in the past* but with astronomical odds stacked against it and while it could happen tomorrow and while we are gonna keep looking out for the threat we ain't gonna lose any sleep over it.
* Well, not with the FSF but with other human organisations turned bad
"has the freedom to write the GPLv3, with which GPL software by default can be automatically moved to."
Not quite true.
By default, if you put it under the GPL but do not specify a version number, you can use any version of the GPL you want to redistribute the software. If you put a version number then you can only redistribute it under that version of the GPL (like Linux). If you put a version number and "any later version" then you can also redistribute it under any GPL version that is greater than the originally licensed version number.
So in your example of a company/somebody taking control of the FSF and issuing a GPLv3 that the community doesn't like we would do just like with the XFree86 license change and fork all this "GPL v. x.y or any later version" software by choosing only the GPL v. x.y that we like and continue development on that.
The FSF could still use the code up to the fork with the new GPL but wouldn't be able to use the new code in the fork since that code is only available under the old GPL.
That's exactly the same as with the XFree86 license change (although in your example the FSF turns evil whereas the XFree guys haven't).
If you are really concerned that you will not like the next GPL version you can always license your code only to the GPL version you like, like Linus did.
I'm afraid that your fears are nothing new and have already been dealt with.
I am not sure that the difference between having all the processors and memory in the same case and having them in different cases is all that significant *on a conceptual level*.
If you look at a Pentium IV it is like a Cray in that its different processors have equal access to the memory via the shared frontside bus but this turn out to become a bottleneck if the bus is not fast enough.
If you look at an Opteron it is more like a cluster in that the memory is attached to different processors and the processors are attached together by another bus so that accessing the memory attached to another processor probably isn't quite as fast as accessing the memory directly attached to the processor doing the access.
What I mean is that if we had a fast enough ethernet link between boxes then the difference between a cluster and a cray would only be cosmetic.
Of course this lead to the question of what is the internal architecture of this new Cray machine. Are the processors all accessing the same pool of memory at the same speed or are they having slight delays between different pools of memory and using NUMA to adress that?
Given that they talk about using AMD chips I would guess the latter, which would put them in the same conceptual basket as clusters, but with their conceptual cluster having big badass network links between themselves.
You do realise that you have just given MS and SCO their most credible argument against Linux so far.
Let's just hope they are not Monty Python fans.
When your job is outsourced to India we will see what way you come up with to both feed yourself and pay the rent.
In other words, cryptography is but a link and even if it is the strongest link you have your weakest link still defines the maximum security of your system.
It doesn't have to but when a function is only used by another function it helps to be able to visually relate them (wasn't that your point about using indentation?). And procedural languages reveal structure via whitespace far better than nested languages. That's why such rules were invented for them - because people were violating the structure by writing as if the code was nested. I must say that I really don't see how you can come to that conclusion but I guess that we agree to disagree.
Would you care for an example?
Do you mean something like having the comment in the middle of the expression? If so it seems that it would reduce readability by breaking the structure.
If you are talking about literate programming then I must say that I have difficulty imagining having it done in functional languages the same way it is done for procedural languages.
The examples I saw of literate programming for functional languages were not coupling documentation and code all that much (the documentation was above the code, not weaved with it).
However I feel that it is a different discussion to embedding comments (which I don't understand what you mean by it).
I must say that this statement makes me smile.
Lisp traditionally was slow because it did not map directly to the way a computer execute a program.
Since then we have learned how to optimise compilation so that it gives comparable speed to procedural languages but it still doesn't map very well to how a machine process a program.
If you mean by "machine processable" that it exposes the syntactic tree normally built by the compiler then I agree with you.
But that is considered a feature and it is both the reason for most people's hate of Lisp (because it is what causes all theses parentheses) and much of its power (because it allows program writing programs due to the easy and regular structure, all this done via macros).
As for logically structure, Lisp is based on lambda calculus, that is, Lisp *IS* mathematics to a high degree. How more logically structured can you get?
Since when are we talking about internal documentation? We were talking about Lots of Insipid and Stupid Parentheses and their consequences in the design of Lisp.
Given that you shout things that are totally opposite to reality I must say that I personally think that you are talking by your own computer language religious dogmas so I guess we won't ever agree.
...) (instructions ...)); XML is a label in bracket (combining the opening parenthese and the name) followed by a subexpression and followed by a slash-preceded label in brack
However, if you do not want to continue this conversation maybe you will want to start another one.
Namely, what do you think of XML?
After all, whereas a lisp s-expression is an opening parenthese, a function/macro name, a subexpression and then a closing parenthese (like this: (recipe (ingredients
"So, when do we all start group therapy?"
LOL.
I don't have any problem actually. Of course working with a mix of Spanish, Portuguese, Iraqui, Venezuelians and English (of course) helps smooth the differences.
"I live in Canada and work in the states. I'm in Mississippi right now. I FEEL YOUR PAIN. I'm pretty sick of even the nicest people, upon hearing where you're from, having to dump on you all the stupid and mostly untrue BS they've heard about your country, and what they think is wrong with it."
I'm a Frenchman living in England. How do you think *I* feel?
Doesn't it also pose a greater risk of arthritis?
Anyway, I am not especially for or against running/cycling.
Both are better than being a fat couch potatoe and they give different tradeoffs.
Anyway, HAND YHNBT (Have A Nice Day, You Have Not Been Trolled, at least not by me).
Which the functional style encouraged by Lisp helps to do.
With procedural style programming you do one thing after another it is less natural (if possible at all in some languages) to nest functions that should logically be nested so that you have to put what should be the inner function of an outer function above/below it and unnecessarily pollute the namespace with one more name (luckily there are modules).
Procedural languages are more likely to have their code be visually monotone, only going from top to bottom.
Functional languages are more likely to have their code be visually flowing not only from top to bottom but from left to right, exposing more structure.
I must say I really cannot see how you can argue that Lisp is worst at exposing structure than, say, C (unless you are trolling me of course but for now I assume you aren't).
Ridiculous indeed and quite possible too, if you have a 4 miles wide monitor that is.
If your code starts to become too indented you will simply reorganise it so that you have a few inner functions in a let/let*/letrec and the body of the code calls them instead of having their definition in it.
With a lot of imagination you can take any principle to the extreme and conclude that that principle is total bunk, but it is a problem with you, not with te principle (and now I really must say that I feel like you are trolling me given your use of two laughable arguments).
The same way I would comment in C; either before a code block or after or at the end of the line for small comments.
You seem to believe that because Lisp encourages indentation it encourages excessive indentation. This is not the case because excessive indentation also makes the code harder to write.
You wouldn't have the code flow totally vertically like C, nor have it flow totally horizontally (unreadable) but it would wave horizontally as it progresses vertically, going right gradually then going back to the left as a logical block ends, then progressing right again.
I tried posting some sample code but the filter kicks in given that it flows right with increasingly more whitespace on the left.
I see that as supporting my point: you can post procedural code because it doesn't use the horizontal space (and therefore whitespaces) to expose the structure but given that Lisp uses whitspaces on the left of the line to expose the structure of the code horizontally the filter kicks in and whines about too many spaces.
If you want to see them e-mail me at rousseauj1SP@Myahoo.com (remove the SP M of course).
"In addition, if you bike, you're using a tool to help you. When you're running, it's you and the road and nothing else to help you. The sense of achievement is more."
What about your shoes? Unless you are running bare-footed, in which case I bow to you.
"True, you can go further and longer on a bike, but it's still not really the same."
True, you can go further and longer with shoes, but it's still not really the same.
Somebody is gonna reply "feet? We didn't have no stinkin' feet when we where young lads, AND WE LIKED IT THAT WAY!"
"If I wanted something easy on me, I'd have chosen knitting."
Don't worry, when the joints in your legs are all used up with the higher impact of running you can still use your hands to knit while we continue to bike
What I do is I use a stationary bike when I read Slashdot or browse the web in general.
I took the cover to change my harddrive off and use it to keep the front of the laptop from falling off (it's solid enough to support the laptop without breaking... so far) while the back rests on the handlebar.
It's a bit harder to type that way: the part of the palms of my hands near the wrists is resting on the bike's "computer" for support which is alright but the same "computer" blocks the synaptic pad so using the mouse is much more complicated (hurray for keyboard bindings*).
That way I can indulge in Slashdot reading without shame of all the time I spend there.
Also, while I generally use the lowest resistance because of the length I use it, it is good to sometime crank it up for 1/2 minutes to give your legs and your heart a more varied workout (and the lowest resitance feels so much easier after using more resistance for a while).
I do intend to combine it with weight training later on but I would like to see how I would look with similar muscle mass and little fat and I don't feel in a hurry to lose weight so it's deferred for later.
* Any advice on software to reduce mouse use on Linux? (fedora core 1, soon 2, or Debian).
"of" should be "off".
Now let's read some more until the timeout expires...
"Rhamathore Jerpathemagali doesn't roll off the tongue the same as Ron Jermey(sic)"
Maybe, but I have to ask you: Do you really want to have Ron Jeremy roll of your tongue?
>>We're all free thinkers
>I'm not.
>No
Arrrgh!
"LISP doesn't have more parentheses?"
Of course it doesn't.
C frequently uses traditional parentheses (()), pointy parentheses ({}) and square parentheses ([]).
Lisp (Scheme in this example) frequently uses parentheses (()) and dash-preceded parentheses for vectors (#()).
So two kinds of parentheses instead of three.
QED
Now it is put as a joke but it should show you that if you realise that C uses different syntactical elements for nesting bits of syntax (function arguments, blocks of code, array parameters) where Lisp is more regular and that if you count all these different syntactic elements I don't think you would get all that many more parentheses for Lisp.
The part that would tend to add more parentheses to Lisp is when precedence operators in C allow the programmer to omit some parentheses. Because it has an prefix syntax you cannot do that in Lisp (unless you have a way to go from a prefix syntax to an infix one like (+ 2 {3 * b + c / 6} for example but then you are outside of Lisp's syntax so it doesn't really count).
Anyway, even if Lisp syntax really had that many more parentheses than C (and C-style) syntax I wouldn't mind it given that they are not superfluous.
Question: Would you learn a Lisp that used indentation, like Python, instead of parentheses to represent nesting?
AFAIK, Dylan is (mostly) Scheme without the Lisp syntax.
As for the syntax, the inventor of Lisp himself thought that it would be replaced by a more traditional syntax but the power given by having the syntax model the parse tree and having the same syntax for code and data made is such that oterh syntaxes didn't become popular with those that grokked Lisp so it stuck with it (I don't have the reference handy but I am reasonably sure that it was in one of Paul Graham's papers).
After a bit of searching:
Quoting McCarthy (the inventor of Lisp):
"Another way to show that Lisp was neater than Turing machines was to write a universal Lisp function and show that it is briefer and more comprehensible than the description of a universal Turing machine. This was the Lisp function eval..., which computes the value of a Lisp expression.... Writing eval required inventing a notation representing Lisp functions as Lisp data, and such a notation was devised for the purposes of the paper with no thought that it would be used to express Lisp programs in practice."
"Steve Russell said, look, why don't I program this eval..., and I said to him, ho, ho, you're confusing theory with practice, this eval is intended for reading, not for computing. But he went ahead and did it. That is, he compiled the eval in my paper into [IBM] 704 machine code, fixing bugs, and then advertised this as a Lisp interpreter, which it certainly was. So at that point Lisp had essentially the form that it has today...."
From "History of Lisp" (1978) (quoted here: http://www.lisp.org/table/syntax.htm):
McCarthy:
"... Another reason for the initial acceptance of awkwardnesses in the internal form of LISP is that we still expected to switch to writing programs as M-expressions [infix format]. The project of defining M-expressions precisely and compiling them or at least translating them into S-expressions was neither finalized nor explicitly abandoned. It just receded into the indefinite future, and a new generation of programmers appeared who preferred internal notation to any FORTRAN-like or ALGOL-like notation that could be devised.
So Lisp had other syntaxes, they just didn't become popular (for Lispers).
The question is which one will become a Lisp with a traditional syntax first?
(the answer of course is Dylan