People here often talk about creating programming ...
# thinking-together
v
People here often talk about creating programming languages to make programming easier. Going one level of abstraction up. Does anyone work on making a way to create new programming languages easier?
Let me also bundle this up with: Are there any innovative tools which make creating new languages easier?
s
j
Yeah, that's one of the main ideas behind Language-oriented Programming. The best language in which to make other languages at the moment is that team's main research vehicle, Racket.
👍 5
g
The ability of PEG to specify matches of balanced brackets, allows one to think about languages differently, e.g. it is possible to imagine “language stacks” and “transpilers”. Below, a simple grammar in Ohm-JS that skips over anything that isn’t a brace bracket...
main = matched main?
matched =
| "{" main "}" -- nested
| anythingelse -- bottom
anythingelse = ~"{" ~"}" any
c
v
Thanks for many nice links (post more if possible). I wonder whether there is someone in this community who works on these or similar projects?
Is there a way to make visual programming languages with any of these tools?
g
a) I build DaS (Diagrams as Syntax) languages using Ohm-JS + SWIPL (PROLOG). If I liked writing nested-loops and exhaustive search, I would skip PROLOG and just use JS/Python/whatever. b) I have very strong opinions about VPLs. #1 is that I stay away from VPLs and go for the middle road - a hybrid of text+diagrams+overlapping (anti-grid-based languages, like just about all text-based languages). SVG seems to have more than what is needed (rects, ellipses, lines, text, (x,y)). #2 is that you need to think 0D+Simultaneity (AKA Concurrency (0D == zero dependency)) to draw sensible diagrams of programs. c) No, I don’t know of any IDE that makes VPL construction uncomplicated enough to use. I roll my own.
j
PLT circles are still mostly focused on the syntax + semantics approach that started in the 1960s, so anybody who wants to use non-syntactical notation is pretty much on their own. That said, the Racket people ship an IDE for the base language that's extensible enough to support projects like this: https://dl.acm.org/doi/10.1145/3428290
💯 2