Way back in the late 90s I did my PhD on introductory programming languages. At the time it made me something of a target. Everyone had an opinion, everyone knew what the single best solution was, and there were at least 50 “only logical” choices.
These days I hesitate to answer when someone asks me what the best introductory language is, because it is so very dependent on the cohort of students, and on their expectations. One thing I do know for sure, though, is that the most important factor is motivation. If you have a cohort of kids who are keen to develop games, then go with something like gamemaker, because it will send their motivation sky high. With high motivation you can achieve almost anything.
If you have a bunch who are keen to be serious coders, Python is an excellent intro, because it has myriad real world applications, libraries for absolutely everything, and it has a nice, clean syntax that makes writing simple programs fast and easy. It’s a low entry point with real power.
One thing that I have found to be catastrophic is to give kids who want to write serious code a block-based or non-textual language. Not because these languages are fundamentally not powerful – many of them are Turing complete, meaning you can theoretically do anything in a block based language that you can do in any other language. But you can argue Turing completeness until you pass out from lack of oxygen, students who want to do serious code will see block-based languages as kiddy toys that are utterly beneath them, and it will deal their motivation a catastrophic blow. Maybe not an irredeemable blow, but you are making your life, and theirs, way more difficult than it needs to be.
Kids who are serious about CS want to come to grips with real languages first and foremost. Block based languages turn them off, and getting them back is an uphill battle. Python has enough syntactic tricks that working with lists, and even files, is easy to leap into, yet enough power that real applications can be built. My year 11s have done amazing things with Python, and some of them have never coded before.
The best way to motivate high school kids is to persuade them they are doing something real. That’s incredibly difficult with an interface that looks like it’s for primary school kids.