Live data from Hacker News

Today’s Smalltalk: A Second Look At The First OO Language

blog.smartbear.com

41–50 of 52 posts

Re: Today’s Smalltalk: A Second Look At The First OO Language

#41
post #21
post #19

Earlier quoted context omitted.

I was always told to fileout my work and then filein into a blank image to remove any cruft that accumulates during development. That's pretty much the same?

There were 2 camps. I like to do my work with a single image over months, saving code to a native (Smalltalk) version control system. Just doing the occasional testing with a fresh image and loading my code in to verify things are doing fine, as well as when deploying.

There were people who worked with others, and people who didn't :-)

Re: Today’s Smalltalk: A Second Look At The First OO Language

#42
post #39
post #9

Earlier quoted context omitted.

Back in the early 90's Smalltalk was actually starting to be used in the enterprise, but then came Java. We had access to VisualWorks at the university back then. Many developers aren't aware that Eclipse roots are in Visual Age for Smalltalk. Also that Eclipse's workspace concept was an attempt to create a virtual image out of files. Having said this, Smalltalk's image was a problem in the time when VMs weren't that…

>but then came Java Yes. >image based source control systems "Mastering ENVY/Developer" http://books.google.com/books?id=ld6E19QIMo4C

I never heard of ENVY, thanks for the info.

We used VisualWorks around 1995 in the university for a few projects.

When I looked again to Smalltalk, Squeak was already around and Monticello was being used.

Re: Today’s Smalltalk: A Second Look At The First OO Language

#43
post #10

Nice article, but it fails to explain the experience using Smalltalk environment really is. Smalltalk, like Lisp Machines, was originally a blend of GUI operating system, development environment and the first real IDE.

It's funny. Unix was also meant as an IDE (persistency, logic, machine and user interfaces). It seems they all were trying to reach the same goal in their own way.

The fact that dc was originally intended as basically the Unix system's bignums library http://www.catb.org/esr/writings/taoup/html/ch08s02.html#id2... helped to open my eyes to this. I think you could talk about this idea of Unix as "big Unix" and the narrower understanding of Unix programming, dominated by the C APIs, as "little Unix".

Little Unix took over the world, while big Unix collapsed under its own weight due to things like portability/versioning hell, robustness problems due to faulty tools and text-parsing errors, performance issues and so on. (Partly this was a success catastrophe, of course, for example in how the popularity of Unix resulted in a profusion of different Unix userlands with varying interfaces and bugs.) Also little Unix was more comprehensible from, and more portable to and from, the world of PC (MS-DOS/Windows/Mac) application development, where the environment is more or less the kernel's/OS vendor's APIs. The fact that clearly many more people have bought or read K&R http://www.amazon.com/dp/0131103628/ (with its very little-Unix perspective) than /The Unix Programming Environment/ http://www.amazon.com/dp/013937681X reflects this divergence, and also surely helped to create it.

Re: Today’s Smalltalk: A Second Look At The First OO Language

#44
post #32

Smalltalk is incredibly cool, but I think one of the main things stunting it is it doesn't have a great free implementation. The only modern smalltalk environment I've used which felt like a serious environment was VisualWorks, and to download that you have to fill out a form and you can only use it under a "personal use" license. Squeak, despite being impressive, has always felt like a toy. I like Pharo in spirit, b…

I get what you're saying, but it's also really weird to me. You cannot sanely use Pharo or Squeak to write native apps right now; that's totally true. You also couldn't do that for Visual Works, except for a very narrow window when they properly emulated enough Windows XP widgets you could probably fake it. But Pharo and Squeak proper look (to me) neither more nor less native than IntelliJ, which people happily use.…

You're probably right about visual works, I haven't used it since 2005 so I kind of fell in that window.

I don't have a problem w/ non-native looking GUI's in principle, but I just think Squeak and Pharo are kinda fugly. Bad spacing, weird colors, weird fonts. If that only effected my development environment I could live with it, but if the apps I make are also going to look like that? Ick. The only thing I'd really use it for is writing games where GUI's are always going to be custom anyway. (I think Smalltalk in general would be great for game development actually.)

Another thing is that at least in other smalltalks, it generally used OS windows at least. The controls might look weird, but it does feel like part of the system. Writing code in Squeak feels like you're either using a VM or Remote Desktop, it's just totally isolated.

The thing is most of these, in isolation, aren't deal killers, but once you've added up enough weird points it gets a bit too weird. You could make similar arguments about Java, but I think the difference is in magnitude: Java's weirdness is kind of weird, smalltalk's weirdness is really weird.

