What happened to the ‘fun’ programming languages?

jolon
Geek Culture
Published in
6 min readJun 4, 2021

--

I was first exposed to computer programming some time in the late 1980s early 1990s. Initially it was probably 10 PRINT “Hello”; 20 GOTO 10 on a Commodore 64. I actually didn’t have a computer until late 1993. So I learned to program mostly from books borrowed from the library. I progressed to Pascal which I enjoyed and also learnt about microprocessors. I would write Pascal and assembly language programs on paper with no idea if they would compile or run.

In that era computers were still rudimentary. For example, my first computer was a Macintosh Classic II which had a black and white 9" display. And even my second and third computers which were colour could barely play a first person shooter game at more than a few frames per second.

Fun programming languages

Programming in those days was immensely fun. BASIC was the equivalent of Lego. Easy to plug small pieces of code together to create interesting things, but not the best for engineering large code bases.

Beyond BASIC there were other groundbreaking approaches to programming. For example, Prograph was a visual programming language for representing data flows. The approach is similar to functional programming. It also happened to be object-oriented.

Prograph visual programming language from the early 1990s.

Hypercard was more well-known and was immensely popular. The almost natural language-like scripting language called HyperTalk, combined with the easy to use drag and drop, card-based interface, made it incredibly approachable to the average person. It had a way of drawing you in to build things. Again like Lego it was fun even if not the most practical way of building a complex code base.

HyperTalk’s revolutionary natural language syntax

In 1993 Apple released the Newton MessagePad, a kind of precursor to the iPhone. The Newton had an incredibly fun user interface and the programming language behind it was NewtonScript which is based on the Self programming language. Like HyperTalk, NewtonScript was also easy to use and fun, and in this case object-oriented. What makes NewtonScript unique was that it was the primary way of writing code for the Newton. Keep in mind these devices were only running at around 20 MHz.

The Newton was initially intended to use a new programming language Apple was developing called Dylan. Dylan was a kind of object-oriented Lisp, but with an algebraic syntax. However, Dylan wasn’t ready for Newton’s release so NewtonScript was used instead, however the intention was for Dylan to eventually become the standard language across all Apple products (like Swift today).

Apple was also working on a component-based library called OpenDoc. In OpenDoc there were no applications. Everything was a component. The user would start with a blank document and add components to the document. OpenDoc would open the correct associated editor as the user clicked on different components.

A technology Apple did release was AppleScript. AppleScript was similar in syntax to HyperTalk but designed to work with any application. Applications would expose ‘dictionaries’ of vocabulary which users could use to write scripts to interact with the applications. This worked using Apple Events. A short-lived development environment called FaceSpan allowed users to visually design applications and use AppleScript to respond to events. A kind of HyperCard for general applications not just stacks of cards.

Steve Jobs kills the fun

When Steve Jobs returned to Apple in late 1996, he killed off the entire Newton project, OpenDoc, and Dylan. At the time he said that the company would focus on Java. Anyone familiar with Apple’s technologies saw Java as a great unimaginative step backwards. There is a famous YouTube video with a stand off between a developer and Steve Jobs over the issue.

Steve Jobs being challenged about his decision to adopt Java and cancel Apple’s revolutionary projects.

The video is insightful as Steve Jobs’ response is essentially: let’s start with the customer experience first, not let’s create a great technology and see how to market it. It’s worth mentioning that his motivation was making a large amount of money for Apple (which is reasonable).

However, I think this creates a problem for people that love Lego.

If we start with the customer experience, for example, the slick iPhone user interface, and that becomes the top priority, at all costs, other factors such as ease of development, fun of development, allowing the UI to also be enjoyable for more technically-minded people gets thrown out the window.

And here’s why that’s a problem: it’s technically-minded people who build the future! You want to create environments that are fun and enjoyable for those types of people.

If motivational points are: the customer (which may be nothing like you); a customer experience (which you may not enjoy); and a development process (which is unenjoyable); how is that likely to create an enjoyable development experience?

This article is for people that love Lego, not for people that want to create the world’s largest company. Not everyone loves Lego. But the people that build the software for the world’s largest companies do! And I think that is an important connection that shouldn’t be missed.

Sure Steve Jobs was right that they are going to make more money focussing on all customers. But he wasn’t necessarily right in dismissing the love of developers.

Developers vs customers

HyperCard is incredibly user friendly. It is revolutionary really and perhaps there hasn’t been anything like it since. But as easy to use as it is, how many non-technical people really get excited about being able to drag a button or type a script in a user friendly fashion? The reality is no one. It is in fact the Lego-types who get excited about that.

It’s a strange irony that the types who can probably handle a complex C program are also the types who get excited about HyperCard. I don’t think the developers who created HyperCard realised they weren’t really creating something for the average person, they were really creating it for people like themselves.

But in a sense it was a beautiful era in that developers didn’t realise this. They were creating what they thought would be an amazing future. But when Steve Jobs returned to Apple that all came to a halt. What developers liked no longer mattered. All that mattered was the customer experience and developers had to contort to that.

Another Apple example is Objective-C. I have found that developers have a certain affection towards Objective-C. There’s something special about it’s approach. The advantages of Objective-C culminated in Interface Builder (now a part of Xcode). A feature that Objective-C had was bindings which allowed code and data to be easily combined in the user interface. This approach has become very common with web frameworks. Initially Apple was expanding Objective-C’s fairly elaborate binding capabilities, but over the course of time actually began to wind them back. In fact iOS has significantly less binding features than macOS.

This is another example of the joy of programming just not being a priority at Apple. Ultimately Apple replaced Objective-C with Swift. And even though Swift is excellent, Swift sometimes feels like the neurotic good performer, but sometimes Objective-C is just more fun to be around.

Programmers just want to have fun

I see the motivation for a lot of development tools these days is largely engineering driven, ultimately coming down to the dollar. And this isn’t a bad thing. Having things run reliably and not crash and not use excessive memory is a good thing.

But Lego is also enjoyable and it’s not the most efficient or most reliable way of constructing something. There are times we just want to enjoy the pursuit. Like enjoying art or music. Enjoyment eclipses perfection. A painting can still be a far greater experience even if a digital photo is more accurate.

I’m not saying we should throw out engineering perfection, but perhaps we should create a little room for some Lego in the programming repertoire.

Addendum for PC users

I realised after writing this it is almost 100% Apple-focused, which largely parallels my interests. However, I think it equally applies to the PC as well. DOS, batch files, QBasic, Visual Basic. All Lego-like ways to inefficiently do really fun things.

--

--