nothing makes us feel like we're not programmers like trying to read Lua code that uses object-oriented programming structures

I think what fucks with our head is that we get Lua normally - like, we've written multiple PICO-8 videogames and art projects - but then we see a program whose entire structure operates according to an alien logic and everyone around is like "yeah, that's some good code"

y'know what? fuck it. we're going to go back to the source and figure out what the fuck object-oriented programming is, once and for all archive.org/details/byte-magaz

liveblogging the August 1981 issue of Byte Magazine: Editorial: "Smalltalk: A Language for the 1980s" 

Smalltalk is an object-oriented language, as opposed to procedure-oriented languages such as BASIC, Pascal, and FORTRAN . Because of this, programming in Smalltalk is similar to the process of human interaction.

okay, we probably should have expected some eyebrow-raising analogies in here but we're raising our eyebrows

also holy crap there are a lot of ads in this thing - it makes the Internet look goddamn restrained

Where to Start

The order in which you read the Smalltalk-80 articles in this issue makes a difference. The first stopping point should be Adele Goldberg's article "Introducing the Smalltalk-80 System" on page 14, in which she provides a guided tour of the issue. I also recommend Dave Robson's "Object-Oriented Software Systems" on page 74 as a good overview of the Smalltalk-80 philosophy. The glossary on page 48 will be helpful as you begin to absorb the rather extensive (and sometimes overwhelming) vocabulary used to describe the language . I found that, once the terms become familiar, the concepts begin to make elegant sense.

okay, so, 14, then 74, then copy out glossary from 48 *takes notes*

liveblogging the August 1981 issue of Byte Magazine: "Introducing the Smalltalk-80 System" by Adele Goldberg 

Small talk is the name LRG [the Learning Research Group of the Xerox Palo Alto Research Center] assigned to the software part of Alan Kay's personal computing vision, the Dynabook. The vision is a hand-held, high-performance computer with a high-resolution display, input and output devices supporting visual and audio communication paths, and network connections to shared information resources.

having used a number of similar machines, we can understand why Kay thought that would be cool

In figure 1, we see a view of the conventional software development environment: a wizard sitting on his own computational cloud creating his notion of a Taj Mahal in which programmers can indulge in building applications for nonprogramming users. The Taj Mahal represents a complete programming environment, which includes the tools for developing programs as well as the language in which the programs are written. The users must walk whatever bridge the programmer builds. A goal in the design of the Small talk system was to create the Taj Mahal so that programmers can modify it by building application kits, which are specialized extensions and/or subsets of the system whose parts can be used by a nonprogrammer to build a customized version of the application. Applications that can be created from a kit are related in a fundamental way: the programmer may, for example, create it for building bridges, but it is the user who pieces together the parts to create a customized bridge (see figure 2).

<guy who has only seen The Boss Baby voice>getting a lot of Picotron vibes from this</guy>

liveblogging the August 1981 issue of Byte Magazine: "Introducing the Smalltalk-80 System" cont'd 

*squints at page 26*

okay, so, picking from these options, tentative reading order for ourselves:

  • 14 system
  • 17 object oriented programming
  • 48 glossary
  • 230 data structures
  • 322 control structures
  • 286 design principles
  • 90 programming environment
  • 147 more programming interface
  • 300 Smalltalk virtual machine
  • 378 Smalltalk virtual memory
  • 369 ToolBox painting component
  • 168 graphics kernel
  • 348 Smalltalk-80 for kids

this is a fucking doorstopper of a magazine, wow

also, getting genuine wiki-walk vibes from how extensive and interconnected it is

stating our goals out loud so we know when we can bail:

  1. understand what object-oriented programming is
  2. understand why anyone would want to build anything this way

liveblogging the August 1981 issue of Byte Magazine: "Object-Oriented Software Systems" by David Robson 

(checking the glossary, we're definitely on the right track - self shows up all the time in object-oriented Lua, and nil is an old friend)

(also fucking posting automatically when hit enter on subject CW line, ugh)

The words "object-oriented" mean different things to different people. Although the definition given in this article may exclude systems that should rightfully be called object-oriented, it is a useful abstraction of the idea behind many software systems.

*notes*

Many people who have no idea how a computer works find the idea of object-oriented systems quite natural. In contrast, many people who have experience with computers initially think there is something strange about object-oriented systems.

...okay, do we feel called out or seen?

I am assuming that most of you also have some experience with software systems and their creation. So instead of introducing the object-oriented point of view as if it were completely natural, I'll try to explain what makes it seem strange compared to the point of view found in other programming systems.

right, gonna go with "seen"

liveblogging the August 1981 issue of Byte Magazine: "Object-Oriented Software Systems" cont'd 

Data/Procedure-Oriented Software

The traditional view of software systems is that they are composed of a collection of data that represents some information and a set of procedures that manipulates the data.

[...]

A problem with the data/procedure point of view is that data and procedures are treated as if they were independent when, in fact, they are not. All procedures make assumptions about the form of the data they manipulate. The procedure to move a window should be presented with data representing a window to be moved and its new location. If the procedure were presented with data representing the text contents of a window, the system would behave strangely.

[...]

These two problems have been addressed in the context of the data/procedure point of view by adding several features to programming systems. Data typing has been added to languages to let the programmer know that the appropriate choice of data has been made for a particular procedure. [...]

Object-Oriented Software

Instead of two types of entity that represent information and its manipulation independently, an object-oriented system has a single type of entity, the object, that represents both. Like pieces of data, objects can be manipulated. However, like procedures, objects describe manipulation as well. Information is manipulated by sending a message to the object representing the information.

Okay, so, philosophically, I think I get what the argument is. Using a shoot-em-up as an example: instead of having data for the player, player bullets, enemy bullets, enemies, and powerups, and then separately procedures for each interaction, you make all of those objects and have some kind of bump method that governs what they do on collision.

We're not sold on it yet but we at least see why the concept has a mathematical appeal.

Follow

re: liveblogging the August 1981 issue of Byte Magazine: Object-Oriented Software Systems" cont'd 

@Packbat maybe the magazine will get to this eventually but the way i learned about what smalltalk thinks message passing is, is to conceive of your classes as purrofessions: in the same way that in general, a customer asks a professional to do something and then (ideally) does not have to know anything about what they are actually doing to be able to benefit from the result of their work, your should not bother with understanding the internals of how external objects work

idk if this shorter way of putting it means anything you ny’all but in purractice it means you write your own code to interface with itself according to an API

re: liveblogging the August 1981 issue of Byte Magazine: Object-Oriented Software Systems" cont'd 

@aescling that's the metaphor they opened with - it didn't land for us, but the more technical explanation did

Sign in to participate in the conversation
📟🐱 GlitchCat

A small, community‐oriented Mastodon‐compatible Fediverse (GlitchSoc) instance managed as a joint venture between the cat and KIBI families.