I began my computer programming journey in high school. This was way back in the early 1970s with a used IBM mainframe that our school had acquired. We did all our programming using FORTRAN on punch cards.
We didn’t have direct access to the mainframe. We wrote our programs on coding forms, which were later used to help punch the cards. We submitted our stacks of punch cards to an operator queue, and the operator would feed the cards to the computer and return the printouts to us the following day. The smallest mistake in our program would waste an entire day! This was a very arduous way to write software.
In the early 1980s, I purchased an IBM PC XT. It set me back $5,000 (that’s 5,000 1983 Canadian dollars which would be like $11,000 today!!!).
I used Turbo Pascal and a bit of BASIC and Intel assembly language. I learned a great deal from having direct access to the computer. Around the same time, I started my first programming job working on a DEC PDP-11 minicomputer (running RSX-11 operating system) using FORTRAN and DCL (DIGITAL Command Language). Again, I benefitted from having direct access to the machine.
My experience taught me that there is tremendous value in learning how to program with a computer kit. Others of my generation cut their teeth on the Tandy Radio Shack TRS-80, or Commodore 64, or Apple IIc, or Sinclair ZX Spectrum.
Today, we use nicely packaged computers that are easy to use and quite boring, like tablets and laptops and desktops running Android or iOS or macOS or Windows. We’re largely isolated from the system internals and the computer components. We don’t get to tinker with the hardware.
Thankfully, there is a new trend in computer hardware: small, low-power, energy-efficient computing devices that are suitable for embedded applications and the Internet of Things (IoT). The progenitor of this class of devices is the Raspberry Pi:
With the Raspberry Pi, you get to tinker with Linux, a programmer’s operating system. It comes complete with a C programming environment, where C is a programmer’s programming language. None of this namby-pamby Android/iOS/macOS/Windows crap. (Okay, to be fair, macOS comes bundled with a C programming environment, as well.)
Python and Ruby borrow a lot from Smalltalk, especially with respect to object-oriented programming (OOP). Nevertheless, both languages carry a lot of baggage that make their use less than ideal for beginners. Even after you’ve learned these languages well, they pose obstacles that can sometimes be unpleasant.
Smalltalk, on the other hand, is as pure as the driven snow. It poses very little, if any, cognitive friction while programming. The language is simplicity incarnate. Everything, and I mean everything, is based on the singular concept of message passing. Programming languages don’t get any simpler than this. (Alright, I concede that Forth is simpler.)
Despite its simplicity and minimalism, Smalltalk is incredibly powerful. It’s used practically everywhere. And now, it’s available for the Raspberry Pi. (For more information about Smalltalk, read What makes a programming language “cool?”)
With this in mind, I’ve written a Smalltalk tutorial tailored specifically to the IoT application domain and Raspberry Pi device. It is also the very best way to learn OOP, the most widely used programming paradigm in the IT industry.
Everyone who wants to learn how to program should follow this tutorial.
Click on the following image to go to the tutorial: