if you are trying to learn software engineering it is not a good language to start out with
Curious what options you would suggest instead? I’m an old C/++ embedded diehard, but I do use Python and have been considering it as the next step for my 9yo daughter after Scratch.
Python feels like the modern replacement for Basic that I grew up with as a kid. Interpreted, garbage collected, good library support, sane typing and not too wordy or confusing. Lots of options to do fun things with it from games to robots.
IMO for a young beginner the C-likes are too strict and segfault-y, Perl is too permissive and could breed sloppy habits, Basic is obsolete, all the web languages are way too application specific, I haven’t had a chance to get into Rust yet, and fuck Java as a matter of principle lol.
Thanks for your input, C# is a language I never really considered but it does sound like a good middle ground and possibility a good successor to Python for her. Very popular, powerful and a better approach to a “true OOP” language than Java IMO. Though as you state modern Java has come a long way from its origins.
I see you’ve been reviewing my Python code, lol. The structure of the language does lend itself to using globals as a shortcut when they shouldn’t be… And as a primary embedded dev I will admit that I’m already a heavier user of globals than most. But I agree being able to declare global variables inside a function is pretty gross, as is the scoping/declaration issue where you can easily end up with global and local variables with the same name without even throwing a warning.