Rails is extremely far from those dynamic Smalltalk application environments. Nothing is live. Object graphs are built up to serve a single request, then torn down immediately — a bizarre kind of kamikaze OOP. To me it's the worst of Smalltalk and PHP in one, as all the interesting aspects of dynamic typing are wasted and just become a source of bugs.
For a glimpse of "what is possible", take a look at TkInspect (1), a set of gems that I'm working on that provide some of the goodies of that GUI, like an interactive, graphical console, a live inspector, a class browser or turtle graphics.
At the moment it's not more than a toy, but it does definitely show what can be done.
Ruby has no such thing: it's pretty much only used for Rails and plain-jane Unix scripting. It's fair to judge the language in context of its actual applications.
Most, not all: https://www.gnu.org/software/smalltalk/manual/html_node/Over...
Although it looks like somewhere along the path with the "new" graphical browser they dropped the tag line "Smalltalk for those who can type".
Rails is a monster, and historically pretty poor ruby code quality INMHO. That said, ruby does indeed miss an "image" concept, but is quite dynamic and object oriented. Some smalltalk patterns would work well with ruby, I think.
There's also (the abandoned?) maglev ruby on top of gemstone/s object db for smalltalk.
It was actually Dan Ingalls who built it (btw. 15 years before Erlang was invented); he's also the author of the referenced worth reading paper; never understood why he didn't get the Turing price.
Sorry, I don't get the metaphor. It's a reference to a game I think?, but not sure which one, and I could be wrong. I'm very familiar with Ingalls and Kay, but not the other two, besides hearing Carmack's name around here sometimes.
Carmack was the programmer who wrote the core bits that made the game possible. He didn't engage with the popular press, and when he did engage in discussions with the media or with fans, it was at a very deep and technical level.
You may also think about it in terms of Wozniak and Jobs. Point being that Alan Kay was out there, engaging the press and talking about Smalltalk's big ideas (objects, messaging, computers as medium, how they relate to children, etc.). He was the frontman. Whereas Dan Ingalls deserves the bulk of the credit for actually writing Smalltalk.
Fun fact: Ingalls wrote early Smalltalk versions... in BASIC.
No, really not by mistake — intentionally, because someone told you that it was possible and you wondered what that would break.
> not sure how exactly did you end up with it during the interactive session
Well, every change you made "during the interactive session" was logged as a sequence of Smalltalk change-set actions in the changes file.
So, actually, you could just read what you did ;-)
> Smalltalk … don't have much industry adoption…
Now.
Then:
"Smalltalk, C++ knock heads. Computerworld 29, 45 (Nov. 6, 1995 )
https://books.google.com/books?id=oKDIlxbMaS4C&pg=PA153&lpg=...
But there were and are much fewer Smalltalk jobs in the industry than C++ jobs (though the Smalltalk jobs paid better).
Much like there were more number-crunching C++ jobs than APL or k jobs, up until some key ideas of APL were made available wrapped in Python, and numpy jobs skyrocketed. Maybe something similar will happen to some key Smalltalk ideas!
No, that was technology developed for the Self programming language which didn't have much in common with ST (see e.g https://dl.acm.org/doi/10.1145/1238844.1238853, there is also an interesting talk by Ungar and Smith). The same technology was also used for an ST dialect (Strongtalk) which was quickly discontinued in favor of Java Hotspot. The influence of ST is generally overstated.
My understanding was always that self grew out of smalltalk? But I suppose the jit work in particular was developed for/in self?
https://dl.acm.org/doi/10.1145/800017.800542 "Efficient implementation of the smalltalk-80 system" by L. Peter Deutsch and Allan M. Schiffman in POPL '84: Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, January 1984, Pages 297–302
This motivated the creation of the ParcPlace spinoff to commercialize this technology. It was not the first JIT, but quite a few modern ones were inspired by it.
Self started out as one of the "Smalltalk-86" projects at Xerox PARC with Randy Smith collaborating with Berkeley's David Ungar. It was supposed to be a simpler and purer Smalltalk even if that made practical implementations impossible. But with David Ungar becoming a professor at Stanford, he found students that helped him make it possible, and eventually even much faster than existing Smalltalks. Craig Chambers worked on type inference for Self 1 and 2 and then Urs Hölzle worked on adaptive compilation with type feedback for Self 3 and 4.
https://dl.acm.org/doi/10.1145/191080.191116 "A third-generation SELF implementation: reconciling responsiveness with performance" by Urs Hölzle and David Ungar in OOPSLA '94: Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications, October 1994, Pages 229–243
This is the technology that became "Hot Spot" for Java. But very few virtual machines have this level of sophistication.
My guess is the influence of Strongtalk is in this context taken to be influence of Smalltalk.
And yet we suffer the experience of web "apps" like Gmail, which have some similar properties (which I'm reminded of every time I hit shift-ctr-c rather than ctrl-c to copy something in office365/Outlook - and the dev tools pop up).
Everything is inspectable, discoverable, interactive. Reactive programming, live objects, build stuff and see it come alive at every step. JIT makes everything fast, eventually.
But also the whole thing is one huge global mutable state. You used to be able to redefine "constants" like true by mistake. You want to save the entire system image, because now everything works, but you're not sure how exactly did you end up with it during the interactive session. Static checks and guarantees are hard to have at best.
AFAICT, initially Alan Kay tried to build something like Erlang: hence messages and protocols, objects keep their state as if they were nodes of a network. But hardware limitations did not allow yet back then, so the design changed, and was still hugely influential.
I think certain languages end up being bellwethers and test beds, without becoming industry mainstays. Haskell and OCaml don't have much industry adoption, but Rust does. APL (and even k) don't have much industry adoption but numpy and spark (admittedly both libraries) do. Smalltalk and Self don't have much industry adoption but Ruby and Python do.