When I learned to code you had the manual for the computer and it contained so much information that was alien to you - but then you'd start with BASIC and learn to use that to do a few things. Then some more of the information in the manual would start to make sense and you'd start to poke values in to memory locations to achieve things you couldn't do directly in BASIC. After a while you'd start replacing the slow parts of you BASIC program with little machine code routines (worked out from information in the manual). After a while you knew you machine inside and out.
What made that all possible though was the limited scale of the computer, while modern computers are essentially the same as they were back then, they're on an entirely different scale which makes it impossible to hold it all in your head at the same time.
These day's beginners would better served by learning the logical patterns of programming, which I think are easier to see in modern scripting languages.
JavaScript: Cool language, but I was not excited about all of my work happening in a web browser. I wanted to make imperative programs, but most JavaScript tutorials were focused on enabling little DOM manipulations that were not very exciting to me. Plus, the heavy focus on Async programming went over my head. If NodeJS was around when I was first dabbling with JavaScript I probably would have stuck around with it more.
Python: Probably the best thing to introduce to a kid these days, but I used a shared family Windows computer with restricted users and setting up environments and package managers was always a pain.
I ended up spending a lot of time with Scratch, mostly for the collaborative online community.
Overall my trajectory was BASIC256->Scratch->C++->Python/Java/everything else
I think the trade-off is that Python has an immense ecosystem - libraries (e.g. PyGame Zero), education material, people. Plus you can point to real-world examples of people building stuff with Python - you can make actual money with it. I'd be worried that teaching BASIC puts them in a niche - one where they make progress more quickly, but struggle to get out of.
I'd think that learning BASIC then Python (or Ruby, PHP, JS, whatever) would still be a lot easier (at least for a 10 year old kid) than starting with one of the latter languages directly, due to the incidental complexity that all of those have. Most pro developers will be able to work with more than one language anyway.
This, pretty much. Of course it would be even simpler to start from a language where the only "type" is the machine word, like assembly or some varieties of FORTH. A language like BASIC adds only a slight amount of complexity, for a sizeable gain in ease of use and intuition.
Kids are rarely interested in implementing data structures/algorithms efficiently. Instead, they want something more visually appealing, like graphics or 2D/3D game. Python is more "battery included" on this aspect.
I think even something like Python might’ve been too subtle for me at the time.