Learn Raspberry Pi With Linux

Learn Raspberry Pi With Linux

Download

Introduction

Despite sounding like something Grandma would bake on Sunday afternoons or a noise that would make people glare and tut, the Raspberry Pi is in fact a computer. That much you probably knew (although, let’s be honest, the name and logo don’t really give much away) but the Raspberry Pi promises more than that. An awful lot more.

The venerable Commodore 64 was released in 1982, and with sales reaching upwards of 17 million, it is often considered the best-selling computer of all time. More importantly (at least from my perspective), it was also my first computer. For Christmas, just before my ninth birthday (when the C64 was nearly a decade old) I received the new model (C64C), which was identical to the classic machine in all but cosmetics. It arrived all set up and attached to a nice new 14-inch television (it even had a remote control!). I suspect my dad had hatched what he believed to be a most cunning plan; if he could sneak in and set everything up while I was asleep, come Christmas morning, I would be so busy playing with the computer that my parents might get an extra few minutes of sleep.

Sadly, things did not go quite according to plan. Although everything was set up, and even though the television was tuned to the computer’s signal, one simple but key thing had been forgotten: it hadn’t occurred to anyone to tell me how to actually load a game. Needless to say, a lie in was not forthcoming . . .

Games came on cassette tape. This was before CDs, and at least on the C64 had to be played in a special tape recorder called a datasette. (What do you mean what’s a CD?) Sadly, the datasette spent more time in the shop than being attached to my computer and as it was the only way to load anything into it, I had no choice but to occupy myself with the manual. This I used to great effect and taught myself how to program good old BASIC (Beginners All Purpose Symbolic Instruction Code—can you believe I actually remembered that?).

While I’m sure this story is very gripping, you could be forgiven for wondering why I am boring you with it. Those events happened more than two decades ago, so what possible relevance could they have today? Well tinkering with that machine and then the Amiga that followed it (still my favorite machine of all time) gave me a real appreciation for what a computer could do. The Amiga was severely underpowered compared with PCs of the same era, yet it consistently beat them with better graphics, better reliability, and better sound. It was able to do all of this because the hardware was exquisitely designed. Amiga enthusiasts were some of the most resourceful people I’ve ever seen. Who’d have thought you could turn a real–time clock port into a connector for high-speed storage?

All of this was only possible because people really understood how all the parts fit together. They knew how to get the best out of the machine because they really knew how the machine worked. These days, I spend my working day trying to make fast things go faster. To have any hope of success, I too need to know how everything works. Companies need people like me to push things forward, but they’re coming across a bit of a problem. People who really know computers inside out are getting much harder to find—we are a dying breed, and this is the situation that the Raspberry Pi Foundation is desperately trying to reverse.

So what happened? Well, things changed. Computers went from being the curiosity in the corner to being a basic part of everyone’s lives. They evolved to the point where they just work and everyone knows how to use them. This is similar to the family car. Everyone has a rough idea how a car works, but few people are very interested. The car takes them from place to place, and that capability is what is interesting, not how the car achieves it. Computers are generally seen in the same light. People have a rough idea about turning them on, installing software and so forth, but how they actually work at a low level isn’t really seen as relevant or interesting. This in turn means that not only are fewer people getting excited by computing itself but even fewer people think that there’s more to it than doubleclicking an icon

This problem has drifted up through schools and into universities. Teaching programming is a relatively challenging task. It requires a certain way of thinking that for many people is tough to get a handle on. Traditionally, universities would start a computer science course by teaching about logic gates, how memory works, and how to program a CPU. Only once you understood what the bare metal was doing would you try to learn C because although C is a higher language, it reflects the hardware it runs on. Understanding the hardware makes understanding C that much easier.

But with larger class sizes, more limited teaching time, and students arriving with less and less knowledge of computing fundamentals, universities have had to adapt. Rather than teaching all that low-level stuff, now they teach Java and other scripting languages. Because these languages handle all of the “fiddly bits” for you, you can effectively pretend that they don’t exist (although this can cause some issues; see “The Infinite Memory Myth”).

This is simply fantastic from a productivity point of view, but when you do want to take it to the next level (maybe you’re processing data and your script is just too slow), you have no idea where to turn. Worse, when someone tells you the technique for improving that performance, you have no idea what they’re talking about.

Of course not all universities have taken this route. I’m studying at the Hong Kong Polytechnic University, and its course on Computer Architecture is very detailed and covers a lot of ground. If you want to get the top grade, you will need to implement a CPU cache for the CPU simulator program. Needless to say, there is a lot to learn for everyone on this course. That said, we need more than this. It’s too late to capture people’s interest when they’re starting graduate studies. I taught seven-year-olds how to program BBC BASIC when I was in my last year of primary school (they even got presented certificates by the school) and they loved it. Computing lets you create a virtual world with your mind (the children liked to create little text–based adventure games) and ultimate power rested in their hands. They got creative; they added spells, new roads, secret entrances, and much more. Okay, they needed a helping hand (they were only seven) but they had the desire to create and to build cool new things
Share This