People underestimate how important BASIC was back in the 1980s. It was the lingua franca of the 8-bit machines. Magazines had dozens of pages of BASIC listings in the back of each issue, programs you could type in yourself. Half the articles were descriptions of one of those programs. And books titled '50 BASIC Games" which you'd type in (and debug the typos of) yourself.

https://mastodon.me.uk/@coprolite9000/111790433154125033

Javascript COULD have become this for a new generation. Why it didn't is its own story...

Coprolite9000 (@[email protected])

@CatherineFlick @bbcmicrobot PC Gamer, too! https://www.pcgamer.com/mastodon-users-are-crowd-running-programs-on-a-bbc-micro-emulator-in-2024-and-the-results-look-as-spectacular-as-they-did-in-81/

mastodon.me.uk
@landley I tried to teach JS for a few years at a summer program for high school girls. But it was frustrating because it's hard to do anything visual in JS without understanding HTML and the DOM. So I ended up writing a lot of wrapper functions, which meant that I was teaching my wrapper functions more than I was teaching JS programming.
@akkana Oddly, the most effective teacher of this stuff seems to have been the "neopets" website. I have no idea why, but every "women in web design" podcast or similar I've listented to, the interviewee reminisces with the interviewer about both getting their start on neopets...
@landley
One of thecourses I taught at St Eds was an HTML+Javascript course - we had a lot of fun with JS but I don't think any of them ever used it again...
@landley
That's one reason I picked up an Agon Light 2. I like having an 8 bit computer around that boots up to BBC BASIC...
@SweetAIBelle When I was 11, the commodore 64 said "38911 basic bytes free" at the top each time you turned it on. (Instant on back then, too. And it took me a while to understand the concept of computer viruses because the OS was in ROM, you could always just turn it off and back on.)

@landley
Yep! I didn't have a c64, but I did have a TRS-80/Tandy Color Computer 2/3 with 16k->128k with a tape player hooked up to it.

I remember getting this book, along with the tape. Lots of fun.

("You have died a horrible death. I hope you had fun though!" is engraved in my memory...)

https://colorcomputerarchive.com/repo/Documents/Magazines/Rainbow%20Books/Rainbow%20Book%20of%20Adventures,%20The%20(Searchable%20image).pdf

The Agon's this neat little combination of retro & modern, having a eZ80 processor, but connected to an ESP32. Instant on with basic, I can get it to run Infocom games, and it can be convinced to do CP/M (though I haven't gone that route yet)...

@landley
Oh, btw, you can find some of those books of basic programs online these days...

http://vintage-basic.net/games.html

https://www.atariarchives.org/

Vintage BASIC - Games

@landley @SweetAIBelle I kinda want that immediacy and "clean slate reboot" option because I never had like a system with a "Boot ROM", but the Idea is growing on me...

https://www.youtube.com/watch?v=JIEPqD4luG8

Still the world's fastest booting PC in 2021?

YouTube

@landley *nodds in agreement*

I guess #Python tries to be the modern #BASIC and the #RaspberryPi #Pi400 tries to be the modern #ZXspectrum but even then the comparison falls flat because outside of #Linux distros, most OSes don't come with a preinstalled Python interpreter - espechally not #macOS & #Windows, so we don't get that cohesion.

#JavaScript and #WebDevelopment - espechally on the #FrontEnd - kinda went overly complex, thus #JS failed to become a mass-adopted languague outside of bloated "#WebApps" that literally ship a whole #Chromium (like #nwjs / https://nwjs.io ) and turn something that should've been measured in Kilobytes if maybe a few Megabytes into hundreds of Megabytes if not Gigabytes of #bloat to be shoved onto a device…

And whilst one can shim that down significantly by relying on #WebView as #API...
https://f-droid.org/packages/de.monocles.browser/

...This comes with the can of worms that is #Android #Updates and #Security Patches for devices...
https://docs.monocles.eu/browser.app/#security_issues

...which have an absurdly short lifecycle (usually less than 2 years, #Fairphone being one of the few exception!) given flagship smartphones being solid in the 4-digit territory, when equally or cheaper priced business laptops get 3 - 5+ support...

The abundance of computing resources like bandwith, storage, RAM and CPU sadly have resulted in increased #Enshittification, where things feel slower and less responsive than previous versions in spite of sometimes exponentially more resources at hand.

In many cases a lot if developments feel like regressions in terms of UI, UX and overall efficiency, and we see the digital equivalent of #SuperUselessVehicles being made...

That's not the fault of JS - a language isn't a sentient being nor being responsible for even existing - but ut's like introducing alcohol to someone who had never drank anything by giving them a double shot of Absynthé: It ruins it for them...

NW.js

nwjs

@OS1337 Python sheds its user base every few years like a snake shedding its skin. (Python 3.6 is too old to build QEMU.)

The advantage of JavaScript was it's built into every web browser, and web browsers were everyone's window onto the world back before phone apps.

8-bit programming was like haiku, every letter counts and the constraints were where the creativity arose from.

We still teach kids the alphabet, then words, then sentences, but we don't teach 8-bit programming, then 16/32/64.

@OS1337 I don't know what the answer looks like here, but ontogeny recapitulating phylogeny is basic pedagogy, and if high school is going to be teaching out of a 20-year-old textbook then 5 year old language runtimes being unusable in common real world deployment disqualifies that language from having _any_ educational purpose.

@landley Sadly we don't teach kids anything in that matter (at least in #Germany from my observation)...

I literally met a highschool graduate in 2019 starting and apprenticeship in an administration / accounting role and they literally confessed to me that they didn't know how to use a Computer at all.

And I'm not talking "How to use Linux/macOS/Windows?" but like "How to turn it on/off?" "How to use a Keyboard and Mouse?" and "How to login?"...

I wounder how this person even got their university eligibility without having ever touched any computer at all.

And that's the state of #Education: People get groomed into being #Users and #TechIlliterates!

@OS1337 College taught me Pascal instead of C. When I was teaching community college they taught Java instead of C. I'm told if you really insist, these days they'll teach you C++ instead of C.

C++ developers foam at the mouth when you call C a portable assembly language, because it's an advantage of C that C++ will never have. They insist it can't possibly be so, and use the optimizer to introduce undefined behavior to retroactively justify their position.

C++ keeps trying to add simplicity.

@landley I mean, C is being used instead if C++ in many cases because predictability is often more useful than object orientation.

But to go back at "universal languague to get shit done with" I think #bash is the closest to a modern-day #BASIC, with #fish basically trying to take that idea and make it more user-friendly at the cost of simplicity under the hood.

But #C is the standard I got confronted with at University, because at the code level it is portable and it doesn't care if you target i386, arm64 or 128bit RISC-V:
It's the compiler's task to turn a hello world into a native executeable for those...

@OS1337 @landley
C plus, say, raylib could get you a fair way.
https://www.raylib.com/

The olcPixelGameEngine header-only library's also good for a quick library to do stuff in...
https://github.com/OneLoneCoder/olcPixelGameEngine

raylib - example

This is a small example of what you can do with raylib

raylib
@OS1337 @landley I don't think Python is trying to be the modern BASIC. It's trying to be (and is) a useful language for a wide variety of situations, with a slight emphasis on ease of use over performance when necessary, and to some extent those goals probably align with the goals of BASIC back in the day which is why they seem somewhat similar, but I doubt that it goes much further than that.

@diazona @landley OFC #Python does that stuff exceptionally well and can be used as a tool to get things done - like doing pull backups from multiple machines over SSH...

Not that it's impossible to implement that in #bash or #fish, but as a simple "multitool" it works great, as @fuchsiii showed me several times...

Granted, you don't get all the fancy bells and whistles from like a Java application or C, but Python does wjat it's designed for quite good...

I only tend to use bash as sysadmin because installing a new shell/command interpreter is like a big no-go in critical infrastructure and being able to "write once, runs on all machines I'e to care" is a big bonus compared to fish or Python.

@landley I think the closest thing to BASIC we have right now is Lua, mostly because it's the scripting language of most fantasy consoles, and it irritates me just like whenever I have to deal with BASIC
@landley I really wish Python had found a killer app to make it the beginner's programming language of choice, but the whole reason why BASIC was so big back then (a dearth of ready-made software, people with the principles that computing should be something that the masses do, rather than consume, The lack of other viable options for a beginner's language...) is kinda why we'll never get another one, even though we have the resources and techniques to make something that works now.

@polyote They had plenty of killer apps. They also had developers writing blog posts analogizing the python 3.0 transition to the kubler Ross stages of grief.

https://snarky.ca/the-stages-of-the-python-3-transition/

Which is pretty much how the Python 1.0->2.0 transition went back around 2002, except their promises back then were that they'd never have to do it again.

Meanwhile I haven't been able to build QEMU from source since 2022 because my debian buster from 2019 (still supported through June 30) only has python 3.6.

Where are we in the Python 3 transition?

The Kübler-Ross model [https://en.wikipedia.org/wiki/K%C3%BCbler-Ross_model] outlines the stages that one goes through in dealing with death: 1. Denial 2. Anger 3. Bargaining 4. Depression 5. Acceptance This is sometimes referred to as the five stages of grief.Some have jokingly called them the

Tall, Snarky Canadian
@landley The nice thing about being a hobbyist who tries to program for fun is that I don't have any legacy code to deal with
@landley I'm currently trying to find my sea legs again by going through an old 'learn python' book for kids that was written for 2.something, only I'm doing everything in python 3.something, and oh god python's so much better than lua

@polyote s/better/bigger/

Their standard bindings have a very large amount included by default.

Imagine libc.so also included libx11 and zlib and openssl and libgtk and mysql and audacity and opengl and ncurses and a dozen more, all in a single library. You can't select a subset of that, the whole thing is defined as being there always and everywhere.

@landley And python's syntax doesn't annoy me with weird little differences just for the sake of being different.

Also, arrays starting at 0 is really nice for game math

@polyote @landley does #Python at least do #tabs properly or do they still insist on using #spaces?
https://www.youtube.com/watch?v=V7PLxL8jIl8
Silicon Valley - Tabs vs Spaces War

YouTube
@OS1337 @polyote last I checked they would handle either but warned about mixing them because indentation level determines grouping and the number of spaces a tab expands into is only loosely defined.

@landley @polyote so I guess I can finally use Tabs... Yay!

Now #YAML needs to follow suit or just die out...

@polyote @landley #Lua is definitely an upgrade in some cases tho.

Like #neovim using it instead of #VimScript...
https://www.youtube.com/watch?v=c4OyfL5o7DU

Granted I use #nano and have to get used to #kilo for #OS1337 but still...

Neovim in 100 Seconds

Neovim is a fork of the keyboard-based text editor Vim. It is focused on extensibility and integrates the Lua programming language for easier scripting. #pro...

YouTube

@polyote If only it had an English development list instead of Portuguese, didn't make you buy a paper book to learn the language basics, had standard posix bindings as part of the base language...

I bought both books and tried designing a busybox re-implementation in Lua back around 2009. I stopped enumerating missing bindings at seven extra packages I had to install.

If they assume you're going to extend it in C to ever use it for anything, why not just use C?

@landley Yeah, Lua's seriously irritating, both at your level, and at the hobbyist/dabbler in programming level as well. I recently discovered Pyxel which uses Python, so I'm probably gonna play around with that as I get back into fantasy consoles

@polyote Which is a pity because Lua was quite possibly the most elegant base language I'd ever seen.

I vaguely recall they managed to make returning null instead of throwing exceptions work, had a single container type work as both an array and a dictionary, and various other really clever things like that.

They just... didn't give it bindings. (Imagine C without libc.)

Java had applet and application context (2 standard sets of bindings), node.js was an application binding for JavaScript...

@landley @polyote #Lua is the #1 scripting language for #Games for a good reason.

And some games solely survive on the fact that to mod them one only needs to shove in Lua code and assets into a folder and run them.

https://www.youtube.com/watch?v=d8EEzkZ4vzk

Welcome to STALKER! Which GAME and MOD should you Play?

YouTube