This debate could actually be deconstructed in darwinian terms. The faster
(in terms of execution on a computer), the philosophy of design (quick and
gets the job done) usually win in nature and the market place. Look at the
competition between vi and emacs. Vi has a greater market share because it
is quick and easy, and supports the philosophy of being quick and getting
the job done.
The elitists want to make everything grand. Emacs has everything including
the kitchen sink and a lisp interpreter. Vi is simply a text editor,
nothing more. Little wonder that Vi won. I know some companies that ask
prespective employees which editor they use, and if they say "emacs", they
don't get hired because they will likely be prima donnas, where everything
has to be perfect before they can work.
John McCarthy built a programming language using Lambda Calculus as the
theory, while E. W. Dijkstra used Predicate Calculus to build Algol. In
terms of the progress to humanity that computers have made, most of it came
from the Algol, C, C++, and Java lineage. While Lambda Calculus is
difficult to understand, even McCarthy admitted he misunderstood it,
Predicate Calculus is clean efficient and gets the job done. That is why
Algol, C/C++ and Java won in the computing world. No other outcome was
possible, in nature, or computing.
I use /bin/ed because it exists everywhere and is useable in the presence of
enormous character delays.
^C
?
^C
?
--
Ron Hardin
rhha...@mindspring.com
On the internet, nobody knows you're a jerk.
> The arguments that Paul Graham makes on his site in relation to LISP's
> preceived superiourity to languages such as C/C++ and Java are incorrect.
> In fact it *is* Java, C/C++ and even C# that are superiour to LISP.
Most people who are using Lisp know (and occasionally use) at least some
of those other languages. That's usually not the case the other way around.
It's always your personal decision whether or not you invest your time
in learning something new that you don't understand yet. Don't pretend
to be objective, and especially don't give people spurious reasons not
to broaden their horizon. That's stifling progress.
Pascal
--
"Conceptually FORTRAN remained on familiar grounds in the sense that its
purpose was to aid the mechanization of computational processes we used
to do with pen and paper (and mechanical desk calculators if you could
afford them). This was in strong contrast to LISP whose purpose was to
enable the execution of processes that no one would dream of performing
with pen and paper." - Edsger W. Dijkstra
> The arguments that Paul Graham makes on his site in relation to LISP's
> preceived superiourity to languages such as C/C++ and Java are incorrect.
> In fact it *is* Java, C/C++ and even C# that are superiour to LISP.
>
> This debate could actually be deconstructed in darwinian terms.
It is too early (in darwinian terms) to say which is superior. Time
will tell. Give it another 500 years and maybe we will have a better
prespective.
> The elitists want to make everything grand. Emacs has everything including
> the kitchen sink and a lisp interpreter. Vi is simply a text editor,
> nothing more. Little wonder that Vi won. I know some companies that ask
> prespective employees which editor they use, and if they say "emacs", they
> don't get hired because they will likely be prima donnas, where everything
> has to be perfect before they can work.
You seem to want to make sweeping, grandiose remarks linking evolution, editors,
computer languages and their programmers. Are you trying to make your view
grand? Are you an elitist? Or can one try to make things grand without
being an elitist?
Wade
Vi won? Pray tell, what did it win? The award for ``most scorned
editor''? You talk about vi to almost any person, and if they know what
it is they'll think it's a weird editor from the 70s that went out of
style along with disco and bell-bottoms. Some win. Maybe you meant
vim? That only applies if you are lucky enough to find someone who
knows the difference between vi and vim.
I think Emacs (and vim) are both doing very well for themselves. What
that indicates about the state of the computing world I will leave as an
exercise to the reader.
P.S. This post was written in vim. =)
--
;;;; Matthew Danish -- user: mrd domain: cmu.edu
;;;; OpenPGP public key: C24B6010 on keyring.debian.org
Care to expand on how ALGOL is based on predicate calculus? I would
hardly say that it is based on the predicate calculus any more than LISP
1.5 was based on the lambda calculus. In other words, superficially.
Even PROLOG is not really ``predicate calculus.''
I would also argue that lambda calculus is not difficult to understand
at all; it's very simple---too simple. Much like assembly language,
except that it gives you at least one abstraction mechanism for free:
functions. This is an enormous benefit over something primitive like a
Turing Machine. When attempting to explain any kind of computability
theorem, I think you'll find that phrasing it in terms of the lambda
calculus makes it much easier to understand than in terms of Turing
Machines.
If anything, though, the success of C/C++ has shown that however simple
the lambda calculus is, the function abstraction caused a backlash.
When you watch bad programmers work, you will notice that they avoid
abstraction like the plague. Frankly, I think the success of C and C++
over more elegant languages based on lambda calculus has more to do with
(a) lack of really good compilers for a while, and (b) the stupidity of
that vast horde of programmers who cannot stand any abstraction no
matter how simple.
Even something as simple as mentally performing substitution is not easy
for the average person. This is something that you, as a programmer,
should be doing a great deal every day. And this is all that the lambda
calculus requires.
> The arguments that Paul Graham makes on his site in relation to LISP's
> preceived superiourity to languages such as C/C++ and Java are incorrect.
> In fact it *is* Java, C/C++ and even C# that are superiour to LISP.
>
> This debate could actually be deconstructed in darwinian terms.
You have missed a very fundamental point: neither Graham nor Darwin are
making any claims about quality in any absolute sense. In Darwinian
terms there is no such thing as an absolute "better", there is only
better with respect to one particular quality metric (reproduction) IN A
PARTICULAR ENVIRONMENT. Thomas Kinkade has a greater market share than
Picasso. Ford has a greater market share than Lamborghini. Mosquitos
have a greater "market share" than humans. But that doesn't make
Kinkade "better" than Picasso, or Ford "better" than Lamborghini, or
mosquitos "better" than humans.
But Graham is not making any Darwinian claims. If you read more of
Graham, you will learn that he is an art aficionado, and so the fact
that Lisp has a smaller market share is exactly what he'd expect from a
higher quality product.
Some people choose to view programming as more than just a means to the
end of producing the next version of Sonic the Hedgehog. To some
people, programming is an end in itself, an artistic endeavor, a means
of using our brains to elevate ourselves above the mundane, to
experience the beauty and power of mathematics in a tangible way. Those
people's brains have provided the environment where Lisp prospers even
in a Darwinian sense.
rg
> grand? Are you an elitist? Or can one try to make things grand without
> being an elitist?
>
Simpler. He's a troll, usually hangs around on comp.os.linux.*, lately started
trolling comp.lang.lisp for reasons I can only guess at. Maybe lisp
really is growing more popular, to so attract other communities' trolls.
I'm guessing he's not the michigan attorney general of the same name,
that would be too weird.
http://groups.google.com/groups?q=mike%20cox%20group%3Acomp.os.linux.*scoring=d
Except that vim has developed to the point of having a few kitchensinks of
its own. Pure old vi is, at best, barely usable. But heaven forbid you
try to run it on a big (80 lines by 200 columns) terminal - the "pure vi"
implementations of commercial UNIX systems tend not to like this and are
prone to fall back to ed mode ... sone of the first things that gets
installed on a commercial UNIX is vim to get a _useful_ editor. And once
you have vim, the difference to emacs isn't _that_ big - and on free
UNIX systems, the vi often _is_ vim.
> Little wonder that Vi won. I know some companies that ask
> prespective employees which editor they use, and if they say "emacs", they
> don't get hired because they will likely be prima donnas, where everything
> has to be perfect before they can work.
What about people using _both_? Emacs for Lisp development and writing
LaTeX (because it's really good at both) and vim for everything else?
Would one still end up on the "don't hire" list because one prefers to
use the tool best suited for the job?
Regards,
Alex.
--
"Opportunity is missed by most people because it is dressed in overalls and
looks like work." -- Thomas A. Edison
Predicate Calculus? I doubt it. Prolog may have been based on Predicate
Calculus, but not Algol.
Lisp, on the other hand, was based on Lambda Calculus, so you got that part
right.
> That is why Algol, C/C++ and Java won in the computing world.
You completely misunderstood Paul Graham's point. He deliberately wasn't
talking about popularity, which even he admits is dominated by C/C++/Java
(and maybe Perl/Python/Ruby). If you actually read his articles, his point
is about the productivity of an expert programmer using each of the possible
languages.
Your "rebuttal" about the relative popularity of Lisp vs. these other languages
is completely irrelevant to Graham's point.
-- Don
_______________________________________________________________________________
Don Geddis http://don.geddis.org/ d...@geddis.org
It's too bad that whole families have to be torn apart by something as simple
as wild dogs. -- Deep Thoughts, by Jack Handey
[A troll:]
> > Little wonder that Vi won. I know some companies that ask
> > prespective employees which editor they use, and if they say "emacs", they
> > don't get hired because they will likely be prima donnas, where everything
> > has to be perfect before they can work.
[Alex:]
> What about people using _both_? Emacs for Lisp development and writing
> LaTeX (because it's really good at both) and vim for everything else?
> Would one still end up on the "don't hire" list because one prefers to
> use the tool best suited for the job?
I suspect the companies that refuse to hire Emacs users
are a figment of the troll's overactive imagination.
--
Gareth McCaughan
.sig under construc
Java, C/C++ and even C# are far superior to Lisp in popularity,
because stupid programmers outnumber the smart ones.
I find it interesting that darwinism immediatly came up, as in
discussions of what constitues a logical fallacy, examples using
darwinism vs. creationism are often used. this makes me suspect an
accomplished troll, who does his research. well done!
> The faster
> (in terms of execution on a computer), the philosophy of design (quick and
> gets the job done) usually win in nature and the market place.
Argumentum Ad Populum, or the Bandwagon Fallacy.
>Look at the
> competition between vi and emacs. Vi has a greater market share because it
> is quick and easy, and supports the philosophy of being quick and getting
> the job done.
Certainly a large Red Herring. Editors are not languages, and what
constitutes a good editor has little relevance towards a language.
Using that logic, i therefore claim technical superiority for
Notepad.exe, by far the most popular text editor installed today.
>
> The elitists want to make everything grand.
Argumentum Ad Hominum Circumstantial.. in other words, the poster has no
evidence supporting his view, so therefore must attack the holder of the
converse view.
Emacs has everything including
> the kitchen sink and a lisp interpreter. Vi is simply a text editor,
> nothing more. Little wonder that Vi won.
Certainly some misleading vividness, a Faulty Generalization. And
concludes with the all out fallacy, as i didn't realize there was
something to 'win'. (and using both editors on a daily basis, i'm kind
of sad that i now have to throw one away, as it's now 'lost')
> I know some companies that ask
> prespective employees which editor they use, and if they say "emacs", they
> don't get hired because they will likely be prima donnas, where everything
> has to be perfect before they can work.
Besides the fact that 'some companies' is certainly not a valid
representation of any group, this is an argumentum ad verecundiam, or
appeal to authority. it is also argumentum ad baculum, or 'appeal to
force' as it threatens dire consequenses (ie not getting work) should
one publicise their oppositional view.
>
> John McCarthy built a programming language using Lambda Calculus as the
> theory, while E. W. Dijkstra used Predicate Calculus to build Algol.
This is simply false.
> In
> terms of the progress to humanity that computers have made, most of it came
> from the Algol, C, C++, and Java lineage.
This is offered as an appeal to emotion, but completly without
supporting evidence. If the poster would clarify how computers have made
progress to humanity, and how choice of language had anything to do with
that, i'd give this argument some weight. As it stands, its a Red Herring.
> While Lambda Calculus is
> difficult to understand, even McCarthy admitted he misunderstood it,
> Predicate Calculus is clean efficient and gets the job done.
Ad hominum, Guilt by association, and completely subjective. also, an
Affirmative conclusion from a negative premise.
> That is why
> Algol, C/C++ and Java won in the computing world.
Again, i wasn't aware that there was a contest, or that it was over!
I've never had a job programming in algol... this is a False Conclusion.
> No other outcome was
> possible, in nature, or computing.
the 'nature' Red Herring seems to be the gist of the argument, and being
a fallacy itself, completly invalidates the argument.
This was such an obvious troll. I'm am a lisp user, and prefer it to
C++/Java by a long shot, but i could come up with much better arguments
against lisp then this. Poster, please try again, and correct your logic
errors... you could be right, C++ could be 'better' than lisp, but
you'll have to learn to prove it, or at least come up with a convincing
argument, before anybody here *cares* .
drewc
"Mike Cox" <mikeco...@yahoo.com> wrote on Thu, 12 Aug 2004:John McCarthy built a programming language using Lambda Calculus as the theory, while E. W. Dijkstra used Predicate Calculus to build Algol.Predicate Calculus? I doubt it. Prolog may have been based on Predicate Calculus, but not Algol. Lisp, on the other hand, was based on Lambda Calculus, so you got that part right.That is why Algol, C/C++ and Java won in the computing world.You completely misunderstood Paul Graham's point. He deliberately wasn't talking about popularity, which even he admits is dominated by C/C++/Java (and maybe Perl/Python/Ruby). If you actually read his articles, his point is about the productivity of an expert programmer using each of the possible languages. Your "rebuttal" about the relative popularity of Lisp vs. these other languages is completely irrelevant to Graham's point.
I'll just add, that its not enough to be a 'cool language' these days to
become extremely popular. You need to have an entire consistent and
integrated platform that can back it up. We're talking messaging services,
directory services, XML parsers, web services apis, component models, web
application engines, etc... that all fit together. VC++/C# is popular
because it has the Windows/.NET platform behind it. Java because it has the
Java platform behind it (the enterprise, standard and micro editions) and
because that platform can sit on top of many other (perhaps more
hardware-specific) platforms.
Not to say that Java/VC++ are not 'cool' languages, but they are popular for
more than just a love of their syntax and semantics.
l8r, Mike N. Christoff
> I would also argue that lambda calculus is not difficult to understand
> at all; it's very simple---too simple. Much like assembly language,
> except that it gives you at least one abstraction mechanism for free:
> functions.
Not according to John McCarthy. He even said that lisp was a result of his
not understanding lambda calculus fully. Mind you, McCarthy is no mental
slouch.
> This is an enormous benefit over something primitive like a
> Turing Machine. When attempting to explain any kind of computability
> theorem, I think you'll find that phrasing it in terms of the lambda
> calculus makes it much easier to understand than in terms of Turing
> Machines.
Maybe not. Look at cavemen. They didn't wait around until they had fire to
start eating, they ate raw food. Emacs and LISPers are trying it the other
way around, waiting for fire to be invented so they can eat. Guess who will
survive? That is my point, and one that Graham misses.
> If anything, though, the success of C/C++ has shown that however simple
> the lambda calculus is, the function abstraction caused a backlash.
> When you watch bad programmers work, you will notice that they avoid
> abstraction like the plague. Frankly, I think the success of C and C++
> over more elegant languages based on lambda calculus has more to do with
> (a) lack of really good compilers for a while, and (b) the stupidity of
> that vast horde of programmers who cannot stand any abstraction no
> matter how simple.
(a) Lack of good compilers. Hmmm. See my analogy above about fire and
eating.
(b) Maybe the vast horde of programmers have time constraints and need to do
things efficiently, not in the most "elitist" way. If LISPers ran the
computing industry, there would be no computing industry because something
would never be "right", and they would have to wait until conditions were
perfect before they could start.
> Even something as simple as mentally performing substitution is not easy
> for the average person. This is something that you, as a programmer,
> should be doing a great deal every day. And this is all that the lambda
> calculus requires.
And that is exactly why LISPers will always be in the minority. Now that
you know why you are in the minority, don't whine about how "LISP" isn't
getting the recognition it deserves. And please, don't patronize us C++
developers because we do all the heavy lifting. So no more articles on how
JAVA, C/C++ and C# suck, ok?
This is a very high level discussion. I doubt there are any trolls who even
know who John McCarthy is, or even about LISP for that matter.
> > > Little wonder that Vi won. I know some companies that ask
> > > prespective employees which editor they use, and if they say "emacs",
they
> > > don't get hired because they will likely be prima donnas, where
everything
> > > has to be perfect before they can work.
>
> [Alex:]
> > What about people using _both_? Emacs for Lisp development and writing
> > LaTeX (because it's really good at both) and vim for everything else?
> > Would one still end up on the "don't hire" list because one prefers to
> > use the tool best suited for the job?
>
> I suspect the companies that refuse to hire Emacs users
> are a figment of the troll's overactive imagination.
This is after encountering one prima donna emacs user after another.
Eventually they began to see a corrolation.
Sorry, but JAVA, C, C++, and C# all suck. The reason you have to do
heavy lifting with those languages is because they are so crippled that
you cannot make the burden lighter.
Hope you enjoyed your troll.
Remember that Lisp was designed in the 50's. Our understanding of
lambda-calculus is much better now, at least better enough to be taught in
the fourth year of university.
>> This is an enormous benefit over something primitive like a
>> Turing Machine. When attempting to explain any kind of computability
>> theorem, I think you'll find that phrasing it in terms of the lambda
>> calculus makes it much easier to understand than in terms of Turing
>> Machines.
>
> Maybe not. Look at cavemen. They didn't wait around until they had fire to
> start eating, they ate raw food. Emacs and LISPers are trying it the other
> way around, waiting for fire to be invented so they can eat. Guess who will
> survive? That is my point, and one that Graham misses.
Let me quote Kent Pitman:
"...Please don't assume Lisp is only useful for Animation and Graphics,
AI, Bioinformatics, B2B and E-Commerce, Data Mining, EDA/Semiconductor
applications, Expert Systems, Finance, Intelligent Agents, Knowledge
Management, Mechanical CAD, Modeling and Simulation, Natural Language,
Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web
Authoring just because these are the only things they happened to
list."
You were referring to waiting for something? Lisp is being used right now,
it's just that it's not a buzzword. And quite stupidly, investors trust
buzzwords. Thus it may not be used as much as buzzlanguages.
>> If anything, though, the success of C/C++ has shown that however simple
>> the lambda calculus is, the function abstraction caused a backlash.
>> When you watch bad programmers work, you will notice that they avoid
>> abstraction like the plague. Frankly, I think the success of C and C++
>> over more elegant languages based on lambda calculus has more to do with
>> (a) lack of really good compilers for a while, and (b) the stupidity of
>> that vast horde of programmers who cannot stand any abstraction no
>> matter how simple.
>
> (a) Lack of good compilers. Hmmm. See my analogy above about fire and
> eating.
"For a while" refers to the past. Furthermore, please note than C was quite
frowned upon by assembly hackers in its beginnings because it was less
"efficient". (whatever that means).
> (b) Maybe the vast horde of programmers have time constraints and need to do
> things efficiently, not in the most "elitist" way. If LISPers ran the
> computing industry, there would be no computing industry because something
> would never be "right", and they would have to wait until conditions were
> perfect before they could start.
I'd rather there'd be no computer "industry" and have better system even if
only in Ivory towers than have everybody use sub-par ones. Then that's only
my opinion.
>> Even something as simple as mentally performing substitution is not easy
>> for the average person. This is something that you, as a programmer,
>> should be doing a great deal every day. And this is all that the lambda
>> calculus requires.
>
> And that is exactly why LISPers will always be in the minority. Now that
> you know why you are in the minority, don't whine about how "LISP" isn't
> getting the recognition it deserves. And please, don't patronize us C++
> developers because we do all the heavy lifting. So no more articles on how
> JAVA, C/C++ and C# suck, ok?
Well, as long as we don't say that Java, C, C++, C# etc. _programmers_ suck,
what's wrong ? :-)
More seriously, I don't see how your answer relate to the statement that
lots of people cannot perform mental substitution.
Sam
--
All ITS machines now have hardware for a new machine instruction --
CHSE Compare Half-words and Swap if Equal.
Please update your programs.
Mike Cox wrote:
> The arguments that Paul Graham makes on his site in relation to LISP's
> preceived superiourity to languages such as C/C++ and Java are incorrect.
> In fact it *is* Java, C/C++ and even C# that are superiour to LISP.
Beware. A pissing contest is going to happen!
Bob Kolker
[I called him ...]
>> [A troll:]
>
> This is a very high level discussion. I doubt there are any trolls who even
> know who John McCarthy is, or even about LISP for that matter.
"High-level" is so often a euphemism for "full of mistakes and
out of touch with reality". Your article is proof that there are
trolls who have at least some idea who John McCarthy is, and
pretend to know something about Lisp.
>> I suspect the companies that refuse to hire Emacs users
>> are a figment of the troll's overactive imagination.
>
> This is after encountering one prima donna emacs user after another.
> Eventually they began to see a corrolation.
I'll take your word for it: I'm sure you're the definitive
authority on the contents of your imagination. Suffice it to
say that no one with any sense would want to work for a
company that refused to employ people who like Emacs (or
people who like Vim, or people who like Notepad, etc., etc.,
etc.) and that most recruiters and interviewers are sufficiently
intelligent to realise this. Perhaps some companies prefer
to employ people with no sense. I can see how you might have
experience of those, so on reflection I'm a bit less sure
that this is entirely your imagination at work.
Now go away, troll.
> I find it interesting that darwinism immediatly came up, as in
> discussions of what constitues a logical fallacy, examples using
> darwinism vs. creationism are often used. this makes me suspect an
> accomplished troll, who does his research. well done!
No. This only gets a B- on my troll skill scale. A good troll would be
cross-posed to relevant newsgroups, like comp.lang.c and
alt.religion.christianity.
Although earlier, he got Paul Graham to bite and even write a web
article in reply. That deserves an A++.
Drew Crampsie - Software Developer wrote:
> Mike Cox wrote:
>
>> The arguments that Paul Graham makes on his site in relation to LISP's
>> preceived superiourity to languages such as C/C++ and Java are incorrect.
>> In fact it *is* Java, C/C++ and even C# that are superiour to LISP.
>
> What a great troll!
Au contraire, it was an awful, uninteresting troll, shot through with
nonsense and with nothing challenging to knock down. I therefore assume
you are in fact Mike Cox desperately trying to fan the flames of this
dead-on-arrival troll.
kt
--
Cells? Cello? Celtik?: http://www.common-lisp.net/project/cells/
Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film
> This is a very high level discussion. I doubt there are any trolls who even
> know who John McCarthy is, or even about LISP for that matter.
What defines trolls is not their ignorance, it is their
anti-social behaviour.
> Remember that Lisp was designed in the 50's. Our understanding of
> lambda-calculus is much better now, at least better enough to be taught in
> the fourth year of university.
s/fourth/first/
Regards,
--
____________________________
Julian Stecklina / _________________________/
________________/ /
\_________________/ LISP - truly beautiful
> The arguments that Paul Graham makes on his site in relation to LISP's
> preceived superiourity to languages such as C/C++ and Java are incorrect.
> In fact it *is* Java, C/C++ and even C# that are superiour to LISP.
[...]
> John McCarthy built a programming language using Lambda Calculus as the
> theory, while E. W. Dijkstra used Predicate Calculus to build Algol. In
It would be interesting to know which calculass C# is based on.
Paolo
--
Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film
Recommended Common Lisp libraries/tools (Google for info on each):
- ASDF/ASDF-INSTALL: system building/installation
- CL-PPCRE: regular expressions
- UFFI: Foreign Function Interface
I've always assumed that a troll, by it's very nature, is uninteresting,
shot through with nonsense, and has nothing challenging to knock down.
Thus differing from a meaningful argument.
Also, a 'great troll' (again, this is opinion) is an oxymoron, as there
is little if any merit to trolling. perhaps i should have set the
sarcasm bit.
drewc
I'm pretty sure HTML is. A parenthetical language just like lisp.
In the old days, people apparently had the most amusing notions of
lisp, and one big point was no one could possibly work with
parenthetical syntax. Of course now we see that HTML/XML has been
adopted en masse by the public. And it's a reduced strength version of
lisp; this is what technologists get for trying too hard to fight
technology.
The internet is not a panacea, but I like how it shines a light into
some bad misconceptions.
MfG,
Tayssir
--
Video, audio, and other lisp odds & ends:
http://alu.cliki.net/Education
> Tim Josling wrote:
> > Actually Basic (VB) is the dominant language, according to the stats
> I
> > have seen.
>
> I'm pretty sure HTML is.
How can HTML be considered a programming language? It is nothing more
than a data storage format that happens to be human readable.
Jeff
Because it's so hard for non-programmers to write HTML that when they
archive a small HTML home page, they believe they must have been
programming it.
Non programmers seem to have a lot of problems with syntax, grammar
and spelling. HTML syntax is about as complicated as any programming
language.
--
__Pascal Bourguignon__ http://www.informatimago.com/
Our enemies are innovative and resourceful, and so are we. They never
stop thinking about new ways to harm our country and our people, and
neither do we.
I see it as a declarative way of commanding the machine to do something
useful. It is a "language" and the person coding in it expects a
reasonably predictable range of results from writing certain
statements.
Of course, I'm open to people having different mental conceptions of
"what is a language?" But after having learned lisp last year, I've had
my mind opened to what a language is. Most "programming languages"
aren't themselves seriously programmable within the language, so I feel
if I include Java as a language, I'd include HTML as well.
And when you use XML with Python in a data-directed technique, which
could have been simulated by just writing extra Python code, the lines
blur. Our conception of languages as these discrete things... how much
is it for our benefit, and how much for tools salesmen?
Is it conceptually important for me to bar SQL from the pantheon of
programming languages for not being Turing-complete?
MfG,
Tayssir
--
Bruce Lee's teachings fit in nontrivially with programming!
http://www.dreamsongs.com/cgi-bin/ExtravagariaWiki/index.cgi?NontraditionalLiterature
If you don't see html as a programming language you could run into some
definition problems of what a programming language should be.
Let's take php as an example.
Here is a little programm, written in php:
<?php
echo "<html>\n";
echo "<head>\n";
echo "</head>\n";
echo "<body>\n";
echo "<br>\n";
echo "<br>\n";
echo "<center>\n";
echo "Hello World\n";
echo "</center>\n";
echo "</body>\n";
echo "</html>";
?>
It delivers your browser a little html-page which says "Hello World".
It just adds a few bytes to the html-code...
André
--
This is wrong, in at least two senses. I won't go into a full
definition (you can google for it), but a troll is defined as when somebody
posts some nonsense that they don't believe, just to get a reaction (as
opposed to a "legitmate post", which is where you post some nonsense that
you do believe, just to get a reaction [I'm kidding here]). Originally, it
was simple - like you would post that 2+2=5, just to see how many newbies
would write in to correct you.
The second sense is that people (like yourself) sometimes mistakenly call
something they disagree with a troll - which is clearly wrong.
A number 2 player to my favorite, Notepad. Comes in 3 sizes: Letter,
Legal & Metric. Nothing is easier!
> The elitists want to make everything grand.
You gotta come by my trailer park, so I can set you straight!
According to recent polls, ~45% of Americans believe in some sort of
Creationism, whereas ~35% of Americans believe in Darwinism.
Clearly, then, Darwinism has failed in the marketplace of ideas.
Further, Uncle Jed, who can get the overhead cams on the rustiest hemi
lawn ornaments cranking again, could explain better than I.
Since Darwinism has failed, we must look at Creationism.
Emacs is the One True Editor as prophecied by Saint iGNUtious (my spell
checker went nucular on that one) for my faith-based initiative!
I may not be as bright as Cox, Graham, Dijkstra, or Uncle Jed, but since
there was no mention of R, TeX, Macsyma, MatLab nor any Math packages
for vi, I cannot grok why this is being sent to news://sci.math
Thus, I have set followups to alt.religion.emacs, where it belongs.
O.k., I'll bite: ;-} ;-}
In Common Lisp, with Tim Bradshaw's HTOUT macro package, this:
(with-html-output (s *standard-output*)
(:html
(:head "")
(:body :br :br (:center "Hello World"))))
outputs this:
<HTML><HEAD></HEAD><BODY><BR><BR><CENTER>Hello World</CENTER></BODY></HTML>
Now, which is easier to write...? ;-} ;-}
-Rob
-----
Rob Warnock <rp...@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607
This is not a program. It's merely DATA: a graph of the game states.
You could generate the graph of any DFA and write it in HTML in that
way, that would still not be a program. A DFA is NOT a Turing Machine.
> An artificial language for expressing programs.
HTML is an artificial language for expressing DATA.
Of course, you would write a chocolate cake recipe in HTML. That would
not mean that you've programmed your chief in HTML. That would mean
that you've programmed you chief in chief programming language
(recipe), and that it happens that the encoding you've used for this
recipe program is HTML, in the same way that it may happen that the
encoding you use to write your lisp programs is ASCII or EBCDIC.
Or, said otherwise, the interpreter of HTML IS NOT a Turing Machine
(where is the infinite tape memory?). An HTML renderer could be
implemented as a mere FA such as a Mealy Machine.
Interesting. This is the HTML equivalent of having a book
containing all possible games of tic-tac-toe with instructions on the
bottom of each page saying "If you placed an 'X' in position n, turn
to page m." Does that make any natural language a programming
language?
> An HTML-document might be considered as an instruction to display
> text in a certain way (notwithstanding some freedom the
> interpreter has to do this) and to react to user actions
> (activation of links) in a certain way. This allowed Flo Kreidler
> to "program" (i.e., to pre-determine) how an HTML-page interacts
> with a user so as to play a game.
It may not make HTML a programming language, but it certainly
makes Flo Kreidler a programmer.
> That might be a reason to allow to call HTML a "programming
> language", but I believe that most experts in the field of
> computer science would not do so, possibly because whether a term
> is used or not also depends on the tradition of technical
> terminology and typical areas of usage of a formal language.
My inclination when I started to write this was to claim that
HTML was not a programming language because it can only link between
previously existing pages. The existence of tic-tac-toe programs
written in "real" programming languages that are implemented using a
dictionary of all possible games confuses the issue, though.
Thanks for the pointer to the page. I'll use it to argue the
"HTML is a programming language" position next time I'm having a beer
with the other developers I work with.
Regards,
Patrick
------------------------------------------------------------------------
S P Engineering, Inc. | The experts in large scale distributed OO
| systems design and implementation.
p...@spe.com | (C++, Java, ObjectStore, Oracle, CORBA, UML)
> Jeff schrieb:
> > Tayssir John Gabbour wrote:
> >
> >
> > > Tim Josling wrote:
> > >
> > > > Actually Basic (VB) is the dominant language, according to the
> > > > stats
> > >
> > > I
> > >
> > > > have seen.
> > >
> > > I'm pretty sure HTML is.
> >
> >
> > How can HTML be considered a programming language? It is nothing
> > more than a data storage format that happens to be human readable.
> >
> > Jeff
>
>
>
> If you don't see html as a programming language you could run into
> some definition problems of what a programming language should be.
> Let's take php as an example. Here is a little programm, written in
> php:
>
No. PHP is a programming language. PHP /= HTML. PHP is a language that
generates data. PHP generates HTML. I have no problem with PHP, Perl,
ColdFusion or any other backend that generates HTML being called a
programming language. But HTML is not a programming language.
It would be interesting to define what constitutes a "programming
language". I've been thinking about this a bit since yesterday. This is
the best (so far) that I've come up with:
A programming language (as opposed to a "data" language like HTML) is
differenciated by the fact that conditionally executed control
structures may be implemented by the programmer.
Hardly eloquent, but it is a start.
Jeff
perhaps we disagree on the definition of troll.
from wikipedia:
On the Internet, troll is a slang term used to describe:
1. A post (on a newsgroup, or other forum) thought to be intended to
incite controversy or conflict or cause annoyance or offense.
2. A person who posts these.
the jargon file :
To utter a posting on Usenet designed to attract predictable responses
or flames;
i think what the 'troll' believes is irrelevant.
(as
> opposed to a "legitmate post", which is where you post some nonsense that
> you do believe, just to get a reaction [I'm kidding here]). Originally, it
> was simple - like you would post that 2+2=5, just to see how many newbies
> would write in to correct you.
I think you are refering to one of the origins of 'trolling', which is
'trolling for newbies'. this is in the jargon file as well. I don't
think the poster was trolling for newbies. trolling is a fishing
metaphor. when you are trolling, you put your bait in the water, move
around, and hope something will bite.
> The second sense is that people (like yourself) sometimes mistakenly call
> something they disagree with a troll - which is clearly wrong.
>
I never said that i disagreed with the poster. I simply observed that
the posters argument contained a number of logical fallacies.
Regardless of what I think, the poster offered no evidence supporting
his views, and made some provocative statements. I'm guilty of feeding
the troll, i'll admit that, but I never disagreed with the conclusions
of the poster.
are you trolling me, or do you actually have a legitimate objection to
my response?
drewc
> Or, said otherwise, the interpreter of HTML IS NOT a Turing Machine
> (where is the infinite tape memory?). An HTML renderer could be
> implemented as a mere FA such as a Mealy Machine.
Although I agree with you, that HTML is not a programming language,
there exist non Turing complete programming languages.
Here is a cute robot programmed in Esterel:
<http://www.emn.fr/x-info/lego//esterel.html>
The page on Esterel <http://www-sop.inria.fr/meije/esterel/esterel-eng.html>
says:
Esterel is both a programming language, dedicated to programming
reactive systems, and a compiler which translates Esterel programs
into finite-state machines. It is one of a family of synchronous languages,
like SyncCharts, Lustre, Argos or Signal, which are particularly well-suited
to programming reactive systems, including real-time systems and control automata.
--
Jens Axel Søgaard
> No. PHP is a programming language. PHP /= HTML. PHP is a language that
> generates data. PHP generates HTML. I have no problem with PHP, Perl,
> ColdFusion or any other backend that generates HTML being called a
> programming language. But HTML is not a programming language.
>
> It would be interesting to define what constitutes a "programming
> language". I've been thinking about this a bit since yesterday. This is
> the best (so far) that I've come up with:
>
> A programming language (as opposed to a "data" language like HTML) is
> differenciated by the fact that conditionally executed control
> structures may be implemented by the programmer.
Read something about metacircular evaluators or metacircular
interpreters, and you will probably change your point of view.
http://c2.com/cgi/wiki?MetaCircularEvaluator is a good start.
Pascal
--
Tyler: "How's that working out for you?"
Jack: "Great."
Tyler: "Keep it up, then."
And that IS EXACTLY why notepad is in EVERY VERSION OF WINDOWS!!!! YES.
Now you understand my point!
> > The elitists want to make everything grand.
>
> You gotta come by my trailer park, so I can set you straight!
>
> According to recent polls, ~45% of Americans believe in some sort of
> Creationism, whereas ~35% of Americans believe in Darwinism.
> Clearly, then, Darwinism has failed in the marketplace of ideas.
Exactly. What is easier, to *study* science or to just believe? Of course
believing is easier, so there will be MORE people believing, just like there
are more people using Java and C++. Are those people who believe in
Creationism not productive? Actually they are probably the most productive
since they are the ones who assemble goods in factories, deliver goods by
trucks, are farmers, and do other such jobs that sustain basic life for all.
That doesn't mean Creationism is correct, but it does give them a framework
in which to live their lives, and those lives ARE productive. Certainly
more productive than someone in an ivory tower who is waiting for the truth.
The truth may be correct, but without the Creationists (Java, C++), the
LISPers would not get their milk at the supermarket or have their homes
constructed. So for the LISPer to look down at the hands that feed and
sustain him is ironic. If it were not the vast sums of wealth created by
VB, Java, and C++ programmers, computing would still have a world wide
market of about 500 computers total like in the 1950's. It was the "buggy"
Windows OS that propelled computers into every desktop, and made economies
of scale pricing and design possible.
> Further, Uncle Jed, who can get the overhead cams on the rustiest hemi
> lawn ornaments cranking again, could explain better than I.
>
> Since Darwinism has failed, we must look at Creationism.
> Emacs is the One True Editor as prophecied by Saint iGNUtious (my spell
> checker went nucular on that one) for my faith-based initiative!
>
> I may not be as bright as Cox, Graham, Dijkstra, or Uncle Jed, but since
> there was no mention of R, TeX, Macsyma, MatLab nor any Math packages
> for vi, I cannot grok why this is being sent to news://sci.math
There was a mention of John McCarthy and Dijkstra who use calculus to base
their ideas on. Lambda calculus is difficult whereas Predicate Calculus is
simple. Therefore, in my argument, Predicate Calculus wins.
I don't know what the point of arguing about this particular semantic is,
but I would suggest that "HTML" includes its DOM and Javascript.
Pascal> r...@zedat.fu-berlin.de (Stefan Ram) writes:
>> Here is a tic-tac-toe game written in HTML:
>>
>> http://www.geocities.com/flo_kreidler/tictactoe.html
Pascal> This is not a program. It's merely DATA: a graph of the game states.
The Apple programming language "Hypercard" works in the
same way as has been shown in the Tic-Tac-Toe example.
I have seen Hypercard applications such as a Yahtzee,
and a square dance choreography editor, implemented
using exactly these encoded state techniques that you
are saying do not constitute "programming".
I would also draw attention to the IBM "computing" machines that were
popular into the 1960s, involving punched cards and plugboards.
Consider how those relate to IBM's programming language RPG,
which (like my Apple Hypercard example) has always been accepted
as a "programming language".
i think a semanticist would say that you're trying to define the term
'programming language' by its extension, while the only really feasible way
to define the term would be by its intension.
my personal intuition, no doubt imperfect, would be to say that a
programming language is a set of rules for formulating expressions that
have side-effects. although i think that would make html a programming
language... :-/
--
Joost Kremers joostk...@yahoo.com
Selbst in die Unterwelt dringt durch Spalten Licht
EN:SiS(9)
> "Mike Cox" <mikeco...@yahoo.com> wrote on Thu, 12 Aug 2004:
> > John McCarthy built a programming language using Lambda Calculus as the
> > theory, while E. W. Dijkstra used Predicate Calculus to build Algol.
>
> Predicate Calculus? I doubt it. Prolog may have been based on Predicate
> Calculus, but not Algol.
>
> Lisp, on the other hand, was based on Lambda Calculus, so you got that part
> right.
I didn't think Lambda Calculus had a great deal of influence
on Lisp.
To use functions as arguments, one needs a notation for
functions, and it seemed natural to use the lambda
notation of Church (1941). I didn't understand the rest
of his book, so I wasn't tempted to try to implement his
more general mechanism for defining functions.
-- John McCarthy
But I have a somewhat vast ignorance of Lisp. Have I
misunderstood?
Antony
No, hypercard contains a programming language: you can really write
algorithms, without jumping from one card to the other.
If you don't want to speak about Turing Machine (after all, the
infinite memory tape requirement may difficult to fullfil), I'd agree
to consider a language a programming language if you can program an
interpreted for this language in this language.
Show me an interpreter for HTML written in HTML!
Any interpreted program is merely data, after all. Perhaps the typical
interpreters for HTML are a little more unwieldy than most. (Oh, and I'm
pretty sure that the pages in question aren't anywhere near a complete
graph of the game, since they exclude losing positions.)
paul
> How can HTML be considered a programming language?
Consider it a primitive language used to program a display.
Lambda calculus actually represents the computation being done.
Predicate Calculus only makes assertions about the logical state of
the program.
These assertions are easy to write down (what the state is now, versus
what I want it to be after some computation).
Actually proving the validity of the assertions is very difficult.
It's a lot easier to reason about the correctness of a functional
program, because you don't have to consider how you got into some
state and what variables were modified along the way.
Anyway, I feel sorry for you. Go fix your personality problems.
Even for a troll, you are lame. The real trolls pick forums that are
about *popular* applications, operating systems or programming
languages.
I agree with you that there are huge numbers of C++ and Java users.
But, surprisingly, there is only one of *you* trolling here in Lisp
newsgroup.
Obviously, Lisp is important to you in some way. In some way that it's
not important to all those countless Java users who are *not* trolling
here.
Paul Graham's writings are upsetting to you. Find out what is causing
you emotional discomfort and deal with it in a productive, mature way.
Think about it.
Pascal> cst...@news.dtpq.com (Christopher C. Stacy) writes:
Pascal> This is not a program. It's merely DATA: a graph of the game states.
>>
>> The Apple programming language "Hypercard" works in the
>> same way as has been shown in the Tic-Tac-Toe example.
>> I have seen Hypercard applications such as a Yahtzee,
>> and a square dance choreography editor, implemented
>> using exactly these encoded state techniques that you
>> are saying do not constitute "programming".
Pascal> No, hypercard contains a programming language: you can really write
Pascal> algorithms, without jumping from one card to the other.
But the applications I described were in fact
implemented by jumping around on cards.
> >>>>> On 16 Aug 2004 12:25:40 +0200, Pascal Bourguignon ("Pascal") writes:
>
> Pascal> cst...@news.dtpq.com (Christopher C. Stacy) writes:
> Pascal> This is not a program. It's merely DATA: a graph of the game states.
> >>
> >> The Apple programming language "Hypercard" works in the
> >> same way as has been shown in the Tic-Tac-Toe example.
> >> I have seen Hypercard applications such as a Yahtzee,
> >> and a square dance choreography editor, implemented
> >> using exactly these encoded state techniques that you
> >> are saying do not constitute "programming".
>
> Pascal> No, hypercard contains a programming language: you can really write
> Pascal> algorithms, without jumping from one card to the other.
>
> But the applications I described were in fact
> implemented by jumping around on cards.
((but (does (this use of sexps) (make lisp a (non programming language)))) ?)
When you start a new thread, you really ought to include the URL of
whatever particular site you are referring to.
> In fact it *is* Java, C/C++ and even C# that are superiour to LISP.
*TROLL*
There's no such thing as superiour in any absolute sense.
You need to say in what particular respect you are comparing things
before you can say which of them is superiour to another.
> Look at the competition between vi and emacs. Vi has a greater
> market share ...
There's no competition between them. Both are provided on many Unix
systems. Neither is provided on most M$-Windows systems. Where both are
provided, the user gets to pick which to use for which particular
purpose. I use both, vi when it comes up by default inside another
program and it's good enough, but emacs for most of my heavy editing
because vi is a royal pain most of the time.
But NotePad has a bigger market share than both vi and emacs together,
because of a certain cruddy but popular brand-name I mentionned above.
But then NotePad requires a local GUI whereas vi and emacs can run
remotely via a simple serial stdin/stdout communication link.
But most people do most of their editing locally rather than remotely.
I use McSink for most of my local text editing. The winning thing about
it, that all other editors I've tried don't have, is the ability to
sweep some text and see how many characters/words/lines it is, and the
ability to sweep some text and perform a paragraph-fill on it.
MicroEmacs is available here on my Macintosh but it's so cruddy by
comparison that I never use it.
> I know some companies that ask prespective employees which editor
> they use, and if they say "emacs", they don't get hired because they
> will likely be prima donnas, where everything has to be perfect
> before they can work.
Whoever in such a company makes such a decision, is really stupid.
There's no relation between using emacs and having a prima donna mindset.
For example, I use emacs when I need to edit a file directly on
Unix remotely from home, yet my mouse is in horrible shape, a pain to
use, yet I still use it, don't require it to be perfect, and my Web
access is text only via VT100 lynx, yet I still use it, don't require
full Web access (images, tables, frames, javascript, applets, etc.),
get by with what I have, so I'm not the prima donna type at all.
> Lambda Calculus is difficult to understand, even McCarthy admitted he
> misunderstood it,
Here's how I understand it: In any formal language, there's a grammar
that specifies how any expression is to be parsed (hierarchially
organized), and the parse-tree is the "true" statement whereas the
linearization by syntax is just a representation of that statement.
Thus (lambda (x y) (+ x (* y 2))) is just the print representation of
the CL representation of a lambda expression. The "true" meaning of
that is a parse as follows:
Lambda structure:
Args:
Symbol x
Symbol y
Body:
Function-call structure:
Function: +
Args:
Symbol x
Function-call structure:
(etc...)
Once you've parsed a lambda expression like that, what's the *meaning*
of the lambda expression? It's a function, defined as follows: You
compute whatever is the Body, with the understanding that any free
references to the lambda arguments (the symbols x and y) from within
the body are interpreted as whatever was bound to those arguments to
the function. For example ((lambda (x y) ...) 4 7) computes ... where
anyplace inside ... where the symbol x appears free it represents 4 and
whereever the symbol y appears free it represents 7.
Note that a lambda expression makes sense only as a WFF within a
formal language defined by a formal grammar. You can't just wildly
substitute non-well-formed fragments of syntax as arguments.
For example, given ((lambda (x y) (+ y x)) (* 3 4 5)) you can't take x
to be bound to (* 3 and y bound to 4 5) and then interpret the body as
(+ 4 5) (* 3).
So how does my explanation differ from (1) the "correct" meaning, and
(2) McCarthy's misunderstanding of the meaning?
Pascal> cst...@news.dtpq.com (Christopher C. Stacy) writes:
>> >>>>> On 16 Aug 2004 12:25:40 +0200, Pascal Bourguignon ("Pascal") writes:
>>
Pascal> cst...@news.dtpq.com (Christopher C. Stacy) writes:
Pascal> This is not a program. It's merely DATA: a graph of the game states.
>> >>
>> >> The Apple programming language "Hypercard" works in the
>> >> same way as has been shown in the Tic-Tac-Toe example.
>> >> I have seen Hypercard applications such as a Yahtzee,
>> >> and a square dance choreography editor, implemented
>> >> using exactly these encoded state techniques that you
>> >> are saying do not constitute "programming".
>>
Pascal> No, hypercard contains a programming language: you can really write
Pascal> algorithms, without jumping from one card to the other.
>>
>> But the applications I described were in fact
>> implemented by jumping around on cards.
Pascal> ((but (does (this use of sexps) (make lisp a (non programming language)))) ?)
I don't understand what you're trying to convey.
The fact that you use a language inexpressively does not makes all
other inexpressive languages as powerful as the language you use.
And don't be misled by the fact that the inexpressivelyness is still
related to the interpreter of your language, not to its syntax!
CL-USER> ((but (does (this use of sexps) (make lisp a (non programming language)))) ?)
EVAL: (BUT (DOES (THIS USE OF SEXPS) (MAKE LISP A (NON PROGRAMMING LANGUAGE)))) is not a function name
[Condition of type SYSTEM::SIMPLE-SOURCE-PROGRAM-ERROR]
> So how does my explanation differ from (1) the "correct" meaning, and
> (2) McCarthy's misunderstanding of the meaning?
I can't answer either of these questions,
but it is surprising that neither the lambda calculus nor Lisp
seems to have flourished as much as one might have expected.
I suspect that neither of them is very well suited to the human brain,
or certainly to my brain.
Certainly the C vs Lisp argument is rather on a par with
"Is Mozart or Beethoven the greater composer" -
but as a matter of interest, if one wants to consider the consistency of C,
would one not have to use the lambda calculus, or something very like it?
--
Timothy Murphy
e-mail (<80k only): tim /at/ birdsnest.maths.tcd.ie
tel: +353-86-2336090, +353-1-2842366
s-mail: School of Mathematics, Trinity College, Dublin 2, Ireland
Pascal> cst...@news.dtpq.com (Christopher C. Stacy) writes:
Pascal> No, hypercard contains a programming language: you can really write
Pascal> algorithms, without jumping from one card to the other.
>> >>
>> >> But the applications I described were in fact
>> >> implemented by jumping around on cards.
>>
Pascal> ((but (does (this use of sexps) (make lisp a (non programming language)))) ?)
>>
>> I don't understand what you're trying to convey.
Pascal> The fact that you use a language inexpressively does not makes all
Pascal> other inexpressive languages as powerful as the language you use.
Yes, I agree: the fact that you state a fact does not
make all other statements facts. (But I never claimed
that it did, and this does not address my example.)
Pascal> And don't be misled by the fact that the inexpressivelyness
Pascal> is still related to the interpreter of your language, not to
Pascal> its syntax!
So, you're saying that not all random sequence of tokens
constitutes a language? I also agree with you there.
Many, many people find Lisp to match very well with the way their brain
thinks.
The popular success (or lack thereof) of Lisp has very little to do with
how well designed it is, or how well suited it is to the human brain.
> Certainly the C vs Lisp argument is rather on a par with
> "Is Mozart or Beethoven the greater composer" -
No, that is a terrible analogy.
Mozart vs. Beethoven is basically a matter of personal preference.
There is very little one can say objectively about one or the other being
"better".
C and Lisp are very different beasts, and it is easy to find circumstances
where one or the other is vastly preferred by almost everybody.
Moreover, it is possible to consider a theory of programming language design,
and actually evaluate the design of the two languages according to some
metric, e.g. how productive expert (or novice) programmers are in the
language, or how fast the resulting object code can be made by the compiler.
The difference between C and Lisp is far greater than simple personal
preference.
-- Don
_______________________________________________________________________________
Don Geddis http://don.geddis.org/ d...@geddis.org
It's funny how some things haven't changed for hundreds of years, like the suit
of armor. -- Deep Thoughts, by Jack Handey [1999]
> It would be interesting to know which calculass C# is based on.
/me notes the deliberate misspelling...
The formula:
Java = $
VJ++ = $$
Lost license = -$
s/Java/C# = $$$
--
An ideal world is left as an excercise to the reader.
--- Paul Graham, On Lisp 8.1
> Vi is simply a text editor, nothing more. Little wonder that Vi won.
Vi is a nuisance with all its modes evolved from long gone input modes.
I had preferred good old WordStar over vi, and in ordinary Unix I prefer
emacs though its always difficult to customize it for use outside the
U.S. [chars like £, €, æ, ø, å and ç are a must in Europe].
Vi is only used because it is standard on every Unix. If you work on a
Unix system, you know that Emacs /might/ installed but also that vi
/always/ is, and if you work as a Unix consultant you have to be able to
use it.
--
Per Erik Rønne
> Actually Basic (VB) is the dominant language, according to the stats I
> have seen. Anyone here care to admit using it?
At the university [department of computer science] we called Basic a
"spaghetti" language. Its simply as difficult to read a Basic program as
finding out which spaghetti threads belong to each other, if placed on a
plate ...
--
Per Erik Rønne
> The arguments that Paul Graham makes on his site in relation to
> LISP's preceived superiourity to languages such as C/C++ and Java
^^^^^^^^^^^^
> are incorrect. In fact it *is* Java, C/C++ and even C# that are
> superiour to LISP.
^^^^^^^^^
If you want to stress your superiority by demonstrating British
spellings, you should perhaps restrict your mastery to those words
that are actually spelt with "ou". "Superior", being derived from the
ancestor of the modern French "supérieur", isn't.
As to "preceived superiourity": who are you to argue his perceptions?
> This debate could actually be deconstructed in darwinian terms.
Enough to make one turn creationist.
> The faster (in terms of execution on a computer), the philosophy of
> design (quick and gets the job done) usually win in nature and the
> market place.
Yes, like the superior agility of a typical male peacock. I recommend
you take a few lessons in evolutionary theory. What wins out is what
gets reproduced, no matter for how silly the reason. An operating
system that is widespread because copies of it get preinstalled on
every computer wins out in market share against the competition
because of the reproduction incentives, not because of any inherent
qualities. Once we are in the "good enough" category, quality takes
second place to other considerations.
> Look at the competition between vi and emacs. Vi has a greater
> market share because it is quick and easy, and supports the
> philosophy of being quick and getting the job done.
Uh, no. Among _serious_ editor users, you'll get quite a different
view from what the _preinstallation_ issue suggests.
vi beats out Emacs in the category of "default system editor", but
that's because Emacs is instead suitable as an editing system.
It turns out that the culmination of vi-think, a full-fledged vim, is
also unsuitable as a system editor: here is a listing from a current
Fedora system:
ls -l /bin/vi /usr/bin/vim
-rwxr-xr-x 1 root root 474224 Aug 6 12:28 /bin/vi
-rwxr-xr-x 1 root root 2043032 Aug 6 12:28 /usr/bin/vim
It turns out that _both_ editors are vim, but the first one (the
system editor) is a bare-bones compilation, whereas the second one is
the "real thing". There is no such thing as a bare-bones
implementation of Emacs. That's all there is to it.
> The elitists want to make everything grand. Emacs has everything
> including the kitchen sink and a lisp interpreter. Vi is simply a
> text editor, nothing more. Little wonder that Vi won.
It turns out that "vi" is pretty much nonexisting nowadays. It has
almost completely been replaced by clones. It's like touting the
virtues of Bavarian nature by referring to Japanese yodelers.
> I know some companies that ask prespective employees which editor
> they use, and if they say "emacs", they don't get hired because they
> will likely be prima donnas, where everything has to be perfect
> before they can work.
Well, so you _do_ equate Lisp with perfection? Anyway, colleagues in
companies in which I have been employed were glad that I could usually
solve their text manipulation problems in a few minutes, instead of
them having to take several hours getting it done more manually. Any
employer that rules out employees by their favorite editor is nuts,
anyway. Would not want to work in a fascist climate like that
regardless of the dictated editor.
My answer to that sort of question is basically to use the best that
is available. And where it is available, this will more often than
not mean Emacs.
Anyway, I don't see how Emacs/vi would lend itself to a Lisp/C war: vi
does not have a C-like extension language. In fact, no serious editor
I know of has a C-like extension language, since you would not want to
crash your editor too easily. In the context of user-accessible
extension languages, C basically has lost completely.
> John McCarthy built a programming language using Lambda Calculus as
> the theory, while E. W. Dijkstra used Predicate Calculus to build
> Algol. In terms of the progress to humanity that computers have
> made, most of it came from the Algol, C, C++, and Java lineage.
> While Lambda Calculus is difficult to understand, even McCarthy
> admitted he misunderstood it, Predicate Calculus is clean efficient
> and gets the job done. That is why Algol, C/C++ and Java won in the
> computing world. No other outcome was possible, in nature, or
> computing.
Good thing that C++ is easy to understand.
Anyway, you sound like the former Iraqi information minister. "We
have won against the infidels because no other outcome was possible"
or something. The last time I looked, computing was still an ongoing
development.
--
David Kastrup, Kriemhildstr. 15, 44793 Bochum
Basic has no match to what "arithmetic goto" can wreak on a Fortran
program.
Apple's Integer BASIC, which shipped with the original Apple II, had the
"computed GOTO" feature.
--
Karl A. Krueger <kkru...@example.edu>
Woods Hole Oceanographic Institution
Email address is spamtrapped. s/example/whoi/
"Outlook not so good." -- Magic 8-Ball Software Reviews
I think "ON ... GOTO ..." (and ON/GOSUB) is a normal feature of most if not
all BASIC implementations.
Timothy Murphy <t...@birdsnest.maths.tcd.ie> wrote on Tue, 17 Aug 2004
12:14:17 +0100:
> rem...@Yahoo.Com wrote:
>> So how does my explanation differ from (1) the "correct" meaning, and
>> (2) McCarthy's misunderstanding of the meaning?
> I can't answer either of these questions, but it is surprising that
> neither the lambda calculus nor Lisp seems to have flourished as much
> as one might have expected.
> I suspect that neither of them is very well suited to the human brain,
> or certainly to my brain.
One reason is that you need a proper editor (one which handles
parentheses) to make Lisp easy enough to program. Such editors were once
rarer than they are today.
Personally, I think Lisp is easier to use than C, but more difficult to
learn. You need deeper knowledge for Lisp, even if the breadth of that
knowledge is perhaps less.
The modern trend (regrettable in my opinion) is for very shallow learning
coupled with near infinite breadth. Look at modern GUI systems, where
having to learn to use 100 different dialog boxes, all different, is
regarded as "user friendly", but learning to use an editor and editing
configuration files in a standard way is "hard".
> Certainly the C vs Lisp argument is rather on a par with
> "Is Mozart or Beethoven the greater composer" -
> but as a matter of interest, if one wants to consider the consistency of C,
> would one not have to use the lambda calculus, or something very like it?
No. As fas as M and B were concerned, all you'd need would be an oboe to
give an A, and the consistency of C througout the entire orchestra would
then follow. ;-)
> Timothy Murphy
--
Alan Mackenzie (Munich, Germany)
Email: aa...@muuc.dee; to decode, wherever there is a repeated letter
(like "aa"), remove half of them (leaving, say, "a").
As I recall, ON/GOTO lets you select from a number of GOTO points
according to a numeric index. The feature I meant allowed you to GOTO a
line number stored in a numeric variable.
> "Mike Cox" <mikeco...@yahoo.com> writes:
>
> > The arguments that Paul Graham makes on his site in relation to
> > LISP's preceived superiourity to languages such as C/C++ and Java
> ^^^^^^^^^^^^
> > are incorrect. In fact it *is* Java, C/C++ and even C# that are
> > superiour to LISP.
> ^^^^^^^^^
>
> If you want to stress your superiority by demonstrating British
> spellings, you should perhaps restrict your mastery to those words
> that are actually spelt with "ou". "Superior", being derived from the
> ancestor of the modern French "supérieur", isn't.
That would be Latin "superus" then. Note that French "supérieur" is
derived from the ancestor of the modern English "superior" too.
> As to "preceived superiourity": who are you to argue his perceptions?
preconceived or perceived ?
Perhaps he means perceived thru a crystal ball...
Correct. They are not directly the same - but similar.
Huh!?
emacs is never more than a few minutes away from any system your customers
may have. For example, 12 CPU minutes from my poor Athlon 1.2GHz:
$ command time bash -c '/usr/local/bin/wget ftp://ftp.gnu.org/gnu/emacs/emacs-21.3.tar.gz -o $HOME/emacs.log ; tar zxf emacs-21.3.tar.gz ; cd emacs-21.3 ; ( ./configure --without-sound --with-x-toolkit=no --without-toolkit-scroll-bars --with-x --prefix=$HOME/emacs && make bootstrap && make && make install ) >> $HOME/emacs.log 2>&1 '
676.06user 44.91system 31:04.41elapsed 38%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1645606major+1356521minor)pagefaults 0swaps
I think computed GOTO is more spaghetti than ON/GOTO. :)
> In comp.lang.lisp Kenny McCormack <gaz...@yin.interaccess.com> wrote:
>
>>In article <cg08dc$1cg$1...@baldur.whoi.edu>,
>>Karl A. Krueger <kkru...@example.edu> wrote:
>>
>>>As I recall, ON/GOTO lets you select from a number of GOTO points
>>>according to a numeric index. The feature I meant allowed you to GOTO a
>>>line number stored in a numeric variable.
>>
>>Correct. They are not directly the same - but similar.
>
>
> I think computed GOTO is more spaghetti than ON/GOTO. :)
>
Absolutely. ON/GOTO is just a case statement with limited inputs.
Computed GOTO is pretty much an HLL trying to make a good thing out of a
buffer overflow exploit. (Even moreso if you then arrange the numbering
of your code to accomodate some regular arithmetic calculation of where
to go to.)
paul
> [...]
> To use functions as arguments, one needs a notation for
> functions, and it seemed natural to use the lambda
> notation of Church (1941). I didn't understand the rest
> of his book, so I wasn't tempted to try to implement his
> more general mechanism for defining functions.
> -- John McCarthy
I think only people who understand an important work would admit to
not understanding it...
---Vassil.
--
Vassil Nikolov <vnik...@poboxes.com>
Hollerith's Law of Docstrings: Everything can be summarized in 72 bytes.
David> Basic has no match to what "arithmetic goto" can wreak on a Fortran
David> program.
But either must bow to the "come from" statement in INTERCAL (you
write somewhere "COMEFROM 100" and when the program reaches line 100
it will jump to the COMEFROM statement, ie. a reversed goto).
INTERCAL is admittedly just a joke, although it has a working
interpreter, but it is a very funny one.
Check out for instance http://www.catb.org/~esr/intercal/
------------------------+-----------------------------------------------------
Christian Lynbech | christian #\@ defun #\. dk
------------------------+-----------------------------------------------------
Hit the philistines three times over the head with the Elisp reference manual.
- pet...@hal.com (Michael A. Petonic)
> Basic has no match to what "arithmetic goto" can wreak on a Fortran
> program.
"arithmetic goto" is mild. "assigned goto" was (for Fortran 77), the
aggravated form of that: assign a label to a variable and goto that
label from any point in the program. When I encountered it, it was
used several dozen places in a large program; the compiler had no restriction
on the scope of the goto (and would happily goto another subroutine).
--
Thomas E. Dickey
http://invisible-island.net
ftp://invisible-island.net
> "arithmetic goto" is mild. "assigned goto" was (for Fortran 77), the
> aggravated form of that: assign a label to a variable and goto that
> label from any point in the program. When I encountered it, it was
> used several dozen places in a large program; the compiler had no restriction
> on the scope of the goto (and would happily goto another subroutine).
The old K&R C compiler would let you do this (well, at least inside
a single routine). It's useful when using C as a target for compiling
another language. IIRC, gcc has an extension that lets you do it also.
Paul
> In comp.editors David Kastrup <d...@gnu.org> wrote:
>
> > Basic has no match to what "arithmetic goto" can wreak on a Fortran
> > program.
>
> "arithmetic goto" is mild. "assigned goto" was (for Fortran 77), the
> aggravated form of that: assign a label to a variable and goto that
> label from any point in the program. When I encountered it, it was
> used several dozen places in a large program; the compiler had no restriction
> on the scope of the goto (and would happily goto another subroutine).
Well, speaking on spaghetti programming. I've noticed in a program
[NewWord for cp/m-80 - the instruction set had expanding opcodes] that
it used a goto back into the old code but in an odd place. Just in the
middle of an opcode. Resulting in a new instruction set being performed
...
Something that saved RAM back in the 80s:-).
--
Per Erik Rønne
MUMPS is/was an amusing language that encouraged this sort of thing.
A MUMPS program looked quite a bit like an old-fashioned BASIC
program, but there were a few operators like TEXT$ (or something like
that) that returned a line of the program as a string. Not a copy,
but the line itself. A typical program would implement a multiway
dispatch by having a block of commented-out goto statements. The
dispatch would involve selecting the appropriate line of program text,
bashing out the comment character, then jumping to the beginning of
the block of comments.
I have GNU Emacs 21.3 with MULE, and I can type in Russian:
АБВГДЕ
in Greek:
ΑΒΨΔΕΦΓΗΙΙΞ
in Spanish:
pengüin cómo
Latin with accents:
äãªáå
And so on.
--
Ivan Boldyrev
Onions have layers. Unix has layers too.
>> Mike Cox <mikeco...@yahoo.com> wrote:
>> > Vi is simply a text editor, nothing more. Little wonder that Vi won.
>> Vi is a nuisance with all its modes evolved from long gone input
>> modes. I had preferred good old WordStar over vi, and in ordinary
>> Unix I prefer emacs though its always difficult to customize it for
>> use outside the U.S. [chars like £, ¤, æ, ø, å and ç are a must in
>> Europe].
>> Vi is only used because it is standard on every Unix. If you work on a
>> Unix system, you know that Emacs /might/ installed but also that vi
>> /always/ is, and if you work as a Unix consultant you have to be able
>> to use it.
> Huh!?
> emacs is never more than a few minutes away from any system your
> customers may have. For example, 12 CPU minutes from my poor Athlon
> 1.2GHz:
I think it might be further away from the QNX based embeded system I'm
involved with than 12 minutes. Especially considering that such system
doesn't contain a C compiler. Now, presumably, I could "enhance" it by
including the said compiler and all the other necessary gubbins, like
make, the linker, and so on. Emacs _might_ build without errors, but the
whole job would take several days. There's a handy vi included, though,
useful for hacking configuration files and so on.
> --
> __Pascal Bourguignon__ http://www.informatimago.com/
--
Your metaphor/generalization is grossly mistaken.
I like emacs because it's the only text editor I've ever found that is
effectively usable over a low-speed dialup, and because I don't have to
constantly hassle (as with vi or tvedit or e) with the difference
between insert mode and command mode. If I type regular text, it gets
inserted. If I type control text, my commands get executed. I don't
have the problem of typing what I think is regular text only to
discover I wasn't in insert mode so every text character was
interpreted as some weird command.
I like lisp for too many reasons to cite in one article.
But I worked with other editors before I discovered emacs, including
manual keypunches, both the old kind (original hollerith) and the new
kind (EBCDIC extension of hollerith). I suffered such pain with
keypunches, and wylbur, and SOS, and tvedit and e, but I got work done,
I didn't wait for pie in the sky.
And I programmed in other langauges before I discovered lisp, including
IBM 1620 machine language (does anybody remember 16000100000?) and
S.P.S. (IBM 1`620 assembly language) and "Fortran with Format" (IBM
1620 fortran 1), and Fortran 2d ('d' stands for disk!!!). I wrote a lot
of programs in SAIL (variation of algol 60), I didn't wait around for a
wonderful programming language (lisp).
But once I discovered emacs, my editing got a lot more efficient. And
once I discovered MacLISP, my programming got more efficient too. And
now there's Common LISP, wow!
Your metaphor should read like this: When there was no fire, we ate raw
food. But when fire was discovered, I found it made the food a lot
easier to eat, so I began using fire, but the other cavemen refused to
use fire because they believed it wasn't a manly way to eat. To this
day they suffer raw food, while I eat cooked meat but raw fruit, each
kind as appropriate.
> (b) Maybe the vast horde of programmers have time constraints and
> need to do things efficiently, not in the most "elitist" way.
There's nothing elitist about lisp. It's just the easiest programming
language to actually get work done. The R-E-P loop, combined with
totally generic programming (generic handle on any kind of data
whatsoever that is in lisp, no need to declare what kind of data will
be in each place in a program or data structure), means I can just sit
here writing one line of code, and testing it immediately, after
another. The closest any popular language has is java, where you can
use container objects to generically hold any primitive type, and use
variables declared of type Object to hold any such variable, but then
you are restricted to static methods only. If you want to do generic
programming with instance methods, you first have to declare a parent
or interface class that has declarations for all the instance methods
you'll ever need to use, and *then* you can code specific cases of
those methods and use them, but that's an incredible pain compared to
how generic programming can be done in lisp.
> If LISPers ran the computing industry, there would be no computing
> industry because something would never be "right", and they would
> have to wait until conditions were perfect before they could start.
That statement is actually backwards in logic! If Java programmers ran
the world, there'd be nothing available until every class in the entire
program was perfect so the compiler would work on all the classes, and
people would starve while waiting for that to occur. But with lisp,
somebody can eat something within a few seconds of the first line of
code being written, no need to wait for anything else except that one
line of code to be correct, nobody would ever starve.
> no more articles on how JAVA, C/C++ and C# suck, ok?
Well, compared to CL, they do indeed suck. Compared to what I used long
ago (that IBM 1620 stuff for example), they are much better, and even
compared to SAIL they are a little bit better. Java is the best of that
particular lot, because it has a working garbage collector built-in.
And which bit would that be? Let me guess: It's the high-order bit,
which in signed integers is used as the sign bit, so by setting that
bit you cause the value to be negative, right?
> Anyway, I don't see how Emacs/vi would lend itself to a Lisp/C war:
> vi does not have a C-like extension language. In fact, no serious
> editor I know of has a C-like extension language, since you would
> not want to crash your editor too easily. In the context of
> user-accessible extension languages, C basically has lost
> completely.
There's Epsilon (http://www.lugaru.com/).
> Anyway, I don't see how Emacs/vi would lend itself to a Lisp/C war:
> vi does not have a C-like extension language. In fact, no serious
> editor I know of has a C-like extension language, since you would
> not want to crash your editor too easily.
Edi.
--
"Lisp doesn't look any deader than usual to me."
(David Thornley, reply to a question older than most languages)
Real email: (replace (subseq "spam...@agharta.de" 5) "edi")
Note that lugaru is homophone of loup-garrou which means werewolf, and
which is a name that indeed matches perfectly that creepy beast.
--
__Pascal Bourguignon__ http://www.informatimago.com/
Our enemies are innovative and resourceful, and so are we. They never
HTML is a markup language, not a programming language. It classifies
information in a document, and it just so happens that we have
applications that will render the document differently based off of
these marks.
A programming language is a set of instructions. A markup language is a
set of rules on how to structure, index, link, and soforth documents.
-Shane
You mean like RUNOFF & Troff & PostScript? Oh, wait, those *are*
programming languages. [Or at least PostScript is. While the former
two have macros, I'm not sure that make them programming languages...]
-Rob
-----
Rob Warnock <rp...@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607
In my own PHP HTML class I write:
$h = new HTML;
echo $h->html(
$h->head(),
$h->body($h->br,
$h->br,
$h->center("Hello World")));
With the phpwiki html classes it's much better, since I just store the
XML tree in a similar fashion and output it on request as HTML 4.1 or
XHTML or XML or stringified text without tags in any needed DTD fashion
with automatic validation on request.
echo $h->asHTML(); echo $h->asXML(); $h->asString(); $h->asPDF();
br() => <br> or <br /> for example.
img() => <img ...> or <img .../> or <img ...></img>
same for content encoding. (charset, ...)
Haven't seen that with the simple lisp HTML macros so far. I'll have to
look at CLHTTPD though. Maybe in DSSSL also.
(with-xml-output (dtd "http://www.w3.org/TR/html4/loose.dtd")
(s *standard-output*)
xml-tree)
With the perl CGI module it will look like this, from perldoc CGI:
use CGI qw/:standard/;
print header,
start_html('A Simple Example'),
h1('A Simple Example'),
start_form,
"What's your name? ",textfield('name'),p,
"What's the combination?", p,
checkbox_group(-name=>'words',
-values=>['eenie','meenie','minie','moe'],
-defaults=>['eenie','minie']), p,
"What's your favorite color? ",
popup_menu(-name=>'color',
-values=>['red','green','blue','chartreuse']),p,
submit,
end_form,
hr;
Don't classify languages on their worst examples.
--
Reini Urban
http://xarch.tu-graz.ac.at/home/rurban/
One big disadvantage of parenthetical notation is that if you have a
very very large expression, like many pages, you can't see where the
parens match, and if you are using a plain-text editor and get a
mismatch it's nearly impossible to figure out what's wrong. Parens are
fine for single-screen expressions where you can either use EMACS
auto-match features or prettyprint the expression and visually see
where you goofed, but for multi-screen expressions SAIL (the Stanford
A.I. version of Algol-60) was best: BEGIN...END blocks could have
labels at each end, and the compiler would complain if you got them
mismatched. XML has a half-baked approach: It matches only the types of
tags, not the specific names, so a mismatch between a <em...> and a
</em> goes undetected whereas a mismatch between a <p...> and a </em>
gets flagged as bad syntax. To it right, XML should allow name
attributes on closing tags too, so it could check the match between <em
name="foo"> and </em name="foo">. SGML/HTML is even worse, not even
bothering to have matching opening/closing tags much of the time.
It would be nice to have a a language that allowed a mix of
<tag>...</tag> and (op ...) notation as appropriate for the context,
with the two formats being exactly equivalent semantically.
That way you could have small expressions such as (plus (expt x 2) 5)
instead of having to write it as
<plus><expt><atom>x</atom><atom>2</atom></expt><atom>f</atom></plus>
or somesuch, yet for huge page ranges you could do it the XML way (or
even better the SAIL way).
Hmm, there are some solutions which come to mind, though you might know
reasons precluding them.
- Use comments to break things up visually, including things like
BEGIN..END <operator name> comments.
- Many huge single expressions are regular, like a big state machine or
something. So in these situations, other visual qualities would
delineate text.
- Progn!
Does this disadvantage hold true for {}, or only () and <>? If the
latter:
- An indentation style similar to a {}; language can be adopted.
Maybe I don't completely understand the context of this. Are we
assuming either text markup or code specific? Or is this a more general
thing encompassing both, among others?
Anyway, it's perfectly possible I've only been exposed to pretty
codebases where things are at most 10-liners, so I'm certainly curious.
MfG,
Tayssir
> Note that lugaru is homophone of loup-garrou which means werewolf,
> and which is a name that indeed matches perfectly that creepy beast.
Interesting, I used to listen to a band called Loop Guru.š I had no
idea it had any other meaning beyond, loosely, "someone well versed in
rhythm loops."
Footnotes:
š http://www.loopguru.demon.co.uk/
--
Steven E. Harris
> Pascal Bourguignon <sp...@thalassa.informatimago.com> writes:
>
> > Note that lugaru is homophone of loup-garrou which means werewolf,
> > and which is a name that indeed matches perfectly that creepy beast.
>
> Interesting, I used to listen to a band called Loop Guru.¹ I had no
> idea it had any other meaning beyond, loosely, "someone well versed in
> rhythm loops."
They seem to be aware of the link, wit their album: "Loop Bites Dog" :-)