Linked by Thom Holwerda on Mon 23rd Oct 2017 09:55 UTC
Hardware, Embedded Systems

We succeeded in running the Smalltalk-76 language on our vintage Xerox Alto; this blog post gives a quick overview of the Smalltalk environment. One unusual feature of Smalltalk is you can view and modify the system's code while the system is running. I demonstrate this by modifying the scrollbar code on a running system.

Smalltalk is a highly-influential programming language and environment that introduced the term "object-oriented programming" and was the ancestor of modern object-oriented languages. The Alto's Smalltalk environment is also notable for its creation of the graphical user interface with the desktop metaphor, icons, scrollbars, overlapping windows, popup menus and so forth. When Steve Jobs famously visited Xerox PARC, the Smalltalk GUI inspired him on how the Lisa and Macintosh should work.

Be sure to read the comments after the article itself, since it includes comments and clarifications from none other than Alan Kay himself.

Thread beginning with comment 650224
To read all comments associated with this story, please click here.
Comment by tidux
by tidux on Tue 24th Oct 2017 19:15 UTC
tidux
Member since:
2011-08-13

The real reason you don't see live-updateable systems like that in common use is that it removes two things: the ability to run code derived from arbitrary languages (notably assembly and C/C++), and the ability for the OS or hardware vendor to exert control over the platform.

Reply Score: 3

RE: Comment by tidux
by whartung on Wed 25th Oct 2017 00:23 in reply to "Comment by tidux"
whartung Member since:
2005-07-06

The real reason you don't see live-updateable systems like that in common use is that it removes two things: the ability to run code derived from arbitrary languages (notably assembly and C/C++), and the ability for the OS or hardware vendor to exert control over the platform.


But that's not true.

I mean, really, what is an OS if not a system that can do "live updates" of "arbitrary languages". Minix can (I believe) almost do this at the kernel level.

Recall that the Smalltalk at the time WAS the Operating System. The machines booted in to Smalltalk. The "kernel" was the Smalltalk VM, that then executed the byte code in the image. Early systems without hardware support were no different than a modern program running threaded code. The Java VM is exemplar of that.

And the Java VM CAN run "arbitrary code" (but only because the host OS will let them). You can dynamically load and unload .DLL/.SO files in Java.

Even the creaky, ancient UCSD P-System could run "arbitrary code". It could intermix P-Code with machine language segments. At some level, all systems have to be able to do something like that.

It just has to be code compiled in a format recognizable by the OS.

Reply Parent Score: 4

RE: Comment by tidux
by tylerdurden on Wed 25th Oct 2017 17:21 in reply to "Comment by tidux"
tylerdurden Member since:
2009-03-17

Not really. You can still run compiled code in these types of dynamic systems.

Even some compiled languages supported these type of environments, the objective-c runtime springs to mind.

Reply Parent Score: 3