Personally, I think that while the language used to teach fundamental programming concepts SHOULDN'T matter in theory... in practice it does. For instance, nobody would advocate teaching them with PHP, or Intercal. One is fundamentally flawed, and the other is a literal joke language. And while using a language designed for academics specifically to teach fundamentals is a good idea on paper, if you expect to succeed in the real world and not just in an academic setting, you should probably learn using a language that you are going to see outside of academia. Yes, most real-world languages will let you get away with bad patterns and can lead to poor programming habits. Guess what? You need to be able to identify those when you see them, because they are abundant in real-world applications, and if you learn on a language that prevents them, you may have a difficult time recognizing them in a language that you pick up later that you may not realize allows for certain rules to be broken.