4 ms·
First of all, I must agree about the way I presented it, and admit that when j45 posted that first comment I checked if I could still edit my post and it turned
by SonOfLilit 9y ago
First of all, I must agree about the way I presented it, and admit that when j45 posted that first comment I checked if I could still edit my post and it turned out I couldn't.
I've used Brainfuck in some educational contexts (like the talk on virtual machines that I gave in PyCon IL a few weeks ago and in a local python meetup before that), although not yet with complete beginners.
It's useful in some contexts and not others. It's especially useful when some of your audience has heard of it before.
It's especially useful because it lets me mention other "war stories", like this one (students love war stories): https://news.ycombinator.com/item?id=7943514 https://news.ycombinator.com/item?id=7943514
Before I teach asm, I always take 1.5 hours to teach an exercise I once developed called the "shirts exercise", which is about optimizing code for a simple and very intuitive vm that looks a lot less like real asm than Brainfuck does (for example, it has conservation of material). Real asm has so much incidental complexity and I prefer to show the beauty and motivation for learning it before we start learning about number encoding etc'.
The reason to use this spreadsheet is that it's written in a format that my students would be able to follow and understand. So if I tell them "this is exactly how a computer is built", I hope to demistify a bit the idea of a computer. A good programmer is a programmer that is not afraid to dig into abstractions.
- resu_nimda 9y agoThanks for the response, now I feel like I was, in turn, overly harsh, haha. I can see where using Brainfuck would have its advantages, sometimes that unfamiliarity can help you focus on the underlying abstractions rather than the syntax.
- SonOfLilit 9y ago(Replying next to you because I can't reply deeper) I don't feel you were overharsh, you justifiably called my bullshit, which is an important thing to do once in a while. Re: Brainfuck in education, it's not about unfamiliarity, it's about time-to-grasp-core-idea, and number-of-other-ideas-you-need-to-understand-first. You really want to minimize those. Specifically in teaching asm, you want your students to reach as fast as possible the state where they completely wrap their head about all the details and edge cases of the machine. Brainfuck is a really simple machine, very easy to hold completely in your head. Even the simplest RISC processor that can do anything real would require you to first understand binary, hex, two's complement, the idea and implementation of a stack, and so many more things... For another example see this Twitter discussion between David Beazly, Aaron Meurer and myself on the subject of teaching TDD to complete beginners: https://twitter.com/dabeaz/status/879487816538914817 https://twitter.com/dabeaz/status/879487816538914817
- bobwaycott 9y agoFYI: if you click on the comment time-posted link (n [minutes/hours/days] ago), you can reply even when the reply link doesn’t show up.