The perens in lisp dilects is there for a reson... macros

atbusbook@aol.com writes:

<smug lisp weenie giving standard lisp macro rant omitted>

This appears to be the continuation of some conversation / flamewar
somewhere else. Why bring this crud over here? Is there some reason
that we should care?

Fine, lisp macros are great and glorious and the be all and end all of
programming constructs, and all other languages hopelessly inferior.
All hail lisp macros. They're even so great and wonderful we'll bow
down before the wisdom of someone who manages to cram three spelling
errors and an awful grammar error into the subject line. You've
proven your vast superiority over us with your l33t lisping skillz.

Can you just go away now and let us get back to ruby?

I've only recently subscribed to this list, after just sampling it for
a while, and I've been wondering the same thing about the apparently
endless discussion of the merits of C, C++, Ocaml, and Java

···

On 8/5/06, Daniel Martin <martin@snowplow.org> wrote:

atbusbook@aol.com writes:

> <smug lisp weenie giving standard lisp macro rant omitted>

This appears to be the continuation of some conversation / flamewar
somewhere else. Why bring this crud over here? Is there some reason
that we should care?

--
Rick DeNatale

That stuff doesn't bother me, it seems normal for users, enthusiasts,
and people interested in one programming language to talk about other
programming languages. Programmers these days usually have to use
multiple languages in their work anyway, and may have some functionaliy
written in another language that they need to interface with Ruby. It's
less fun to have a topic-nazi policy.

I've also noticed that Rubyists seem have a high tendency (at least
higher than Javaists and others, I think) to be programming-language
geeks, the kind of folks who like to learn about the general concepts of
programming languages, learn lots of different ones, and compare them.
I'd count myself more among those than a Rubyist at this point, as I've
yet to work on a real project in Ruby yet (but I'm itching to).

--ch--

···

On Sun, 2006-08-06 at 13:34 +0900, Rick DeNatale wrote:

On 8/5/06, Daniel Martin <martin@snowplow.org> wrote:
> atbusbook@aol.com writes:
>
> > <smug lisp weenie giving standard lisp macro rant omitted>
>
> This appears to be the continuation of some conversation / flamewar
> somewhere else. Why bring this crud over here? Is there some reason
> that we should care?

I've only recently subscribed to this list, after just sampling it for
a while, and I've been wondering the same thing about the apparently
endless discussion of the merits of C, C++, Ocaml, and Java

Oh, and if anyone's keeping score, the parens in Lisp/Scheme are there
to structure the code and data. Where other languages are full of {},
[], ;, and all sort of other punctuation marks, in Lisp you only
have/need parentheses to serve all the same purposes. It doesn't have
anything to do with macros per se.

--ch--

···

On Sun, 2006-08-06 at 13:34 +0900, Rick DeNatale wrote:

On 8/5/06, Daniel Martin <martin@snowplow.org> wrote:
> atbusbook@aol.com writes:
>
> > <smug lisp weenie giving standard lisp macro rant omitted>

Rick DeNatale wrote:

···

On 8/5/06, Daniel Martin <martin@snowplow.org> wrote:

atbusbook@aol.com writes:

> <smug lisp weenie giving standard lisp macro rant omitted>

This appears to be the continuation of some conversation / flamewar
somewhere else. Why bring this crud over here? Is there some reason
that we should care?

I've only recently subscribed to this list, after just sampling it for
a while, and I've been wondering the same thing about the apparently
endless discussion of the merits of C, C++, Ocaml, and Java

Whatever you opinions about any programming language are, Ruby is implemented in C at the moment, so C at least has *that* going for it! :slight_smile: :slight_smile:

Charles Hoffman wrote:

That stuff doesn't bother me, it seems normal for users, enthusiasts,
and people interested in one programming language to talk about other
programming languages.

Especially the denizens of the main Ruby mailing list, which includes the founder of the language. We are people who use or want to use Ruby, and we want it to have what it needs from other languages. Matz did a pretty good job of that all by himself. :slight_smile:

Programmers these days usually have to use
multiple languages in their work anyway,

Well ... my personal opinion is that more than two languages is probably overload. You need one general purpose language and whatever domain-specific language fits what you're doing. More than that and you start losing time context switching and spending time looking up things like "how do I parse a date/time string to a date/time object in Ruby when I know how to do it in R?" :slight_smile:

I've also noticed that Rubyists seem have a high tendency (at least
higher than Javaists and others, I think) to be programming-language
geeks, the kind of folks who like to learn about the general concepts of
programming languages, learn lots of different ones, and compare them.
  

