News for hackers. Stuff that matters.
Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Thursday August 11, 2022 @01:42PM (#32429276)
Smalltalk looked at the time like it was going to be important. It had really good marketing.

Its main effect on the world, aside from being the implementation language for the Xerox UI that was demonstrated to Steve Jobs, seems to have been via its influence on the language Self, which then influenced Javascript. And here we are.

Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Thursday August 11, 2022 @03:38PM (#32430726)
Maybe if IBM had not rebooted their Smalltalk business into Java, Smalltalk would have been kept more relevant than it is nowadays.

For the younger generations, the whole set of Visual Age IDEs were written in Smalltalk, SOM (the OS/2 COM like OOP ABI) had support for C, C++ and Smalltalk, making Smalltalk the kind of OS/2's .NET.

Then Visual Age became Eclipse, and the Smalltalk business pivoted into Java.

Re:Byte Magazine Special Issue: Smalltalk (1984) by nl on Thursday August 11, 2022 @08:17PM (#32433429)
> the Smalltalk business pivoted into Java

Interestingly OTI (which was purchased by IBM in 1996 and did all the Smalltalk/Visual Age and later Eclipse) had a VM that could run both Smalltalk and Java bytecode:

in order to accomodate Java execution, OTI developed what was called the UVM (or Universal Virtual Machine) whcih could execute both Smalltalk and Java byte-codes, and used Smalltalk to implement the Java primitive functions which were implemented in C in the Sun JVM.

https://web.archive.org/web/20090611013334/http://talklikead...

Re:Byte Magazine Special Issue: Smalltalk (1984) by ErikCorry on Thursday August 11, 2022 @05:15PM (#32431798)
Smalltalk is a major influence on Toit and Ruby.

Toit has blocks (lightweight closures), single inheritance, everything-is-an-object (no primitive types).

Like Smalltalk the Toit VM is dynamically typed, but unlike classic Smalltalk there are optional types and they are checked at compile time and run time if you choose to use them.

The syntax is not much like Smalltalk though, and development is with conventional source files and compilation, not image based like Smalltalk and Self.

(In Self the editor was inside the VM and you saved your work by snapshotting the entire VM state which is superficially attractive but makes it really hard to collaborate and use version control.)

Re:Byte Magazine Special Issue: Smalltalk (1984) by igouy on Thursday August 11, 2022 @06:29PM (#32432605)
> you saved your work by snapshotting the entire VM state

That doesn't seem likely, that wasn't the recommended approach to managing source code in Smalltalk — but I have no personal experience with Self.

Seems like it might depend on which version of Self is being discussed.

"To briefly recap, the Self transporter allows the programmer to take a program that adds some functionality to a snapshot and move that program to another snapshot. It accomplishes this task by writing the slots that comprise the program to a source file that can be read in and evaluated in the new snapshot to recreate the program."

https://bluishcoder.co.nz/self/transporter.pdf

Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Thursday August 11, 2022 @06:24PM (#32432554)
Are Toit or Ruby important?

We used to think Ruby would turn out to be important. Then it didn't, and Python reclaimed its niche. I have probably heard of Toit before, but am unsure.

Snapshotting your VM state as the way to deliver programs was probably Smalltalk's chief failing.

Re:Byte Magazine Special Issue: Smalltalk (1984) by igouy on Thursday August 11, 2022 @06:34PM (#32432656)
Lack of standardization across vendors was by-far the chief failing.

> the way to deliver programs

To judge whether that could be successful, we need to be more specific — deliver what kinds-of programs to what kinds-of end-users?

Re:Byte Magazine Special Issue: Smalltalk (1984) by StillLrning123 on Friday August 12, 2022 @01:35AM (#32435016)
Microsoft Excel is very similar to this kind of deployment and is used _extensively_.
Re:Byte Magazine Special Issue: Smalltalk (1984) by retrac on Thursday August 11, 2022 @06:58PM (#32432863)
Smalltalk influenced nearly every object-oriented language that came after it, by virtue of heavily influencing Lisp. The precursor to Common Lisp's Object System (CLOS) [1] comes rather directly after MIT Lisp hackers [1] encountered Smalltalk in the late 70s.

Lisp probably counts as the first major language to have OOP, and along with Smalltalk, was the language that introduced OOP to the wider programming world. Bjarne Stroustrup knowing about Simula (which was always a little esoteric) and trying to turn C into a Simula-like language, is more the exception. Most OOP languages today can trace their OOP heritage to CLOS.

[1] https://en.wikipedia.org/wiki/Common_Lisp_Object_System

[2] https://en.wikipedia.org/wiki/Flavors_(programming_language)

Re:Byte Magazine Special Issue: Smalltalk (1984) by davidgay on Thursday August 11, 2022 @09:08PM (#32433729)
> Most OOP languages today can trace their OOP heritage to CLOS.

I'm extremely dubious about this claim and cannot think of any mainstream OO language this applies to (clearly not C++, Java or C#, nor of course Smalltalk, hence neither Objective-C nor Self nor Javascript).

For further context: I learned about programming languages, did programming language research starting in the early 90s. CLOS, and multiple-dispatch especially were always a significant outlier.

Re:Byte Magazine Special Issue: Smalltalk (1984) by lispm on Friday August 12, 2022 @03:39AM (#32435595)
There are a bunch of different OOP mainlines. Some have early Lisp influence, long before CLOS. Some are more or less completely without Lisp influence.

Simula, Object Pascal, C++, c#, ... (class based OOP with virtual functions)

Smalltalk (message passing, classes)

Lisp/CLOS (generic functions) -> Dylan, Perl, Julia, R, ...

Actors, Self, JavaScript, ... (Prototypes)

....

Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Friday August 12, 2022 @02:00AM (#32435119)
Not really, Smalltalk was influenced by the work being done to add OOP to Interlisp-D at Xerox PARC, LOOPS.

https://interlisp.org/saved.html#history

Besides Common Lisp, the only languages that have anything on their object model that resembles CLOS are Dylan, Clojure and now Julia.

Re:Byte Magazine Special Issue: Smalltalk (1984) by lispm on Friday August 12, 2022 @03:34AM (#32435578)
R, Perl and Raku, various Scheme variants use it.
Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Friday August 12, 2022 @04:21AM (#32435820)
Since when does Perl 5 use CLOS?

Regarding R and Raku I cannot say anything, but the CPAN package for OOP extensions I used back in 2000's wasn't it.

Re:Byte Magazine Special Issue: Smalltalk (1984) by lispm on Friday August 12, 2022 @07:08AM (#32436780)
It's not about using CLOS, since that is Lisp specific and the full thing incl. MOP is largish.

But Moose is largely influenced by CLOS.

https://www.perl.org/about/whitepapers/perl-object-oriented....

some comment here on Hackernews :

"Moose is back-ported Perl6 objects, which borrows heavily from CLOS and the concepts introduced in the Smalltalk traits paper. This is a bit of a simplification of the history, but the ancestry is present, documented and obvious."

Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Friday August 12, 2022 @09:38AM (#32438446)
Fair enough, still one option among many others.

A quick search gave me Moose, Moo, Class::Accessor, Class::Tiny.

So kind of hard to make it the Perl OOP way.

Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Friday August 12, 2022 @11:34PM (#32446659)
TIMtOWtDI, as it were.
Re:Byte Magazine Special Issue: Smalltalk (1984) by AlbertCory on Thursday August 11, 2022 @08:05PM (#32433348)
> the implementation language for the Xerox UI that was demonstrated to Steve Jobs

Sorry, I have to correct you on that. Or rather, clarify the proper construction of it, which is: narrow.

In https://www.albertcory.io/inventing-the-future, I talk about Smalltalk a lot. It was not used for the Xerox Star, and there was only a limited demo of the UI done in Smalltalk. No one seriously considered building Star on it.

However, you're right in that the PARC demo to Jobs did make heavy use of Smalltalk. That's because the demo was done by PARC and not by the Star developers, and they showed him the ideas that inspired Star, ideas that had existed for years before he came.

Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Friday August 12, 2022 @11:37PM (#32446670)
My recollection is that Star came along rather later. Certainly Alan Kay would have wanted to implement Star in Smalltalk.

According to the Arbiter of All Things, the demo was in 1978, and Star came out in 1981.

Re:Byte Magazine Special Issue: Smalltalk (1984) by AlbertCory on Sunday August 14, 2022 @03:41PM (#32462249)
Alan Kay wasn't involved in Star, except as a PARC influencer.
Re:Byte Magazine Special Issue: Smalltalk (1984) by e12e on Thursday August 11, 2022 @05:11PM (#32431760)
I think openstep, objective-c and cocoa owes a great deal to smalltalk. I'm not sure if objective-c ever was any better (or practical) than smalltalk/strongtalk/self (or Java) - but it's at least possible to dream of the macos going for smalltalk, not obj-c.
Re:Byte Magazine Special Issue: Smalltalk (1984) by Jtsummers on Thursday August 11, 2022 @05:28PM (#32431944)
Objective-C had the primary benefit (over Smalltalk) of being a superset of C, which permitted immediate and easy interaction between Objective-C and C source code. It also integrated better (which was critical, Smalltalk doesn't force using the image model for source code, but it was typical) into existing development workflows. Those are the kinds of practical concerns that can't be neglected when considering language adoption, especially since NeXT (main early adopter) was building on the lineage of the Unix-family of operating systems.
Re:Byte Magazine Special Issue: Smalltalk (1984) by e12e on Friday August 12, 2022 @06:57AM (#32436720)
True enough.

As for other descendants, ruby is of course deeply inspired by smalltalk.

Re:Byte Magazine Special Issue: Smalltalk (1984) by linguae on Thursday August 11, 2022 @02:06PM (#32429587)
The Smalltalk community also had an influence on design patterns and testing frameworks that would later get picked up by C++ and Java programmers. If I recall correctly, the Gang of Four (the authors of the famous Design Patterns book) uses Smalltalk in its examples.
Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Thursday August 11, 2022 @02:16PM (#32429706)
Design Patterns has itself turned out not to be anywhere near as important as it seemed at the time.

The only one I ever hear of nowadays is the "visitor pattern".

Anti-patterns have more sticking power. Arguably all patterns are anti-patterns, since each identifies something one's language is too weak to capture in a library. As C++ got more powerful, the patterns vanished into ordinary library components.

Re:Byte Magazine Special Issue: Smalltalk (1984) by belter on Thursday August 11, 2022 @02:27PM (#32429831)
“Design patterns are bug reports against your programming language”

-- Peter Norvig

https://news.ycombinator.com/item?id=8735187

Re:Byte Magazine Special Issue: Smalltalk (1984) by mickeyp on Thursday August 11, 2022 @02:30PM (#32429855)
- Decorator pattern, as seen in Python's @decorators;

- Factory functions, as seen everywhere, even if people don't bother thinking of them as such;

- Memento pattern, a common way of implementing undo-able actions in applications that need it;

- Proxy pattern, frequently used when you have a code-generated client that talks to a server from a template. Like generating REST/RPC client code that matches a server spec;

- Visitor pattern, but you already mentioned that... but ironically enough, if you have pattern matching support in your language, it's much easier to use that.

And that's just off the top of my head. If you use any of these you're no architecture astronaut, nor are you gilding your lillies.

Re:Byte Magazine Special Issue: Smalltalk (1984) by rileyphone on Thursday August 11, 2022 @02:34PM (#32429906)
The Smalltalk community was also instrumental in the origin of Agile (before familiar bastardization by the industry) with people such as Kent Beck and Ward Cunningham (who also made the original wiki at c2.com).
Re:Byte Magazine Special Issue: Smalltalk (1984) by infinite8s on Thursday August 11, 2022 @03:23PM (#32430512)
I first learned design patterns in the context of C++. After learning python I used to think that needing design patterns was a sign that your language wasn't powerful enough. However, now that I've taken the time to learn Smalltalk I feel that design patterns indicates that your language had the ability to model any kind of architecture you can imagine, and if needed you can reshape the language to make that easier (vs python where you would need to implement it in the underlying cPython layer).
Re:Byte Magazine Special Issue: Smalltalk (1984) by igouy on Thursday August 11, 2022 @09:49PM (#32433956)
"Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk."

https://www.google.com/books/edition/_/6oHuKQe3TjQC?gbpv=1

Re:Byte Magazine Special Issue: Smalltalk (1984) by cmrdporcupine on Thursday August 11, 2022 @05:26PM (#32431920)
I don't see the Self influence in JS.

Perhaps you mean because of prototype inheritance? But the form in JS doesn't look anything like the form in Self. Or particularly thought through at all, really. I fear that Eich may have implemented prototype OO by accident almost?

I have a whole book on prototype OO from the 90s, and the languages in there are much better thought through (Self wasn't the only one or the first one. Actually even Smalltalk 72 is kind of prototype-OOish).

In other respects, syntax and scoping model etc, I don't think original JS looks anything like a Smalltalk-descended language.

Re:Byte Magazine Special Issue: Smalltalk (1984) by Jtsummers on Thursday August 11, 2022 @05:38PM (#32432027)
> I don't see the Self influence in JS.

I think Eich's own words may be helpful here: https://brendaneich.com/2008/04/popularity/

Maybe it was accidental, but he refers to it as being Self-ish. And refers to it as "a quickie love-child of C and Self".

Re:Byte Magazine Special Issue: Smalltalk (1984) by BrendanEich on Thursday August 18, 2022 @06:27PM (#32515597)
I've co-authored a HOPL IV paper and given lots of talks, do some searches and you will find them (https://dl.acm.org/doi/pdf/10.1145/3386327). There's no doubt about this. I knew of Self and liked it but did not have time for multiple parent* slots. I didn't even have time to expose the unstratified (meta- in base-level) __proto__ property until 1997 in SpiderMonkey. I was aiming at Self + Scheme-ish (definitely "ish") first class functions because I had to interop with Java.
Re:Byte Magazine Special Issue: Smalltalk (1984) by musicale on Friday August 12, 2022 @12:55AM (#32434846)
I suspect Self and NewtonScript may have helped to popularize prototype-based OOP before JavaScript came around.

And of course Self's JIT/VM evolved into HotSpot and probably influenced most future VMs including JavaScript.

Re:Byte Magazine Special Issue: Smalltalk (1984) by jonjacky on Thursday August 11, 2022 @03:06PM (#32430288)
I recall Smalltalk had the first unit testing framework, which became a model for other languages.
Re:Byte Magazine Special Issue: Smalltalk (1984) by Jtsummers on Thursday August 11, 2022 @01:46PM (#32429338)
And Self's JIT and VM technology went into Java.
Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Thursday August 11, 2022 @01:49PM (#32429370)
They did, but that was not a Smalltalk heritage.
Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Thursday August 11, 2022 @03:31PM (#32430612)
It surely was, here is some learning material.

> Strongtalk is a major re-thinking of the Smalltalk-80 programming language and system. While retaining the basic Smalltalk syntax and semantics, it contains a number of significant advances, including:

> The Strongtalk system was developed in secret in the mid-90's by a small startup company. Before the Strongtalk system could be released, the company was acquired by Sun Microsystems, Inc. to work on the Java® virtual machine.

http://strongtalk.org/

Re:Byte Magazine Special Issue: Smalltalk (1984) by twoodfin on Thursday August 11, 2022 @02:19PM (#32429747)
I'd disagree with that characterization. The earliest work in optimizing highly dynamic languages was done in Smalltalk[1] before continuing in Self. David Ungar was the through line and one of the original designers of Self.

[1] https://www2.eecs.berkeley.edu/Pubs/TechRpts/1986/5376.html

Re:Byte Magazine Special Issue: Smalltalk (1984) by lispm on Thursday August 11, 2022 @03:04PM (#32430273)
> The earliest work in optimizing highly dynamic languages was done in Smalltalk

Hard to believe, given that optimizing native code compilers for Lisp were already available.

Re:Byte Magazine Special Issue: Smalltalk (1984) by twoodfin on Thursday August 11, 2022 @05:16PM (#32431808)
I’ll accept “of the specific thread that led to HotSpot” as a qualification, sure.
Re:Byte Magazine Special Issue: Smalltalk (1984) by pinewurst on Thursday August 11, 2022 @07:40PM (#32433176)
Not true as the ParcPlace SmallTalk(s) were all JITed.
Re:Byte Magazine Special Issue: Smalltalk (1984) by igouy on Thursday August 11, 2022 @03:34PM (#32430670)
Re:Byte Magazine Special Issue: Smalltalk (1984) by PaulHoule on Thursday August 11, 2022 @01:44PM (#32429309)
Other object oriented languages too.
Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Thursday August 11, 2022 @01:45PM (#32429331)
Objective-C, maybe. Not C++ or Java, which trace their lineage to Simula, which Smalltalk also cribbed from. But it is hard to see Objective-C as important, limited as it is to a walled garden.

It also once seemed like "object-oriented" would be important. Now it is recognized as a niche technique.

Re:Byte Magazine Special Issue: Smalltalk (1984) by dunham on Thursday August 11, 2022 @02:20PM (#32429758)
According to one of the developers of Java, Java was also inspired by Objective-C:

https://cs.gmu.edu/~sean/stuff/java-objc.html

Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Friday August 12, 2022 @02:05AM (#32435143)
Yes, Java is basically the semantics of Smalltalk/Objective-C, with the syntax of C++.

The way dynamic code works (classloader, reflection), methods being virtual by default, interfaces, the JAR archives (think NeXT app bundles),... all that is Smalltalk/Objective-C influence.

Re:Byte Magazine Special Issue: Smalltalk (1984) by Apocryphon on Thursday August 11, 2022 @02:35PM (#32429925)
Object-oriented programming has been important for like three decades now, for better or for worse, and if it's so "niche" now, what paradigm has replaced it?
Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Thursday August 11, 2022 @06:06PM (#32432363)
The world (well, most of it) has recognized that "paradigms" are themselves niche. Of mainstream languages, only Java still tries to shoehorn all programs into its "paradigm".
Re:Byte Magazine Special Issue: Smalltalk (1984) by Apocryphon on Thursday August 11, 2022 @06:34PM (#32432651)
What world are you posting from exactly
Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Saturday August 13, 2022 @05:51AM (#32448332)
The one where C++, C, Java, JavaScript, Python, and Fortran are the mainstream, non-niche languages. Several of those have some support for an OO style, but only Java tries to force it on you.
Re:Byte Magazine Special Issue: Smalltalk (1984) by linguae on Thursday August 11, 2022 @02:00PM (#32429502)
There is a GCC Objective-C compiler that has existed for a long time, and a large portion of the Cocoa API is available in GNUstep, an open source implementation of the OpenStep API. It’s long been possible to use Objective-C outside of NeXT, Mac, and iOS development, though admittedly Objective-C hasn’t had the same level of adoption as contemporary object-oriented languages such as C++ and Java.
Re:Byte Magazine Special Issue: Smalltalk (1984) by ncmncm on Thursday August 11, 2022 @02:18PM (#32429724)
I have never heard of Objective-C actually being used in anything I know about, outside the walled garden.
Re:Byte Magazine Special Issue: Smalltalk (1984) by rileyphone on Thursday August 11, 2022 @02:27PM (#32429832)
Ever heard of the World Wide Web? https://github.com/cynthia/WorldWideWeb
Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Thursday August 11, 2022 @03:34PM (#32430662)
Created on a NeXT workstation, the Objective-C implementation was never ported to other platforms, Mosaic was implemented in C.

https://en.wikipedia.org/wiki/Mosaic_(web_browser)

Re:Byte Magazine Special Issue: Smalltalk (1984) by rileyphone on Thursday August 11, 2022 @04:16PM (#32431180)
Still, the Web might have never existed without Objective-C, which is moreso my point. From [0]:

> A second phase would almost certainly involve some programming in order to set up a real system at CERN on many machines. An important part of this, discussed below, is the integration of a hypertext system with existing data, so as to provide a universal system, and to achieve critical usefulness at an early stage.

> (... and yes, this would provide an excellent project with which to try our new object oriented programming techniques!) TBL March 1989, May 1990

Objective-C had a wonderfully pragmatic approach to OOP, though it remained tied to the systems it was on because of the standard object libraries that enabled it. NeXT promotional materials really liked to showcase its suitedness to rapid application development, whether Jobs himself doing so [1] or in a staged competition with Sun [2]

[0] https://www.w3.org/History/1989/proposal.html

[1] https://youtu.be/rf5o5liZxnA?t=1391

[2] https://www.youtube.com/watch?v=UGhfB-NICzg

Re:Byte Magazine Special Issue: Smalltalk (1984) by pjmlp on Thursday August 11, 2022 @05:31PM (#32431964)
The Web would have existed in another form.

Hypertext systems preceded it by decades.

Objective-C has great as it might have been, didn't brought much to the table to those used to the Windows or Mac IDEs for GUI development.

The Next vs Sun marketing video wouldn't have been the same when placed against HyperCard, Visual Basic, Delphi or C++ Builder.

NeXT was almost bankrupt when they were pivoting into OpenStep, and not only was Java born out of Objective-C influences at Sun during the OpenStep days, Java EE was born from the ashes of an Objective-C framework for distributed computing at Sun.

Re:Byte Magazine Special Issue: Smalltalk (1984) by Apocryphon on Thursday August 11, 2022 @03:47PM (#32430836)
Similarly, Doom was created on a NeXT workstation in C, but its editing tools were written in Objective-C

https://doomwiki.org/wiki/Development_of_Doom

Re:Byte Magazine Special Issue: Smalltalk (1984) by Apocryphon on Thursday August 11, 2022 @02:36PM (#32429942)
Mac software aren't inherently walled garden.
Re:Byte Magazine Special Issue: Smalltalk (1984) by macintux on Thursday August 11, 2022 @01:45PM (#32429322)
Objective-C was directly influenced by it.