That is the problem: programming should be math.
If we view programming as metaphysical, we can never hope to build good software. That will change in the future.
I don't believe that 50 years from now we will be still writing code to fly a plane or run a web app, and questioning ourselves: will it run? will it crash? Does the code does what it is supposed to do? Do these two functions do the same thing?
Certainly as time goes on, programming will be ever more a well defined formal system, so much that big parts of development will just be auto-coded(by machine).
That is why functional languages are so good. They are very close to mathematics, and allow us to build formal systems on top of them, that remove any ambiguity that might exist.
And this is(or should be) one of the reasons why functional programming is so 'hip' now: it allows us to reason about program design using the Algebra of programming.
Of course right now we are stuck with the methods we have to build software. And that means you can have a programming job without knowing much about math, or even using it day to day.
But that will change in the future.
(My humble thoughts on it, based on the views I got from a university class called 'program calculation')
> That is why functional languages are so good. They are very close to mathematics
Wouldn't it be better to say that functional languages are close to our commonly used mathematical languages? The abstract underpinnings of mathematics are not expressible naturally. We've had to invent languages to be able to communicate the ideas.
And that is pretty much what this debate boils down to: Are the languages that allows you to express abstract ideas (programming languages in this case) math or language?
I don't believe that 50 years from now we will be still writing code to fly a plane or run a web app, and questioning ourselves: will it run? will it crash? Does the code does what it is supposed to do? Do these two functions do the same thing? Certainly as time goes on, programming will be ever more a well defined formal system, so much that big parts of development will just be auto-coded(by machine).
That is why functional languages are so good. They are very close to mathematics, and allow us to build formal systems on top of them, that remove any ambiguity that might exist. And this is(or should be) one of the reasons why functional programming is so 'hip' now: it allows us to reason about program design using the Algebra of programming.
Of course right now we are stuck with the methods we have to build software. And that means you can have a programming job without knowing much about math, or even using it day to day.
But that will change in the future. (My humble thoughts on it, based on the views I got from a university class called 'program calculation')
if you are curious about algebra of programming, although there are many more resources online: http://wiki.di.uminho.pt/twiki/pub/Education/CP/Bibliografia...