I second that. Go instantly came to mind as a fantastic beginner language.
- Go is also inspired by Pascal, but it has more of a foothold today, it shares the simplicity and the syntax is more natural and convenient than C and similar.
- It's a light language. You can approach it in terms of just functions (procedures) and data, as opposed to say Java (which unfortunately is one of the most used languages in to teach programming).
- The tooling is approachable, it compiles fast, there is no friction when it comes to automated testing, you get a static binary out of it etc.
- The std library is comprehensive and very easy to use. You can teach a ton of concepts with just that without ever having to worry about third party dependencies. A full web server, a CLI etc.
- It's low level enough so you can teach a bunch of important concepts such as pointers and constructs around pointers, allocation etc.
Good idea, my project is on Go right now. Will try teaching it and come back...
Nitpicks:
> compiles fast
That is totally irrelevant for beginners, as their programs <100 lines long.
The best would be not having to compile at all.
> as opposed to say Java
Not really a big problem, actually. I watched how people learn Java in college (I was a pro at the time so helped them) -- they usually get main() definition from professor, and then just copy that file around. They write everything right in main() or in other static methods, so not a biggie it's all wrapped in some mystic "class Main {...}". But I think it's much better that:
1. They have to write types for all variables and no implicit conversions made.
2. If it's not in autocomplete -- it doesn't exist. Compare that to Pythons "len()", or Go's "append()" (and explain why result of append() needs to be assigned if it works without it).
- Go is also inspired by Pascal, but it has more of a foothold today, it shares the simplicity and the syntax is more natural and convenient than C and similar.
- It's a light language. You can approach it in terms of just functions (procedures) and data, as opposed to say Java (which unfortunately is one of the most used languages in to teach programming).
- The tooling is approachable, it compiles fast, there is no friction when it comes to automated testing, you get a static binary out of it etc.
- The std library is comprehensive and very easy to use. You can teach a ton of concepts with just that without ever having to worry about third party dependencies. A full web server, a CLI etc.
- It's low level enough so you can teach a bunch of important concepts such as pointers and constructs around pointers, allocation etc.