The Acme editor famously works this way. So, in a rudimentary way, does the Emacs scratch buffer. It's a weird amalgam of text editor and REPL: you evaluate snippets of text and get the output in-place, and then edit the text to get what you want next. This live-text-as-code way of working is not how I'm used to interacting with a programming system and always slightly rewires my brain. But even in that simple form, you can grasp in it the beginnings of a whole computational paradigm, all the way up to UI. (Computational models don't usually imply a UI—this is an exception, as are spreadsheets.) Oberon must be the most systematic realization of this. I'd like to try it.
Oberon exploits it further, though. Plan 9 does use chording, programmable text and plumbing but only insofar as it complements the synthetic file system interface, whereas Oberon is more thoroughly object-oriented and can have the text serve as a pointer to various OS subsystems, creating a sort of graphical continuation-passing style, as I alluded.
Sounds a lot like Smalltalk's print-it/do-it? I suppose the idea orginated with Oberon?
The only thing I didn't understand is the part about garbage collection. What does garbage collection mean and what is the benefit in this implementation?
The reason I brought it up is because it's a common trope that you can't do low-level programming with GC, and systems like Oberon are direct evidence to the contrary.
In the sense that garbage collection is a pretty basic CS term, and the summary contained lots of CS terms and implied knowledge to understand it (modules, interfaces, persistence, etc).
I'm not saying that it didn't exist, it was just less of a priority 25 years ago than 15 years ago.
1989
AW Appel: "Simple generational garbage collection and fast allocation"
1988 JF Bartlett: "Compacting garbage collection with ambiguous roots"
J Crammond: "A garbage collection algorithm for shared memory parallel
processors"
1987 AW Appel: "Garbage collection can be faster than stack allocation"
DI Bevan: "Distributed garbage collection using reference counting"
1986 B Liskov, R Ladin: "Highly available distributed services and fault-tolerant
distributed garbage collection"
1985 J Hughes: "A distributed garbage collection algorithm"
1983 H Lieberman, C Hewitt: "A real-time garbage collector based on the lifetimes
of objects"
1982 RJM Hughes: "A semi‐incremental garbage collection algorithm"
1981 J Cohen: "Garbage collection of linked data structures"
1977 HC Baker Jr, C Hewitt: "The incremental garbage collection of processes"
1976 Douglas W. Clark: "An efficient list-moving algorithm using constant workspace"
PL Wadler: "Analysis of an algorithm for real time garbage collection"
1975 Guy L. Steele, Jr.:"Multiprocessing compactifying garbage collection", CACM
Edsger W. Dijkstra, Leslie Lamport, et al.: "On-the-fly garbage collection:
an exercise in cooperation"
1974 Gary Lindstrom: "Copying list structures using bounded workspace"
1973 Edward M. Reingold: "A nonrecursive list moving algorithm"
1972 H. D. Baecker: "Garbage collection for virtual memory computer systems"
Ben Wegbreit: "A space-efficient list structure tracing algorithm"
1969 Robert R. Fenichel, Jerome C. Yochelson.: "A LISP garbage-collector for
virtual-memory computer systems"
Joseph Weizenbaum: "Recovery of reentrant list structures in SLIP"
1967 H. Schorr, W. M. Waite: "An efficient machine-independent procedure for
garbage collection in various list structures"
Peter J. Denning: "The working set model for program behavior"
1963 Daniel J. Edwards: "Secondary Storage in LISP"
The Communications of the ACM, during this period, was the most read
CS Journal. Articles appearing there were intended to be of interest
to the widest population of computer scientists and 19 of them were on
garbage collection.LISP, APL, LOGO, ML, Prolog, CLU, Scheme, Cedar, Smalltalk, Icon, SML, Mathematica, J, Haskell, Python, Dylan, Self, Lua and Javascript are all important, garbage collected programming languages that came before the late 1990's.
Also by the time Java was known, some of us already knew about Lisp, Smalltalk, Modula-3, Eiffel, Prolog, ML....
Niklaus Wirth, for those interested.
This was triggered by having been a Smalltalk and Oberon user on their glory days.
It made me realise how much the IT world lost by having UNIX clones going mainstream instead of these systems. Specially the culture that still insist in using their computers as if they had a PDP-11.
It might be of help.
Was this an autocorrect-typo of "good summary", or am I missing something?
Component Pascal is a superset of Oberon-2, itself an extension of the original Oberon that tacked on limited OOP support and a handful of other tricks. Component Pascal was not a Wirth-designed set of extensions, however Blackbox Component Builder is quite the nice piece of kit in its own right.
Unfortunately the availability of modern implementations for the Wirthian languages leaves something to be desired. The only implementations that cover both 64-bit platforms and any semblance of cross-platform support is the Vishap Oberon Compiler[1], Gardens Point Component Pascal[2], GNU Modula-2[3] and m2c[4].
There's also an Oberon-07 to JavaScript implementation[5].
At this point, the very small Wirthian languages community has been mostly focused on Oberon-07. It's worth noting there are a few Modula-2 fans about still poking at things, such as the Modula-2 R10[6] effort.
[0]: http://oberon07.com/
[1]: http://oberon.vishap.am/ (Oberon-2 compiler, limited Oberon-07 support)
[2]: http://gpcp.codeplex.com/ (Component Pascal for .NET)
[3]: http://www.nongnu.org/gm2/ (Modula-2 GCC front-end)
[4]: http://nongnu.org/m2c/ (Modula-2 to C compiler)
There is the Delphi-compatible, GPL-licenced Free Pascal¹). GNU Pascal²) is also still around but might or might not meet your definition of 'modern implementation'.
For those unaware, Oberon's main qualities are the fact that it's a full operating system written in a garbage collected Pascal-like language (actually made by the same person who initially wrote Pascal) which uses said language's module system to provide reusable/chainable interfaces throughout the whole OS, support for orthogonal persistence and most notably, its highly unconventional user interface that bridges the power of the CLI and the GUI together in this vaguely hypertext-like workspace where you can dynamically live program the UI itself through on-screen text that can serve as an entry point or continuation to perform all sorts of computations, things you'd normally write hacky scripts for. Closest analogue is Xerox's Cedar.
You should consider trying it and stealing a few ideas from it for the greater good.