Scratch is by the the most popular block-based programming language in the world. It is simple enough that elementary students can learn from it but powerful enough that I have used it to teach advanced algorithms. It can also be connected to external hardware such as MakeyMakey and the BBC MicroBit to allow students to explore physical computing.
There are many resources available to help teach scratch, including the website above. Here are some more:
Kano guides students through individual projects called "Challenges"
Codespace connects directly from the Chrome browser to the BBC micro:bit hardware controller.
Online Programming Environments are ideal in many scenarios because they offer one huge advantage: portability. A student does not have to sit at the same computer every time or carry a USB drive. They can log in from any computer in the world and continue working wherever they left off. In addition, you do not need the IT department to install anything on the computers. You just need to make sure they can access the website.
One huge advantage of CodeAnywhere is that workspaces can be shared between students for pair or group programming
"Trinkets" are Python code snippets that can be shared publicly or with specific people, remixed and saved to your own account. Really useful in a classroom environment, especially if students have Google accounts they can use to log in and save their creations.
Repl.it has code spaces for dozens of languages. Free accounts can not have private workspaces.
HTML, CSS and JavaScript. Can share "Pens" with students to edit and hand back in. Also has "Professor Mode" so that students can follow along on their own screens while you change code.
Create apps for both iOS and Android in your web browser. Really great tutorials all the way from your first app to publishing on Google Play and the Apple App Store. Includes a Thunkable "Live" App for your phone so that you can see what your app can do as your progress. This is what the "Girls Who Code" program uses.
Block-based programming environment in your browser creates Android-only apps. Great for getting started quickly, but runs into limitations with file sizes, etc. If using in a school environment without administrator access, getting apps to your phone can be a pain.
The official, full-fledged IDE for developing Android Applications. Runs on your computer, so you'll need administrative access for installation and the first time the program is run. If you want to build a professional Android app (or are teaching students how to do so), this is the way to go. Code is in Java.
Swift Playgrounds is a way for students to quickly develop iPad apps on the iPad itself.
The official, full-fledged programming environment for iOS.
Sometimes students need an IDE.
A bare-bones Python editor that does not require administrator access to install!
Another bare-bones Python editor that does not require administrator access to install!
PyCharm EDU - https://www.jetbrains.com/pycharm-edu/
JetBrains has developed a free "education" version of its PyCharm IDE. One of the nice features is that it integrates with Stepik so that you can create tutorials and assignments and Stepik will evaluate the solutions.
The industry standard for all languages except Java. Everything you need, and nothing you don't.
The industry standard for Java programming, but also used for many other languages. It's the 10,000-pound gorilla that everyone else is competing against.