Oh I had a very interesting class in eng. school about programming languages paradigms. About subtle differences between different implementations of the same concept. Ada, C++, Java, C# (could've gone to functional languages but the lesson was painful enough with these 4). Type-erasure, explicit/implicit/partial template instantiation, visibility rules. And then design patterns, in all those languages. How a singleton makes no sense in a language that's not 'full' object and has 'packages' (not the java ones), how GC/RAII/controlled-types change the patterns. It was both a course on 'using language concepts correctly, picking them carefully for a specific need and not 'to avoid writing 3 more lines of code' and also a lesson in 'how can you paint yourself in a corner and prevent yourself from handling the simplest of requirements change'...
Very interesting to see how our mind is shaped by the tools we use.
Very interesting to see how our mind is shaped by the tools we use.