Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Is there a modern “power on to basic” computer, for kids to learn on?
387 points by andrewstuart on Oct 17, 2018 | hide | past | favorite | 328 comments
I want to give some young kids a small cheap computer that "switches on to basic" or some other programming language?

Like in ye olde computer days when you brought home your Commodore 64 and turned it on you were in basic.

I'm guessing everyone will want to say "Raspberry Pi" of some form, but does that meet my requirement? Plug it into TV, turn it on and you're in basic and can start programming. Ideally with some sort of book or resource for learning how to make the computer do things on the home TV screen.

The closest thing I've found to this is Pico-8: not a computer, a piece of software, but it's very cool. It has a simple text editor for writing Lua code, a simple sprite editor, and a simple sound editor, all for creating games. It's a nice little sandbox for playing with code and creating things.


I upvoted this but I need to reiterate my support.

When I was a kid, I was heavily into video games and had a burning desire to create my own. However, the options for doing so were not great. One of my middle school teachers tried to introduce us to programming via creating Space Invaders in perl, which went as well as you might imagine. There were a few GUI game making applications that were all terrible and extremely limited. I eventually managed to make a game using Flash, but all the overhead of arcane Actionscript APIs was overwhelming and discouraging. I stopped programming and for several years thought I was going to go into media, creating films and animation. I eventually picked up programming again in college, but there were many years of programming experience I could have had if I had stuck with game dev.

I'm convinced that if PICO-8 existed when I was originally interested in making games, I never would have stopped programming. PICO-8 is the perfect balance of easy-to-learn and powerful. Lua is a good first language because it's so small, and encourages you to build your own solutions rather than rely on magical libraries. For example, I never knew how a list-shuffling algorithm (Fisher-Yates) worked until I needed to write my own because Lua and PICO-8 don't provide one.

The limited sprite and sound options encourage you to spend time not on the assets but on the gameplay (the code). It's quick to get things on screen and working because the PICO-8 API is simple, logical, and not arcane (cough Actionscript cough).

Basically, it introduces programming in an instant-gratification way that's able to grab and hold a child's attention, while still being powerful enough to produce games that aren't hamstrung by toy programming languages.

You think you had it rough, at 15 I taught myself C/C++ Win32 programming with COM and early DirectX versions from textbooks and online tutorials. I'm thankful now though, as most modern frameworks are a breeze to learn by comparison. Looking back it was a bit like learning to swim by jumping in the deep end of the pool. It certainly gave me the confidence that I can figure stuff out, even in a new domain. And it's given me some valuable lessons in what makes a good vs bad API design.

Mine was Pascal in Turbo Pascal (6?) for DOS, circa 2004. It speaks volumes to the outstanding quality of Turbo Pascal and the Pascal language that it still holds up, more than 20 years later.

I feel old. Mine was commador64 basic in 1988

I started with AppleSoft basic around 10 years old. It was fairly simple to achieve "stuff". But if your dream was videogames (and when you're 10 years old, well, you see :-)), then you ended up in front of the assembler/machine code wall. And there your dreams vanished (or you were crazy enough to learn by yourself and books).

So I think Pico8 or Scratch are cool in the sense that they give you an environment to start programming. But OTOH, if what you look after is AAA games, then you'll soon be confronted to a brand new wall, ie : DirectX, GPU, C++ whatever. Now I rememeber of Processing which is cool too.

Don't feel old.

My first Basic experience was on a VIC-20, and I later got my own C64 in 85.

Great computer to learn on but I don't think I would have got far without the Programmers Reference Guide.

I started with Cosmac ELF 1802 with 256 bytes of memory 128x64 graphics. I would have thought I'd died and gone to heaven if I had something that ran pico-8.


I hope I never have to look at another line of MIDL.

And the great thing about today is, there's a metric ton of free software you can move on to. Like, I would've killed for Godot when I was a teenager.

This sounds really good!

Also of note: it was made by the creator of Voxatron (the only game I know of that really explored voxels), and is available as a $5 add-on to that.

Wikipedia page told me of a pocket computer preloaded with PICO-8: Pocket CHIP[1]. It seems to be exactly what the OP was asking for.

Alas, the Kickstarted company went belly up, failing to deliver all the preorders.


I have a Pocket CHIP. It’s really cool. Comes preloaded with PICO-8, some other software (a synth, etc.), and a dead simple graphical launcher. But under the hood it’s running full on Linux. I got the Swift compiler installed and running on mine, for example.

Really too bad that the company went under.

It's a pity indeed!

I'm going to snatch one on eBay before this thread really picks up.

Pico-8 was my son's very first introduction to programming. He does much more with the integrated sprite editor and sfx/music editors than he does with actual coding. I would like to get him interested in TIC-80 as a replacement.

Key weaknesses of Pico-8 for kids learning to program:

1. The editor runs at the same resolution that the games do. Maybe this is because they didn't want to make their VM flexible enough to deal with multiple resolutions, or they just wanted to make the illusion that the Pico-8 is its own machine very consistent, but the end result is still a painful code editing experience. When I make example programs for my kids, I need to compromise between descriptive variable names and indenting code blocks.

2. Deviations from the standard lua API/libraries mean that normal learning resources like PIL have to be interpreted with an asterisk.

3. This is a minor thing, but the fixed palette is annoying. In graphical terms, Pico-8 lies roughly between the Atari 2600, 7800, and NES, but all of those systems handled colors more flexibly.

4. Splore allows children to find games that are not appropriate for their age. It's just not designed for kids and parents. My son found a game featuring smoking and thought it looked SO COOL (this was easy to disabuse him of). He also found a game that puts you in the role of a cyberbully, and the subtle psychological effects of that sort of "edgy" game aren't as easily undone with a single conversation. It is possible to mitigate this by putting whitelisted carts into the bbs carts folder and then making that folder read-only.

TIC-80 improves on the first three points. The editor is still running at the same resolution as the games, but uses a higher resolution (and the editor can optionally use a thinner font). The lua implementation is much more standard. And the palette can be changed (even per-scanline, I think). The music editor lets you draw your own waveforms, but in other respects is less intuitive than Pico-8's. (I haven't looked at TIC-80's cart browser so I can't comment on it.)

All of these are explicit design choices, for example a fixed palette is important to give games a "Pico-8" look and also reduce decisions regarding color choice. I suggest you watch Joseph White's practice talk (https://www.youtube.com/watch?v=87jfTIWosBw) if you're curious about design decisions that guided Pico-8.

Multiple resolutions would absolutely break the "Fantasy console" feel of Pico-8, even though I understand why programmers universally hate that. To be fair a lot of people do code editing outside of the Pico-8 editor.

#4 is an interesting point. The trick here is that different parents have different ideas of what is and isn't appropriate, and of course different kids will have different responses. It seems like the answer is to maybe have a version of Pico-8 that removes splore and expands the demo carts with some universally safe, popular titles.

TIC-80 is cool btw and might be a better learning environment for kids. I don't like it (or any of the other fantasy console\pico-8 clones) quite as much as Pico-8 because they remove constraints, making them feel more like generic game editors and less like imaginary retro computers.

>All of these are explicit design choices, for example a fixed palette is important to give games a "Pico-8" look and also reduce decisions regarding color choice.

Indeed, which is why they won't change, which is why (for me) an alternative like TIC-80 is preferable to waiting around for Pico-8 to become what I wish it were.

The virtual console space is tantalizing, but the culture around it has different tastes from mine. For example,

>I don't like it (or any of the other fantasy console\pico-8 clones) quite as much as Pico-8 because they remove constraints

This is a pretty common sentiment on the Pico-8 boards; I understand there are people looking for a certain aesthetic thrill that comes from working within the constraints to make something unexpectedly cool. And yes, when I have time, I would like to make e.g. a metroidvania that uses individual tiles to encode 4x4 chunks of tiles to allow for a big-ass map. It just so happens that those constraints aren't necessary for, and sometimes are in tension with, the goals of a good first-coding-experience learning environment.

I also totally understand why virtual consoles almost all use BASIC or lua, but (for me, not for my kids) I wish there were an option with static types. The combination of not being able to see much code on the screen at once plus no static type checking is pretty uncomfortable for me.

> I also totally understand why virtual consoles almost all use BASIC or lua, but (for me, not for my kids) I wish there were an option with static types. The combination of not being able to see much code on the screen at once plus no static type checking is pretty uncomfortable for me

At some point the question becomes why not just use Unity, BFXR, Bosca Ceoil and ASE Sprite if you want no constraints and better tools with a similar Pico-8-ish aesthetic? That question is outside of the scope of the original post, but as I piece together your ideal fantasy console, it seems like not really a fantasy console but a simple general purpose game IDE with a statically typed language.

Edit: Btw, if what you want is a simple general purpose game IDE with a statically typed language that is somewhere in-between Unity and Pico-8 I suggest you make it or at least spec out your needs more formally! I'm definitely a fan of more people making game creation tools (and software development tools in general) that fit their needs\use cases.

The all-in-one nature of most fantasy consoles is really appealing. They are also not terribly opinionated, which can be nice. When I tried Unity its 2d story was not good and I kind of struggled with its opinions. I've heard that its 2d has improved, but haven't had the time to explore it since.

I actually do like reasonably low resolutions in-game rather than in the code editor. When I play with my kids I want it to feel like good graphics aren't too far out of reach, and low-res makes it easier to get to something in the range of acceptable. My own kids appreciate their own pixel art more than anything they do in Scratch, for example.

