There was a browser that worked on Squeak 3, Whisker, that had some of these attributes. I used it up until it became unsupported. It took a little getting used to as its primary orientation was horizontal, but in the age of widescreen monitors that is an advantage.
when i was in uni in 2014 i learned that smalltalk became obsolete, later i went to industry to see that no one use smalltalk(or prolog) and yet on this site ppl bringing up smalltalk every single month, why is that i wonder
People like the language - I like it though I have only written a few bits and bobs in it. They also like Fortran, Prolog, and (dare I say it) Haskell, and many others that don't appear here so often. Just because a language is not this week's hotness (looking at you Rust) does not make it "obsolete".
In what way, obsolete? There is quite a bit of worthwhile research done in Smalltalk-related languages and some corporations are quite successful in building on such languages.
It's not dominant in the way of Wordpress but also not insignificant.
A lot of systems are obsolete, in the sense that you cannot find work in them. Nonetheless, people use them to prototype ideas that will eventually find their way into industry. Is Haskell obsolete? Not exactly, but it's hard to find real-world projects that use it. Concepts developed in Haskell get imported into other systems.
Systems are only truly obsolete when there is no real reason to use them. PL/1 is obsolete. It's hard to find even legacy code using it, and nobody would use it for experimentation.
mostly because everything relevant we have today was built on smalltalk ideas and it still executed them better in the 70s than modern languages do today.
You can run any smalltalk code from workspace-style frames in the Inspector, Workspace, Explorer, Finder and Debugger. You can edit classes and methods in these windows, as well as spawn Browsers as desired. I'm not sure what the integration points are that are lacking. That's not to say there can't be a better way, but I cannot see the point he is making.
I fondly remember the browser in F-script Anywhere was fantastic for debugging your own apps and reverse engineering other people's.
Smalltalk is how computing should have been: an open book. I hope that one day we can rediscover that magic, we surely have the computing power available to do so.
Longtime HN user morphle, who commented elsewhere in this thread, has researched and designed chips and hardware for that purpose (edit: for scaling that form of computing). He has been trying to find funds and partners to bring them to market.
Disclaimer: never met or spoken or worked with him
Imo, the problem with the 4-pane browsers are:
1 - The left-most 'package' pane is a flat list. And there are 10K + classes in e.g. Pharo. There are 900+ (!) packages in Pharo, in the pane, so its not easy to scroll through. This is solved 'manually' by have a hierarchical naming of packages. I think this pane should just have tree view.
2 - When developing an app, you may be working on classes in multiple packages. You want to have 'project' view with a simple way of switching between them, without having 10+ system browser windows open, like shown in the article. Dolphin Smalltalk has implemented this concept.
Shameless plug: SmallJS (https://small-js.org) has these too..
I think I'd prefer a pane view over a tree view because the higher levels retain their scroll position even as I browse beneath. Is there a similar UX possible for tree views?
While I agree that the package column has room for improvement, some of the 'largesse' can be handled by the search field at the bottom of it, and once you get to doing something serious you could set up your own image and ditch a lot or most of the standard distribution.
Extending that, an outliner can be a great way to deal with this stuff. The problem becomes the self-referential nature of OO systems. Outliners are good when you get to the method of interest, but then you have the problem of browsing senders and implementers.
Still, there's nothing worse than a Smalltalk without a class category list. Smalltalk/MT, for example, just had a class hierarchy browser, and the category class member variable was left blank. I found it very hard to know where to start looking for behavior.
Whenever I tried dabbling in Smalltalk, I would feel constrained by the system in terms of raw real estate. I never cared to view the system through the narrow slit of the method code editor. I would suffer the explosion of windows. All of it was off putting to me, and I never pushed through it to work with a project long enough in order for it to be comfortable.
But, let's contrast it to Java, which pretty much is in the same boat as a modern Smalltalk. A very large core system of packages, classes, and methods. Wrapped in a spider web of dependencies. And, granted, I've been working with Java a long time, and this is all quite comfortable to me. But at the same time, it doesn't suffer the issues that the Smalltalk browser presents.
Consider, regarding the parent point, the entirety of the JDK is not typically presented in the modern IDE. It's just back there. There's no real estate committed to it. There's your project (typically), with its classes.
I use NetBeans, so I have a project view of packages and classes, I have code tabs of individual classes, and a contextual method navigator within a class.
Its routine to potentially have a tab explosion, in contrast to a window explosion when exploring code. But when I do that, all I get is the code window, not the entire project or context of the class.
That is, in my code, I can click on, say, an ArrayList method, and jump to the JDK source code for the method within the ArrayList. I don't get its entire package hierarchy, I get its method list (uncatagorized, but alphabetical) while viewing the code file. So, the impact of viewing a new method is minimal -- it's just a new tab.
But as a benefit, I get to see not only the method I'm interested in, but I get to see the context of the code around the method. When I code, I don't write methods in a vacuum. I organize my code somewhat around aspect of the logic of the class. So, if there's a method that does one thing, chances are that the methods around it are doing similar or related things, or part of the logic of whats going on. Proximity in the source file tells part of the story not captured at the method level.
Sure, I can click around, in the navigator, in the IDE directly to visit other methods, but I can also scroll about, have the breadth of the class as a canvas and gather the ebb and flow of the logic within it. This is stark contrast to the ST "tiny" method browser.
I can also search globally within the source methods rather than just method signatures, while still having access to call trees and references and many of the other wonders of the ST browser.
Rather than a fixed 4-pane browser, a potential solution is to use something like the macOS finder's "Column" view, where each layer of the hierarchy produces a new pane, as many as you need to drill down to the particular thing you're looking for.
cuis smalltalk has multiple "browsers". One browser allows you to restrict your view of the system (the leftmost pane) to a specific package (eg: the one you're actively creating right now).
Do Smalltalk IDEs really not have the concept of different "views" of the code? The 4-pane hiearchical view is clearly valuable, but why would it need to be "surpassed" rather than complemented by other views that are available when needed and can be switched to or even shown alongside the traditional view?
If that kind of thing doesn't exist (and the article sure sounds like that), then yes, it appears the smalltalk ecosystem really has fallen decades behind the state of the art in the IDE area.
While the article makes good points, I simply find it amazing that a programming user interface (with small changes) has been around for so long: I think kit was in 1983 that Xerox Special Information Systems provided me with a free 1 month Smalltalk license for my Xerox 1108 Lisp Machine. That Smalltalk interface is amazingly similar to Pharo Smalltalk which I still occasionally use.
I set out to create a better text repl experience for Common Lisp couple of months ago, but was inspired by the pharo interface and built something much larger: https://atgreen.github.io/icl/
I use it all the time.
The best feature of the Smalltalk browser is that there's no such thing as a 'file' in the organization of the code.
I get that we have to have files and directories as operating systems use that concept,
but it really doesn't make sense to be constrained organize code that way.
In particular,
tying visibility and module organization to "what file is in what directory" introduces an abstraction useless for source code.
Smalltalk does not need new system browsers; rather, it needs to be updated with the tools and developments being made in the world today.
It is sad to see how many people have been developing with Smalltalk for so many years and still cannot escape the bubble of always revisiting the same issues.
29 comments
[ 3.6 ms ] story [ 51.9 ms ] threadWiki description: https://wiki.squeak.org/squeak/1993
Archive of its homepage. Has an image of the browser in use. https://web.archive.org/web/20070228113449/http://www.mindsp...
It's not dominant in the way of Wordpress but also not insignificant.
Systems are only truly obsolete when there is no real reason to use them. PL/1 is obsolete. It's hard to find even legacy code using it, and nobody would use it for experimentation.
Smalltalk is how computing should have been: an open book. I hope that one day we can rediscover that magic, we surely have the computing power available to do so.
https://www.chromium.org/developers/f-script-anywhere/
Disclaimer: never met or spoken or worked with him
Still, there's nothing worse than a Smalltalk without a class category list. Smalltalk/MT, for example, just had a class hierarchy browser, and the category class member variable was left blank. I found it very hard to know where to start looking for behavior.
But, let's contrast it to Java, which pretty much is in the same boat as a modern Smalltalk. A very large core system of packages, classes, and methods. Wrapped in a spider web of dependencies. And, granted, I've been working with Java a long time, and this is all quite comfortable to me. But at the same time, it doesn't suffer the issues that the Smalltalk browser presents.
Consider, regarding the parent point, the entirety of the JDK is not typically presented in the modern IDE. It's just back there. There's no real estate committed to it. There's your project (typically), with its classes.
I use NetBeans, so I have a project view of packages and classes, I have code tabs of individual classes, and a contextual method navigator within a class.
Its routine to potentially have a tab explosion, in contrast to a window explosion when exploring code. But when I do that, all I get is the code window, not the entire project or context of the class.
That is, in my code, I can click on, say, an ArrayList method, and jump to the JDK source code for the method within the ArrayList. I don't get its entire package hierarchy, I get its method list (uncatagorized, but alphabetical) while viewing the code file. So, the impact of viewing a new method is minimal -- it's just a new tab.
But as a benefit, I get to see not only the method I'm interested in, but I get to see the context of the code around the method. When I code, I don't write methods in a vacuum. I organize my code somewhat around aspect of the logic of the class. So, if there's a method that does one thing, chances are that the methods around it are doing similar or related things, or part of the logic of whats going on. Proximity in the source file tells part of the story not captured at the method level.
Sure, I can click around, in the navigator, in the IDE directly to visit other methods, but I can also scroll about, have the breadth of the class as a canvas and gather the ebb and flow of the logic within it. This is stark contrast to the ST "tiny" method browser.
I can also search globally within the source methods rather than just method signatures, while still having access to call trees and references and many of the other wonders of the ST browser.
If that kind of thing doesn't exist (and the article sure sounds like that), then yes, it appears the smalltalk ecosystem really has fallen decades behind the state of the art in the IDE area.
Abstractions have to be earned.
Abstractions have to be exposed so they can be either questioned or exuding their properly valued and time tested structural ontology.
In 2015 I wrote how a cool Smalltalk IDE in a web browser would be:
https://blog.sebastiansastre.co/posts/the-smalltalk-ide-i-wi...
> Why has the four-pane browser survived so long without being replaced by newer (possibly better) metaphors?
Smalltalk died though. The ideas may persist but smalltalk is a dead language really.
It is sad to see how many people have been developing with Smalltalk for so many years and still cannot escape the bubble of always revisiting the same issues.