Self-Contained Development Environments (2018) [pdf]
charig.github.io
charig.github.io
They are the most productive environments I’ve ever used for development, no question in my mind. OTOH they were terrible for deployment: user hostile and expensive.
Also a lot of programming is defensive: against poor or inexperienced developers including oneself. When you can casually change anything you can get into trouble, either by breaking things or by simply embedding unexpected dependencies your code.
We had a pile of hacks but integrating changes took all the productivity of Smalltalk away.
However, tools like Envy/Developer fixed a lot of it. It still didn't fix everything but at least sorted code integration and source code versioning. Not sure if the product still exists though.
I loved using Smalltalk but in a team environment its useless and keeping your code disentangled from the underlying environment is a nightmare.
In addition, lisp programs (at least in these environments) don’t have “main”. I think it’s no big deal to start a program as “(foo)” but that’s surprisingly user hostile.
I worked with someone (who shall remain nameless) who ran in the same image for several years. There were random state variables scattered in his environment that affected the performance of his system in unreproducable ways.
But they have similar mechanisms.
In Symbolics Genera 'programs' are called 'activities'. They can be started by keyboard shortcut, command, an application menu or by a general function, where the activity is an argument. Usually each 'activity' runs a command loop.
Additionally images have named lists containing functions, which are executed on certain event. For example if an image starts, a 'cold boot' list will be executed. If one has registered starting application programs (activity) - remember activities have names like editor, listener, mail client - they will be started by the operating system after a boot.
If a user logins on a Lisp Machine an init file gets executed. That init file can also contain general forms which start activities.
Just yesterday I stumbled into `Out of the Tar Pit` which is turns out to be a very life-changing for many people and was thinking, why I haven't seen it before in my career
I think that modern computers are so amazingly fast that a little cleverness can go a long way, permitting us to run more safely and write more quickly with more powerful languages. Honestly, I wish we had been doing that for decades at this point — computers were actually plenty fast even in the 90s!
I would agree with this for operating systems, but I just don't see this being true for application development. I am thinking Electron and deep levels of abstraction introduced by the Web.
I think that still holds even if they demonstrably do not care about performance all that much! You are quite right: current software is heavier and slower than it used to be and than it needs to be; it is also less safe and is more difficult to develop than it needs to be.
The popularity of things like Java or JavaScript is another disfunction: although they are very different from one another, they are similar in that they have poor syntax, frighteningly bad ergonomics and poor semantics. They require too much boilerplate (in very different ways) and are insufficiently expressive and powerful. They are not even as much safer as they should be, given their memory safety!
Our industry is appallingly immature.
It's bad that so many applications have given up on even halfway caring about respecting the user's computing resources, but IMO it's much worse if you can't even boot to your damn GUI desktop without a pile of JavaScript being loaded into memory.
Choosing JavaScript is a very different mistake than choosing C (it is at least memory safe, which counts for something). But it is deeply disheartening to imagine how many man-centuries (or man-millennia?) of work have gone into the ramshackle apparatus which is the JavaScript ecosystem while better ecosystems wither and starve for lack of involvement.
JavaScript delenda est.
I'm not sure I agree with this assessment. Certainly some developers have been targeting performance (particularly compiler devs. Arguably UI devs). However, in corporate development, performance has ALWAYS come second to development time. The only time performance matters is.. well, when it does :). That is to say, it only matters when slow things are causing unhappy clients or missed deadlines.
Difficult to believe with how unresponsive modern UIs are.
As I recall, it was pretty snappy! I think it would still have been sufficiently snappy had its OS been written in Smalltalk or Lisp …