I also think I might be slightly younger than most fantasy console fans, maybe? When I was very young I had an Apple IIc, which was good for booting straight to BASIC, but most of my childhood programming occurred in the era that spanned from CGA cards to VGA, and then I left programming for a while when 3d acceleration became a thing. One quirk of this era was that tradeoffs between color depth and resolution were just a normal thing. So for me, it would be a natural thing for a retro game dev environment that simulated a fixed framebuffer size to support, say, a 256x192 256 color mode and a 512x384 4 color mode. An editor in that higher-resolution, low-color mode would be way more comfortable than in low-res. (Pico-8 does have an alternate resolution, but it's 64x64 and still 16 color- somewhat evocative of the old 40x40 mode that Apples had).

TIC-80 does almost, um, tic all my boxes. I mostly just want a higher-resolution code editing mode (for both me and my kids) and a static language (for me; my kids don't really have a notion of types (yet)). So obviously the solution is to fork TIC-80 and see what I can make it do...

Ha! Hi-res editor mode is on the roadmap: https://github.com/nesbox/TIC-80/issues/723#issuecomment-419...

My ideal pallete would consist of all the C64s colors and all the ZX Spectrums colors combined. A few of them would overlap, and the resulting pallete would be restrictive but pixel artists could work magic between both the familiar old hues.

My ideal machine would be a C64 and Spectrum combined, 4 commodore sound chips, screen resolution increased only about 50%, 256kB ram, possibility of running 6502 and z80 in parallel, at quadruple speed.

Could be just nostalgia, but the continuing demo scene for these computers is incredible[a] and beautiful new games also get made to the old frugal specifications.


+1 for Pico-8. It really takes you down the rabbit's hole in a way that stimulates learning all the core concepts in creating a basic game. "Cool, I have a sprite on the screen. Now, how do I make it move?". "What about gravity?". "What about collision detection?" (I've done at least 5 collision detection "engines" so far...).

Games can be compiled to HTML5, ando/or distributed as PNG files with all source code and assets included. There's also a builtin community game browser with ratings, etc. Some bigger name games were prototyped in Pico-8 (i.e., Celeste), and it has a lot of love in the indie community.

I think Pico-8 would be perfect if:

a) The code editing story was a bit nicer (better resolution / builtin support for external editing and reloading etc)

b) If there was some kid-specific introductory game programming content for it (even "type all this in and play around with it after" worked for me as a kid)

You should check out the Pico-8 fanzine. It is super cute, has coding tutorials and game building walkthroughs. I think there are now 8 issues.


It has both of those. Most of the tutorial is in the pico8.txt file though.

Celeste, one recent major indie game, was started and initially developed on Pico-8.

If are into games, check out Celeste. Just the music is reason to play this game (I played it on PS4 but all versions are equal).

There are a bunch of these "fantasy consoles" now. From a quick search:

* Pico-8: https://www.lexaloffle.com/pico-8.php

* Liko-12: https://liko-12.github.io/

* Tic-80: https://tic.computer/

* Pixel Vision 8: https://www.pixelvision8.com/

I have no idea how they compare to each other.

Oh damn, such a rabbit hole :-p. Also found this list [1].

A couple on the list run BASIC! E.g. [2].

I just learned there's this thing "Windows 10 IoT", [3] a Win10 version for low power devices like the raspberri pi.

Would be interesting to try to run B8 in there!

1: https://github.com/paladin-t/fantasy

2: https://store.steampowered.com/app/767240/BASIC8/

3: https://developer.microsoft.com/en-us/windows/iot/Downloads

Windows 10 IoT can't run Win32 applications, so Steam and BASIC8 won't work without major re-tuning.

Got it. Next best thing I could find: a mini PC. E.g. you can get one of these gigabyte ones for about $100, but I think comes w/o an HDD.

1: https://www.gigabyte.com/Mini-PcBarebone/GB-BXBT-2807-rev-10...

Tic-80 is slightly higher resolution than Pico-8, with a user-definable palette and a more standard lua implementation. The music editor is slightly less intuitive, though.

Pixel Vision 8 is more flexible and complex than the other alternatives. One KEY difference between it and the others is that you can define your own editor tools... but the way this is done means that you must save your work every time you switch from tool A to tool B, or your work in tool A will be lost! It also is built with a focus on interoperability with external tools; it isn't as focused as the others on being a cozy self-contained environment.

There actually was a computer that ran PICO-8 out of the box, too:


Unfortunately, the company has shut down, and these aren't made anymore. But it looks like they can still be found on eBay:


I love pico 8, but I think that Lua is probably the worst language for coding in an editor that can fit so few characters on the screen, and it feels like using an external editor defeats the point. Granted, I haven't used the software in a couple of years, has it improved on the editor front?

I'm surprised you feel that way. Lua seems like a perfect choice for pico-8. Its syntax is friendly and concise, and it's maybe simplest language to embed, with tiny footprint. Almost all other languages I know of would be a worse choice. Scratch would be nice, but graphical editor is harder to integrate. What's more suitable language in your opinion?

Well it's only because of the issue with the built-in editor, since lua isn't really that concise in terms of character count imo. Also the official tutorial is a published book which I find a little distasteful although understandable. You are right though I can't really think of a better language to use

You can attach an external editor if you want, though I think it is not needed for learning. There is more value in the tight integration than the conveniences of a great text editor.

I've used this Sublime Text Package which works well:


The great thing about Lua is the language itself is so small, and not just from an implementation perspective. The spec and documentation are also small because there's not much to learn.

You can explain it in an afternoon. Try that with C++ or JavaScript.

It's also fast and it can be made to run in deterministic time. Plus the C API is something I can actually read and understand, which is true of none of the other scripting languages I've used(Python, Perl, et. al.).

Next Thing used to sell a "PICO-8 Console Kit" using their "Chip" single-board computer: http://blog.nextthing.co/pico-8-now-free-for-all-c-h-i-p-s/

Sadly they went out of business.

It would be easy to build something similar with a Raspberry Pi though.

I started to program in Lua with the LÖVE game engine in early high school, and can say it's one of the main reasons I was motivated to study CS in college.

It's a simple, 2D, open-source game engine that runs on all platforms — I'd recommend this and other sandbox-style environments to anyone getting into programming.


The first version of Celeste was done in Pico-8 at a games hackathon, and the success caused the author to develop an expanded version, which in my opinion is one of the greatest platformers ever.

The pico-8 version exists as a game within the game and is great fun as well!

Website: http://www.celestegame.com/

GDC talk about development of Celeste: https://youtu.be/4RlpMhBKNr0

I can't find any info on recommended ages for Pico-8? What age range do you think it works for?

Raspberry PI cab be said to be evolved from a ~ power-on-to-BASIC computer; to wit: the (BBC) Acorn Archimedes. You can still get RISC OS for it even. Basically, you power on; hit F12;



and bob's your uncle: you get a nice BBC BASIC prompt at the bottom of your screen.