That may be because of Ruby's youth relative to other general-purpose languages. I remember the same phenomenon when Java was a young language. I'm personally a language geek and have been since ... well, let's just say that the first code I wrote in my life was for a machine built from vacuum tubes that had only an assembler. :slight_smile:

Charles Hoffman wrote:

  

atbusbook@aol.com writes:

<smug lisp weenie giving standard lisp macro rant omitted>
        
Oh, and if anyone's keeping score, the parens in Lisp/Scheme are there
to structure the code and data. Where other languages are full of {},
[], ;, and all sort of other punctuation marks, in Lisp you only
have/need parentheses to serve all the same purposes. It doesn't have
anything to do with macros per se.

--ch--
  

There's a bit more to it than that. Ironically, Lisp originated as an implementation of "parenthesis-free (Polish) prefix" notation in symbolic logic. That is, rather than write "A + (B * C)" one writes "+ A * B C". The parentheses came about for a number of reasons:

1. Unlike my example, Lisp functions even in Lisp 1 did not have a fixed arity,
2. As someone already pointed out, S expressions used them,
3. It's more natural when you have multi-character atoms,

etc. So in Lisp you end up with "(PLUS A (TIMES A B))".

The reverse Polish form "B C * A +" is what the early compilers generated, and is now known as Forth. :slight_smile:

Incidentally, the original Lisp spec had list elements separated by commas, for example "(ALPHA,(BETA,GAMMA))". There was a bug/feature in the first implementation that allowed spaces, and the rest is history. :slight_smile:

···

On Sun, 2006-08-06 at 13:34 +0900, Rick DeNatale wrote:

On 8/5/06, Daniel Martin <martin@snowplow.org> wrote:

Java's VM is written in C too, is it not?

MTASC, a rather good open-source ActionScript compiler, is written in
OCaml... as is haXe, I think.

C is kind of an obvious choice for interpreters/compilers because of the
availability of Lex and Yacc (and/or flex and Bison), I suppose.

Hmmm... I had rather thought that functional-style languages were more
common for writing language interpreters/compilers in. Aren't Lisp guys
always on about using Lisp to write another language more specific to
the problem domain, and working from there?

In the Programming Languages course I took at UNI we developed an
interpreter for a simple language in Scheme... the professor I took that
course with just e-mailed me a Joy interpreter he wrote, also in Scheme,
that I had expressed interest in. In another course I took with another
prof, we used a Mumps compiler he had written in C++; actually it
translated Mumps to C++ and compiled that with gcc.

I think gForth is written in C, but there are faster Forth environments
out there; I wonder what they used. I'm pretty sure a lot of Forth
environments are started in assembler.

Anyway I'm rambling, just because this is a fun topic.

I'd learned that it was common to develop a minimal subset of a new
language in another language, then use that small version of the
language to write the rest. The Lisp environments I've used certainly
appear to have been implemented in this way, and Forth is explicitly so.
There definitely seem to be some very low-level functions in Ruby that
seem to be mainly used by more advanced Rubyists, usually for
metaprogramming-like things. Stuff like instance_eval. Am I on-track
in having the impression that Ruby is designed that way? Just curious.

--ch--

···

On Mon, 2006-08-07 at 00:49 +0900, M. Edward (Ed) Borasky wrote:

Whatever you opinions about any programming language are, Ruby is
implemented in C at the moment, so C at least has *that* going for it! :slight_smile: :slight_smile:

This appears to be the continuation of some conversation / flamewar
somewhere else. Why bring this crud over here? Is there some reason
that we should care?

No. It looks more like trolling in an incoherent way, than a discussion with
meaningful information about lisp.

Rick DeNatale wrote:

I've only recently subscribed to this list, after just sampling it for
a while, and I've been wondering the same thing about the apparently
endless discussion of the merits of C, C++, Ocaml, and Java

Apparently some people do care. If you don't, then why reading the
thread?

···

On 8/5/06, Daniel Martin <martin@snowplow.org> wrote:

On Mon, 07 Aug 2006 00:49:20 +0900, M. Edward (Ed) Borasky wrote:

Whatever you opinions about any programming language are, Ruby is
implemented in C at the moment, so C at least has *that* going for it!
:slight_smile: :slight_smile:

