Path: csiph.com!weretis.net!feeder6.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Thomas Koenig Newsgroups: comp.compilers Subject: Re: What attributes of a programming language simplify its implementation? Date: Sat, 8 Oct 2022 22:44:34 -0000 (UTC) Organization: news.netcologne.de Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <22-10-025@comp.compilers> References: <22-09-026@comp.compilers> Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="28675"; mail-complaints-to="abuse@iecc.com" Keywords: design, semantics, comment Posted-Date: 08 Oct 2022 20:20:11 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:3196 Christopher F Clark schrieb: > I answered this question on Quora, but I think it is relevant to this > community (and I know I'll get discussion as a result).. > > What attributes of a programming language simplify its implementation. > > 1. Simple semantics. That's it. Simple semantics. (Simple meaning > whatever is easy to implement. Not mathematical elegance. Not > consistency.) > > How do you get there? If ease of language implementation is the primary concern, then one could use a stack-based language. Easy to write an interpreter or compiler for, hard to write in the language itself, so it will likely be very unpopular (but popularity wasn't in the list of requirements). > Have a very simple set of types. BASIC had numbers, strings, and arrays. > Don't worry about type conversions and floating point versus integer. Sweep > that all under the rug. You cannot "sweep it under the rug", you have to define the semantics somewhere. It is possible to define the semantics ad-hoc and not to document them (which you seem to be advocating). That is a recipe for problems later. > Whatever your implementation does, that's what it > does. (Even simpler is what a lot of shells do, you have just "strings" and > if the strings happen to be a number when you pass them to the "add > function", + operator, it does arithmetic. If they aren't it, whatever it > does is the definition.) That strikes me as a bad idea if the language is supposed to be used for something in the real world. Ill-defined semantics are a disservice to potential users (but not laying traps for the user was not on the list of requirements, either). [...] [Sounds like we're on our way to reinventing Forth. It had (still has) famously tiny implementations. -John]