(that said, why not use pi + python? It's the new BASIC. And it supports turtle graphics besides ;-) )

Yes. Raspberry Pi plus RISC OS Pico will drop you straight into a BASIC prompt. And one which is largely compatible with software written the original BBC BASIC from the early 1980s, if you have that nostalgia. The embedded assembler is ARM rather than 6502, and there are improvements and changes to some of the OS interfaces, but most simple stuff will work unchanged.

This cut-down version boots straight to BBC Basic: https://www.riscosopen.org/content/sales/risc-os-pico

I came here to advocate much the same.

Raspberry Pi Zero + Risc OS Pico.

The fastest BASIC interpreter ever written, with local variables, recursion, inline ARM assembler, and more.

Advantages over Python etc. on Linux:

* No complex OS underneath;

* No need to learn arcane concepts like "editors" and "files" yet;

* No significant whitespace;

* No weird C-isms like the output statements, the two meanings of % or any of that legacy nonsense it inherits from 40y of crap underneath;

* Zero maintenance required.

Blinding fast, cheap as chips, runs on a dribble of power, solid-state and silent.

If the kid takes to it, can be trivially enhanced to a full rich GUI OS with tons of educational apps and software.

>why not use pi + python?

Do you have experience with teaching python to kids? I am afraid to try it with my son because white space is important, I tried only Scratch and making him think as "a machine" is hard enough adding syntax errors on top would make the job much harder, let me know if you have experience with this and if you think I am wrong.

Python seems like a nice update to what BASIC was in the 8-bit era. Real-time interpreter so you get instant feedback, including very simple imperative syntax. (IMO any introductory programming environment that doesn't let you do something like 10 PRINT BUTTS <RET> 20 GOTO 10 <RET> and get BUTTS BUTTS BUTTS... out of it is a failure to launch.)

But unlike BASIC, Python will grow with you and you can use it for non-trivial projects without fighting with the language. I certainly wish my old Apple II had Python; it would have prevented the immense jump to a "real" programming language, because I kept trying to go from AppleSoft BASIC to C and banging my head into a wall, nothing about it made any sense. (Perhaps I would have had better luck going from BASIC to Pascal or QBasic, but for some reason I never thought to try it. I think because the very few computer-literate adults I knew were minicomputer people and led me to believe that C was the only thing worth learning.)

Not that working up from a text prompt is the only way to learn how to interact with computers, certainly. I know a fair number of people who learned to program due to environments like HyperCard, which are much more visual, and let you start with the art and storytelling and then glue things together with code, rather than start from the code.

But for some people, including myself, the feeling of interacting directly with a computer via a simple prompt, and making it do things each time I pressed the Return key, was quite powerful.

>MO any introductory programming environment that doesn't let you do something like 10 PRINT BUTTS <RET> 20 GOTO 10 <RET> and get BUTTS BUTTS BUTTS... out of it is a failure to launch.

But Python doesn't let you do that - there's no goto...

While I'm being somewhat tongue-in-cheek, I do think it's true that

  while true:
carries quite a bit more conceptual overhead than the BASIC equivalent, and is not exactly a "very simple imperative syntax". You don't have the simplistic and obvious "goto" - instead you have the ungrammatical and obtuse "while true". And then there's the indentation, the colon, and the parentheses around the argument to print... all explainable of course, but all requiring explanation. To fully grok it you need to understand booleans and conditions, block structure, and function calls. Of course it's all perfectly obvious to experienced eyes but remember the mountain you have to climb when you're first starting out - more than one or two seemingly inexplicable things when you're first starting out can be very discouraging.

Worse, to my mind, is the loss of that small moment of enlightenment regarding complex behavior emerging from computer programs - with 10 PRINT BUTTS : 20 GOTO 10 you are composing two atomic, individually obvious statements to create something more - an infinite loop. When one of the statements is a slightly more complex line that essentially means "do an infinite loop", some of that magic is lost.

I run a Python user group for my city and there's a number of people who teach python to kids there. One tool that's gained a lot of traction is Pythonista (http://omz-software.com/pythonista/) which kids can use to code graphical games directly on an iOS device. Code Like a Girl introduces python to kids 8-years old and up as well. Personally I've had lots of success teaching python to my 12-year old step daughter. She's being taught javascript at school through App Lab and hasn't found the transition to be particularly difficult.

Thank you for the links , I will check/try Applab in weekend, I do not have iOS so I can't try the other app.

If you use a nice text editor, whitespace shouldn't be an issue. Even with any other language, you would want to show them how and why to indent. If it becomes an issue, they may be writing code that's too complicated.

In other words, I think a child will more easily learn about indentation, than handle writing flat code, which can get difficult to understand pretty quick

You did not mentioned if you teach python to kids, things that are intuitive to us are not for them, yesterday I was working with my son on Physics exercise, something like how much Km are 1234cm (we are using metric system here) and in all similar exercises he did everything reversed, like a few centimeters are a few millions of Km which is obvious absurd but it was not easy for me to make him understand(plus the teacher at school).

My point is that something that is obvious and simple for us for someone else makes no sense(he is 12 and I don't have experience teaching other children),

For now I gave up on teaching coding to him, maybe he needs to grow a bit more to understand the abstract thinking required.

This is why extremely rapid feedback is the key to learning for these kids. BASIC and Logo have a decades long proven track record for your first language as a child. Python is something a highschooler or talented middleschooler could maybe pick up, but it's not suitable for a 6 year old unless they have a very strong driving personal interest.

When you're trying to get your kid into something that doesn't come naturally, they're more liable to give up quickly if they can't make rapid strides.

That just sounds like a direct result of not memorizing the prefix orders; not of anything related to actual understanding (or failing thereof).

What happens if you give him a reference sheet? (I have little experience teaching kids but I’m a firm believer in that the only good test is one where all the puzzle pieces are provided; its the composition thats worth testing, knowing the pieces by heart is just to speed things up)

It is not that, he knows that 1Km=1000m and 1m=100 cm, the issue is when you want to transform Km in cm or reverse, I assume he memorized how to do it in school but it was not natural, did not understand it and at home it applied the things he learned but in reverse. What surprised me was that he could not realize how absurd the results are.

A thing I learned by doing the homeworks with my son is that is also easy to think that the child learned/understood your nice explanations/graphics/examples he does all the exercises/problems correct and then 1 week later he won't be able to do the exercises again, so I will repeat them again after 1 or 2 weeks to make sure he still knows how to do it. This may be different with other children or different teachers

Only the leading space is important and editors take care of it when you hit the tab key.

Or just use a language that doesn’t have that problem, then you don’t need a magic editor.

It's not a problem, it's a lot simpler than typing matching braces everywhere. Python is one of the easiest languages to learn.

I am not the person you replied but in C style syntax when you type { in an IDE the { is inserted automatically so there is no risk to forget about it, also if you copy paste a piece of code you just run the action to reformat the file or the selected code and the braces will correctly fall onto place.

I am not saying that Python syntax is a big issue, but is one more thing to keep in mind and it potentially trip up children(probably something more visual that is impossible to make syntax errors is better but I did not find something that is engaging enough)

His point was about not needing a "magic" editor. Neither does python, it works with spaces or tabs as long as you are consistent, and tells you where you aren't.

My point is that if I define a metric for easier to use by a beginner programmer (child) then C syntax > Python syntax

If you define a different metric, maybe pretty syntax then it would compare in reverse.

Though I don't have experience or seen people testing this on children and "proving" that having to keep in mind spaces/tabs is harder then the braces and semicolumns (when using a decent IDE) so I may be wrong.

> My point is that if I define a metric for easier to use by a beginner programmer (child) then C syntax > Python syntax

That's pure speculation, not a fact.

My speculation is based on the FACT that python syntax involves the programmer to indent correctly where C like syntax is not , so the only way you could disagree is that maybe

1 the cost of keeping indentation in mind for beginners is 0

2 or the cost is greater then zero but there is some different cost in C like syntax that affects beginners

Keep in mind I am talking about syntax here and not the C language

If a kid can understand a for loop, I think the kid should be able to understand indentation.

Hardly. One you can see, one you can't. And that's without accounting for the real cause for consternation: tabs vs spaces, and tabs being magically changed to spaces or vice versa because of your too-smart-but-not-smart-enough editor.

As mentioned previously, Python warns about inconsistent indentation. Also, I learned programming at age 12 and understanding indentation didn't take more than a few seconds.

> and bob's your uncle

Completely OT, but I had just had to look up this phrase and the supposed origin made me chuckle: https://en.wikipedia.org/wiki/Bob%27s_your_uncle

Surely Bjorn Stronginthearm's my uncle?

This post reminds me of a running line of thought that's been going on in my head for quite some time: "Single Purpose Devices."

The main disadvantage of most computing devices is that they offer too many options; making them mentally unwieldy. A "single purpose device" is created to support just one purpose. The Kindle is perhaps the most famous example; it practically created an industry. Sure, it can do more than just present books, but everything is designed to support reading.

Ideally, there would be a "computer", where every aspect of it was designed to teach computer programming.

I often fantasize about a device designed solely for producing new writing. It would have a nice screen, and a nice keyboard, but only a very very limited web-browser, and would sync with Google Docs, Office, or something similar, so that you can do the more advanced stuff elsewhere.

Such devices are about empowering the user to go down a specific path; one they choose as soon as they start interacting with the device.

Kindle -> Reading

Typewriter -> Writing

Hammer -> Hitting things

"Power to Basic" -> Learning to program

I know I am lucky to have this setup, but I keep 2 laptops and 2 tower computers or 4 separate computers. 1 for biz, 1 for downloading and email, 1pc for gaming, and 1 for activities best kept in private browsing..

Very interesting. What kind of software do you have on the computers? Is there anything, beyond the physical separation, that supports the purpose of each device?

(Maybe something as simple as physical location, color, a "sticker", or something else altogether.)

Only software on the machines are strictly for what I am using them for. I have a router with a harddrive if I do download something and want to put it on another machine, but I don't remote desktop into them or anything. Each computer is on a separate desk, own monitor and mouse and keyboard. I just like it separate and not complicated. Keeps work stuff super focused and clean, for me. I could network them more if I wanted to, but gets the job done.

> Keeps work stuff super focused and clean, for me.

That's exactly why I find this setup so appealing; it really works with the natural tendencies of our minds, as opposed to constantly presenting us with a situation where we have to choose not to do one of the many distracting options just a twitch of the finger away.

Dumb phone -> Talk and text, no camera, no browser, cheap and readily available. Please?

Device -> Purpose

iPhone -> sell apps & subscriptions

Android phone -> sell ads / harvest user information

I really like the idea of ditching my smartphone for a dumbphone, but giving up Google Maps would be rough. Knowing the fastest way to get from point A to point B (including public transportation!) is genuinely really useful.

The Light Phone 2 comes to mind: https://www.indiegogo.com/projects/light-phone-2. It's not available yet, and I've heard some complaints that it has too many features. But, it aims to be a middle ground between a smart phone and a completely dumb phone.

do it and re-discover the art of getting lost!

And how to navigate a city on your own.

I grew up in the intermediate period between widespread desktops and finally getting a smartphone.

I just wrote down Google Maps directions and the general description of places I needed to turn on a piece of paper.

I recently bought one for like 14€. In a supermarket. Calls, SMSs and little more.

Are you lamenting the fact that there's no such thing or that it's not more widespread?

The second one. In the US they're a little hard to come by. Sure you can order something online. (There's a whole niche market of tiny dumbphones that don't claim to be made for prisoners, but are designed to be easily smuggled inside body cavities.) But their retail presence here is almost nonexistent.

Also, it's much more difficult to find one if you insist on a particular carrier. For example, the popular line of Blu dumbphones (which still have cameras) operate on 2G-only GSM, and don't work with Verizon, AT&T, T-Mobile, Sprint, or Boost (i.e. all of the major providers). You have to use something like StraightTalk or Simple Mobile (i.e. prepaid discount service, similar to Tracfone) to make them go.

The Nokia 3310 is about as close as you'll get I think.

Bought one. Physically removed the camera. Still has a browser and and app store, not to mention a builtin facebook app that can't be removed by the user. And the price point is around $60.

There's no reason for a bare-bones dumbphone to have any of that shit, or for it to cost more than $20.

Something seems off about learning general-purpose programming on a single-purpose device. How would you run your programs?

Single purpose doesn’t mean non-programmable, it just means designed with a particular use case in mind (in this case, programming).

Many terminal-based programming environments allow you to run code - you essentially just need a REPL, but there are more sophisticated environments that could still be considered 'single purpose'

Pretty clearly it has to have a way to run the programs you enter as you're learning to program. Otherwise it's a lousy device at teaching programming.

Or have I missed your point?

Yes, learning programming because that's what you do on the learning-programming-machine is a great way to convince people that learning programming is a waste of time.

You learn programming so you can do the things you want to do. Handicapping the device handicaps the whole project.

On the other hand, if your machine is able to run the programs you write, then it isn't a single-purpose device.

I think you're confusing purpose with functionality; they're not the same thing. Designing with a single purpose in mind determines the needed functionality; it does not limit it. Instead, the purpose supports the design decisions in relation to functionality.

Depending on their age, for young kids best results I've had are Pi's (or old/cheap pc's) that boot straight into scratch. Far better results than an intimidating command prompt.


Alternatively Pi's (or old/cheap pc's) that boot straight into Minecraft Eduction Edition:


This has paths for the very young in minecraft itself to older kids using ide's.

It's actually very easy to setup "boot to scratch" in raspi-config: https://geek-university.com/wp-content/images/raspberry-pi/b...

I second this. My kids love scratch. It shows them event driven programming with quick returns. The can also share their apps and download others so they can download and modify.

How old are the kids? Mine is just turning 5, and I've been looking at this as an option, but as many have said, I don't want to feel like I'm 'forcing' the tech learning on him.

Scratch is good from around age 8 to 14 or so, depending on their ability. Most kids don't even know they're learning, scratch is really fun. Coder Dojo has some great lessons, eg this one to make your own version of plants v zombies:


For those of us who grew up in the 8-bit era, this has a lot of appeal since that's how we got engaged. But for most kids today, is this sort of ab initio approach really the right way to go about it? Based on my experience with a few different types of kids/personalities, I'm skeptical.

Dropping them into the command line / IDE of any language / environment is likely to leave them both unimpressed and lost. Neither the Raspberry Pi (more software oriented) or Arduino (more hardware oriented) is going to be terribly impressive from a standalone point of view compared to the PC/iPhone/XBox they're used to. But the thing they've got going for them are a lot of cool projects other people have done with them, step-by-step tutorials, and pre-built stuff that's relatively easy to re-create and/or integrate. Will the 8-bit recreation you have in mind have any of that?

Kids have it too easy today, they don't have to work very hard to get decent computing experiences, and its not like they have to do any programming at all to have fun. It is also super easy to get addicted to just consuming all the time. It is quite depressing.

My kid is still a toddler, but I think I might put a stripped down CLI-only computer in his room when he reaches 5 so he can at least play with it if he wants. It doesn't need to count as dangerous screen time, there is no internet to worry about, and he probably won't get addicted to a CLI at least. I mean, the alternative to that is probably no computer in his room until he is 16.

Kids today have it difficult!

A real computer, by definition is something you can program.

Today you don't just find accessible devices meeting that requirement in the wild.

In the microcomputer era you pressed the power button and you had a REPL prompt.

Today there _is_ a computer hidden somewhere inside you laptop or mobile device, but you need to know where to dig to find it.

In the 80s a newly hatched geek just had to crawl over the beach sand until he reached a device and it was a computer.

Today's kids are surrounded by computers, but they are all deeply embedded in the devices around them.

After hatching, a modern geek needs someone needs to break the husk around their device to get at the computer first.

So your recipe is exactly the recipe for exposing him/her to a computer.

I think you are selling kids/newly hatched geeks short. They have also been raised on google and youtube - both places they can find out how to do nearly anything related to programming and game dev. I would have done anything to get access to that info when I was 11 and trying to figure out how to make sega genesis games!

Information overload. Sure, those gems are there. But they are buried under a proverbial mountain of crap.

You should see what kids are doing with Minecraft. I've had to watch videos made by 12 year olds because I couldn't figure out how to install mods. They not only are doing the videos, but creating the mods.

Is this so new? 25 years ago kids were addicted to cable/phone/Genesis/VHS and never "had" to do any programming to have any fun, either.

There was a phase where people expected that people starting on iPhones even younger than people started on Windows in 1993 would make them more technologically literate, but that was optimistic - they're iPhone-literate to the same level kids then were Windows-literate.

Actually understanding things at the machine level was very rare back then, too, though.

Somewhat affluent kids maybe. As a preteen in the 90s I had an uncle's hand-me-down 80s console (NES) with like two cartridges and 80s computer with a few pieces of shareware game demos that I hand to know CLI commands and manage files to start plus a basic interpreter. My (nearly infinite seeming now) time was spent staring at the wall, sitting in rural nature, building things out of my whopping ~80 off-brand lego bricks, socializing with kids that I didn't understand at all (rednecks who didn't comprehend the idea that one might read on purpose, for fun) or messing with the interpreter.

Later on as a teen I'd hear about a "free" OS that was good at running on limited hardware, which would be exciting to me in the very free-as-in gratis sort of way as a kid with an aging (different than previous paragraph, mid 90s) hand-me-down PC, no money or anyone to ask for money -- I had to go on a waiting list to get a CD mailed to me IIRC -- but then then I was up and running with my first linux server (RedHat 6), albeit isolated from the internet at large, but I'd get a whole slew of new interpreters and compilers to mess with (C, Python, Perl, PHP), and they all came with documentation, and stuff had sources I could read!!

During both periods my single mother would sporadically (when a sales guy convinced her) subscribe to cable for a few months at a time before realizing she couldn't afford it. We didn't own many VHS (to a detriment, renting favorites multiple times -- math and planning weren't in my mother's toolbox). Even if there were any real content available for our television, we just had the one and she used it for the entirety of her own downtime. There were internet trial floppies/CDs or ad-supported dial-up schemes etc., but I didn't have regular access to a reliable internet connection in my family home until I got my first job out of high school (writing C for embedded controller of a machine tool platform) and could pay for that with my own money.

If my mother were born 20 years later and made the same kind of life decisions, that rural backwoods is now served by a community project that provides affordable 100 megabit fiber to the premises we could probably keep on despite a late payment here or there (better service and value than the cable I have access to in a real metro area today, frustratingly). I would have hand-me-down iPad and iPhone (as would my mother -- giving us each our own screens with which to consume entertainment in parallel), little money with which to purchase software for these, no way to pirate software for them, no general purpose computer, and my mother could probably manage to keep her Netflix subscription paid for keeping us both with a tap of easy entertainment. My more curious forms of bored energy would probably be satisfied watching other people play PC games on Twitch or something or bulshitting with my peers (who would exist, me being less nerdy and society in general having become a bit more nerdy). By 18 I'd know a lot more about internet culture and games (and probably have more friends) but I wouldn't be able to raise my hand when the careers counselor comes by asking if any of the students knows C (and that machine would probably have a proprietary runtime instead, and that company would probably have offshored those tasks before reaching out to the local high school).

How many of your peers took the same path you did? Sounds like 0, and instead that they had completely different interests. I'm skeptical that (a) having a hand me down computer with a Basic interpreter but also (b) not having "more addictive" TV, music, or more video games/rentals/friends with consoles was a common situation.

It's new, passive screen time and active screen time are getting a lot of attention in the pediatrics community.

Kids like you had it way too easy. When I was young you had to solder your own components together to make a calculator.

Kids like me had it way too easy. When they were young they had to look things up in log tables and use slide rules.

Etc. back to hunting wild beasts and digging vegetables out of the frozen ground

I'm sure I would have found some charm in using punchcards, but I think being 6-7 when PCs just first starting coming out was kind of a magical time on the threshhold, similar to when crystal radios started showing up in the 50s or cars started becoming viable in the early 1900s.

This comment is just screaming out for this as a response:

Monty Python's 'Four Yorkshiremen': https://www.youtube.com/watch?v=26ZDB9h7BLY

I think the issue is learning by tactile experience.

I've been thinking along those lines, with some external GPIO pins hooked up to toys and simple commands to control them. So the kid could type "ON 4" and the pin labeled 4 hooked up to a light would turn it on. Or "VOLUME 3" to set the volume of the sound output. File system commands like LS, CD, and PLAY <name> to play a music file to sound out. Maybe more commands that control RC channels where you have lots of flexibility on what you put on the other end.

Yes and no. I agree they have it too easy as users. But it is harder to start programming because of the complexity of the tooling. Also, achieving something cool in code can be a bigger stretch than it used to be. When the pinnacle of gaming was a text adventure, a kid could come close to emulating it with a few dozen lines of code. Now kids are playing Fortnight which is not replicable without a large team of coders, artists, and millions of dollars.

And it it will sit in a dusty pile in the corner

Truestory. I was and embedded engineer and I still find this stuff pretty dull. I can't imagine a kid caring unless they have a specific project in mind. Especially when everything these days has nice graphics and there are so many options for apps, games, websites etc that are easier and more engaging.

Truestory. I graduated with EE degree and a few years after that I still get a kick out of making an LED, connected directly to my desktop printer port, blink on and off. Different strokes for different folks, yeah?

But did you ever find it interesting/fun or was it always just a job? I suspect that the OP is trying to find a way to convey the fun they experienced getting into tech as a kid... either that or they're sadistic ;-)

> they're used to

Maybe they're not used to them, because we haven't given them one? Or largely restrict their use? Necessity is the mother of invention for kids.

Only if they don't have friends. I have a family member who tried that and failed miserably: not only are the kids computer illiterate (from not having any positive/useful exposure to technology when they were younger) but now they are hooked video games and social 'stuff' from their friends / school. The parents have now thrown in the towel and use technology as a pacifier for their adolescents. Just because you don't allow it at home, don't assume they're not getting it somewhere else.

Nope, my daughter is very social, an avid reader, and can program minecraft too. The fact that friends have toys doesn't solve the learning/boredom drive at home.

Also, playing with an iphone or x-box, is not computer-literate.

Besides the novelty of the actual 8-bit machines, that era pushed the 'kid hacker hero' character (hard!) Whiz-kids Richie, Wargames David, Ferris Bueller, kids programming supermodels, spaceships etc. What came first the enthusiasts or the role models? A generation of kids might have easily been bedazzled into chef'ing or carpentry instead. Mightn't have been a bad thing.

Power-on-to-basic is gone in the world of more sophisticated hardware and power management. But! You can always alter a homebuilt hardware to boot into the next best thing: DrRacket. Just modify the init scripts to go right into this: https://racket-lang.org/

Grab a copy of "the little schemer" and let them go. And when they're through that, then you can unlock the rest of the computer.

As for the hardware, I have recently been building this kit. It affords a very small, humble laptop from the base parts up. You literally build it up. You can re-open it pretty easily.


There’s also Realm of Racket which uses games to teach.

Hear me out here; Apple's Swift Playgrounds on an iPad.

I'm involved in an extracurricular thing in Scotland focused on giving kids an environment they can figure out computers. We've seen a lot of different approaches to the problem of "how can we get kids to code", and Swift Playgrounds is consistently where we see youngfolk making the most progress.

It gives you a nice, guided framework to get the very basics of programming, and slowly gives you more and more "rope" to play with, ultimately leading you to move your projects to Xcode on a Mac.

Swift may not be your favourite language, and Apple are totally doing this with a view to people becoming iOS/MacOS developers (not necessarily a bad thing), but Swift Playgrounds is definitely best-in-class when it comes to having kids teach themselves how to program. The integration with real-life robots and drones is really impressive, too; the kids absolutely love being able to write real code that makes a real robot do things, it's exceptionally motivational.

To support the "you can get pretty far in playgrounds on an iPad" assertion, one of my coworkers built something like half of a language flash card app on his ipad before he transferred it over to his laptop to finish it. I thought he was nuts doing dev on a tablet, but he said it was actually a really nice dev environment and in some areas it totally outclassed xcode. Swift may not be your favorite language but it is an objectively good modern language compared to a lot of what's out there in industry, and its skills are easily transferable to several other good modern languages that are becoming popular.

My kids don't have tablets but this would be the application that would make me buy an iPad for them. Very close in spirit to the old LOGO, but with the added bonus of laying the foundation using a real language—real as in something used in our industry and with concepts that are easily transferable to other languages.

You can also put an ipad into an kiosk mode where they cannot exit an app without a pin. This will help keep the ipad as a 'power on to code' system and not let them drift into other apps.

I am a strong believer in kids having access to technology, but also creating the frameworks in which they can learn how to keep themselves safe.

I grew up around a software company and I was exposed to computers and the internet from a very young age; I had my first computer that could be considered "my own" at about five years of age (a little hand-me-down desktop from my father's company) and cut my teeth on that, building little static websites, stuff like that.

It's definitely what lead to my lifelong interest in computing (as much as I can't stand this industry sometimes) and a healthy career in IT infrastructure.

I'd wager that a complete 8-bit system with printer and cassette storage is a better tool for learning.

I'd wager that the better tool for learning is the one that gets kids to engage. They're not going to engage on an 8-bit system with printer and cassette storage, but they will with something they can make a pretty game and control a drone.

It depends on what you're after, I guess.

I'm betting the boundless possibilities presented by direct I/O control of a servo would do more to equip a kid for life than the range of choices presented in an app.

Making your ideas manifest is fascinating, regardless of whether they're tangible.

Personally, I want my kid to be on the TX pair, not the RX.

My first computer had cassette storage. I would not want to inflict that on anyone.

So what if your kid has access to a MacBook Air? Would you still start him/her out on an iPad or is it the same experience starting out on a Mac? Or is it too much/overwhelming to get started on Mac/Xcode from the get-go? Great suggestion, thanks for sharing this.

I think it would come down to if you can get the lesson books in Xcode's Playgrounds (or if they have a separate Playground application) that you can in the iPad app. Those are most of the benefit right there.

Thanks, very helpful !

Also, one more thing, the Playground functionality on the iPad is great.

On Xcode it sucks (buggy, stops refreshing, etc.)

Kind of strange, because it's the same infrastructure...

TI graphing calculators boot to BASIC. I don't know about the newer ones but the old ones are extremely simple computers with Z80 or 68k processors and hardly any operating system, fun to program in BASIC or assembly language or C.

Modern kids might find them boring but they are great places to learn how a computer really works without piles of modern software cruft between you and the hardware. That's where I learned.

For those interested in hearing more about TI calculators and hacking on them, this episode of the Embedded.fm podcast was really fun, and there are a couple interesting links in the show notes: https://www.embedded.fm/episodes/259.

TI-BASIC was the first language myself and a few colleagues learned, by automating our algebra homework.

Duinomite: https://www.olimex.com/Products/Duino/Duinomite/DUINOMITE-MI...

You'll need a keyboard with PS/2 connector and a monitor/tv with a VGA port. And it does "power on to BASIC."

Cheap too...20 EUR.

There's also a "mega" version with added USB and composite video: https://www.olimex.com/Products/Duino/Duinomite/DUINOMITE-ME...

Duinomite is great, the only drawback of the VGA solution is the distortion on modern high-resolution screens, i.e. if you use the CIRCLE command the result is hardly a smooth circle.

The Kano kits come to mind in spirit, Though it's more of a guided cushier approach than just getting into basic. The basic idea is a Pi and it's accessories that you "build yourself" and then some optional add ons like a light grid display.

I think the actual coding Python and Javascript with a block formatting kind of like lego Mindstorms. Come to think of it you can use Small Basic on Mindstorms which might be interesting.

For the Kano the coding portion is web based and free if you want to take it for a spin, as well as their OS.



I really like the Kano, but my son was able to figure out how to get into youtube with it and it's become a "all youtube all the time" environment.

Been using repl.it and the "Python with Turtle" flavor this week and he's been having fun with it.

That's awesome. Repl.it ceo here. Check out our forum, there's lots of material shared by kids like your son. Here is one tutorial on pixel art with Turtle https://repl.it/talk/challenge/How-to-draw-Pixel-Art-on-Pyth...

Thanks! We will check that out tonight!

Yep, my daughter plays minecraft with it about 98% of the time. Not what I had in mind, haha.

At a technical level, JSFiddle or equivalent comes kind-of close. Set up a template with a nice big <canvas> element, then you've got a simple imperative API to draw stuff which really does come pretty close to what you'd get from a BASIC> prompt.

That said, I wonder if it's even possible to replicate the C64 (or equivalent) experience. Looking back, I think a big part of the "magic" was that there were relatively few distractions. Just you, the machine, and (maybe) some paper documentation or a magazine with a few listings [1]. Can that be replicated once you're used to network-connected computers that are gateways to almost unlimited amounts of video, colourful games, etc.?

(My child is getting to the point where I wish I knew the answers to some of this myself...)

[1] I'm pretty certain type-in listings were the biggest contributor to my learning, early on. That doesn't seem to be something that comes up terribly often nowadays (although I note that Zed Shaw's "Learn Python the Hard Way" is pretty specific about telling you to hand-type in the examples...)

In my opinion anything js-related is the furthest you can get from "power on to BASIC". I can say that for me it feels less enjoyable to have to rely on an external website (like jsfiddle), also requiring that you be able to write (very) basic HTML and maybe even CSS. I agree that once it's set up it can be very interactive, but it's non-trivial to get to that point

In the old days you saved up an extraordinary amount of money, bought a Commodore 64, plugged it in, and then had absolutely no idea what to do unless you had books.

So you went and got books or magazines, some maybe from the library, some from bookstores, and many of them might be for systems other than the C64. It wasn't uncommon for a magazine to have to cater to a dozen slightly different versions of BASIC: Apple ][, Atari, BBC Micro, PET, Sinclair, TI, Tandy, VIC-20 and more. I remember finding all sorts of interesting programs in magazines that weren't for the computer I had, so they were basically useless.

This was because a lot of BASIC code that did anything useful consisted of PEEK/POKE calls to manipulate memory, and as the memory layout of each computer was often completely different. Having a book about the Altair was of no help when trying to program anything but an Altair.

Even if you did get a book that had the right code, for the right hardware, typing it in was frustrating because the computer didn't ship with anything that resembled an editor. You just typed in line numbers and statements and hoped it all worked out. You could LIST your code, but unless you organized it well, you'd get lost quickly. Anything over a hundred lines became an unmaintainable mess of garbage.

So yeah, you could program, but you could only program in BASIC, and that language is one of the absolute worst. There's been joke languages that are more pleasant to use and more educational.

Today there's JavaScript and it works roughly the same everywhere, is thoroughly documented for free, and there's places to ask about coding that simply didn't exist when the C64 launched.

Going back is a mistake. Programming back then was a nightmare, it was an awful, discouraging experience, and I wouldn't wish it on anyone.

Presumably a lot of the golden-hued nostalgia here comes from the fact that you could program a computer, something that at the time was a relative impossibility for most people. That by typing in code you could make the computer Do Things, which can be thrilling.

The thing is today you have things like Arduino, the Pi, and others, where you can not only program them in sensible programming languages inside of civilized build environments, but you can make them interact with hardware in ways that really weren't possible on the C64.

For that sort of thrill, give someone a Feather board they can program with Micropython.

That's silly. Javascript requires all kinds of knowledge to get started; what does this code mean, how do you hook it into a page, what is DOM, etc. That's a lot to ask of a 10-yr old.

Meanwhile, any 10-yr old can understand this code:

  10 PRINT "Hey there Joe"
  20 GOTO 10
Boom. Functional program. Instant gratification. That will be the last program this person ever writes that provides such instant reward, but nevermind, that foundational idea that the computer can bend to your will is planted.

I agree with you. At a fundamental level, I suppose the same code in JavaScript would be a simple for loop and a console.log() statement that could be run from the command line using Node.js. It isn't quite as easy, but it teaches better programming practices and isn't that much harder. The DOM is definitely another story though.

Another problem I think JavaScript poses for beginners is the community itself. It seems like nobody is interested in perfecting existing libraries but are rather focused on reinventing their own wheels. For example, just for handling projects we have Grunt, Gulp, Brunch, WebPack, Parcel, etc. This kind of instability and fragmentation within a community creates a problem for new developers, because they don't know which direction to go.

I volunteer to teach women and children to write code. I've found that solid communities that embrace and continuously improve a small set of productive libraries and frameworks, such as Elixir, Phoenix, and Mix, make it much easier for beginners to learn and be productive. I do teach JavaScript as well, but I've reduced my focus to just the core language because too many students were overwhelmed by all the libraries and frameworks that solve the exact same problems and complained about that during the courses.

Show them how to access the Console in Chrome.

    alert("Hello World!")
(Infinite looping it could be annoying, though. Would you have to quit Chrome to make it stop?)

I think the browser console for evaluating Javascript is under rated for a quick and dirty introduction to program with an immediate payoff.

This is a key point.

The cognitive distance between power on and "10 print" is nothing.

The cognitive distance between all modern ways to teach programming is vast.

Not really. $('h1').html('Billy Named Emperor') to hack around with web pages is actually super easy.

'PRINT "Hey there Joe"' is a lot more obvious than "magic('magic').magic('Billy Named Emperor')"

It's all magic until you explain it. How is PRINT any different from console.log()?

On those historical platforms you're quickly going to have to explain what GOTO is and how it's different from GOSUB, and then that you'll need to plan out your program in advance so you have enough "lines" to write in what you want, and that if you mess stuff up, you can't easily renumber, so you'll just patch in a bunch of GOTO statements to work around that and...

JavaScript, ugly as it can be, is 100x simpler. You want to add a line of code? Add the line. Click run again. You want to write a function? Write a function. You want to do asynchronous programming? Promises aren't that mysterious now that there's await/async. It's all within reach.

Sure thing. All you need to understand is jquery, selectors, the DOM, method calls, inner HTML and in fact the entire context of web programming in which this command executes.

Pretty much exactly the same as print "hello world"

I can teach someone how to make a button blink in JavaScript in ten minutes. I don't have to explain what line numbers are. I only have to teach some very rudimentary HTML.

From there they can absorb more knowledge and do really cool things.

That BASIC program is garbage and nobody cares. Seeing your name on a screen doesn't carry the same thrill it did in 1985.

Show someone PONG today and they will wonder if you're playing a joke on them. Show someone PONG IN 1972 and you'd blow their mind.

You both have a point. When I showed a text-mode adventure to a kid, their reaction was "Really? Why would anyone play such a thing these days?"

On the other hand, getting started with toy twoliners involving a question and a simple arithmetic answer can spark some interest. The effect is augmented if what you type can have an immediate effect on hardware like in the case of Duinomite where the inerpreter is running on the MCU itself and doesn't need uploading like on the Arduinos or Mindstorms.

If you want to get kids engaged, Minecraft is the best learning environment out there.

You can get a computer that runs Lua in the game, and that thing can interact with devices and the environment.

You can write a couple of lines of code that spawns pigs. From there anything's possible.

Subjecting someone to the ridiculously spartan environment that is the READY prompt is the polar opposite of encouraging.

Interesting... I had no idea Lua was in Minecraft.

There's a number of mods for Minecraft that put Lua into the mix. One I was using (ComputerCraft?) had all the common UNIX commands implemented as things like ls.lua, so typing "ls" actually just ran a Lua script with the corresponding name.

You really couldn't get a more hackable computer.

These instances can have 4-16MB of memory allocated to them which honestly is way more than is necessary. They can make remote HTTP calls. With the right server settings they can even adjust the in-game weather to match the real world.

The possibilities are literally endless. A few lines of code can produce immediate results, and you can iterate and expand on that to make elaborate systems.

Unfortunately ComputerCraft is no longer developed, even though you can still use it on an older version of the game.

OpenComputers is actively developed though, and arguably a more fleshed out Lua mod than CC

You want the Lego set with a bunch of custom blocks to make the perfect model. Other people want the generic set of blocks.

That's called Minecraft and it's a thousand times more fun than BASIC.

It's also scriptable with Lua, so...

Sorry but none of that has anything to do with OPs request, except for where you say BASIC is terrible.

- Lack of resources (books, mags, etc) -- no longer a problem

- Platform differences and PEEK/POKE -- also not relevant. The Basic OP asks for would presumably have the necessary graphics/audio functions

- Typing is frustrating -- also solvable easily. Just because a system drops you into Basic (aka a shell) doesn't mean you can't have a decent editor.

I very much second OP's request. I'd love a laptop or fullscreen app for my young kids that is just an editor and interpreter.

Here you go: http://jsfiddle.net

An editor and an interpreter. Works in anything that can get a web browser going, which includes phones, game consoles, smart TVs, refrigerators, and amazingly even computers.

Going back to a world where free and open software was the norm would be a mistake?

Being able to buy one of a half-dozen or more periodicals with informative commentary on an accessible programming language would be a mistake?

Empowering a generation of STEM learners with a basic programming language centered around the bedrock of computer science would be a mistake?

Safely and easily gaining first-hand experience with low-level hardware engineering principles would be a mistake?

Not PEEKing and POKEing in Primary school is a mistake.

If you think BASIC was free and open have I got a letter from Bill Gates to show you.

GCC is free and open. Clang is free and open. BASIC is commercial, proprietary, closed-source software.

The "bedrock of computer science" is machine code, or if you're not a fan of reading and writing hex values or flipping physical switches on your Altair, then assembly. Everything after that is an abstraction.

Gates' copyrights on implementations of BASIC don't interest me. Blackjack, bubble sort and tower of hanoi in human-readable BASIC do.

C isn't suitable for most K-8 students. Explain malloc while I handle PRINT, INPUT, PEEK and POKE. We'll meet at memory registers and see whose student feels more confident.

You've created a layer cake of abstractions with your OS, advanced filesystem and C compiler (plus libraries). I presume a mouse and metaphorical desktop "icing" are included.

Your definition of "readable" is obviously a lot different than mine.

Consider DONKEY.BAS: https://github.com/coding-horror/donkey.bas/blob/master/donk...

Perl is more friendly and forgiving than that.

There are free and open BASIC interpreters and even compilers.

There are now, but this was not the case until relatively recently.

LOL what? BASIC has been around since before Microsoft was even a glint in Gates & Allen’s eyes. Since 1964 to be exact.

While many 8-bit versions of BASIC were derived from MS BASIC (1975) it was hardly Microsoft’s baby. Atari BASIC for example has zero to do with MS. Neither does TinyBASIC

BASIC itself is absolutely free. Certain implementations are not.

>The "bedrock of computer science" is machine code

It hasn't been machine code for at least two, maybe three decades.

I’m absolutely convinced that typing stuff in — carefully! — from magazines or books was one of the most productive bits of my early experiments with a computer (BBC in my case). I’m sure I’m not the only one who thinks this — for example, the “hard way” books seem to by trying to re-create this experience [1]. Spending some time typing code gives it a chance to percolate in a way that quickly glancing at it before “click to run” doesn’t.

[1] https://learnpythonthehardway.org/python3/intro.html

If one side is "Golden-Hued", the other side takes for granted what they learned along the way to get to the current state.

We abstract away the concept of memory addresses and pointers in some languages. Great! Until your program segfaults and now because you don't understand how memory addresses or layout work you can't tell what part of your code is causing the problem nor why it is a problem at all. Is the problem even in your code or one of the dozen module packages you imported because you were told to(they will explain the modules in a later chapter)? Why your object instance disappears between calls in an app because you didn't access it quickly enough or the 'right' way and the GC reaped it. WTF even is a garbage collector and why do we need it(again, they will cover that in a later chapter)

Modern computers are like airplanes. Why would you make a piloting student learn on an old, purely mechanical Cessna prop plane instead of a modern Gulfstream? The Gultstream is way safer, way faster and way harder to crash after all.

> In the old days you saved up an extraordinary amount of money, bought a Commodore 64, plugged it in, and then had absolutely no idea what to do unless you had books.

While I never got a C64, I did get a Timex-Sinclair 1000, a Timex-Sinclair 2068, and a PC clone in the early-to-mid 1980s, and all of them came with complete BASIC manuals as well as other system documentation.

Did it come with a mentor to help you understand all of that highly technical material?

Did you know anyone else that had a similar computer who was doing similar things with it?

> Did it come with a mentor to help you understand all of that highly technical material?

It mostly was written for an audience of non-technical users, since there weren't enough technical users to make a mass market.

The only mentor I had early on was my father (who had work done his way up from sales into an branch operations manager position for a farm machinery firm), who was learning alongside me.

> Did you know anyone else that had a similar computer who was doing similar things with it?

Yes, quite a few my age in elementary school did.

Lucky you.

Here the school districts were partitioned along different brands of computer. One would have Amiga, one Macintosh, the others a mix of C64/PET.

Mine had, for reasons nobody could ever explain, settled on the Unisys ICON system: https://en.wikipedia.org/wiki/Unisys_ICON

Nobody knew how it worked, and all you could do with them was look up books in the library or run some terrible typing tutor program.

Everyone's personal computer, which was extremely rare to have, would be some random thing. C64 for one person, Sinclair for another. At first I borrowed a neighbour's TI 99/4A. Later a loaner C64 which was better because you could at least copy games for it.

> Here the school districts were partitioned along different brands of computer.

And...what does that have to do with it? My elementary school had a handful of TI-99/4As. Oh, and a single PET. Others, sure, had different systems.

> Everyone's personal computer, which was extremely rare to have, would be some random thing. C64 for one person, Sinclair for another.

Yes, same here, except the “extremely rare to have”; most, but not all, of the people I knew from middle class backgrounds had at least one computer in the home. (My answer about similar computers was by class, not make and model; I didn't personally know anyone else with a Timex-Sinclair, though after I got a PC some other people I knew that did, too, but mostly several years later; people I knew had C64, TI-99/4 or /4A, Atari, Apple, TRS-80, and possibly some others.)

The reason that was a problem was someone who worked hard to figure out how the TI machine worked was dead in the water when it came to the C64. Apple ][ people couldn't help you with anything other than the most basic of questions, beyond that it was all arcane hacks to get anything to happen.

When the C64 was a thing I'd estimate 50% of the students I knew had an NES or other console (Colecovision!) and maybe 20% had some kind of computer, most of which were different, incompatible models.

Nobody knew anything about anything, and getting advice from professionals was never going to happen.

I got into programming to make games, and the platform agnostic BASIC listings were enough for me. The fanciest device usage I did was drawing pictures and making the computer buzzer play tunes.

I was going to say the web browser. It is pretty easy to start learning with HTML, than CSS and JS. There is immediate feedback and you can copy and modify sources from other places.

The benefit is that it is really quick to build something decent and useful.

I found the CG Maximite lately, which powers on to BASIC and has composite video or VGA out:


There's also the fignition which has a composite out and powers on to forth:


But does require assembly & soldering.

Colour Maximite is a lot of fun [1]! The BASIC environment it has is quite powerful, and it even runs a full-screen text editor.

[1] https://www.youtube.com/watch?v=XQA8lowEKOo

Beat me to it: I was going to post a link to the 8-Bit Guy's video as well.

There are, I believe, various versions available and if you just want something to learn and write BASIC programs on it's difficult to imagine a better place to start because it boots directly into a BASIC prompt, just like 8-bit microcomputers from the 80s.

> Plug it into TV, turn it on and you're in basic and can start programming.

No reason why someone couldn't create a Pi installation which does that - RetroPie boots into the game console screen, after all. BasicPie could just as easily boot into a Basic / Lua / Pico8 interpreter.

(Get a normal Pi install with X and set Scratch to be the startup/only X app? Would that work?)

In Ubuntu you'd just use console 1-6 instead of console 7. Console 1 is typically a terminal, while console 7 is typically a GUI. You could configure getty to start a REPL as a shell instead of the normal login shell.

> Like in ye olde computer days when you brought home your Commodore 64 and turned it on you were in basic.

Why not try, you know, a Commodore 64?


Hooks up via HDMI, powered by micro USB, and has two USB ports for keyboards and joysticks.

No longer boots straight into BASIC, but scroll to the right and hit enter and you're there.

There's also going to be the http://mega65.org/ which is a spiritual successor to the C64. It's completely open source, even the FPGA code implementing the 6502 (although the FPGA is most likely not going to be open source), and it has better specs than the C64, but it should still be compatible with the original C64 and its games from what I understand.

Any idea when the mega65 is going to be released?

I'm sure you could setup a machine with FreeDOS and boot it right into QBasic at startup. That'd probably be almost perfect; you'd have the relatively good built-in interactive help files, and all the graphics and sound APIs to actually do some cool stuff out of the chute.

I would suggest checking out the Micro:bit:


Not exactly the same as what you're looking for, but the idea here is to introduce kids to programming with a small, self-contained environment, and there is both a graphical coding environment and you can move to Python or Javascript.

Micro:bit has a lot going for it.

Comes with a 5x5 LED array, an accelerometer, two physical push-buttons, three capacitive sensors, and a bluetooth antenna, already on-board. It means you can start programming without having to plug in to a breadboard and wire up your inputs. You can also hang external sensors and actuators off of it, but the point is you don't need to in order to move beyond toy demonstrations.

It was designed specifically for education, so there are lots of beginner-oriented tutorials available, as well as educator-oriented lesson plans.

As fusiongyro points out, you can program it using three high-level languages. The graphical language lets you toggle to the Javascript version, so there's a clear learning path built-in. These provide high-level commands, such as "get the orientation", or "get the number of button presses since the last query", which makes programming it very straightforward.

It removes a lot of toolchain fussiness. Just run an online editor, or a desktop editor (Mu). These produce binaries that you drag onto the Micro:bit, which mounts to your desktop like an external drive. You can also program it from a smart phone or iPad.

You can also get Python onto it directly with uflash.


Couldn't an old (or a new?) HP graphic calculator do the job? It's not technically basic, but you can do tons of stuff on it in addition to arithmetics and function plotting - including programming games, etc.

Plus, it's organized as a LIFO stack. To do e.g. 2 * (2 + 2) you'd enter: 2, 2, 2, +, *. Which helps train the mind to think far ahead about what you want to calculate and how.

This is known as the Reverse Polish Notation: https://en.wikipedia.org/wiki/Reverse_Polish_notation

I'm curious why the 8-bit machines themselves aren't an option here; I'd recommend the Commodore 128, as it was the newest of the Commodore machines and had their most advanced BASIC (so you can actually do graphics stuff without directly manipulating memory) Finding a working one might be a bit more pricy these days than a Raspberry Pi, though.

Otherwise, I'd say the web is probably the closest thing; once you help them over the initial hurdles of setting up a basic site with a simple JS program that they can mess with, it's possible to do quite a lot, in an environment most kids are going to be familiar with; configure a simple Linux environment to open a web browser and a text editor on boot and there you go.

Just give them a computer running linux without going all the way to runlevel 5.

Bash is fairly expressive and gets you the basics of programming, and then you can easily use a more complex language fairly easily and have all the abstractions from bash that lets you build fairly useful programs without having to build complex UIs.

I too grew up with a "power on to basic" computer, in my case the ZX Spectrum. I don't think that people that did not have that experience at that age can truly get it. I was able to create graphics and play sounds with a very simple language. The text editor, the graphical display, the "OS", it was all the same thing. The manual taught you how to program in BASIC. It was an amazing tool of creativity and intellectual development. It was truly magical.

I know you mean well and I have nothing against bash, but I promise you it will not replicate that experience nor excite kids.

There's shell curses (https://www.ibm.com/developerworks/aix/library/au-shellcurse...) that is very similar to graphics programming on those machines, minus the sprites. You can even do opengl programming: https://github.com/nrdvana/CmdlineGL .

There are some python shells around (the developer of one posts here) that might make for a better experience than bash though scripts though, either way they'll learn some real world tools.

Your personal experience is not the only correct one. I assure you that the people coming before you, making their own computers out of chips and resistors with a soldering iron, would say the same thing about you. And people who grew up with Windows 98 say the same thing about people only exposed to iOS and Android, and so on.

I think you misunderstand me. You are talking about computers and technology, I am talking about crayons, paint, musical instruments... Things that you can immediately use to create without restrictions. There was a small window of time when computers offered that for kids. There is no reasons why this could not be achieved with modern technology, but somehow our current culture prevents it. I'm sure it will be reinvented one day.

They are all more justified than the person who claims Swift playground on an iPad is the pinnacle of CS for Primary School.

I understand, in a sense, what you mean (since I am of an earlier generation than the one which learned programming on that particular platform), but why should that necessarily be true? Hasn’t it always been the case that the current generation skips learning about useless lower layers used by older generations? How could it be that the layers you grew up are the special ones which are still useful, when all the layers which came before, which people at the time thought essential, have turned out not to be so?

I am, below, trying to imagine what an argument could be for any specific example to be worse than the previous ones.

One could make an argument that when the level of abstractions eliminate Turing completeness, they have eliminated an essential quality. (But this does not even eliminate Swift playground, I think, so in this case it does not apply.)

Or one could make an argument about a lack of program interconnectedness, which, I am given to understand, is very much a problem in modern smartphone and tablet environments. But I could be out of date and/or misinformed. Nevertheless, it would be a reasonable argument (and I don’t know if it applies to Swift playground on an iPad or not).

Very constrained environments, like Minecraft, can also be argued against on practical grounds – it’s simply too difficult to make something useful within them. Not technically impossible, just too difficult once you get up a bit in abstraction levels. In my opinion, this argument also applies, sadly, to BASIC: The lack of functions and other methods of abstractions is, I think, a killer.

Or one could argue (which I think I personally favor doing) that software freedom for end users is an essential quality which must never be lost, for reasons which are only tangentially based on what is good for learning. It is almost special pleading, but has its own reasons for doing so, and the logic, on its own terms, is sound.

But none of these arguments are insurmountable by some theoretical device and environment which avoids any or all of these specific criticisms. Therefore, I think that any argument based solely on the age and abstraction level would not be valid.

Despite being an open language, Swift (and Playgrounds) is an effort to usher children into the Apple tent.

BASIC (essentially any 3GL) never wore such a veil. To suggest discrete logic and IC-level assembly compares to issuing commands via the LEGO Mindstorms protocol perfectly illustrates the chasm between learning and understanding.

> Despite being an open language, Swift (and Playgrounds) is an effort to usher children into the Apple tent.

Yes. That is certainly a good argument against that specific example, and it is one I agree with. But it does not apply generally.

> To suggest discrete logic and IC-level assembly compares to issuing commands via the LEGO Mindstorms protocol perfectly illustrates the chasm between learning and understanding.

But learning and understanding what? Why is it (as I imply that your argument is) important to understand assembly-level instructions when it is not important to understand the underlying electronics? Why is this level special?

In addition to all the general arguments I outlined above, there is one additional argument to be made against assembly language: In today’s processors, I am given to understand that these assembly language instruction sets are largely a high-level language, emulated by microcode – the assembly instructions you write have very little to do with what the processor is actually doing in a modern hardware architecture, and therefore teach you exactly the wrong things about how a modern processor works.

Agreed. I'm a python beast, but really struggled with Assembly language in school. I'd have been better off with a ZXSpectrum earlier in life so I could've learned hardware. IMO high level languages (as insanely useful as they are) are similar to writing spells like a wizard and using assembly or even basic when you know all the registers...etc is more like a real science. Both are valuable, but I really wish I knew more about hardware.

Having a ZX Spectrum would in no way actually help you learn hardware. The only thing it would do is to reinforce its realness, so to speak, which would help to motivate you to learn it. But it would not actually help you learn it – the design and learning curve of assembly language is what it is, and having access to running hardware (compared to having an emulator) does not change that.

It makes it easy to learn the hardware because it has a simple processor and makes it dirt simple to access. Windows on the other hand runs on modern chips and it isn't easy to run assembly without 3rd party software and graphics is also not something a child can easily handle. I suppose a good emulator would be similar, but emulation is a little bit of a lie :)

Linux machines can easily be rigged to boot straight to a user, with LOAD81 in auto-start.


{{I like to pimp LOAD81 any chance I can get, because its simply a great idea from a rockstar programmer, and it could probably do with some eyeballs and patch requests from those interested in this particular subject .. it could easily, for example, become a next-gen PICO8 with a few tweaks (e.g., ipfs integration, lol...)}}

Way too complicated and bash has a horrible syntax.

https://googlecreativelab.github.io/coder/ Google has a sd card that you put into a raspberry pi (everyone has one of these hanging around, if not ask your friends for theirs) and with NO SETUP just hooked up to the internet you can learn full web development, NO SETUP!

Personally, I'd just get them an Apple II.

They're still plentiful and cheap to find on eBay, and it's exactly what you're looking for.

There are modern hardware upgrades you can find to use CF or SD cards in place of floppies, so old media won't be an issue, as well as modern ways to connect to an LCD screen, and even Ethernet cards if you want to go online.

And of course, the Apple II is supremely open and hackable, perfect for kids who want to have access to the entire computer.

I second that. I just set up an Apple IIgs last weekend and was making some small Basic programs with my son. He was actually really into it, unlike in the past when he was too young. He has had some exposure to Scratch so that may have helped as well. We didn't have any way to load or save programs, so I'll have to look into the cards you mentioned.

I have a CFFA3000 and an SDFloppy II. Both are great, but I prefer the CFFA3000 and use it regularly.

CFFA3000: http://dreher.net/?s=projects/CFforAppleII&c=projects/CFforA...

SDFloppy II: http://www.a2heaven.com/webshop/index.php?rt=product/product...

Another good option, the Floppy Emu: https://www.bigmessowires.com/floppy-emu/

An actual commodore64 is still an option


The mini boots straight to basic still I understand

Otherwise I'd recommend some free software and some tutorials, Udemy has a very good C# Unity course for example that can often be found at ~$/£10

This thing reviews terribly. I think it's more meant for nostalgia for the older generation. Also the keyboard is just for show which is quite sad

I think it will help once they release the new firmware that lets you more easily access disks stored on a USB stick. Doing LOAD "$",8,1 etc. is rather tedious with the virtual keyboard.

Also, they have promised a bigger version with a fully functional keyboard. That will be awesome once it's out. I'm waiting for it since it was actually the thing that made me join their crowdfunding campaign.

It boots to a loading screen from which you can select BASIC or a game

While that's what I grew up with, too, it's probably too isolated anymore.

Find a cheap laptop or desktop, or a pi, install Python3, and make IDLE easy to reach. For graphics, "import turtle" and later "import tkinter".

Grab any learning Python book. It's not that far from how we learned back in the day.

When we're building Repl.it we think about this a lot and we think we're building "power on to basic" for the cloud era.

Where the microcomputer in the mainframe era made computing more accessible, we think Repl.it is the microcomputer to the mainframe's cloud.

In fact most of our users that use it as a platform, and not just a repl, are kids.

Check out our hackernews-like forum where mostly teenager are sharing what they're building: https://repl.it/talk?order=votes

I learned on power-on-to-basic computers in ye olde days... Atari 800, Apple ][, C64, IBM PCjr. I have tried to teach my kids programming exactly the same way, I was looking for the same thing. I don’t think we can bring back ye olde days. My kids are actually interested in programming, but they don’t have the patience for command line anything. It was my wish to teach them the same way that I learned, but in retrospect, I don’t think it’s the best way for them to learn. My oldest (14 years) has been a tech freak since he was 3 years old, and he’s just starting to dig into text programming and command lines, but he won’t work on it for more than a few minutes before he’s off to YouTube. I was into that stuff by the time I was 10 and could do it for hours. Tablets and smart phones and Nintendos and Netflix and Steam add up to an environment where the choice to slow down and read console is too difficult for young kids.

If teaching is the primary goal and a power-on-to-basic not necessarily required, then there are so many great options for starting. Maybe too many. There are literally dozens of fantastic suggestions in this thread. Mobile tablets have a built-in TV and there are great apps for beginner coding. Some of the “no code” game engines are excellent for the beginner.

I looked through all the suggestions and didn’t see this one yet: open your browser devtools. You always have a browser, and it comes with a JS REPL. Chrome (for example) lets you save and evaluate snippets, and you can choose easy stuff to start with using only console.log(). It can be very similar to BASIC.

While not a complete hardware/software solution, there are some simple "OS'es" that boots directly into a BASIC interpreter, which should be possible to use on any old x86 laptop.

OS64: https://github.com/xlar54/emudore64

NopeOS: https://github.com/d99kris/nopeos

(Disclosure: I wrote - or rather glued together - NopeOS)

I recently found out about a Japanese computer called Ichigo Jam: https://ichigojam.net/index-en.html

Seems to be something between a Micro:bit and a Raspberry Pi and has Basic built in.

The site seems to be down (403) - but I found some related pages:

IchigoJam BASIC on Raspberry Pi - https://ichigojam.github.io/RPi/


One other thing to add to this request is that the machine boots around as quickly as the Commodore did. Modern PCs have clock speeds thousands of times faster than the C64, and boot up 10-100x slower.

A sub-1-second “boot to BASIC” time should also be added to the requirements.

Setup a raspberry pi to boot directly into pico-8 in full screen mode and you are ready to go.

Bonus points: leave the pi/raspberry login there for when they get old enough to google about VTs and figure out how to exit the matrix.

I will tell you why whatever you find won't feel like the old C= 64 no matter how good the properties are emulated.

It is the culture, and the music. You will never find an equivalent, so might as well consider yourself lucky, move on and let the kids beat their keyboards typing JavaScript into their browser in debug mode. If you want to give them something they can program as soon as it boots up, just install any Linux on any pc.

I'm seriously into retro-computing, having kept every computer I've ever owned since the 70's ..

So I admit my bias in this, but I have to say it: those 8-bit machines are still out there, can still provide endless utility, and are also integrating quite nicely with the modern era. In my 48k Oric Atmos, I have an 8G SD card-based filesystem. My CPC6128 has Internet access over the house wifi.

Old computers never die - their users do!

I definitely think Raspberry Pi is what you want.

If you want the login shell to go straight into programming, you could launch an interpreter or text editor on login using .profile or what have you.

Ludovic Courtes created a Boot-to-Guile image a few years ago, packaged using Guix:


There also is Armpit Scheme that is targeting single board computers


There is exactly this: https://basicengine.org/

The catch is that you have to build it yourself, and there is some surface mount soldering. I put one together and found it to be an enjoyable project.

Squeak, Alan Kay's environment for kids, evolved from Smalltalk, would be a very hot prospect if I were in your shoes.

"power on to genera" would be nice.

One of these days somebody needs to find the email addresses of the people that need emailing and make the effort to politely pester and track the progress of opening Genera.

I'm interested enough but can't guarantee low enough email latency on my end of staying in touch.

There is an app on the Nintendo 3DS called Petit Computer which is a basic interpreter.(It might currently be called Smile Basic). There are tons of tutorials and you can make simple applications to advanced games.

"Plug it into the TV" as a requirement would restrict the choice. Why not something that can be programmed through a PC, fun enough to attract the kids attention, with great instructional value, powerful enough to be used for serious tasks (LCD+wifi+bluetooth+buttons+battery=IoT terminal) and cheap?

Take a look at this:


I separate "power on to" and "BASIC". In my view, Python, is the language closest to "BASIC done right," so I am interested in "power-on-to-Python".

In classic "power-on-to-BASIC," the BASIC interpreter was a single shell that allows interactive instructions, OS commands, and editing (with line numbers). Even to run a game, one needed to know and type at least one BASIC command.

Python's shortcoming here is that one cannot easily run Python programs from inside the Python REPL. Check out this silly attempt at Python with line numbers and a READY prompt...: https://github.com/frankseide/basicpython

The big difference between a Python IDE and Scratch (and similar GUI-based systems) is that Scratch is a top-down approach that start with high-level objects/operations and gradually give access to more and more details. On the other hand, the classic BASIC computers, and a Python system, are bottom-up. Those would not allow self-written games to be flashy from the start, but on the other hand kids would gain a much deeper understanding since they have to build things up themselves.

Has any here played LittleBigPlanet (specifically, the sequel)?

I'm young enough to learn boolean logic from that game, and went on to develop a true love for programming.

What I bought for my kid and what is now taking over American schools is a Chromebook. I got one for maybe $140 that has an 11" screen and is super light and thin. Yes, it's a UI and yes they can surf the internet and play games. There's plenty of parental controls. Mine uses it for fun, but also to work on Scratch and use CodePen. I'm not sure teaching shell commands is actually very beneficial.

I would consider something like the BBC MicroBit[0] or Calliope Mini[1]. Similar to an Arduino but much more accessible for first time coders. And, as many have mentioned, the Raspberry Pi series.

0. https://microbit.org/

1. https://calliope.cc/en

If it was my kid, I'd use any single board computer or an old laptop (pro: integrated keyboard and screen, e.g. Dell D630), and install a Linux that boots straight into QB64: https://www.qb64.org/

I didn't test if it runs in pure Linux text mode, but if possible that's what I'd use.

xonsh from linux

A shell is an interactive programming environment (like basic) that is the primary interface for communicating with the computer. (remember Commodore BASIC was also how you used the computer)

Linux with auto-login directly into a shell with xonsh as default does exactly this. Go directly into a shell from a PTTY or set up your desktop environment to automatically launch a terminal.

I would consider https://www.nand2tetris.org/ for a similar from-metal-to-application understanding of computing. It is a ground-up course that covers the construction of a CPU using only a NAND circuit, and ends with implementing Tetris on top of this computer.

Applications are open for YC Winter 2022

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