Exactly! It is quite useful to know C, for example to write bindings to
existing libraries, or to rewrite the parts of your program that are slow
in C.

Regards,
Kristof

Hi --

Charles Hoffman wrote:

That stuff doesn't bother me, it seems normal for users, enthusiasts,
and people interested in one programming language to talk about other
programming languages.

Especially the denizens of the main Ruby mailing list, which includes the founder of the language. We are people who use or want to use Ruby, and we want it to have what it needs from other languages. Matz did a pretty good job of that all by himself. :slight_smile:

Programmers these days usually have to use
multiple languages in their work anyway,

Well ... my personal opinion is that more than two languages is probably overload. You need one general purpose language and whatever domain-specific language fits what you're doing. More than that and you start losing time context switching and spending time looking up things like "how do I parse a date/time string to a date/time object in Ruby when I know how to do it in R?" :slight_smile:

I've also noticed that Rubyists seem have a high tendency (at least
higher than Javaists and others, I think) to be programming-language
geeks, the kind of folks who like to learn about the general concepts of
programming languages, learn lots of different ones, and compare them.

That may be because of Ruby's youth relative to other general-purpose languages. I remember the same phenomenon when Java was a young language.

I think Ruby is slightly older than Java, isn't it? :slight_smile:

I'm personally a language geek and have been since ... well, let's
just say that the first code I wrote in my life was for a machine
built from vacuum tubes that had only an assembler. :slight_smile:

You may have me beat. My first was BASIC on a PDP-8, followed by
BASIC and assembler on a PDP-10. I think at least the '10 had
integrated circuits :slight_smile:

As for language geekdom: I feel like I used to be more than I am now,
but it's more because Ruby stuff is keeping me so busy than because
Ruby satisfies all my language interest. In fact I've never wanted
Ruby to take on Lisp macros, Python whitespace, Java-style typing,
C-style comments, and all the rest of it. Maybe there should be one
or more kitchen-sink languages out there, but they should be written
from scratch for that purpose.

Here's what I think is a classic and still very relevant post by Dave
Thomas about the design of Ruby and the process of change:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/12606

David

···

On Mon, 7 Aug 2006, M. Edward (Ed) Borasky wrote:

--
http://www.rubypowerandlight.com => Ruby/Rails training & consultancy
   ----> SEE SPECIAL DEAL FOR RUBY/RAILS USERS GROUPS! <-----
http://dablog.rubypal.com => D[avid ]A[. ]B[lack's][ Web]log
http://www.manning.com/black => book, Ruby for Rails
http://www.rubycentral.org => Ruby Central, Inc.

Err . . . not exactly. It's more like in Lisp you create a
domain-specific "jargon" that allows you to abstract the problem further
according to the needs of the moment -- like using a particularly long
lever to gain the ability to move larger things with less "heavy
lifting" power provided by you, the programmer.

As one uses a higher-level programming language rather than moving bits
around one at a time with a pair of tweezers when one wants to (for
instance) edit some text, so one uses Lisp to create domain-specific
syntaxes for further abstracting things so that not even the extra work
of using that "higher-level" programming language is necessary. At
least, that's my understanding: it's not about literally writing a
compiler for a language, then writing programs in that language.

I could be wrong, though.

···

On Mon, Aug 07, 2006 at 02:05:03AM +0900, Charles Hoffman wrote:

Hmmm... I had rather thought that functional-style languages were more
common for writing language interpreters/compilers in. Aren't Lisp guys
always on about using Lisp to write another language more specific to
the problem domain, and working from there?

--
CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
unix virus: If you're using a unixlike OS, please forward
this to 20 others and erase your system partition.

Kristof Bastiaensen <kristof@vleeuwen.org> writes:

This appears to be the continuation of some conversation / flamewar
somewhere else. Why bring this crud over here? Is there some reason
that we should care?

No. It looks more like trolling in an incoherent way, than a discussion with
meaningful information about lisp.

Looking up other posts by atbusbook@aol.com on google groups is
informative. It *looks* like the poster is continuing some
pre-existing conversation, but he's not. However, I'm not sure that
this is trolling in the sense of "the poster is consciously trying to
arouse an emotional response", unless the entire persona of
atbusbook@aol.com is one long extended troll.

There's lisp macro activity, which would be annoying on this list to
begin with, then there's poor lisp macro activity, which attempts to
wax on about how wonderful lisp macros are without providing more than
trivial examples (easily done with higher-level functions), then
there's incoherent advocacy, which is what we have here. (not merely
incoherent from the bizarre spelling and atrocious grammar, but also
incoherent at a structural level - he can't decide if he's defending
lisp as a wonderful language or as a sieve to separate the
uebermenschen from the rest of humanity)

Anyway. This is entirely much more time spent on this poster than I
meant to spend.

···

On 8/5/06, Daniel Martin <martin@snowplow.org> wrote:

dblack@wobblini.net wrote:

I think Ruby is slightly older than Java, isn't it? :slight_smile:

Maybe ... Java is 1.5 and Ruby is 1.8.5, so by that measure, yes. I suppose I need to look up the history of Ruby. But I remember jumping on Java in the 1.1 days many years ago as a language I thought was *vastly* superior to Perl 4, and taking flames for saying so. The Perlists had their revenge though; I wrote one program in Java and that was it.

You may have me beat. My first was BASIC on a PDP-8, followed by
BASIC and assembler on a PDP-10. I think at least the '10 had
integrated circuits :slight_smile:

I once had a boss who claimed to have worked on an IBM 1620. I think he was trying to impress us as being a "real programmer just like us." The lab where I worked on a 1620 got rid of it in 1964 ... I'm guessing he was in junior high school then. :slight_smile:

As for language geekdom: I feel like I used to be more than I am now,
but it's more because Ruby stuff is keeping me so busy than because
Ruby satisfies all my language interest. In fact I've never wanted
Ruby to take on Lisp macros, Python whitespace, Java-style typing,
C-style comments, and all the rest of it. Maybe there should be one
or more kitchen-sink languages out there, but they should be written
from scratch for that purpose.

A long time ago some computer scientist defined two types of languages -- "core" languages and "shell" languages. Lisp, Scheme and Forth are great examples of core languages ... just a few simple core concepts from which you can build mighty software. And the classic shell languages are PL/I and Ada ... just about anything you'd ever want to do is built into the language.

The languages most of us use these days are in between. The core is bigger than the core of Lisp or Forth -- it includes strings, various floating point numbers and math functions, arrays and usually hashes, and usually objects, classes of objects and methods. What Ruby has that many of them lack, however, is more or less explicit use of classical computer science concepts, usch as lambda and continuations.

That makes sense to me, except that it doesn't seem all that different
from what you do with any language by writing functions and classes and
the like. You end up with all these concepts that you've defined in
code and given names to, and then work with those. So why do Lispies
make such a big deal over it?

--ch--

···

On Mon, 2006-08-07 at 16:04 +0900, Chad Perrin wrote:

On Mon, Aug 07, 2006 at 02:05:03AM +0900, Charles Hoffman wrote:
>
> Hmmm... I had rather thought that functional-style languages were more
> common for writing language interpreters/compilers in. Aren't Lisp guys
> always on about using Lisp to write another language more specific to
> the problem domain, and working from there?

Err . . . not exactly. It's more like in Lisp you create a
domain-specific "jargon" that allows you to abstract the problem further
according to the needs of the moment -- like using a particularly long
lever to gain the ability to move larger things with less "heavy
lifting" power provided by you, the programmer.

As one uses a higher-level programming language rather than moving bits
around one at a time with a pair of tweezers when one wants to (for
instance) edit some text, so one uses Lisp to create domain-specific
syntaxes for further abstracting things so that not even the extra work
of using that "higher-level" programming language is necessary. At
least, that's my understanding: it's not about literally writing a
compiler for a language, then writing programs in that language.

I could be wrong, though.

Hi --

···

On Mon, 7 Aug 2006, M. Edward (Ed) Borasky wrote:

dblack@wobblini.net wrote:

I think Ruby is slightly older than Java, isn't it? :slight_smile:

Maybe ... Java is 1.5 and Ruby is 1.8.5, so by that measure, yes.

