Related articles |
---|
Compilers For Typeless Languages Will@cup.portal.com (1989-09-15) |
Re: Compilers For Typeless Languages sra@ecs.southampton.ac.uk (Stephen Adams) (1989-09-23) |
Re: Compilers For Typeless Languages plogan@pdx.MENTOR.COM (1989-09-28) |
Date: | Thu, 28 Sep 89 09:08:28 PDT |
From: | plogan@pdx.MENTOR.COM (Patrick Logan) |
In-reply-to: | Will@cup.portal.com's message of 21 Sep 89 05:12:32 GMT |
Newsgroups: | comp.compilers |
References: | <1989Sep21.051232.1868@esegue.segue.boston.ma.us> |
In article <1989Sep21.051232.1868@esegue.segue.boston.ma.us> Will@cup.portal.com writes:
>Do any of you who have written interpreters or compilers for
>typeless languages have any thoughts on whether it is worthwhile
>to even bother writing a compiler for the language?
>
>Let's say I have a language, X, where every variable is treated by
>the user as a character string, and the interpreter knows that in
>certain contexts a string implies a non-character type of data and
>operation (e.g., "2/3", "3.343434 * 23423.23423"). The user
>doesn't ever declare a variable to be of any type; datatypes are
>implied by the use of a variable. Since in many situations there
>is no a-priori way to know whether a variable is going to be used
>exclusively as a character type, integer, or floating point type,
>a compiler for such a language would need to include run-time
>support to determine the way in which variables were being used as
>statements are executed.
>...
> Will
>[These issues have been hashed over in the Lisp community for
>30 years, and most Lisp systems include compilers. Anybody have some
>good references on compilation issues? -John]
>[From Will@cup.portal.com]
The difference between Will's scenario and Lisp (modern Lisps, anyway)
is that Lisp's data is typed. For example, you can't add two numbers
together and then concatenate a string to the result. Unless you do
something like
(string-append (number->string (+ 1 2)) " more characters")
which explicitly creates a new string before the concatenation.
The "command language" here at Mentor treats variables and data in a
way similar to what Will described. To me it is very confusing with
little or no benefit, especially if procedures, like "number->string"
above, exist to perform conversions where they make sense. Then there
is more benefit from a compiler and one can tap into the lore of Lisp
and similar languages. In fact, one might choose Lisp or to build the
language on top of Lisp.
See Byte, 2/88 for more on creating languages within Lisp, and
Kranz's PhD dissertation at Yale for more on compiling Lisp-like
languages.
See also articles on SELF for interesting new work on compiling
languages with type-less variables and typed data (like Lisp,
Smalltalk, and SELF). They even have application to C++, if
you're interested in that sort of thing.
These articles have appeared in OOPSLA '87 and SIGPLAN Notices,
July 1989. Another will be presented next week at OOPSLA '89.
--
Patrick Logan | ...!{decwrl,sequent,tessi}!mntgfx!plogan
Mentor Graphics Corporation | plogan@pdx.MENTOR.COM
Beaverton, Oregon | "My other computer is a Lisp machine."
Return to the
comp.compilers page.
Search the
comp.compilers archives again.