I started learning programming with C and little bit of C++, before I started working on real life projects in Java and C#. Since then, I have dabbled in Python, ML, Racket and more recently Clojure. So what did I learn from all this? It is best to learn any language by learning the concepts or the \ how the language implements/solves that concept.
For example, teaching the general concept of "environment" some declaration resides in helps understand any languages "scoping" behavior more easily.
So, the bottom line is teaching any language by way of 'programming language concepts' and just using the language to realize those concepts would go a long way.