Remix.run Logo
igouy 2 days ago

> In live environments like Smalltalk images, there are no files.

Of course there are: image file, sources file, changes file.

And, of course, fileOuts to share code with others and to archive code -- so we can have a reproducible build process.

enugu 2 days ago | parent [-]

OK, but files are external to the system. Within the Smalltalk environment, everything is an object and files are required as the ambient OS works with files. You can say that some objects within the environment, containing program source are playing the same role as source files in usual programming. Even there, one can have a richer interface than text/binary files.

igouy a day ago | parent [-]

Long ago, Smalltalk's lack of explicit support for important aspects of programming was recognised:

"Programs consist of modules. Modules provide the units to divide the functional and organizational responsibility within a program."

"An Overview of Modular Smalltalk"

https://dl.acm.org/doi/pdf/10.1145/62083.62095

enugu a day ago | parent [-]

Yes, I do agree with you - live image programming has to be composable/comprehensible/reproducible, and crucial state shouldn't be in anonymous objects. (I've even thinking of replacing mutable objects with with pure functions modifying a a tree of data). Types is another direction and the work on Strongtalk has proved influential for popular VMs.

But, we dont need to go back from objects to files, except for the purpose of interacting with the OS. Richer structures actually help comprehensibility. For instance, revision control operating at a structural level. UNIX would have much nicer, if something like nushell had been adopted from the beginning, and the 'little pieces' used to build the system worked on structured data.