3 ms·
> I have to write an IDE as well as the language This part caught my attention. I've developed a few small languages over the years, with somewhat boring synta
by lioeters 7y ago
> I have to write an IDE as well as the language
This part caught my attention. I've developed a few small languages over the years, with somewhat boring syntax in Lisp or Algol family. The one that has the most longevity (~7 years) and traction (estimated few thousand users) is an XML-based (!) domain-specific language. Frankly it's verbose and kind of ugly, but apparently easy to learn due to its regular, minimal syntax - a little like Lisp, if parentheses were brackets. It's also "declarative", a bit like SQL, in that the users describe the result, and magic happens internally to make it so.
More recently, I've been working on a tree-structured editor for users to visually build programs/templates. Developing it has been insightful - I'm realizing that this development environment should have been there from the beginning, as a fundamental part of the language's design and user experience.
All syntactic constructs, keywords, patterns, defined variables, functions, etc., can be made available to the user, with auto-complete, suggest, lists of choices. Rather than the user having to remember commands and type them in text, the environment can let them select, compose, and build. Ideally, it can ensure that a program never has a syntax error (conversely, that it makes it impossible to write/build such a program).
Another aspect I've come to appreciate is instant feedback. Any kind of live preview, or automatic build/test, makes a big improvement in the flow of programming and thought process. It becomes like shaping clay.
In an article about Smalltalk, I read how its integrated environment is indistinguishable from the language itself. In my daily work too, I spend most of my time in an editor with language servers for syntax highlight, autosuggest, linting, and other smart features, as well as integration with terminal, Git, remote edit with SSH.. Typing in text is still the fastest way for me to express myself, but the environment is constantly supporting it - it understands what I'm writing (often more than I'm aware), showing me what I need to know to build with minimal effort.
What I like is a programmable development environment, especially one which is built on itself.
Well, this has been a ramble without a point. It's an endlessly fascinating subject, and perhaps it's only natural that a programmer finds delight in creating one's own language. There's something pure and philosophical about it, like working with the very material of thought.
---
A little list of links related to building interactive software visually:
https://airtable.com/ https://airtable.com/
https://bubble.io https://bubble.io
https://www.memberstack.io/ https://www.memberstack.io/
https://webflow.com/ https://webflow.com/
https://zapier.com/ https://zapier.com/
- teleforce 7y agoTree structured-editor with built-in language construct, sound like the incarnation of Cedar/Tioga desktop and programming environment by Xerox back in 1980s. This environment replaced three distinct programming environments that were very popular at the time at Xerox namely Smalltalk, Lisp and Mesa and according to Xerox's staffs it is a highly productive programming environment. Perhaps someone should re-introduce the modern version of Cedar/Tioga similar to Apple and Microsoft re-introduction of the pervasive mouse/windowing user interface originally made by Xerox in 1970s.
- lioeters 7y agoAh, what a delightful rabbit hole your comment led me down.. I've got about twenty tabs open now, articles on the history of (and the relationships between) programming languages and graphical user interfaces. Will enjoy this food for thought! My recent reading has included: Unix: A History and a Memoir (Brian Kernighan) - https://www.cs.princeton.edu/~bwk/memoir.html https://www.cs.princeton.edu/~bwk/memoir.html The Development of the C Language (Dennis Ritchie) - https://www.bell-labs.com/usr/dmr/www/chist.html https://www.bell-labs.com/usr/dmr/www/chist.html JavaScript: The First 20 Years (Brendan Eich) - https://zenodo.org/record/3710954/files/jshopl-preprint-2020-03-13.pdf https://zenodo.org/record/3710954/files/jshopl-preprint-2020... (PDF) This morning, this little phrase jumped out: > C was created on a tiny machine as a tool to improve a meager programming environment. What this made me realize is that a language is a user interface. It makes sense how C evolved with UNIX as an operating system, that a language is deeply fundamental to a computing environment (and its development). There's a parallel with JavaScript and Netscape. The language was meant to provide users with an interface to operate the web browser, create dynamic documents, and (as it turned out) to let users develop the web environment. ..Which brings me back to the Cedar/Tioga programming environment you mentioned. While searching around, I happened across another comment of yours (I see it's a favorite topic! :) and found the good stuff: Eric Bier Demonstrates Cedar - https://www.youtube.com/watch?v=z_dt7NG38V4 https://www.youtube.com/watch?v=z_dt7NG38V4 (video) Active Tioga documents: an exploration of two paradigms - http://cajun.cs.nott.ac.uk/wiley/journals/epobetan/pdf/volume3/issue2/ep030dt.pdf http://cajun.cs.nott.ac.uk/wiley/journals/epobetan/pdf/volum... (PDF) The Mesa Programming Environment - http://www.digibarn.com/collections/papers/dick-sweet/xdepaper.pdf http://www.digibarn.com/collections/papers/dick-sweet/xdepap... (PDF) Fascinating. I saw a phrase, "active document applications", which interestingly is what the web has become, in its own monstrous way. It's a good point about "re-introducing" old ideas. I was lucky to have grown up in the earlier days of computers, to have breathed (a little) of its different culture and worldview, that I've learned to appreciate its history and the wealth of ideas - what made possible our current networked computing environment, and visions yet to be fully realized.