Ask Lemmy
A Fediverse community for open-ended, thought provoking questions
Rules: (interactive)
1) Be nice and; have fun
Doxxing, trolling, sealioning, racism, and toxicity are not welcomed in AskLemmy. Remember what your mother said: if you can't say something nice, don't say anything at all. In addition, the site-wide Lemmy.world terms of service also apply here. Please familiarize yourself with them
2) All posts must end with a '?'
This is sort of like Jeopardy. Please phrase all post titles in the form of a proper question ending with ?
3) No spam
Please do not flood the community with nonsense. Actual suspected spammers will be banned on site. No astroturfing.
4) NSFW is okay, within reason
Just remember to tag posts with either a content warning or a [NSFW] tag. Overtly sexual posts are not allowed, please direct them to either [email protected] or [email protected].
NSFW comments should be restricted to posts tagged [NSFW].
5) This is not a support community.
It is not a place for 'how do I?', type questions.
If you have any questions regarding the site itself or would like to report a community, please direct them to Lemmy.world Support or email [email protected]. For other questions check our partnered communities list, or use the search function.
6) No US Politics.
Please don't post about current US Politics. If you need to do this, try [email protected] or [email protected]
Reminder: The terms of service apply here too.
Partnered Communities:
Logo design credit goes to: tubbadu
view the rest of the comments
I don't have a five-year-old, but if I did, I would. Worse he can do is wipe what's on it. Can just reinstall the OS.
Maybe also hand them a simple programming environment. When I was a kid, starting kids out with Logo was a pretty easy way to go. Pretty sure that current Linux distros have some Logo variant, lets you make pretty pictures. Dunno if that's still considered an effective route to get kids interested today.
kagis
It looks like, in Debian trixie, there's kturtle and ucblogo; the latter was written for university students, though. I've written code for ucblogo myself some years back, when I wanted to generate organic-looking desktop backgrounds.
For a five-year-old, if it's a laptop, I'd probably get something relatively-inexpensive (unless you don't care about the financial aspect). If you can install a Linux distro on it, can probably use any old secondhand laptop, even. Don't think that the brand matters that much, as long as one can get it up and running.
A point someone made before, though, on a Reddit discussion I was reading talking about how "kids these days can't use computers any more, just mobile OSes" -- kids used to need to learn to use a computer if they wanted to play video games, so they had a major incentive. A lot of games are accessible via mobile OSes today, so that may degrade the appeal. YouTube/TikTok are accessible on both.
There's a genre of programming video games. Steam doesn't list suggested age ranges, though, so shrugs.
https://store.steampowered.com/search/?sort_by=Reviews_DESC&tags=5432&supportedlang=english&ndl=1
I haven't played much by way of programming games myself -- I mean, I've got enough real-world programming stuff that I'd do -- so I can't recommend much personally. Played some Mac-specific Core War knockoff years back. When I got into programming, it was because personal computers shipped with an actual -- if simple -- programming environment built into it.
Problem is, what you're talking about is really a child-rearing problem, not a technical problem. I don't know how one makes engineeringy-stuff appealing relative to non-engineeringy stuff. I didn't have a smartphone with YouTube and TikTok and a huge library of video games as a kid.
I did Logo back in the 80s on Apple ][s and I still remember it. Definitely recommended and I'm surprised that schools don't try to incorporate things like this more.
So, I don't know exactly what's happened with instructional languages, but my guess is that they may be trying to use languages that have broader real-world applications, even if they're somewhat more-complicated. Logo is great in terms of having a low bar to letting you do something fun...but it also doesn't see a lot of real-world use. I've seen some programming games using Javascript, for example.
Not "first programming language" stuff, but on the subject of instructional languages...
Around the mid-late 1990s to early 2000s, it was common for a lot of computer science courses to be taught in C++, since it was a commonly-used "serious" applications language. If you took an intro computer science course, you'd have good odds of doing C++, maybe blending into Java towards the end of that period.
I remember eating dinner with a Stanford University computer science professor once, and he was talking about how he was much happier teaching intro students in Python. The problem was just that C++ has a lot of stuff that's designed to help programming languages produce performant code or scale up, but which added a huge amount of complexity as an instructional language. With C++, he was spending more time helping students learn the language than the concepts that he was aiming to teach.
Now, okay. C++ (especially C++ in 2025, as it used to be a considerably-simpler language) is a complicated programming language. A lot of that isn't stuff that the compiler will handle, either, and stuff that the programmer needs to know to avoid screwing up.
A lot of error-checking happens in type-checking using templates, and at least with the compilers I've used -- and maybe things have improved -- the errors are stupendously-unreadable, where you can get the compiler telling you that half-page-long templated type A is incompatible with half-page-long templated type B, and not trying to reduce the error to just show the differences.
C and C++ also expose some of the underlying bare metal, and effective debugging means knowing something about the underlying, in-memory representation. It really is a huge bar to overcome to "writing useful software".
C++ inherited C's preprocessor, so you're actually needing to learn a macro language (which has some odd quirks) as well, and understand that you're working with two languages.
C++ has gone through several "paradigms". Originally, it was "better C", then more-OO stuff, RAII-structured OO, what looks to me like some kind of stuff with implicit static typing akin to the ML family today. I kind of like C-style OO code using PIMPL. But point is, if you're trying to learn a language and documentation at various dates has pretty different ways of writing code, that's another pain to dig through.
You don't have to know (all) of that to get Hello World working, but it also shows up pretty quickly.
I wasn't sure that I entirely agreed with the guy, because I think that part of what a lot of people were doing in Python was writing incorrect software that there just wasn't a strong static type-checking system to catch. I mean, maybe he didn't care about that in terms of getting across his topics, but I do think that writing rigorously-correct code is a good habit to get into for most fields of software, though it certainly matters more for some than others.
Now, that's C++-versus-Python. My guess -- and I haven't looked recently -- is that neither is probably the "first language of choice" these days in schools. But while I don't know if I'd agree with the guy as to Python being a great option -- I think that Python makes a great language on Unix sitting halfway between shell scripts and C -- I think that his broader point holds, that there is a valid point that keeping the bar down to getting something up-and-running is truly valuable for learning.
I kind of wish that someone would take a major modern "real world" applications programming language, something like Go or Rust or something, and then make a stripped-down version to help introduce students to concepts, with the idea that they'd later transition to that "larger" language, but to try and get the barrier down as far as possible from the "sit someone who has no idea what they're doing" to the "can make interesting output" stage.
Like, what changes would it take to make it pretty easy for a six-year-old to be writing something that is either a subset of Rust or something that can mechanically be transformed into a subset of Rust? What do new learners find confusing? I mean, if you had to ruthlessly cut anything, across-the-board, what would come out?
And OP, sorry, I know that you're mostly looking for basic computer familiarity, and I'm kind of heading off specifically down programming language learning, but I do think that that's an interesting issue too.