Why the Raspberry Pi is Bad for Learning Linux
-
One of the latest trends over the last year around Linux education is recommending that the first thing that people do when looking to learn Linux is to pick up a Raspberry Pi. The reasons given for this seem generally odd considering that essentially everyone with a computer already owns the necessary hardware to run Linux without spending any money and that getting an enterprise class cloud instance of Linux is easily found for five dollars per month or with some effort, for less, there is no need to spend very much money to have some very serious educational experiences. Even fifty dollars spent on a Raspberry Pi is likely too much.
The Raspberry Pi, and small single board lower power RISC machines like it, are a wonderful trend and bode well for the future of computing. They have much to offer us and have a lot of value. However, they are not well suited to general purpose operating system or development education.
If our goal is to learn about alternative processor architectures, think outside of the PC design box, learn about ARM, learn about RISC or specifically learn about Linux (or other operating systems) outside of the PC / AMD64 world then the Raspberry Pi can be very beneficial. But these are all things we normally look to learn after we already know Linux (or other OS) well and are specifically looking to learn about architectures, not operating systems. Also of use in these cases are Power and Sparc systems.
What the Raspberry Pi is not good for is anything in the general administration or programming realms. This is for several reasons.
It's a new platform. By removing all of the things that we already know about in the PC / AMD64 world we force the learner to be distracted by differences between AMD64 and ARM RISC systems rather than learning about the OS or programming language that they are setting out to learn. This creates a huge barrier to learning the intended subject. Not only is a lot of potential time wasted, but it is also difficult for someone learning Linux for the first time to simultaneously be learning a new platform architecture - it is extremely hard for someone in that position to clearly differentiate what they are learning about Linux versus what they are learning about ARM and RISC. It is too many major variables all at once. This is a fundamental pedagogic failure. It's simply not how people learn. Learning Linux should be done on a familiar platform. Learning ARM should be done with a familiar OS. And so forth.
It does not mimic business use. There are currently no enterprise ARM servers and while they are coming down the pike very rapidly, they are not on the market yet and when they arrive they will be different than the SBCs like the Raspberry Pi and even then, they will be treated differently and will be used almost exclusively by very experienced enterprise admins for quite some time until processes on them are well understood.
In the enterprise or business space, Linux is essentially always virtualized (and should be even more than it is), is primarily CentOS, Suse and Ubuntu (only some of these are available on the RP devices) and is almost exclusively AMD64 based, followed by Power and Sparc and, someday, ARM. So learning what is available, how it behaves, quirks of the system and so forth would be by far most beneficial to do on systems that mimic enterprise AMD64 deployments. Not only is this better for learning because it is closer to real world use, it is almost always cheaper, easier and faster as most people can do this without any additional investment.
It carries no benefits for normal programming. If you are trying to learn to program most business languages, such as Python, Ruby, JavaScript, Java, Scala, Haskell, Erlang, Go, C#, F#, Perl, BASH and so forth there is zero difference between an AMD64 Linux install and an ARM one, these are all architecture agnostic languages. So dealing with the quirks, cost, overhead and confusion of the Raspberry Pi are all caveats without offsetting benefits. If you want to learn an architecture dependent language like C or Assembly then you need to learn on the specific platform that you plan to use and unless that platform is the RP, you are not going to learn what you had hoped to learn.
Bottom line.... the Raspberry Pi is a cool, fun device with lots of use cases. But learning anything outside of the Raspberry Pi, SBC, ARM RISC topcis themselves are not in the scope of the RP.
-
While my main drive wasn't to get the rPi to learn some basic programming, I am hoping that it will help 'encourage' it.
I am planning to load Linux on my laptop as the primary, and take it from there. But I also am pushing myself to use the CLI more in the rPi than before..