With respect to the interaction between programming and maths, I remember reading a while back about some computer science course where they found that a relatively simple maths test administered early on strongly predicted success at the end of the course, and it was mainly around algebra and variable assignments.
I wonder if the 'procedural' languages are more strongly slanted towards the algebra style of maths, whereas 'functional' languages are more strongly slanted towards the formula style (or whatever we would call that maths where you talk about f of n, and g(f(n)) rather than the x squared plus 4x plus c style - not sure of nomenclature, many moons ago I took a course on 'Discrete' mathematics but couldn't adequately define what makes it different from other sorts of maths)
My grossly inadequate labels aside, the point I'm getting at is that maybe depending on the type of maths they do, different mathematicians might be drawn towards different kinds of programming languages (or find them more or less 'natural'). What do you think?
> With respect to the interaction between programming and maths, I remember reading a while back about some computer science course where they found that a relatively simple maths test administered early on strongly predicted success at the end of the course, and it was mainly around algebra and variable assignments.
The original study is Testing Programming Aptitude, by Saeed Dehnadi in 2006.
"The initial study suggests that success in the first stage of an introductory programming course is predictable, by not consistency in the use of the mental models which students apply to a basic programming problem before they have had any contact with programming notation ..."
In subsequent studies (Bornat, Dehnadi, Simon: Mental Models, Consistency and Programming Aptitude) the relationship did not hold and Dehnadi and others have refuted the original hypothesis:
"Two years ago we appeared to have discovered an exciting and enigmatic new predictor of success in a first programming course. We now report that after six experiments, involving more than 500 students at six institutions in three countries, the predictive effect of our test has failed to live up to that early promise."
Thanks! I wonder if the failure to generalise the results in subsequent studies is due to different teaching material and methods at the different universities?
One of their hypotheses is that the test doesn't work because students can start a test with mental model A, get halfway through and realise it should actually be mental model B, but don't bother to go back to previous answers because the test is not used for assessment purposes.
Thus an otherwise excellent student could appear "inconsistent" in the predictive test, reducing its usefulness.
The second paper is good reading and its authors are admirable models of scientific honesty.
As someone who studied maths before programming, I think the only real predictor is whether you are comfortable with discrete mathematics.
I don't find most mathematics I learned (undergrad + stats/EE at graduate level and above) very useful for programming. There are commonalities of course, in the sense that people who do mathematics understand the notion of abstraction, etc... But what most "real" programming is about boils down to things where mathematics can actually be harmful at first: everything related to the difference between science and engineering. For example, I still have to fight my will to understand most aspects of a problem before solving it. Not that programming should be done without thinking, but you need a much more iterative approach in programming to be successful. The whole notion of prototyping does not really match anything in mathematics, I think.
What makes functional programming interesting nowadays is more linked to those engineering issues. Unless you do very theoretical stuff, functional programming has little to do with maths, and more to do with the typical practial matters of programming.
I think mathematicians are simply better at internalizing "this symbol stands for that concept" than other people, and this ability makes them good at both imperative and functional programming.
I wonder if the 'procedural' languages are more strongly slanted towards the algebra style of maths, whereas 'functional' languages are more strongly slanted towards the formula style (or whatever we would call that maths where you talk about f of n, and g(f(n)) rather than the x squared plus 4x plus c style - not sure of nomenclature, many moons ago I took a course on 'Discrete' mathematics but couldn't adequately define what makes it different from other sorts of maths)
My grossly inadequate labels aside, the point I'm getting at is that maybe depending on the type of maths they do, different mathematicians might be drawn towards different kinds of programming languages (or find them more or less 'natural'). What do you think?