Re: Today’s Smalltalk: A Second Look At The First OO Language

#45
post #40

Earlier quoted context omitted.

There is definitely a level where the concept makes a lot of sense, but even with things like docker or vagrant or ec2 images there is still an expectation that you keep around enough information to replicate the image from scratch, be it a shell script or chef or puppet or a dockerfile. Smalltalk's images didn't really have this feature.

>enough information to replicate the image from scratch... Smalltalk's images didn't really have this feature Code changes in ST-80 (the Smalltalk made public in 1980) were automatically logged outside the image. There were (at least) 3 files: - the original source code provided with the implementation (.sou) - the replayable log of changes since the sources file was made (.cha) - the compiled bytecode and objects th…

It's kind of funny that the closest thing to Smalltalk images in wide use are the world most popular object oriented programs: spreadsheet documents (and to an extent ms word documents).

Re: Today’s Smalltalk: A Second Look At The First OO Language

#46

Earlier quoted context omitted.

Correct. Although Smalltalk is generally regarded as the first one because the concept "object orientation" was first used in it. Still, the big thing in Smalltalk are not objects, but messages. That's something many later OO languages missed on completely. From Kay: «OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in S…

Why would you take Kay's definition of OOP as gospel. To me, OOP is all about thinking and coding in terms of object metaphors. Everything else is a supporting detail.

Well, I wouldn't take it as gospel, but as a definition coming from the person who actually invented and first used this term.

Re: Today’s Smalltalk: A Second Look At The First OO Language

#47
post #14

Earlier quoted context omitted.

I think the reason many later OO languages "missed" messages completely is because the distinction makes little sense in more static languages that lacks a way to dynamically call a method/send a message.

And incidentally, dynamic dispatching is recognised as the key feature of OO: (Cook 2009) Object-oriented programming is successful in part because its key technical characteristic—dynamic dispatch-is essential to supporting independent, interoperating extensions; and because interoperable extension is in turn essential to the reuse of architectural code (as in frameworks), and more broadly to the design of modern so…

I'm not sure if you're agreeing or disagreeing with me.

Dynamic dispatch is supported by most statically typed OO languages. C++ virtual member functions are dynamic dispatch. So indeed, dynamic dispatch is one of the key features that makes the distinction between calling methods and sending messages sufficiently un-important that static OO languages are still useful.

What was (perhaps too imprecisely) referred to in my comment above is late/dynamic binding.

Re: Today’s Smalltalk: A Second Look At The First OO Language

#48
post #22

Earlier quoted context omitted.

Simula does provide encapsulation - it often considered the first language to do so. It does not provide an easy mechanism for information hiding of the encapsulated instance variables. I think that is an exceedingly weak argument against calling it OO, especially as you AFAIK can do information hiding in Simula by using the simulation support that was it's raison-d'etre, namely by using the object lifecycle and co-r…

Closures as a form of encapsulation is actually very lispy. Simula introduced classes while Sketchpad introduced prototypes (predates Simula by 5 years), so both were very much proto OO in that sense. But if it makes you feel any better, we could define proto OO just to mean OO before that was a term anyone invented.

It's not closures I described. I don't remember if Simula even have closures or not - it's possible it does. The mechanism I described involves message passing between co-routines.

In any case, I detest Simula with the kind of burning hate you can only experience after having been forced to use it (it was the language used in a compulsory CS course; though admittedly most of my hate stems from the horrible standard libraries), so it won't make me "feel any better".

I just don't see any excuse at all for not calling Simula OO, and I'm trying to understand what basis you have for thinking so. So far the reasons are weak and fuzzy enough that I don't see anything worth changing my opinion over.

Re: Today’s Smalltalk: A Second Look At The First OO Language

#49

Earlier quoted context omitted.

Why would you take Kay's definition of OOP as gospel. To me, OOP is all about thinking and coding in terms of object metaphors. Everything else is a supporting detail.

Well, I wouldn't take it as gospel, but as a definition coming from the person who actually invented and first used this term.

Alan Kay is very opinionated, I respect his work but don't take him as a god. There are plenty of other people who did much work in OOP in the 70s and 80s who deserve around similar credits for starting up this field, and let's not forget the Scandinavians who actually invented it.

Re: Today’s Smalltalk: A Second Look At The First OO Language

#50
post #31
post #29

Earlier quoted context omitted.

Simula is a hybrid language made out of an imperative Algol base and extensions for OO.

That doesn't answer the question - the same can be said of a lot of OO languages.

Those are also not 'real' pure OO languages.
Post reply on HN