Hacker News new | past | comments | ask | show | jobs | submit login
Why Raspberry Pi Is Unsuitable for Education (whitequark.org)
81 points by Kavu on Sept 25, 2012 | hide | past | favorite | 65 comments



Yes, any device you can't resynthesize from VHDL is completely unfit to introduce middle school children to programming. I mean, who ever managed to understand even the tiniest bit of python without mentally reducing it to the electrical patterns in the circuits of the CPU?


I hope you plan to open source that joke otherwise nobody will get it.


For what its worth, I along with some others have reversed engineered the Scalar, Vector and QPU instruction set of the VideoCore processor in the Raspberry Pi.

Some documentation is at https://github.com/hermanhermitage/videocoreiv

It hasn't been updated in a while as I'm operating under a self imposed embargo - the reason for which will become obvious soon.

Always looking for more input.

(EDIT: There is also a plan to release a beginners guide to reverse engineering).


That bit of information is worthy of a fresh article in itself. Will garner more people who can assist on carrying it on than it might hiding as a comment on a article that clearly has not heard about this great work.


Sure the original idea was that along with a recruitment drive for tools such as LLVM and so forth.

But I'm tied up launching a startup right now...

Definitely want to build a community / set of projects around it.

(EDIT: Let's also be clear there is a game of chess in play - hence the slow disclosure here.

My interpretation from reading various articles is Eben is fairly libertarian, I'd expect him to be pushing to open up everything possible - but Broadcom will be providing the usual big company resistance. So if the pieces are played correctly we will have everything open to the extent it doesn't impact the commercial objectives of Broadcom. In this case I suspect we will at the end of the games-play have open source where it needs to be, and at least have a hook for letting people write custom VideoCore Scalar/Vector and QPU code kernels with suitable documentation. This would be a lovely compromise. I'm sure Eben himself would be all for open sourcing his shader compilation VideoCore stuff (see the topic of his PhD thesis) - as everyone enjoys seeing their work get some recognition), but I dont think Broadcom would allow that :). )


I can almost relate. Consider comparing Raspberry Pi to say Commodore 64 or ZX Spectrum. Anyone familiar with programming 8-bit home computers of the 80's knows how simple they were by their hardware and how easy it was to grasp them. What was(and still is) great about them, is that any kid(regardless of age, as long as they can read) was and still is able to learn how the computers work. How many kids these days get to actually count CPU cycles? How many even really what it means without taking an university course in computer architecture or microarchitecture design? Yet, this is the exact stuff the kids are interested in! They want to learn how it works. And no, explaining that CPU executes some "instructions"(what are they?) which operates on "data"(what is it?) in "registers"(what are they?) and produces results which are "pushed"(what does it mean?) to the "stack"(what is it?). Of course, one could argue that none of this matters nor it should matter. We should go away from it, and aim higher. Teach Python and functional programming and hope they become proficient. I think this is a very wrong approach to teach kids about computers and how they work. I think that demystifying the computer starts best from explaining what and how it does what it does. Programming comes later in regards to demystifying the computer, which should not be "just that box which we program and somehow turns the code to windows and buttons for us to click".

Of course, I am ignoring the point that actually getting to do any kind of programming or tinkering on Raspberry Pi is orders of magnitude harder than on say Commodore 64 or ZX Spectrum. Or even your average Windows desktop. These days there is just simply no suitable platform to actually play around with, and only universities seem to have some experimental simple hardware setups with simple operating systems for educational purposes. You really have to take a course or get an ancient home computer to see how stuff works. I think it is sad.


When I was a kid I got my indroduction to programming on TI graphing calculators. They are unfortunately expensive (though pretty much every American school has boxes of them sitting around already) and lack the pinouts that Arduinos have (there is an IO port which isn't great, and USB which... is ok.) but they are otherwise fantastic for this purpose.

The TI-BASIC on them is dreadful slow so after you cut your teeth on it and learn the basics of just what programming is, you are encouraged to switch to assembly. In the case of most of those calculators that will be Zilog Z80, of early PC fame. On the higher end calculators you get Motorola M68k's, which you can also program in C fairly easily.

Plusses over Arduino are the keyboard and screen. Downsides include the lack of shields. Anyone who really gets into it is probably going to want to get an arduino anyway, unless they really lack an EE muscle.


I also learned on a TI-83 (handed down from my sister) and a TI-92 (from the boxes at school).

However, I much preferred my HP-50g, USER RPL was an absolute dream to program in, the USB interface was fantastic, an emulator was readily available, and you could even write applications in C and cross-compile them for the calculator.

That and RPN with a multi-line display and an [virtually] unlimited stack is the "one true way."


> Yet, this is the exact stuff the kids are interested in! They want to learn how it works.

Speak for yourself! When I was a kid I was more interested in computers than anyone I knew, and I was the first kid I knew to own my own computer, and yet most of the educationsal stuff I could find on computers was the sort of stuff that explained all about registers and CPU cycles and the like. I had ABSOLUTELY NO INTEREST in that stuff, other than a quick overview of how a computer is even possible. In fact, I found all this low-level stuff being foisted on me as incredibly tedious. I also had a motorcycle when I was a teenager, and I found all the nonsense about registers and CPU cycles to be like trying to explain to me how a carburetor works when what I had asked was how to do wheelies.

I was much more interested in high level languages because they let me see how I might potentially accomplish amazing feats. I found Basic to be tolerable, but the first thing that I found to be truly inspiring was APL, due to its mathematical elegance and its providing a vision of amplified productivity. And you can't get farther away from the hardware than APL!

On the other hand, later in life when I went to college, I did find it very interesting and inspiring to learn how to build (and to actually build!) a micro-controller out of nand gates and an EEPROM. Registers, CPU cycles, and the like, are the monkey in the middle. Too low level to be fun, and too high level to let you feel like you really understand things at a fundamental physical level.


>These days there is just simply no suitable platform to actually play around with

Have you seen the Maximite computer?

(http://geoffg.net/maximite.html)

Searching HN shows several references (a couple from me) about this interesting device.

It should be really easy to emulate a Z80 / 8080 era CPU with nice graphical outputs for address lines and everything else. And being emulated means that single-stepping this device is easy. Toggle switches for input are optional.


>These days there is just simply no suitable platform to actually play around with

http://www.redferret.net/?p=33596


That is very different from what old 8-bit home computers are like. You have complete control over the system, you can write self-modifying code, you can overwrite parts which are used by the OS to manage graphics modes and so on. There are no restrictions, it's just a bunch of ROM and RAM and no limitations.

All I can do on a Raspberry Pi I can do by installing a Linux distribution on my laptop. It's exactly the same thing, and infact it's far easier by using available x86 hardware.

The whole essence is to simplify things so much that you can really go down to the real metal. direct framebuffer access, direct memory address dereferences, instant crashes upon doing something stupid.

Say you buy an used C64, plug it in your TV and turn it on. What's the stuff you are presented to? 5 lines of greeting text and a BASIC prompt! You immediately get to write code the exact moment you turn the thing on! How cool is that!? No installing software, no getting keyboard or mouse, nothing. Just connect the thing to the TV and the power cord to the wall and you're good to go. Of course the machine comes with user manual explaining the various CPU features and BASIC language and so on, very simple. Nothing equivalent to this is offered these days(although the demand for such is lower too, understandably).


If you want to teach/learn low level, I think an Arduino is a better tool than a Raspberry Pi.


The part about the ARM core not being open source is a joke. Would it be better to teach children and students about esoteric open source architectures with no applications in the real world?

The real problem of the Pi, and not just as far as education use is concerned, is the crap Broadcom chip. After working with Broadcom, I would never-ever-ever consider them if there is an alternative. They strangle open source (which is shooting yourself in the foot, really, being that the community produces the best drivers out there), don't release documentation and won't even sell you the actual part unless you were buying millions.

The chip itself is outdated, bug ridden (Synopsys DWC USB, anyone? I'm making good money debugging the drivers of this DWC USB for my customers - one with a proprietary ASIC and one with an obscure Chinese craplet chip - so I know first hand how bad it can get, especially with the earlier versions) and has very lacking, if any, documentation available.

TI are the polar opposite of Broadcom in these regards: they nurture the open source community and encourage it to use their processors (Pandaboard ES contains a very high end OMAP4460, same processor as Galaxy Nexus and the weird sphere Nexus media thingy), providing near complete documentation and lots of technical knowledge.

The Pi design team essentially chose a bad foundation just to grab some headlines with their lowball pricing. Now people are slowly realizing how bad of a platform it really is.

A side effect of the Broadcom attitude is that even with a full manufacturing file for the Pi, no one can reproduce the design when the CPU can't be sourced. So much for openness.

I'm waiting for one of the mainstream manufacturers (TI, Freescale, Samsung to a lesser extent) to pick this up and sponsor a super low cost, basic board. The benefit to their commercial customers from the creation of a broad community and code base would be immediate and immense.


Right, but after designing the first ARM (on a BBC Micro), and ARM was spun out of Acorn into a separate company, Sophie Wilson went to work for Broadcom on their Firepath DSP chip. So all these guys are connected.


>esoteric open source architectures with no applications in the real world

Why does an open source architecture have to be esoteric? It could just as easily be conventional. We don't know for sure that ARM will be as popular in the future. Presumably aim isn't to teach individual intricacies but rather the overall concepts.


First, what's being taught should be applicable to the real world. That means that if you are to produce useful and productive graduates, getting them familiar with ARM is much better than anything else out there.

Second, even if you had a similarly performing architecture, unless some major manufacturer with deep pockets picks it up and fabricates a chip around it, there's not much you could do with it outside of FPGA experimentation (for something that can mimic the power and peripherals of the Pi, with all its shortcomings, you're like to need a multi $k Virtex FPGA).

Third, ARM is friendly enough to its partners and the ecosystem that it won't be going away for a long, long time. It's a reasonably open company as far as documentation goes, and do their share of community contribution. ARM was smart enough to grant architectural licenses to the only companies rich and smart enough to make their own architectures (Marvell, Qualcomm, Apple, Samsung and a few others), so they can spawn their own variants while still retaining standard ARM compatibility.

I don't see any company seriously threatening ARM's dominance for at least a decade. If you want to do embedded systems or mobile (and soon servers) low-level, you need to know ARM.


Urgh, this is not "Unsuitable for Education", it's unsuitable for one pretty narrow (albeit central to the system) educative purpose around System-on-Chip's and GPU's.

Kids can still have a fully working linux system hooked up to their tv for $35, which regardless of the OSS status of the hardware is still a win for education in my opinion.


Totaly agree and a computer is after all two parts the hardware and the software and the ability to change both and add on both with such a cheap setup is utterly perfect for break and play style education and that is how alot of people learn.

Another way to look at it is the the Author thinks everybody should learn to drive in a Porche. We all know 99%+ of us don't and start of with a cheap almost end user car and that is what the Pi is in many ways, cheap, effective at what it does and for those who want to go further then they will at least have the foundations to move on with solid grounding.

Sure some parts operate on closed source low-level hardware but who's to say that might not change later on down the line and to lambast it on that one area is missing out on so much.


It's a win, just not as big a win as it might be. Still, a win is a win.


>> It's a win, just not as big a win as it might be.

You might be right, but context matters.

Me pulling my "cranky old man" card-- As Louis CK says, "Everything's amazing, nobody's happy."

My first computer was a 4K Tandy Color Computer, which cost something like $400 in 1982 (a significant expense at the time for my parents), and I learned to program in MS Basic.

To me, the Raspberry Pi is a huge win. It can do a million more things than I could do as a kid, and it's not relegated to loading code via cassette tapes or typing (we had to copy code verbatim from magazines back then).

That the device is so inexpensive makes the barrier to get into programming lower than it has ever been... Amazing.


I'm not arguing with any of that. If I try to draw a comparison between what got me excited about 8-bits and what's available on the RPi, I still see a disconnect. There was a visceral connection between POKEing a memory location and a pixel going black on my Spectrum, and that's just not there with the RPi. There's a big black lump of Broadcom-stuff between me and the screen.


I totally agree.

Actually the point of the Raspberry Pi IS the price because most of the OSS you can install and use in your Raspberry Pi can be installed and used in any regular PC that students may have at home, but can we assume all the students have a computer at home?

My partner works in education and I can tell you that lots of students don't have access to a computer at home. Well, Raspberry Pi price changes everything!


All this is pretty much the same as the BBC Micro, ZX Spectrum, Vic-20, C-64, Archimedes and other successful teaching platforms. Sure, third parties disassembled the ROMs, and there were some schematics, but by and large these systems were closed and incompatible with anything else.

Edit: Which is not to say, I don't think more openness would be a wonderful thing. But it's not necessary for it to be a success in schools.


This is an excellent observation. Might I also suggest that having some things closed or out of reach is also a fine way of encouraging people to dig in.

Some of the best young minds will search behind doors they are told not to look.

Its about getting the height of the hurdle just right!


This actually happened on the ZX81: some very smart programmer reverse-engineered the ROM, ULA and display circuitry and worked out that you could implement high resolution graphics in software. Here is an interview with him:

http://jdanddiet.blogspot.co.uk/2012/02/crl-feature-extras-i...


I dunno, they came enough schematics that you could interface anything you wanted to the user port and read/write to it with what we now call memory mapped I/O. RS232 was a universal standard, the most you would have to do is physically make up a cable. Both the Beeb and the C64 came with a manual that explained to you how to patch the OS (via vectors). On the C64 you could even switch the entire OS out and get its entire 64k of address space, just you and the hardware.


The original article wants the equivalent of an open source Z80/65xx/68k, fuse settings for all the ULAs, schematics for all custom-designed chips, and open source ROM disassemblies.

1980s home computers didn't come with these, even though they had (for the time) very powerful custom graphics and sound chips (eg. Amiga [1]). Of course, some of it was reverse engineered, and some of it has been released long after the fact.

[1] https://en.wikipedia.org/wiki/Original_Chip_Set


1980s home computers maybe did not, but one cannot not claim Apple was locking you in in 1978. I think ftp://ftp.apple.asimov.net/pub/apple_II/documentation/misc/a2_reference_manual_alt.pdf shipped with every Apple ][. It seems to contain enough information to clone the machine (electronics diagrams, timing diagrams, ROM disassemmbly, etc.)


Using this logic nearly all school computers are "unsuitable for education"

It's silly to describe your one-off use case and then extrapolate that to such a degree, that this can only be called sensationalism.


Yes, all school computers are unsuitable for education of embedded programming. Yes, the title didn't say so, but whitequark didn't submit it here with that title. If you read the post and the title in the context of whitequark's blog it should be pretty clear that he's talking about embedded programming.


Even embedded programming doesn't require the level of openness that he's whining about.


Linux programming on embedded systems is much more closely related to PC Linux programming than it is to "bare metal" embedded programming. If someone wants to pick up embedded programming, they should start with an Arduino.


It cost thirty bucks. My students (who wrote their first computer program last semester) had it up and running within the first hour after it was delivered. Two weeks later and they have a wifi controlled skid-steer robot prototype running using the Rasp. Pi, Arduino, some proprietary motor controllers, a PS3 controller and PyGame. Now they are refining their code/design, improving it. They spend so much time working/playing with it, that they are slacking off in their Communication Theory coursework. What a tragedy.


Sounds like a great success story. I'd hope it's a great cheap device for getting kids into programming (a bit) with other resources they have lying around like a tv. I'd think those kids can probably teach us something by now :)


All this without VHDL source code? What the heck is the world coming to!?


> Also, if you want the Foundation to send more documentation to you, they require you to provide a business model.

No they don't. That section talks about broadcom, who are the ones who you will need to give business info to to buy the chips. The foundation don't manufacture, sell or provide documentation for the chips.


What's worse is that "provide a business model" is a link to the FAQ[1] which says it's broadcom:

But I demand the documentation for the chip. Give it to me!

To get the full SoC documentation you would need to sign an NDA with Broadcom, who make the chip and sell it to us. But you would also need to provide a business model and estimate of how many chips you are going to sell.

[1] http://www.raspberrypi.org/faqs


Please note that this guy's blog has a subtitle of Has someone just said “lowlevel”?. whitequark is discussing the Raspberry Pi from an embedded point-of-view. If you only intend to use the Raspberry Pi to teach Linux and above (or anything that's built upon an OS), then this article is not for you. This is for people who intends to use the Pi to teach lowlevel, embedded programming; teaching how a computer works on all levels.


He said "education" with any further qualification.

I'm not even sure that the pi was developed with the intention to teach "low level" stuff.


> He said "education" with any further qualification.

Sure. And the Hacker News crowd loves people who point out statements that are not strictly true. Hey, who cares what the author actually meant, this line here is wrong!


I would agree, except that this is the title of his post. You have to read a bit into the post to realize that what he's talking about has very little to do with what his title states. A very generic term was used when the intention was for one very small niche of "education". After reading the article the title suggests that because it might be difficult to write a graphics driver for a somewhat undocumented chipset then the whole thing is unsuitable for teaching a kid something like, let's use Python since someone else mentioned it.

If it's not wrong then it's misleading.


There are a lot of old guys who are mad because kids don't have to punch hex into an 8085 with a keypad anymore.


I don't think many kids are going to be using their raspberry pi to redesign the CPU or rewrite the firmware drivers.

The idea should be to make programming simple and accessible, perhaps being able to create some games or connect it to an arduino and make some fun toys.

I actually think that shipping it without a box is great idea, it demystifies computers a lot if you can see that it all just boils down to a bunch of wires and chips on a PCB. Making a custom case could also be a great Design/Technology class project.

Is it a perfect open platform? No. Is it a lot more open and inherently tinker able than a locked down Windows 8 PC or an iPad? Hell yes.


"or connect it to an arduino"

As the article mentions, this doesn't seem to be as easy as it should/could be.


Connecting a RaspPi to an Arduino:

1. Get USB cable

2. Plug USB cable to Arduino

3. Plug USB cable to RaspPi

Steps 2 and 3 can be reversed.


4. Curse broken USB drivers



It's fine.

The bedrock abstraction (usable languages etc) is higher than the hardware. The hardware we don't care about. It's disposable. In fact, you can drag pretty much anything you can do from the Pi onto another platform and carry on.

If the languages chosen were pretty tied to the hardware, then I'd worry i.e. if people were using it to learn ARM assembly or were developing early UNIX versions on PDP11s. But they're not.

It's suitable for education only because it's very cheap, it's functional and the bedrock abstraction is higher than the hardware.


The author does make a very good point about GPIO PIN protection and I'll agree fully with him on that a few extra resistors here and there would of not added that much to the cost and made something a little bit more forgiving, which is a good point for education.

But it does open up a whole new add-on market for kits which in itself can only be good.


Having burned up my share of electronics, this is probably the only part of the article I thought worthwhile. A little daughterboard with GPIO pin protection and buffering for 5V would be a great way to introduce students to real world interfacing.


Entrepreneurial opportunity!


Real reason: Finding a teacher who understands how to use or teach rpi is next to impossible.

Unfortunately, I believe Rpis sales were hype marketing that got out of hand. People thought they were getting a tiny usable computer at a great price. What they got was a bunch of chips that knowledgable people could use, yet the details go way over the head of the majority of impulse buyers. These buyers weren't missold, they just didn't have a clue what they were buying.


The lack of suitable teachers is a fundamental problem with the education system at the moment, not something the pi foundation can really be blamed for.

The "education" release of the pi itself hasn't happened yet, that's meant to be coming later this year / early next year from what I understand, and will be supplied with a lot more useful getting started documentation and software than you currently get.


Just like the religious fanatics in the open source software world there seem to be some that want every piece of open source hardware to become some sort of toaster project. The RPi has never even claimed to be OSH, it's just a cheap thing to run OSS on, and there's plenty of educational benefit (in plenty of settings nowhere near schools) to be had from that.


Its an interesting rant. I've maintained for a while that the amount of encumberances in a modern SoC exceed their value for all but a few. But here is the thing, you could still go out and build a CP/M machine, yes Z80's are still for sale [1], you can't really build a floppy disk controller these days but you can simulate one with MMC/SD cards. But the question which is not well specified is what are you trying to teach?

The typical computer science curriculum from the 80's involved learning programming with PASCAL or C, a bit of Assembly, then Compiler Design and Data Structures, followed by Data bases, operating systems, and if you were lucky distributed systems. Along with a healthy portion of set theory, complexity analysis, algorithms, and logic.

The key is that very little of the typical Computer Science degree involved actually writing a device driver or looking at the code of one. It was more about what the role of a device driver was in abstracting what hardware could do into easily used function calls or object methods.

If there was a cheap 'terminal' you could do most of that with a very inexpensive board (even a soft-CPU if you wanted). I've been working intermittently on exactly such a system, perhaps the next time I take a break from working full time I'll finish it, I doubt the development of such a system would be particularly profitable (even as a 'lifestyle' business).

But the point of this response is that to rant effectively you need to state the problem, and I don't think the author here does that, what learning is prevented by the restrictions on the Pi? What percentage of all the learning you might do is that? Who is effected? None of those questions are explored. I really liked Limor's response (LadyAda) which went to the things you could do rather than focus on what you could not do.

[1] http://www.digikey.com/product-detail/en/Z84C0006PEG/269-389...


The bit about Jazelle is particularly weird, given that it's deprecated (though not deprecated enough for Raspi to support its successor) and of fairly niche interest: only to a subset of Java developers (Android doesn't use Jazelle).


Is there some way I can get back the time I invested in reading that article? I'm honestly not sure why this article has as many up-votes as it does.


How much did you read?

I got far enough to see the first section was about whether the internals of the CPU were open source and thought "Why would I care about that if I'm trying to teach a kid to program?". I then very quickly scanned the article to see if there was anything that was vaguely relevant to the average use that this is intended for, decided there wasn't and closed it down.


The notion of Open Source Hardware is extremely slippery and while it can be argued on a moral plane, it doesn't work too well in practice.

Where do you stop when going down the layers of the stack? The article mentions OpenRISC but neglects the fact that the FPGA's that can run its HDL use proprietary, vendor-specific toolchains.

What about the peripherals? I don't know of any open source DRAM chips that could be used for the electronic designs. It's not a viable business model and never will be in such a competitive market I imagine.

In the end, the biggest value boards like the Raspberry Pi provide is accessibility. Every kid can have a computer of his own without worrying about getting scolded by mom for corrupting the disk. They give children a sense of control over these amazing machines which consequently allow them to dream up weird and crazy things they can do. Their real education lies here.

What else do you really care about? It's not the last and final RPi that will ever release! Things will only get better.


The complaint about lack of documentation is valid. Of course programming to the hardware is desirable; that's why you'd buy the thing, to do device control.


> Oh, and before calling this a conspiracy theory, take a look at the sister site of Pi Foundation. That’s right: instead of promiting free, open and royalty-free standards like WebM, the Foundation sells licenses for two proprietary and obsolete video encoders.

The Pi has picked up a pretty big following in the HTPC crowd. When you're using it as a HTPC, you need GPU acceleration to play any sort of HD content. Without these licensees, it's far less useful as a HTPC. Apparently "promoting" WebM means "make every reencode all their content into an open format".


Well guess it is not very useful for someone studying to become a CPU architect, but for the majority of kids... Definitely a wonderful thing. I'd say that the Headline Is Unsuitable For The Article.


Rasperry Pi is not using ARM's Mali GPU, but from what I hear ARM is pretty tight about the documentation for that also. I guess for a company that makes its money only from their IP and nothing else, they want to keep it quite protected. I still wish they were more open, though.


It does make me wonder that the two area's which crop up again and again as open source issues are graphics cards and wireless networking cards and I have to ask myself why. Reason being is that why is it these two area's every time, is it a case of violating IP at low levels or that some area's are open source and they have to gain there edge in speacial tweaks they don't wich to open source. I just don't honestly know but nomatter what if it's about closed source drivers under Linux then it always appears to be about some wireless card or more so, some graphics card.

Anybody know a difinative reason why this is the case?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: