I'm trying to illustrate the differences between the four different type systems -- static vs. dynamic typing and weak vs. strong typing.
- Dynamic + weak = JavaScript
- Dynaimc + strong = Python
- Static + strong = Java (is there a good purely interpreted language for this? The Java "compiler" can be annoying without a framework like Ant of Maven)
- Static + weak = ???
For static + weak the one that is most immediately apparent is C++, with operator overloading, pointer arithmetic, and, frankly, the ability to treat almost any data type as some form of number, it seems like it would be a very clear example of static typing and weak typing. But, it is also incredibly complicated, especially if I want to teach a beginner.
What alternative teaching languages are there for beginners which are both statically and weakly typed? Ideally something which is easy to install and get running with minimal effort? (Even more ideally, something which supports OOP in some form?)