Path: csiph.com!xmission!usenet.csail.mit.edu!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Newsgroups: comp.compilers Subject: Re: Re: What attributes of a programming language simplify its implementation? Date: Tue, 15 Nov 2022 09:48:16 -0800 (PST) Organization: Compilers Central Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <22-11-013@comp.compilers> References: <22-09-026@comp.compilers> <22-10-025@comp.compilers> <29190_1668508275_63736A72_29190_327_1_22-11-007@comp.compilers> <22-11-009@comp.compilers> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit 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 X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com In-Reply-To: <22-11-009@comp.compilers> Xref: csiph.com comp.compilers:3243 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."