> So, I do wish I learned to program in a better language, with data structures and a smattering of theory/discussion about algorithm efficiency. Probably a tutorial that progressed towards making something fun and interesting, like a simple space invaders-like or text adventure game.
What's important in the language choice is one that can grow effectively with the student. You want something that let's you start off with the ease of BASIC, but not be crippled by the limitations of BASIC (the typical BASIC students would have access to in the 1980s). That is, you want to be able to write the analog of:
PRINT "Hello World!"
But still be able to grow into more complex types, a proper notion of procedures (in particular permitting reentrance and recursion, and eventually threads). No goto statements or very constrained ones, as is typical in languages today.
But if you use many modern languages they're designed for industrial use, not for educational use or progressive learning. So with C, C++, C# (caveat, not true anymore [0] but still true in most educational material), Java, and others you have to enclose the above at least in a method/function and in Java and C# ([0] again) that method is enclosed in a class. You may or may not need an include/import type statement. So just to get a primitive program going is 4 lines of C (or 5 if you put `{` on its own line), two of which are hard to explain immediately to a novice (`#include <stdio.h>` and `int main ...`).
This is where Python works well as an educational language still. A student can be taught very basic IO and about variables in two lines:
name = input()
print("Hello " + name + "!")
And the only oddity is "adding" strings, which can be explained a lot more quickly than `#include`. Then you can start getting into other types (booleans), conditional logic, loops, and aggregate types. Classes and functions as things they use can be taught relatively early with their own class and function definitions following later.
[0] https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/tu...