About Learning To Code

”I’m learning to fly, but I ain’t got wings,” late Tom Petty once sang. Getting a computer or a smart phone/tablet feels just like that if one wishes learning to code. I switch the device on, now what? How do I get to started, how do I program on this?

Of course one could wonder why learning to code. I’m not going to answer that here. Also discussions why ‘everyone should learn to code’ are beyond the scope of this site. I assume that if you like reading about my explorations, you also like coding in. Whether that means if you actually will start coding or not, both are fine for me. If you would like to get started but you don’t know how, do drop me a line. I’ll gladly help you out where I can.

Once upon a time

In the early days, at least when I got my feet wet, starting programming was very simple. Home computers started up into a BASIC interpreter: merely a blank screen with a cursor. The commands were BASIC statements. Starting statements with line numbers gave us a program: a ‘listing’ that we could ‘run.’ The limited capabilities of both BASIC and the hardware itself also limited the possibilities to write more serious software. We didn’t fly high, we didn’t fly far, but we were airborne! (And besides this and collecting and playing bootleg games there wasn’t really much we could do with a computer in the first place.)

For those who are curious: I started out with a Timex 1000 (a Sinclair ZX81 clone), then Sinclair ZX Spectrum, MSX and MSX2 computers.

Then we got PCs that only understood MS-DOS commands. If we wanted to do a little more than an incredibly limited batch scripts, we had to load the included GWBASIC interpreter and we could do the kind of magic we had before. We could also buy compilers more advanced languages like Turbo Pascal and learn a bit more structured programming. Also other languages like C and C++ became available this way. The start was a bit harder, it was more expensive, but we could fly higher and further.

We did get a major distraction though: so much software was already available (and bootleg copies collected by hobbyists) that I was speechless when my math teacher wondered why he should learn to program in the first place. I guess here we saw a shift of mindset, from production to consumption of software.

Where are we now

These days, the computer landscape is a bit different: computers run graphical user interfaces on Mac, Windows and Linux. Software for graphical environments have a completely different level of complexity. Software development is largely in the hands of professionals, either commercially or as a hobby (open source). For the non-professional hobbyist the level of entry has increased dramatically. At least that is what it looks like.

It also seems like we are behind a peak of ownership of traditional computers. A new generation grows up with consumption on smartphones and tablets and feels that ‘real computers’ are complex. Also for consumers of older generations, one can wonder when tablets will take over the typical consumption roles.

It seems like the only remaining use cases for traditional computers are largely on the production side.Even there, capable apps on smartphones and tablets are on their way. For me, the iPad Pro is now my go-to device instead of my MacBook or Mac Mini, except for programming tasks. I’m looking forward to the moment I can use my iPad for this as well.

A traditional computer

I realize that I cannot assume that my readers have a traditional computer anymore. For those, there is Raspberry Pi, a very small and cheap computer that runs Linux. Its power is every limited, less than your smartphone probably, but it is more than enough for learning.

Otherwise, there is Linux on PC’s and Windows and mac OS on Mac. Out of the box, Windows has PowerShell. Mac has AppleScript and now also JavaScript. Linux has everything (well, depending on the distribution you are using).

Then one can download extra stuff for free. For Windows there is Visual Studio (a limited version compared to more expensive professional versions). Mac has XCode. And for all platforms we can download free compilers, interpreters and libraries for Python, Ruby, PHP, Java (via Eclipse), JavaScript, you name it.

Smartphones and tablets

For smartphones and tablets things look a bit differently. One wouldn’t really develop on such a device. On iOS apps are not allowed to execute code entered by users, unless it is for educational purposes only. I think that is primarily a safety measure to ensure reliable functioning of the smart phone.

However for educational purposes Apple released Swift Playground for iPad. This app also allows third parties to create plugins. This opens up possibilities for e.g. controlling toy robots directly from the iPad. I guess I’ll play with that later as well.

Traditional computers with specific tools make programming apps for smartphones and tablets possible (and smart watches as well). For Android, Google introduced some free tools one can also use Eclipse. These tools are available for Windows, mac OS and Linux. For iOS, XCode is the obvious toolkit, only on mac OS.

Find all posts about coding here. And leave your email address to stay updated below.