Something that just occurred to me after reading this description of it: would "programming-as-teaching" not be the ideal workflow for something like Kubernetes or Docker containers running in volatile cloud VMs?
Basically I'm a "code-as-carpentry" guy who's progressively being required to write applications in a way that DevOps can readily consolidate in our cloud provider for optimal resource use. But I don't have a lot of experience developing for this environment, so some problems like scheduling tasks are proving difficult (apparently this is doable with message queues but I haven't had much luck with that so far).
Your description sounds like it solves all of these problems. If you ran this in a container/pod/whatever, when it received a signal from DevOps to shut down for consolidation, it could immediately respond by saving the system state to an image and picking up from that state when the container/pod/whatever was started back up. This would also solve the problem of long-running processes since they could freeze in mid-run and pick back up like nothing happened, if I understand how this works.
Sounds promising. The trouble is that programming-as-teaching relies on a fairly rich set of runtime language features. The language runtime has to know a bunch of stuff about what's in memory in order to provide the programming-as-teaching features. That makes it hard to add the needed features as bolt-on extensions. You sort of need the whole environment to be designed for that kind of work from the ground up.
So if you're right that programming-as-teaching, and image-based development, is a good solution to the issues you face, then an old-fashioned Smalltalk or Lisp system seems like a good choice. If you want those features, but you don't want Lisp or Smalltalk, then I think your only option is to build a new development environment for your language of choice that has the requisite support.
That's a tall order.
Sometimes I've idly toyed with the idea of writing a Ruby implementation on top of a Common Lisp or Smalltalk runtime, but that would be a huge amount of work with no guarantee that there's any demand for it.
Isn't MagLev sort of a Ruby implementation on a Smalltalk runtime? I remember reading about it, but never used it. It's up on GitHub, but looks fairly dead:
Basically I'm a "code-as-carpentry" guy who's progressively being required to write applications in a way that DevOps can readily consolidate in our cloud provider for optimal resource use. But I don't have a lot of experience developing for this environment, so some problems like scheduling tasks are proving difficult (apparently this is doable with message queues but I haven't had much luck with that so far).
Your description sounds like it solves all of these problems. If you ran this in a container/pod/whatever, when it received a signal from DevOps to shut down for consolidation, it could immediately respond by saving the system state to an image and picking up from that state when the container/pod/whatever was started back up. This would also solve the problem of long-running processes since they could freeze in mid-run and pick back up like nothing happened, if I understand how this works.