Re: Re: What attributes of a programming language simplify its implementation?

<minforth@arcor.de>
Tue, 15 Nov 2022 09:48:16 -0800 (PST)

          From comp.compilers

Related articles
| List of all articles for this month |

From: <minforth@arcor.de>
Newsgroups: comp.compilers
Date: Tue, 15 Nov 2022 09:48:16 -0800 (PST)
Organization: Compilers Central
References: 22-09-026 22-10-025 <29190_1668508275_63736A72_29190_327_1_22-11-007@comp.compilers> 22-11-009
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="91912"; mail-complaints-to="abuse@iecc.com"
Keywords: design
Posted-Date: 15 Nov 2022 16:15:01 EST
In-Reply-To: 22-11-009

Roger L Costello schrieb am Dienstag, 15. November 2022 um 17:52:01 UTC+1:
> minf...@arcor.de wrote:
>
> > use Forth as your toolbox to make your own DSL
> > and you can go _very_ far without diving into all
> > those dragon books and gigabyte compilers and
> > toolsets.
> Fascinating!
>
> What is it about the Forth programming language that makes it easy to
implement DSL's?
>
> /Roger
> [It has small efficient implementations, it generally lets you get close to the hardware,
> and the RPN syntax lets you define new operators that work like the built-in ones. -John]


Forth comprises a _very_ simple interpreter and compiler. Both can be
modified and enhanced easily to the problem domain. IOW Forth is
extensible to the core of the language while still being small and
simple enough to fit into one single person's head.


Citing its inventor Chuck Moore:
"By permitting the program to dynamically modify its control language,
we mark a qualitative change in capability. In a sense, our program
has evolved into a meta-language which we apply to the application.”


Another citation (Bernd Paysan):


“In this respect, Forth is quite similar to Lisp and its descendants…
[but] Forth differs from Lisp in that it doesn’t use lists, neither
for calling, nor for storing multiple values. Forth uses a stack to
pass data between words, and it uses the raw memory (as seen by the
assembler programmer) for more permanent storage. It’s much lower
leveled than Lisp, and that’s one of the reason why it is fast.


It’s not only fast, the simplicity makes it very small, too. Forth is
the ultimate language for building extensions. Programming in Forth is
generating higher levels of abstractions, until you have a language
well fitted to solve your problem. The simplicity of the underlying
system allows it to rely on it, which is important when you search
bugs.


The usual approach for application programming is to keep each layer
simple, too. This is essential for rapid development of critical
applications."


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.