What are some important differences between the popular versions of OOP (e.g. Java, Python) vs. the purist's versions of OOP (e.g. Smalltalk)?

This page summarizes the projects mentioned and recommended in the original post on /r/ProgrammingLanguages

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • squeak.org

    Squeak/Smalltalk Website

    AFAIK the major SmallTalk distributions are https://squeak.org/ and https://pharo.org/. I've heard that Pharo is more complex and "practical", while Squeak is more educational and beginner-friendly. But both stick to their roots with "everything is an object or method", extreme reflection, and integrated runtime/IDE.

  • pharo

    Pharo is a dynamic reflective pure object-oriented language supporting live programming inspired by Smalltalk.

    AFAIK the major SmallTalk distributions are https://squeak.org/ and https://pharo.org/. I've heard that Pharo is more complex and "practical", while Squeak is more educational and beginner-friendly. But both stick to their roots with "everything is an object or method", extreme reflection, and integrated runtime/IDE.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • Smalltalk72

    Smalltalk-72 interpreter sources (Nova assembly) and ALLDEFS.

    I recommend reading through the source files (called ALLDEFS) for various Smalltalk versions, just to get an understanding of how the system is pulling itself up by its bootstraps. Smalltalk-72 is supposedly most in line with Alan Kay's ideals, and its bootstrap can be found here. I also recommend setting up a VM (such as Contralto) to try out some older, simpler versions. Lastly, the Little Smalltalk is a complete system in a few thousand lines of C, making it very understandable. There are various versions, and I don't have a link on hand, but I believe LST4 is the most understandable and easy to compile on Linux.

  • xvm

    Ecstasy and XVM

    Ecstasy uses message passing automatically behind the scenes for asynchronous calls, but the message passing isn't visible at the language level (i.e. there is no "message object" or something like that visible). Basically, all Ecstasy code is executing on a fiber inside a service, and services are all running concurrently, so from any service realm to any service realm, the communication is by message.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts