Why do schools teach Scratch instead of more commonly used programming languages (C, C++, Java, C#, Python etc)?
put on hold as primarily opinion-based by ratchet freak, durron597, jwenting, Ixrec, gnat yesterday
Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.
Early success is a great way to encourage further learning of something. A tool like Scratch allows kids to very quickly take their ideas and display them on screen with user interactions and graphics and the like, which would otherwise (in a traditional language) take a number of hours to do.
The whole process of creating things in Scratch is fun (I've watched groups of beaming 8-13 year olds collaborate on new ideas and ways of doing things) which brings them back to use it again, but most importantly it teaches important skills like logical thinking, functional decomposition and (more generally) a basic understanding of some of the fundamentals.
Of secondary importance (to the kids) is that it doesn't feel like learning in the way other educational tools do. They tend to view it as a fun creative task with results they can show off to their friends.
Each of the things I (briefly) covered here and the material in @meisterluk's answer combine to create an environment and language which is stimulating and fun, but also an effective teaching tool.
Of course Scratch isn't a tool for programmers. It was never meant to be. It's purpose is in introducing kids to the fundamentals of programming, without being intimidating like a traditional language can be.
The other side of the coin here is to look at why we don't teach more commonly used languages. Honestly, I think the #1 reason for that (outside of early success) is simply that the syntax is awkward, unfamiliar, unfriendly and frankly intimidating.
I asked a question about teaching kids the syntax of programming languages which has some interesting answers and discussions on the topic. I think the essence of the answers to that question is: it's not easy, because it's not natural.
The question linked is focussed around teaching kids in small groups of maybe 2 or 3, but quite commonly 1-on-1. Of course, this is almost invariably not the situation in schools. Instead, the environment is likely to be 1 teacher with 20+ students. Leaving alone the issue of the adequacy of training of IT/Computing teachers other than to say it's not likely the teacher will be a developer his/herself, this environment and teacher-student ratio isn't conducive to teaching something so obtuse and weird to children.
However, an environment and language like Scratch is a great tool for all the reasons outlined above, with the addition that its easy for teachers to learn too!
Programming languages used in the industry have certain implications. One of the most obvious ones is that you have to type text to write programs.
Scratch has a more visual approach and even children under the age of 8 are writing scratch programs (recognize that some of them cannot even read properly). Secondly typing on QWERTY keyboards is often not the first interface they learn for interaction with computers. The Catroid project provides a Scratch port for mobile devices such that children use the touchscreen to write programs.
Finally, the language probably is not the most important part about the project. Children use the website to exchange and remix projects with other children. The current Web does not provide such a network for children for exchanging programs in "proper programming languages" so far.