No, I meant older as in... older :slight_smile: Ruby's birthday is traditionally
February 1994 (I can't remember the exact day), and I seem to remember
that that predates Java, but I'm not sure.

David

--
http://www.rubypowerandlight.com => Ruby/Rails training & consultancy
   ----> SEE SPECIAL DEAL FOR RUBY/RAILS USERS GROUPS! <-----
http://dablog.rubypal.com => D[avid ]A[. ]B[lack's][ Web]log
http://www.manning.com/black => book, Ruby for Rails
http://www.rubycentral.org => Ruby Central, Inc.

Lisp is definitely not a core language. The standard is about 1100 pages,
so it contains most of of the stuff you would expect, string handling,
arrays, hashes, math functions, etc... Scheme is probably more what you
would call a core language. There are documents (SRFI's) that describe
common implementations for libraries, but scheme implementations don't
have to use them to be called scheme.

Kristof

···

On Mon, 07 Aug 2006 01:51:08 +0900, M. Edward (Ed) Borasky wrote:

<snipped>
A long time ago some computer scientist defined two types of languages
-- "core" languages and "shell" languages. Lisp, Scheme and Forth are
great examples of core languages ... just a few simple core concepts
from which you can build mighty software. And the classic shell
languages are PL/I and Ada ... just about anything you'd ever want to do
is built into the language.

Charles Hoffman wrote:

That makes sense to me, except that it doesn't seem all that different
from what you do with any language by writing functions and classes and
the like. You end up with all these concepts that you've defined in
code and given names to, and then work with those. So why do Lispies
make such a big deal over it?
  

I did something similar a long time ago in macro assembler, which I learned a long time before I learned Lisp. Interestingly enough, I dug out my copy of Leo Brodie's "Thinking Forth" last night. That programming style, and the term "factoring", are prominent in that work (which by the way is available on line now as a PDF). I think it's something all programmers of a certain level of maturity do regardless of language.

I learned Lisp (1.5) in the early 1970s, and this style of programming seemed to be tied to Lisp at the time, but I actually had used it earlier. For some reason FORTRAN programmers, including myself when I was one, don't usually use this style, perhaps because the original FORTRAN didn't have structured concepts and forced the use of GO TO statements.

Lisp is probably the third oldest programming language in use today, after FORTRAN and COBOL. Since FORTRAN and COBOL programmers didn't tend to program that way and Lisp programmers did, I suspect the Lispniks make a big deal of it because they "invented" it and have been doing it longer. :slight_smile:

M. Edward (Ed) Borasky wrote:

I once had a boss who claimed to have worked on an IBM 1620. I think he was trying to impress us as being a "real programmer just like us." The lab where I worked on a 1620 got rid of it in 1964 ... I'm guessing he was in junior high school then. :slight_smile:

The 1620 was still a state-of-the-art product in 1964, and was IBM's only desk-sized machine of the era. If your lab dumped one, it was not for obsolescence; its niche successor, the 1130, was still in the future -- and the 1130 was not compatible at all with the 1620, so upgrades were slow and cautious. (Many 1620s were instead eventually upgraded to S/360-30 mainframes, which offered a 1620-compatibility option.)

···

--
John W. Kennedy
"The blind rulers of Logres
Nourished the land on a fallacy of rational virtue."
   -- Charles Williams. "Taliessin through Logres: Prelude"

dblack@wobblini.net wrote:

Hi --

I think Ruby is slightly older than Java, isn't it? :slight_smile:

Maybe ... Java is 1.5 and Ruby is 1.8.5, so by that measure, yes.

No, I meant older as in... older :slight_smile: Ruby's birthday is traditionally
February 1994 (I can't remember the exact day), and I seem to remember
that that predates Java, but I'm not sure.

Where can one find "a brief history of Ruby?" I'm too lazy to ask Google, especially when Matz is on the list. :slight_smile:

For that matter, how did *Google* get its name, and does it have anything to do with Barney Google? :slight_smile:

···

On Mon, 7 Aug 2006, M. Edward (Ed) Borasky wrote:

dblack@wobblini.net wrote:

Kristof Bastiaensen wrote:

···

On Mon, 07 Aug 2006 01:51:08 +0900, M. Edward (Ed) Borasky wrote:

Lisp is definitely not a core language. The standard is about 1100 pages,
so it contains most of of the stuff you would expect, string handling,

You seem to confuse the language Common Lisp with the mathematical concept Lisp. Lisp is seven operators and a one-page denotional semantic definition. That's about as small and core as it gets.

--
  Ola Bini (http://ola-bini.blogspot.com)
  JvYAML, RbYAML, JRuby and Jatha contributor
  System Developer, Karolinska Institutet (http://www.ki.se)
  OLogix Consulting (http://www.ologix.com)

  "Yields falsehood when quined" yields falsehood when quined.