The tab feature doesn't seem very well integrated. Vim 7 seems to make a distinction between files that are open and files that are open in tabs. Why would I want that?
99% of editors, Ctrl-end. Vim, G. Sorry, that's retarded.
Control-End is hard for a touch typist to reach, and it's in a different place on different keyboards. Maybe that's convenient for people who don't touch type and who use editors rarely enough to remember key bindings, and maybe starting in insert mode is convenient for people whose needs are served by Notepad.exe, but other people have other needs.
If you like an editor that uses Control-End and starts in Insert mode, you are well served. Why are you trying to force the remaining 1% of the editors to conform to your notions of how an editor ought to work? Don't you already have enough choices? Are you a member of the Borg and feel the need to assimilate and change everybody to conform to your own (IMO retarded) notions of how computers ought to work?
I forgot to mention: call/cc actually was discovered in the context of Algol 60. See here: Peter J. Landin: A Correspondance between ALGOL 60 and Church's Lambda Notation, CACM Vol. 8, No 2 pp 89-101 & No 3 pp 158-165 (February & March 1965) 12.
Coroutines, threads, and generators usually keep the environment and permit returning to the point of call. Actually, so does setjmp, which you can give unlimited extent with just a little bit of effort in most C implementations.
It's still useful for reasoning about programs and program transformations,
There are tools and languages for doing just that, and Scheme isn't it.
and could simplify language implementations.
There have been good Scheme compilers for 20 years; what successful languages (I don't mean AI micro languages) have been implemented on top of Scheme in that time? In contrast, look at the large number of languages that have been implemented on top of the JVM and even the CLR.
You can't conduct that kind of experiment. We have incomplete knowledge, exist in a noisy environment, and are hampered by the problem that at some basic level, observation changes the system that is being observed.
It's bizarre that people like you still insist that one can't prove theories unless the world conforms to some outmoded platonic ideal of physics. Most sciences figured out how to deal with incomplete knowledge, noisy environments, and observer effects some time in the last century.
Most physical theories are derived from observation not "pulled out of a hat". [...] General Relativity was originally interesting because it gives a model that incorporates mass, acceleration, and gravitation as geometric properties. It's still interesting because it fits observation well. All of this is appealing to physicists, and it should be.
You just confirmed yourself that GR was pulled out of a hat: it was motivated and originally derived for reasons that had nothing to do with observation.
True, but the point of mentioning those is that they are things that Scheme pioneered.
I think it's misleading to say that "Scheme pioneered" either feature. The original hygienic macros paper used both Scheme and Pascal as example languages. And call/cc was merely a particular choice of syntax, but the concept of continuations existed in many environments.
What Scheme "pioneered" was to use a small set of very powerful primitives as the basis for high-level language design. Unfortunately, that has turned out to be a complete failure: not only did it fail to catch on, R6RS is now a bigger standard than ISO Lisp, and arguably a worse design. If Scheme has any relevance at all today, it's as an example of how not to design a language.
Use separate browsers, accounts, and/or machines for different purposes. I wouldn't dream of using my regular browser for on-line banking, for example.
Lists and atoms are, well, kind of it, and everything else can be built from those (and often already are, via slib for example).
Brainfuck is an even more minimal language than Scheme but that doesn't make it a better language. Good language design isn't about choosing a minimal set of primitives, it's about choosing a good set of primitives.
As for what "Scheme is defined by", it doesn't matter: You program with implementations, not standards
We're not discussing whether Scheme is a good language to program in (that's a separate debate), we're discussing whether it's a good language to communicate ideas in, as the GP claimed.
Furthermore, Scheme, as it is now, can be a very good "grown-up" language (whatever that means).
It means that programmers and computer scientists find other languages more useful for communicating their ideas and getting their work done.
See Chicken Scheme and its large number of bindings for networking, graphics, sound, et cetera.
Implementations of Scheme with excellent bindings have existed for two decades, yet one new language after another has overtaken Scheme: Perl, Python, Tcl, Java, Ruby, C#, PHP, the list goes on. Evidently, people really don't want to use Scheme.
That may be how you want to frame the discussion, but I won't go along with that.
We're discussing this claim:
Scheme is a language that every programming language enthusiast should know. Being both simple and flexible, it's suitable for communicating and explaining all kinds of concepts.
That's the claim I disagree with: you can be an educated computer scientists or language enthusiast these days and never bother with Scheme.
Thanks for the correction. What about the other features I mentioned? Was I right about those?
I'm not sure what you mean by "right". Scheme may have been the first to implement hygienic macros or call/cc (certainly not continuations), but those features just haven't turned out to be particularly influential. APL is probably a more influential and important language for "language enthusiasts" than Scheme.
So you're saying Scheme did not pioneer all the things I said it did. Could you enlighten me as to where I went wrong, and which languages did pioneer these things?
Algol 60 had lexical scoping and predated Scheme by many years.
It depends on the level at which you want to communicate, I guess. [...] For example, if you _want_ throw-catch style exceptions, you can easily implement them in Scheme, but if you want a more flexible Scheme, you can easily implement that, too.
At issue is not what Scheme has, at issue is what it lacks. Many languages have call/cc or equivalent constructs. Scheme, however, lacks a standard vocabulary to talk effectively about many common constructs, and defining everything yourself doesn't solve that. Using Scheme to talk about computer science is like trying to talk about philosophy using a first year high-school French vocabulary.
Also, there have been plenty of exception systems discussed in the literature; I'm not aware of any of them that were first described in Scheme. Usually, they are described in English and pseudo-code, and implemented in C or assembly.
Well, I'm glad that we seem to agree that it is necessary (though not sufficient) for a language to have exceptions and threads in order to be a good language for communicating concepts in computer science. Right now, Scheme is defined by R5RS, and R5RS lacks those. That's one of the many reasons for Scheme's failure to catch on (contrary to popular opinion, syntax is probably not one of them; after all, XML and Perl succeeded despite their syntax).
Whether R6RS will be a good language for communicating concepts in computer science remains to be seen. From what I see in the draft standard, R6RS is a very different language from R5RS. I think R6RS ceases to be a good language for its original purpose (teaching), and it still remains a poor language for grown-up use (although for different reasons than before).
It's a real shame that the bungling of the Scheme and CommonLisp designers have effectively killed the entire Lisp family of languages. The world could really benefit from a nicely designed Lisp.
Well, from the point of view of design, the lack of standard threading and exception facilities in Scheme seems to have resulted in a lot of incompatibilities between different Scheme code. That's one of the reasons I stopped using Scheme.
The real question is: how did the Scheme designers ever demonstrate that their design decisions (call/cc or otherwise) were good ones?
Being both simple and flexible, it's suitable for communicating and explaining all kinds of concepts.
Scheme is an extremely cumbersome language for experienced computer scientists to communicate ideas: Scheme lacks many concepts (e.g., exceptions, threads, records, associative data structures) that are widely used for communicating ideas. That may be justifiable for a teaching language, but it makes Scheme too cumbersome for most other purposes.
Scheme also pioneered some of the concepts in modern programming languages (such as lexical scoping),
That statement mostly demonstrates how unfamiliar you are with the history of programming languages.
How that language ever acquired a reputation for being a "clean, simple" design, I will never know. The Scheme number system alone is a mess, and reducing the number of primitives by creating a can of worms like CALL-CC is not good design. Furthermore, at 142 pages long, the language is getting rather bloated.
We need a nice, clean, simple, powerful teaching language to replace C and Java; Scheme is not it.
Similarly, ISPs are free to restrict who gets to use their service. [...] I'm not preventing you from blaming free speech - just trying to explain it a bit more.)
There are two concepts of "free speech": what the law actually gives us, and what we, the people, understand the concept to mean. If the concept of "free speech" given to us through laws differs from what we understand the concept to mean, then the problem is with the laws, not with our understanding.
Everybody understands that ISPs currently have a lot of latitude in deciding who to do business with. What we're discussing is whether they actually ought to have that freedom, or whether the legal rules that govern free speech in the US need to be updated.
As a result, the best we can say is that the theory we have put together fits the observed data to a high degree of precision - but that this may be invalidated at any time by new phenomena. See, for example, the progression from Newtonian mechanics to Relativity, or the long-running debate over the nature of light.
Well, no, that's not the "best" we can do. It is quite possible to prove theories to be correct experimentally, if you formulate the theories correctly and then conduct the right kinds of experiments.
The problem is that General Relativity, like most physical theories, was pulled out of a hat and has caught on because it's appealing to physicists. Furthermore, the experiments being conducted to test those theories are chosen rather haphazardly. For those kinds of theories and those kinds of experiments, it is indeed impossible to prove anything
The main point of DRM was to permit copyright holders to specify how their music is to be used; in fact, DRM is primarily a language for such specifications.
Microsoft seems to have misunderstood DRM as a means to let Microsoft impose their views on the rest of the world.
Apart from its (known) security problems, Acrobat Reader has a number of other problems, foremost that it's slow and that it fails to comply with Gnome, KDE, and Macintosh desktop UI standards.
There are more usable, faster, and safer alternatives.
A majority of Americans elected Bush and the current Congress. If you elect a politician like Bush, this is the predictable result. Bush was already using FUD extensively during his campaign with pushbutton issues like crime, defense, safety, religion, and morality. Furthermore, because he obviously didn't have much of a political agenda besides funnelling as much public money as possible to his buddies in industry, so when the terrorism issue landed in his lap, it was ideal for spreading further FUD.
American voters evidently like to be scared, and Bush is delivering. Boring politicians that merely want to take sensible defense measures, fix budget deficits, deliver health care, fit into the international community, and do not too much damage to the environment don't stand a chance in comparison.
I think you've confused marketeers with economists. Economists (at least the smart ones) ask a fundemnetal question: This activity occurs at the expense of what?
What matters is not the "questions" smart economists ask, what matters is the numbers they deliver to policymakers. The economic activity related to cleanup efforts from the Exxon Valdez got added into the GNP and growth, but the environmental damage was not subtracted. That's why I brought up the analogy in the first place.
If Vista makes companies more productive then they can create more jobs - if not then teh net effect is zero (or less because of switching costs)
Well, geez, thanks for stating the obvious. The point is that the Vista study fails to do just this kind of accounting. Technically savvy people believe the productivity gains of Vista to be negligible and the switching costs to be high. Therefore, technically savvy people would come to the conclusion that there is likely a net job loss from Vista deployment. This is in contrast to the "study", which claims a net gain, for reasons analogous to the ones I gave above: in real life, economists tend to focus on the easily measurable, and that tends to favor increases in economic activity, even if the effects are harmful. Do you now understand why we are discussing here what we are discussing?
Sadly, that's how economist think and work. The Exxon Valdez disaster, for example, was a boon to the US economy according to standard models of economics, because it created lots of jobs.
The reason for such silly conclusions is that large, unquantifiable costs are ignored. In the case of Vista, it will probably create lots of jobs (because it will be a lot of work to install and maintain), but those jobs will not be productive jobs--they don't contribute to what the companies using Vista actually are supposed to do.
In different words, a company producing widgets will still be producing widgets pretty much the same way after Vista has been installed, they'll just have sunk a boatload of money into migrating, retraining, licensing, and hardware upgrades. Furthermore, the computer specialists doing all that work are kept from doing something actually productive. As a result, the cost of widgets has gone up and the economy is worse off overall.
The tab feature doesn't seem very well integrated. Vim 7 seems to make a distinction between files that are open and files that are open in tabs. Why would I want that?
99% of editors, Ctrl-end. Vim, G. Sorry, that's retarded.
Control-End is hard for a touch typist to reach, and it's in a different place on different keyboards. Maybe that's convenient for people who don't touch type and who use editors rarely enough to remember key bindings, and maybe starting in insert mode is convenient for people whose needs are served by Notepad.exe, but other people have other needs.
If you like an editor that uses Control-End and starts in Insert mode, you are well served. Why are you trying to force the remaining 1% of the editors to conform to your notions of how an editor ought to work? Don't you already have enough choices? Are you a member of the Borg and feel the need to assimilate and change everybody to conform to your own (IMO retarded) notions of how computers ought to work?
Well, it was natural on the terminals where it was originally developed, because those keys were marked with arrows.
As people were using it on other terminals, they discovered that it didn't matter what the key actually said and that it was just a good key binding.
I forgot to mention: call/cc actually was discovered in the context of Algol 60. See here: Peter J. Landin: A Correspondance between ALGOL 60 and Church's Lambda Notation, CACM Vol. 8, No 2 pp 89-101 & No 3 pp 158-165 (February & March 1965) 12.
Do you have any examples of this?
Coroutines, threads, and generators usually keep the environment and permit returning to the point of call. Actually, so does setjmp, which you can give unlimited extent with just a little bit of effort in most C implementations.
It's still useful for reasoning about programs and program transformations,
There are tools and languages for doing just that, and Scheme isn't it.
and could simplify language implementations.
There have been good Scheme compilers for 20 years; what successful languages (I don't mean AI micro languages) have been implemented on top of Scheme in that time? In contrast, look at the large number of languages that have been implemented on top of the JVM and even the CLR.
You can't conduct that kind of experiment. We have incomplete knowledge, exist in a noisy environment, and are hampered by the problem that at some basic level, observation changes the system that is being observed.
It's bizarre that people like you still insist that one can't prove theories unless the world conforms to some outmoded platonic ideal of physics. Most sciences figured out how to deal with incomplete knowledge, noisy environments, and observer effects some time in the last century.
Most physical theories are derived from observation not "pulled out of a hat". [...] General Relativity was originally interesting because it gives a model that incorporates mass, acceleration, and gravitation as geometric properties. It's still interesting because it fits observation well. All of this is appealing to physicists, and it should be.
You just confirmed yourself that GR was pulled out of a hat: it was motivated and originally derived for reasons that had nothing to do with observation.
True, but the point of mentioning those is that they are things that Scheme pioneered.
I think it's misleading to say that "Scheme pioneered" either feature. The original hygienic macros paper used both Scheme and Pascal as example languages. And call/cc was merely a particular choice of syntax, but the concept of continuations existed in many environments.
What Scheme "pioneered" was to use a small set of very powerful primitives as the basis for high-level language design. Unfortunately, that has turned out to be a complete failure: not only did it fail to catch on, R6RS is now a bigger standard than ISO Lisp, and arguably a worse design. If Scheme has any relevance at all today, it's as an example of how not to design a language.
Use separate browsers, accounts, and/or machines for different purposes. I wouldn't dream of using my regular browser for on-line banking, for example.
Lists and atoms are, well, kind of it, and everything else can be built from those (and often already are, via slib for example).
Brainfuck is an even more minimal language than Scheme but that doesn't make it a better language. Good language design isn't about choosing a minimal set of primitives, it's about choosing a good set of primitives.
As for what "Scheme is defined by", it doesn't matter: You program with implementations, not standards
We're not discussing whether Scheme is a good language to program in (that's a separate debate), we're discussing whether it's a good language to communicate ideas in, as the GP claimed.
Furthermore, Scheme, as it is now, can be a very good "grown-up" language (whatever that means).
It means that programmers and computer scientists find other languages more useful for communicating their ideas and getting their work done.
See Chicken Scheme and its large number of bindings for networking, graphics, sound, et cetera.
Implementations of Scheme with excellent bindings have existed for two decades, yet one new language after another has overtaken Scheme: Perl, Python, Tcl, Java, Ruby, C#, PHP, the list goes on. Evidently, people really don't want to use Scheme.
We're discussing this claim:
That's the claim I disagree with: you can be an educated computer scientists or language enthusiast these days and never bother with Scheme.
Thanks for the correction. What about the other features I mentioned? Was I right about those?
I'm not sure what you mean by "right". Scheme may have been the first to implement hygienic macros or call/cc (certainly not continuations), but those features just haven't turned out to be particularly influential. APL is probably a more influential and important language for "language enthusiasts" than Scheme.
Here Scheme has the same failing as the C language.
Yes, it does. What's your point?
So you're saying Scheme did not pioneer all the things I said it did. Could you enlighten me as to where I went wrong, and which languages did pioneer these things?
Algol 60 had lexical scoping and predated Scheme by many years.
It depends on the level at which you want to communicate, I guess. [...] For example, if you _want_ throw-catch style exceptions, you can easily implement them in Scheme, but if you want a more flexible Scheme, you can easily implement that, too.
At issue is not what Scheme has, at issue is what it lacks. Many languages have call/cc or equivalent constructs. Scheme, however, lacks a standard vocabulary to talk effectively about many common constructs, and defining everything yourself doesn't solve that. Using Scheme to talk about computer science is like trying to talk about philosophy using a first year high-school French vocabulary.
Also, there have been plenty of exception systems discussed in the literature; I'm not aware of any of them that were first described in Scheme. Usually, they are described in English and pseudo-code, and implemented in C or assembly.
Well, I'm glad that we seem to agree that it is necessary (though not sufficient) for a language to have exceptions and threads in order to be a good language for communicating concepts in computer science. Right now, Scheme is defined by R5RS, and R5RS lacks those. That's one of the many reasons for Scheme's failure to catch on (contrary to popular opinion, syntax is probably not one of them; after all, XML and Perl succeeded despite their syntax).
Whether R6RS will be a good language for communicating concepts in computer science remains to be seen. From what I see in the draft standard, R6RS is a very different language from R5RS. I think R6RS ceases to be a good language for its original purpose (teaching), and it still remains a poor language for grown-up use (although for different reasons than before).
It's a real shame that the bungling of the Scheme and CommonLisp designers have effectively killed the entire Lisp family of languages. The world could really benefit from a nicely designed Lisp.
Please argue for this point.
Well, from the point of view of design, the lack of standard threading and exception facilities in Scheme seems to have resulted in a lot of incompatibilities between different Scheme code. That's one of the reasons I stopped using Scheme.
The real question is: how did the Scheme designers ever demonstrate that their design decisions (call/cc or otherwise) were good ones?
Being both simple and flexible, it's suitable for communicating and explaining all kinds of concepts.
Scheme is an extremely cumbersome language for experienced computer scientists to communicate ideas: Scheme lacks many concepts (e.g., exceptions, threads, records, associative data structures) that are widely used for communicating ideas. That may be justifiable for a teaching language, but it makes Scheme too cumbersome for most other purposes.
Scheme also pioneered some of the concepts in modern programming languages (such as lexical scoping),
That statement mostly demonstrates how unfamiliar you are with the history of programming languages.
How that language ever acquired a reputation for being a "clean, simple" design, I will never know. The Scheme number system alone is a mess, and reducing the number of primitives by creating a can of worms like CALL-CC is not good design. Furthermore, at 142 pages long, the language is getting rather bloated.
We need a nice, clean, simple, powerful teaching language to replace C and Java; Scheme is not it.
Similarly, ISPs are free to restrict who gets to use their service. [...] I'm not preventing you from blaming free speech - just trying to explain it a bit more.)
There are two concepts of "free speech": what the law actually gives us, and what we, the people, understand the concept to mean. If the concept of "free speech" given to us through laws differs from what we understand the concept to mean, then the problem is with the laws, not with our understanding.
Everybody understands that ISPs currently have a lot of latitude in deciding who to do business with. What we're discussing is whether they actually ought to have that freedom, or whether the legal rules that govern free speech in the US need to be updated.
As a result, the best we can say is that the theory we have put together fits the observed data to a high degree of precision - but that this may be invalidated at any time by new phenomena. See, for example, the progression from Newtonian mechanics to Relativity, or the long-running debate over the nature of light.
Well, no, that's not the "best" we can do. It is quite possible to prove theories to be correct experimentally, if you formulate the theories correctly and then conduct the right kinds of experiments.
The problem is that General Relativity, like most physical theories, was pulled out of a hat and has caught on because it's appealing to physicists. Furthermore, the experiments being conducted to test those theories are chosen rather haphazardly. For those kinds of theories and those kinds of experiments, it is indeed impossible to prove anything
The main point of DRM was to permit copyright holders to specify how their music is to be used; in fact, DRM is primarily a language for such specifications.
Microsoft seems to have misunderstood DRM as a means to let Microsoft impose their views on the rest of the world.
Apart from its (known) security problems, Acrobat Reader has a number of other problems, foremost that it's slow and that it fails to comply with Gnome, KDE, and Macintosh desktop UI standards.
There are more usable, faster, and safer alternatives.
A majority of Americans elected Bush and the current Congress. If you elect a politician like Bush, this is the predictable result. Bush was already using FUD extensively during his campaign with pushbutton issues like crime, defense, safety, religion, and morality. Furthermore, because he obviously didn't have much of a political agenda besides funnelling as much public money as possible to his buddies in industry, so when the terrorism issue landed in his lap, it was ideal for spreading further FUD.
American voters evidently like to be scared, and Bush is delivering. Boring politicians that merely want to take sensible defense measures, fix budget deficits, deliver health care, fit into the international community, and do not too much damage to the environment don't stand a chance in comparison.
I think you've confused marketeers with economists. Economists (at least the smart ones) ask a fundemnetal question: This activity occurs at the expense of what?
What matters is not the "questions" smart economists ask, what matters is the numbers they deliver to policymakers. The economic activity related to cleanup efforts from the Exxon Valdez got added into the GNP and growth, but the environmental damage was not subtracted. That's why I brought up the analogy in the first place.
If Vista makes companies more productive then they can create more jobs - if not then teh net effect is zero (or less because of switching costs)
Well, geez, thanks for stating the obvious. The point is that the Vista study fails to do just this kind of accounting. Technically savvy people believe the productivity gains of Vista to be negligible and the switching costs to be high. Therefore, technically savvy people would come to the conclusion that there is likely a net job loss from Vista deployment. This is in contrast to the "study", which claims a net gain, for reasons analogous to the ones I gave above: in real life, economists tend to focus on the easily measurable, and that tends to favor increases in economic activity, even if the effects are harmful. Do you now understand why we are discussing here what we are discussing?
There was no discussion about unique capabilities of Vista spawning whole new industries or applications.
What "unique" capabilities would that be?
Sadly, that's how economist think and work. The Exxon Valdez disaster, for example, was a boon to the US economy according to standard models of economics, because it created lots of jobs.
The reason for such silly conclusions is that large, unquantifiable costs are ignored. In the case of Vista, it will probably create lots of jobs (because it will be a lot of work to install and maintain), but those jobs will not be productive jobs--they don't contribute to what the companies using Vista actually are supposed to do.
In different words, a company producing widgets will still be producing widgets pretty much the same way after Vista has been installed, they'll just have sunk a boatload of money into migrating, retraining, licensing, and hardware upgrades. Furthermore, the computer specialists doing all that work are kept from doing something actually productive. As a result, the cost of widgets has gone up and the economy is worse off overall.