3 ms·
In my view, we are often well served by a perspective in the direction of Sergey's. I see a gradual scale from applications to full languages. When I write appl
by fifticon 4y ago
In my view, we are often well served by a perspective in the direction of Sergey's.
I see a gradual scale from applications to full languages.
When I write applications, I try to define types and operations on those types.
When I feel I succeed well at this, it almost feels like I have written a new 'sub language'.
I prefer languages that aid this hallucination, that is where the hosting language's syntax doesn't get in the way.
I don't buy the argument that we should not try to create new 'unknown' languages - when we are defining a complex application, we are already in the business of making up a language and a vocabulary.
What I _do_ buy, is that we should avoid reinventing variants of syntax when we can help it. Mostly, syntax works as 'glue' but doesn't really define fresh concepts.
I have no addiction to playing around with Lex and Yacc needlessly, but with types, methods and classes from modern languages, I do feel we have tools akin to defining 'languages'. Our defined types even help define the legal expressions - if Baz can only be constructed by pasing a Foo and a Bar, I have constrained that you can't accidentally mix up the ordering that your Foo must be defined/acquired before you start doing verbs on a Baz item.
I can appreciate having access to e.g. operator-overload in C++, but I can build most of what I want/need, even without those.