laarcnew | comments | discord | tags | ask | show | place | submitlogin

For any dynamic language with a REPL, you can expose the language & make it so live modification can be done. GUI toolkits don't tend to expose the language by default, & applications don't tend to go to the effort to expose them themselves (or design their internal structures to be amenable to live-editing by non-programmers as opposed to modification during a normal development cycle).

It's not a problem of missing features generally (though sometimes it is -- like if a language, by default, loses the original source after bytecode compilation, & the compilation step can't be hooked to keep that source around), but of UI (though a whole host of unusual language features can make providing a reasonable UI to do this a lot easier -- like having an image-based system and having that image versioned internally).

Back in high school, I wrote a system intended for exposing live tcl scripting to a Tk-based set of widgets, as part of a 'desktop environment'. Doing such a thing is easy, if you don't mind doing it badly, even with a language & framework like tcl+tk that isn't really intended to support it.

Scriptability is, I think, a different (related but less interesting) version of this. Rarely is the whole application really scriptable -- it's unusual to have an application that can be turned into functionally an entirely different application through the exposed scripting API without a great deal of knowledge and effort (greater than the knowledge & effort necessary to write the thing from scratch in a normal environment); and then, scripting normally operates in the same way as a normal build process (wherein you edit files on the filesystem with your text editor & force a reload), which ultimately means unfamiliar tooling to non-technical users & no support for built-in documentation.

I think the article here describes a spectrum of end-user-programmability where the far end is what I termed 'composable UI' -- stuff that looks like smalltalk environments, in that the programming environment is one pop-up menu away from any widget, with full built-in documentation, and where a non-programmer can stumble into it accidentally & be glad they did because it let them solve their problem.

Welcome | Guidelines | Bookmarklet | Feature Requests | Source | Contact | Twitter | Lists

RSS (stories) | RSS (comments)