Imagine trying to explain singular value decomposition without the notion of a matrix. No group theory, no well-formed concept of a linear transformation or function. You wouldn't be able to do it. No one even had such ideas before generations of mathematical machinery had been built.
I've come to the conclusion that there are lifer languages (/frameworks/technologies) and start-today languages. C, Lisp, Scala, and Haskell are lifer languages. (Now q, for those who've worked in finance, is even more of a hardcore lifer language.) You'll probably find them painful when you start out, but enjoy them a lot more once you really get them. Python, on the other hand, is much more of a start-today language. It's more modular, you can get up to speed quickly, and it's good enough the vast majority of the time. Also a start-today language is Java, with an IDE. PHP is a start-today language. This also applies to tools. Emacs or vi (both being keyboard-driven) are lifer tools. Unix is a lifer tool. IDEs are start-today tools.
This isn't about "better" or "worse". It's about tradeoffs: with a lifer language, it takes at least a few months before you get it (you start off hating it, because it feels weird and limited) but it becomes immensely powerful once you understand it in a deep way. Start-today languages give you a lot of power to start, but then the learning curve flattens. What's better is unclear. The lifer languages have a lot of benefits and depth, but in fast-moving disciplines like web programming I'd prefer that the frameworks be start-today rather than lifer-oriented.
Math is an extreme lifer language.