Regarding simple languages designed for teaching. I&#x27;m a big fan of the use of tools to let you program in a sane subset of a real world language. E.g. you can still run your JS anywhere, but if you enforce various jshint style rules on yourself, you&#x27;ll generally be much happier. An even stronger version of that could be used to train people by catching things that are odd but not definately invalid. Later those training wheels can be loosened or removed totally.<p>A possible side effect would be to generate better error messages on syntax errors etc., in many languages these are actively unhelpful to beginners, pointing away from the root problem.