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

Thomas Koenig <tkoenig@netcologne.de>
Sat, 8 Oct 2022 22:44:34 -0000 (UTC)

          From comp.compilers

Related articles
| List of all articles for this month |

From: Thomas Koenig <tkoenig@netcologne.de>
Newsgroups: comp.compilers
Date: Sat, 8 Oct 2022 22:44:34 -0000 (UTC)
Organization: news.netcologne.de
References: 22-09-026
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

Christopher F Clark <christopher.f.clark@compiler-resources.com> 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]


Post a followup to this message

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