Efficiency and cleaving
FTR: I believe - strongly - that cleaving things apart is the “right thing”.
Plug-ins just cause epicycles down the road.
An “editor” should edit, not check semantics / colourize / whatever.
An editor should have an API that can be used by downstream components to feed commands back to the editor (colourization, dynamic flow display, changing pages, snapping to locations, etc.). Downstream components can check the validity of what is written then send commands back to the editor to flag errors (etc.).
That’s how compilers work - a lump of code does the “parsing”, another lump of code does “the checking” and so on.
When you conflate these issues, you cause accidental complexity (aka self-flagellation).
Cleaving is “easy” and is the main thrust of 0D-ness. If you want to cleave something, don’t use a function call, use a message send instead.
Conflating issues like this is borne out of 1950s-style worryies about “efficiency”.
Instead, it’s better to do the “right thing” and “efficiency” will come of its own, i.e. someone smart will figure out how to make it more “efficient”.
In fact, the meaning of “efficiency” has greatly changed since the 1950s, and may matter much less than it used to. There’s also the question of “efficiency for whom?
- End-Users, or,
- Developers?”
The answers and techniques are quite different depending on who you’re targeting. For example, developers can afford to use souped-up, but, expensive machines. Users want cheap machines. When targeting developers, you can afford to throw machine cycles away for the sake of development turn-around time. When targeting End-Users, you need to worry about speed and size, to reduce costs.
If you think of an “editor” as an “Actor”, then you could scale to using editors on local machines while punting semantics checking and code emission to servers elsewhere in the world… (which goes back to the central idea of 0D, where everything is an Actor (with 2023-ish improvements) https://guitarvydas.github.io/2024/02/17/Hardware-Actors.html and could be implemented on bare Arduinos not running Linux)
Appendix - See Also
References
https://guitarvydas.github.io/2004/01/06/References.html
Blog
Blog
obsidian blogs (see blogs that begin with a date 202x-xx-xx-)
Videos
videos - programming simplicity playlist
Books (WIP)
Pamphlets
Discord
Programming Simplicity all welcome, I invite more discussion of these topics, esp. regarding Drawware and 0D
@paul_tarvydas