If you learn a particular language, you can only express yourself (and therefore, think) in that one language. When it comes to languages such as C, the only way you can approach a problem is through the lens of paradigm of portable assembly. When your language is not expressive enough to encapsulate the abstractions you intend to use, it gets harder to overcome the limits of the current paradigm. Some areas of mathematics (particularly category theory) have been applied to programming languages to create abstractions that are capture ideas without contradictions through a type system. I guess when we talk of mathematics, we tend to think of the curricula that shows up in public schools (the progression of algebra->geometry->trig->calculus), the stuff that you calculate and come up with an answer with little concept of what it means or how it's applied, we might not be aware of areas of advanced algebra or formal logic which provide the means to create abstractions and reason about them.