3 ms·
My take is that this feature is fundamentally at odds with how most programming languages work. For starters, I think that it's probably no accident that you g
by mumblemumble 5y ago
My take is that this feature is fundamentally at odds with how most programming languages work.
For starters, I think that it's probably no accident that you generally only see these image-based development features in dynamically typed languages. For image-based development to make sense, you really want to have long-lived interactive sessions. In Smalltalk, they are effectively endless, and can span multiple decades and branch among thousands of people. In a static language, though, you've got an incentive to keep your interactive sessions short and do most of your development outside of it, because code changes inside the interactive session can lead to weird chicken-and-egg problems.
Second, there are some real ergonomic challenges. It's easy to get into a state where what you're doing isn't reproducible, because there's not necessarily any paper trail on how to rebuild the current state from scratch. This is a famous criticism of Microsoft Excel - arguably the world's most widely used fully interactive development environment along these lines - and a major reason why a major project at of one of my previous jobs was to replace one department's suite of heavily scripted Excel spreadsheets and replace it with a C# application. The company was rightly concerned that they were one file corruption away from a major business disruption. Similar criticisms, albeit on a less operatic scale, are often leveled against Jupyter notebooks, which aren't quite the same thing, but to retain many relevant features.
- igouy 5y ago> For image-based development to make sense, you really want to have long-lived interactive sessions. Not really — most people get into a dreadful mess when they try to do that. For most people, it works better to version and export discrete change-sets. It makes sense to be able to save the state of your work, go to lunch, and pick up in exactly the same place when you come back. It makes sense to be able to save the state of your work, go home, and pick up in exactly the same place when you come back the next day.
- igouy 5y ago> … there's not necessarily any paper trail on how to rebuild the current state from scratch. Yes there is! "As you define and modify classes or methods, Smalltalk/V is logging all of these changes to the change log. … Every Smalltalk expression that you evaluate with either do it or show it is also logged. In addition, every time you remove a method from a class, a message is logged." p282 "Automatic Logging of Changes" https://rmod-files.lille.inria.fr/FreeBooks/SmalltalkVTutorial/SmalltalkVTutorial.pdf https://rmod-files.lille.inria.fr/FreeBooks/SmalltalkVTutori...