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
Home Programming Learn Raspberry Pi With Linux