Hacker News new | ask | show | jobs
by fabioz 1085 days ago
I did work in Smalltalk in the university and I must say that in practice it was horrible to work with.

It was very common to have the image corrupted -- imagine that you by mistake add a bug to your code. Now the live version you're dealing with is just unworkable and you have to find the last version that worked (because in practice the code you add is live with the code of your whole system in just a single place, so, anything bad you did affected not only your target env it also affected your dev env).

-- version control was basically saving the whole image and no, you didn't have a way to diff 2 different images.

I think that the current state where you edit text files and run your code based on those (and which you can sanely version control) and edit with a separate IDE is a much saner approach.

3 comments

> version control was basically saving the whole image

No, it really wasn't!

Is it possible that there were ways to archive code with Smalltalk that you did not know?

iow you were doing it wrong.

"Within each project, a set of changes you make to class descriptions is maintained. … Using a browser view of this set of changes, you can find out what you have been doing. Also, you can use the set of changes to create an external file containing descriptions of the modifications you have made to the system so that you can share your work with other users.

The storage of changes in the Smalltalk-80 system takes two forms: an internal form as a set of changes (actually a set of objects describing changes), and an external form as a file on which your actions are logged while you are working (in the form of executable expressions or expressions that can be filed into a system). … All the information stored in the internal change set is also written onto the changes file."

1984 Smalltalk-80 The Interactive Programming Environment page 46

https://rmod-files.lille.inria.fr/FreeBooks/TheInteractivePr...

----

"At the outset of a project involving two or more programmers: Do assign a member of the team to be the version manager. … The responsibilities of the version manager consist of collecting and cataloging code files submitted by all members of the team, periodically building a new system image incorporating all submitted code files, and releasing the image for use by the team. The version manager stores the current release and all code files for that release in a central place, allowing team members read access, and disallowing write access for anyone except the version manager." (page 500)

1984 "Smalltalk-80 The Interactive Programming Environment"

I wanted to play with Smalltalk on a new machine similar to raspberry pi but I was struggling to port squeak to it. Generated C source didn’t compile even though raspberry pi version should work there.

So now what? The only way forward is to really dig deeply into the ‘beauty” of C to make it work? This is exactly what I was trying to avoid in the first place!)

Perhaps you are the right person to ask. Do you think it is a design flaw to have vm tightly coupled with C and all it’s compilation nightmares ?

It doesn’t compile/run on the machine, possibly due to the lack of sound hardware but excluding sound package didn’t help. Where/what is the best way to get help with that? Perhaps you can give a wise advice on that.

Fortunately things have changed in the intervening years. Pharo, for example, includes a complete git integration:

https://github.com/pharo-vcs/iceberg

Thanks for sharing your experience with working with Smalltalk.

I wonder in a parallel universe, a smalltalk one, what VCS would have been like? Would the "last version that worked" also just have been an object?

You've been given a mistaken impression of the Smalltalk-80 development process.

Changes were automatically logged to an external text file and could be recovered.

By the late '80s there was multi-user fine-grained version control: ENVY/Developer

https://www.google.com/books/edition/Mastering_ENVY_Develope...

Check out the Monticello VCS for Smalltalk.

https://wiki.squeak.org/squeak/1287