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
  • Mergify - Updating dependencies is time-consuming.
  • InfluxDB - Collect and Analyze Billions of Data Points in Real Time
  • Sonar - Write Clean Java Code. Always.
  • 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.

  • Mergify

    Updating dependencies is time-consuming.. Solutions like Dependabot or Renovate update but don't merge dependencies. You need to do it manually while it could be fully automated! Add a Merge Queue to your workflow and stop caring about PR management & merging. Try Mergify for free.

  • 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