10 ms·
Smalltalk: Swimming with the fish
- chimeracoder 13y agoA while back I backed an IndieGoGo project dedicated to bringing Smalltalk to the JVM: http://www.indiegogo.com/projects/redline-smalltalk-v1-0 http://www.indiegogo.com/projects/redline-smalltalk-v1-0 I really hope this project pans out, because I would love to be able to program in Smalltalk for practical purposes. (In fact, even the thought of being able to write a single application in both Lisp (Clojure) and Smalltalk (Redline) is making me giddy. We're still a long ways from this dream, but perhaps it'll be possible one day.)
- zeckalpha 13y agoYou could also do http://amber-lang.net/ http://amber-lang.net/ and ClojureScript, no?
- endlessvoid94 13y agoIt is cool, but redline doesn't have the environment of smalltalk, just the language. Which, arguably, misses a LOT of the point of using smalltalk.
- fusiongyro 13y agoThat isn't true. http://www.redline.st/discover/is-it-smalltalk.html http://www.redline.st/discover/is-it-smalltalk.html
- deleted 13y ago[deleted]
- fusiongyro 13y agoFeels like you didn't read the page I linked. You can do all of this: "navigate object graphs, edit them while the program runs, inspect UI elements and modify their behavior interactively, and so on." It just isn't persisted to an image. The OP is implying that Redline is just Smalltalk skin on a Java pig. That's not true, but if your goalposts for Smalltalk are "it must be Pharo" then, yeah, it isn't Pharo. This is basically the same unhelpful puritanical attitude that left Lisp basically dead from the end of the Lisp machine until PG started talking it up. It doesn't have to be the same to be good, or better than a lot of alternatives, or to count as a real Smalltalk. For what it's worth, not having Morphic is a huge win IMO. A UI built on something else that attempted to achieve the original goals of Morphic but with, say, a little actual OO design and architecture, would be way better than that disgusting, unlearnable mess.
- aaronbrethorst 13y ago> Redline is just Smalltalk skin on a Java pig. This is a seriously weird mixed metaphor. Normally the phrase is "lipstick on the pig," which makes a reasonable amount of sense: ostensibly women wear lipstick to look prettier. Pigs are ugly and won't look prettier even when they're wearing a prettying agent. Meanwhile, there's the term 'pigskin,' which is a term for an American football. Finally, pigs already have skins. This phrase conjures up some sort of horrible notions of the serial killer Buffalo Bill in The Silence of the Lambs for me. Very upsetting.
- fusiongyro 13y agoWhat are you, the metaphor compiler? Do I need a fucking permit to write colorfully?
- nsxwolf 13y agoHow does anyone downvote "What are you, the metaphor compiler?", regardless of context?
- DanielRibeiro 13y agoRedlines smalltalk on the JVM is cool. You can also use Smalltalk on the web browser through Amber: http://amber-lang.net/ http://amber-lang.net/
- pavlov 13y agoBased on the title, I assumed this would be an article about how Smalltalk has been murdered: http://www.usingenglish.com/reference/idioms/swim+with+the+fishes.html http://www.usingenglish.com/reference/idioms/swim+with+the+f...
- dllthomas 13y agoFish vs. fishes... and I think "sleeping" is the more common form (at least in media), but yeah, I was wondering, too.
- aaronem 13y agoI'd like to see their source for that! "[He] sleep[s] with the fishes" is the canonical form of the idiom, whose presence in the common vernacular originates with its use in Puzo's "The Godfather"; in my entire life as a native US English speaker, I have never once heard "swim with the fishes" used with anything remotely resembling the same meaning. (It doesn't even make sense! Dead things don't swim; they can't, because they're dead.)
- tieTYT 13y agoI've got a bit of the blub paradox going on here so this story is lost on me. Can anyone give me a concrete example of what he's talking about instead of an abstract analogy?
- seanmcdirmid 13y agoIn Smalltalk, you can manipulate objects directly rather than just indirectly via code that operates on them. The state of your manipulation is made persistent in smalltalk's image facility. Also, the whole object graph is supposedly better exposed accordingly then what you could get sigh just a plain old debugger. At least I think that is what the author is trying to convey.
- radiowave 13y agoIt's pretty rare that you'd actually make ad-hoc changes and then rely solely upon persistence to preserve those changes. Ultimately, you'd want to write code to produce the outcome programatically. It's more the case that you play around and do little "what ifs", which helps you crystalize your ideas about what you're trying to implement. The trouble is that just explaining the mechanics of it doesn't really capture the experience, and if you talk about the experience on its own, you end up talking about, er, fishes. Which is to say that it's an almost useless analogy, but one that I don't know how to better. Still, using Python to pay the bills isn't so bad...
- yeahbutbut 13y ago> Still, using Python to pay the bills isn't so bad... Well, and pdb isn't bad.
- aaronem 13y agoIt exists. That's better than the alternative, and if this seems like damning with faint praise, it's because there really isn't anything else good to say on the subject -- the debugging facilities available in any Lisp environment, even Emacs, make those offered by Python (or Perl, or Ruby, or Javascript) look pitiful, and from all I've seen of Smalltalk, it is to Lisp as Lisp is to your interpreted language of choice.
- ddfreyne 13y agoThe analogy given in the article is pretty accurate. The Smalltalk environment is unique in that it allows very easy access to the libraries, the IDE and the language’s internals (including the compiler!). The Smalltalk debuggers are among the best ones I have ever used. (I’m mostly speaking out of my experience with VisualWorks, a commercial Smalltalk implementation, but other implementations are similar.) I would greatly recommend everyone to give Smalltalk a try. The IDEs are pretty ugly and cumbersome, but don’t let that put you off. Get a feeling of the minimalism of the programming language and the pure form of object orientation. Dig through the code of the standard library — it’s quite easy — and check out the implementations of TrueClass, FalseClass, BlockClosure etc. Unfortunately, many parts of the Smalltalk IDEs are horribly outdated and make Smalltalk a very poor choice of environment to use for production code. Smalltalk lives in its own little world, and the tools that you’d normally use during day-to-day development are integrated in the IDE, and there is virtually no possibility of using external tools. The text editors are pretty bad, and you can’t use vim or emacs or Sublime Text. The Smalltalk VCSes are particularly horrible. For version control, you need to use systems such as Monticello or Store, both of which make me cringe just thinking about them again. I also feel that Smalltalk coders get locked in into their environment. Many Smalltalkers that I have met are quite unfamiliar with what is happening in the outside world. Most of them have never heard of git, for example (and quite a few did not know what Subversion was). When an interesting technology enters the Smalltalk world, people seem to rush to reimplement it in Smalltalk (yes, there is STON — Smalltalk Object Notation). These were the main reasons why I quit my Smalltalk job. A sad decision, but one that was unavoidable in the long run. Smalltalk is a nice language and has IDEs with some very nice features that I would love to see in other environments, but it is also severely lagging behind in many other areas. I would like the Smalltalk community to be more aware of what is happening outside and build bridges. Without that mindset, I feel Smalltalk will simply fade out completely. Source: I used to be a professional Smalltalker for almost three years.
- EdwardCoffin 13y agoWith respect to version control systems, I notice you didn't mention ENVY. I can't comment on Monticello nor Store, never having used them, but I still miss ENVY. Best version control system I ever used. Source: professional Smalltalker for about four years (fifteen years ago)
- gabordemooij 13y agoI have been facinated by Smalltalk but the language drives my kinda crazy. I have read the 'Blue book' (http://wiki.squeak.org/squeak/64 http://wiki.squeak.org/squeak/64) and tried Pharo (http://www.pharo-project.org/home http://www.pharo-project.org/home), Amber (http://amber-lang.net/ http://amber-lang.net/) and GNU Smalltalk. While I really like Smalltalk, for some reason it does not work for me as a web development platform (and the web is my platform), or maybe I just don't grasp it. I tried Seaside (http://www.seaside.st/ http://www.seaside.st/) but the URLs it generates are not acceptable (unfortunately) and I find their component system quite complex. I hope someday I will find way to use the techniques behind Smalltalk (live environment, object model) in a browser or web environment. Maybe Amber will develop into something I can work with. I really hope so. Any suggestions anyone?
- fusiongyro 13y agoThere are two other web frameworks in use, and I think one of them is more about generating clean URLs. Illiad? I love the idea of Smalltalk, but it also never stuck for me. I think I just prefer to learn from books than through milling around in the image. All the great minds in Smalltalk seem to be self-driven autodidacts. I'm not. I'm pretty good at Haskell and Prolog though, so I think it works out in the end. I'm also not good at Lisp or Forth. :)
- bromagosa 13y agoYep. AidaWeb and Iliad (plus many other smaller ones). Although Iliad is not about generating clean URLs (it can, though), but more about being small and understandable, plus having Ajax for free and being pragmatic.
- gamache 13y agoArticles about how great Smalltalk is usually remind me of articles about how great the Lisp Machine was. And there is a lot of merit to an entire system, hardware and software, designed to operate in a high-level language. My complaint is that neither of these things is coming back in a relevant way. Perhaps the biggest shift in software engineering in the last decade or two is the fact that no one writes entire systems anymore. We've moved to a system of (somewhat!) interchangeable parts. If your thoughtfully constructed, delicately handcrafted utopia doesn't play well with tools the user is used to and libraries the user needs, no one will use it in the real world. Smalltalk, though a wonderful entire system in the 80's, hasn't kept up with computing progress. Most of its best features made it into other languages (Ruby and Obj-C are the premier examples), languages which aren't so opinionated about what OS you run, what IDE you're using, what language adjacent programs are written in, etc. Much like Lisp Machines, the rest is left to rot, and incite wistful blog posts by old hands. And pretty much everyone else ships code in other languages.
- loup-vaillant 13y ago> Perhaps the biggest shift in software engineering in the last decade or two is the fact that no one writes entire systems anymore. That's unfortunate. If we kept at it, we could have discovered much simpler ways of doing things than the current accumulation of leaky abstractions over leaky abstractions in a rather disintegrated environment. We can do better: http://www.vpri.org/pdf/tr2011004_steps11.pdf http://www.vpri.org/pdf/tr2011004_steps11.pdf
- pjmlp 13y agoYes they are gone. However, the main point is that back then you haven't got HN, Reddit and the blogs of today. As such not many geeks were fortunate enough to know and understand those systems, as consequence you have a legion of developers that cannot understand the beauty of those systems.
- roarroar 13y ago>My complaint is that neither of these things is coming back in a relevant way. Where is this directed? It sounds like a criticism of Lisp, Forth, Self, etc, but please correct. The fact that the ignorant masses flocked to C and Unix doesn't grant them one _iota_ of merit. C isn't even a good low-level language. And look at the most popular platform of them all - the web browser, if you want a good laugh.
- do-it-good 13y agoYou can swim with the fish or grow up and play with the big boys (Lisp >> Smalltalk).
- aaronem 13y agoSymbol's function definition is void: 'Lisp'
- nsxwolf 13y agoSo, it's a language for doped up hippies. That's what I got out of that. I recalled Jerry Garcia's stories about scuba diving and how it was better than LSD. I have no clue what it means to live amongst your objects and touch and feel and turn and taste them. That article didn't really explain what that means, but I'll take him at his word.
- nsxwolf 13y agoSure, downvote me. This article says nothing. You have to be a Smalltalk lifer to get it. It's all metaphors that have no meaning to anyone outside the author's bubble. Crap article.
- fractallyte 13y agoApologies for throwing these quotes in, but they just seem so appropriate in this context: "Unfortunately, no one can be told what the Matrix is. You have to see it for yourself." "After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the rabbit-hole goes." Try the red pill... (And think of turtles rather than rabbits!)
- _mhr_ 13y agoSorry, this is completely unrelated, but I've been trying to email you, and it keeps bouncing. What's happened?
- fractallyte 13y agoNo idea! Try my username at gmail...
- zeroflag 13y agoHere is a concrete story what happened me few weeks before, while I was working on a Nintendo emulator in Pharo. I was playing with Super Mario, and at the end of the 3rd or 4th level my emulator crashed because of some index miscalculation in a sprite drawing method. When this happens in smalltalk, a debugger window pops up, and the cursor is on the problematic line. I fixed the bug in the debugger and pressed proceed then continued my journey to save Princess Peach :). In a live environment it is easy to make experimentations because you can get very quick feedbacks, and there is no need to switch between modes like development to execution or execution to development. Catching and fixing certain bugs is also easier as I showed before. I think there is a need for this kind of development, that's why people try implementing code hotswapping and class reloading capabilities in various programming environemnts. But still most of them are just limited workarounds compared to smalltalk where live coding works fine for decades.
- maliki 13y agoOne benefit that a lot of commenters here have pointed out is very user-friendly inspection of running code. Kind of a super-REPL. I find that in Python I'm most productive in iPython's browser-based notebook interface (or Mathematica, but I find Mathematica difficult for writing things that go into web-facing applications), which offers similar features. These notebook interfaces are REPLs, but they're a little more user friendly in the sense that you can edit history in place instead of doing a history completion and then evaluating an additional line. Has anybody had any experience with these notebook interfaces as well as the smalltalk environment and can give a rundown of the differences?