[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: weird(?) thought about programming languages

Albert Chou

10/22/2003 5:09:00 PM

I remembered that test language that defined a lot of new
keywords-as-symbols for testing, though not its author. I'd love to do
that here, but I don't (yet?) have approval to use Ruby as the base
language for the test harness (I do have it in there as a tool for
as-needed use, though, and have written a few tools for the harness with
it). I skipped most of the native-XML thread here, so sorry for the
duplication.

Al


-----Original Message-----
From: James Britt [mailto:jamesUNDERBARb@seemyemail.com]
Sent: Tuesday, October 21, 2003 5:40 PM
To: ruby-talk ML
Subject: Re: weird(?) thought about programming languages

Albert Chou wrote:

> This thought isn't necessarily about Ruby specifically, though the
> occasional wish expressed here that Ruby have Lisp-like macros added
to
> it resonates with it.
>
> I've been reading Paul Graham's _On Lisp_ to finally learn what all
this
> talk of Lisp macros is about, and I've read enough (I'm into chapter
15
> so far) to understand a lot of it, generally speaking.

I tried reading that, but after about three or four chapters I decided I

didn't know enough Lisp to follow along. :)

But I was motivated by the same reason, to better understand macros.

>
I spent some
> time trying to understand how it might be possible to use macros to
give
> Lisp (or Scheme) a syntax that's easier for me to read (for instance,
I
> find most of the function names I've encountered in Common Lisp to be
> pretty incomprehensible). I even came across a USENET posting from
> about 1991 from a guy who had done that with Scheme, but I couldn't
find
> any more references or a way to contact him. Further searches of the
> Web turned up another discussion about making Scheme need fewer
> parentheses that finally taught me what I think is a core lesson about
> language syntax: it's difficult, if not impossible, to change the
> punctuation of a programming language using its own mechanisms. By
> punctuation I mean how tokens are delimited/defined.

There was some similar discussion here about implementing a syntax in
Ruby that would allow one to manipulate XML using near-literal XPath
syntax (along the lines of ECMAScript and E4X).

>
> The discussion about making a less-parenthesized version of Scheme
> concluded that you'd have to write a special-purpose reader (basically
> parser, IIRC) to accomplish the task. Thus you can write as highly
> abstracted and domain-specific a language as you like on top of
> Lisp/Scheme, as long as you adhere to the way these parent languages
> uses parentheses, whitespace, and alphanumeric characters to define
> language tokens. Adding words (and even language constructs, in a
> language that has macros) to a language's vocabulary is easy, but
> redefining how to define words is impossible without stepping outside
> the language. Of course, you could write a parser for your extended
> language in the language you're extending, but my point is there's no
> way to make a parser for the original language work with the extended
> language if you violate the parent language's punctuation rules.

I believe Phil Thomson has done some work creating a meta-language in
Ruby to allow QA/testers to write and run scripts that are, techincally,

Ruby, but do not require any profound understanding of Ruby's nuts and
bolts. (And Ruby itself is a meta-language on top of C.)

That sort of thing, as well as Graham's On Lisp macro stuff, is along
the lines of "build a language, not an application."[0]

James

[0] http://www.pragmaticprogrammer.com/ppllc/papers/19...