Skip to main content
Add Dubinsky quote
Source Link
cjs
  • 1.3k
  • 8
  • 13

Consider whatEd Dubinsky, a mathematics iseducator who was once a professional programmer himself, at the mosthas said:

A person's mathematical knowledge is her or his tendency to respond to certain kinds of perceived problem situations by constructing, reconstructing and organizing mental processes and objects to use in dealing with the situations.

At a slightly less general level, consider what mathematics is. You choose or create a language in which you can express certain ideas and then do symbolic manipulation according to a set of rules you've also chosen or created to come up with to create more valid statements in that language according to those rules. If you're not careful to do this correctly, you may come out with invalid statements. The results you come up with may have some sort of application in the "real world" (e.g., I can use the language and rules of "integers" to help keep track of what people owe me and I owe them) or may be just work to help you better understand how you can use the language and rules and how they can be helpful to you in further use of them.

Consider what mathematics is, at the most general level. You choose or create a language in which you can express certain ideas and then do symbolic manipulation according to a set of rules you've also chosen or created to come up with to create more valid statements in that language according to those rules. If you're not careful to do this correctly, you may come out with invalid statements. The results you come up with may have some sort of application in the "real world" (e.g., I can use the language and rules of "integers" to help keep track of what people owe me and I owe them) or may be just work to help you better understand how you can use the language and rules and how they can be helpful to you in further use of them.

Ed Dubinsky, a mathematics educator who was once a professional programmer himself, has said:

A person's mathematical knowledge is her or his tendency to respond to certain kinds of perceived problem situations by constructing, reconstructing and organizing mental processes and objects to use in dealing with the situations.

At a slightly less general level, consider what mathematics is. You choose or create a language in which you can express certain ideas and then do symbolic manipulation according to a set of rules you've also chosen or created to come up with to create more valid statements in that language according to those rules. If you're not careful to do this correctly, you may come out with invalid statements. The results you come up with may have some sort of application in the "real world" (e.g., I can use the language and rules of "integers" to help keep track of what people owe me and I owe them) or may be just work to help you better understand how you can use the language and rules and how they can be helpful to you in further use of them.

Better quote from EWD303
Source Link
cjs
  • 1.3k
  • 8
  • 13
  1. I shall argue that our programs should be correct
  2. I shall argue that debugging is an inadequate means for achieving that goal and that we must prove the correctness of programs
  3. I shall argue that we must tailor our programs to the proof requirements
  4. I shall argue that programming will become more and more an activity of mathematical nature.

Reliability concerns force us to restrict ourselves to intellectually manageable programs. This faces us with the questions "But how do we manage complex structure intellectually? What mental aids do we have, what patterns of thought are efficient? What are the intrinsic limitations of the human mind that we had better respect?" Without knowledge and experience, such questions would be very hard to answer, but luckily enough, our culture harbours with a tradition of centuries an intellectual discipline whose main purpose it is to apply efficient structuring to otherwise intellectually unmanageable complexity. This discipline is called "Mathematics". If we take the existence of the impressive body of Mathematics as the experimental evidence for the opinion that for the human mind the mathematical method is, indeed, the most effective way to come to grips with complexity, we have no choice any longer: we should reshape our field of programming in such a way that their methods of understanding become equally applicable, for there are no other means.

  1. I shall argue that our programs should be correct
  2. I shall argue that debugging is an inadequate means for achieving that goal and that we must prove the correctness of programs
  3. I shall argue that we must tailor our programs to the proof requirements
  4. I shall argue that programming will become more and more an activity of mathematical nature.

Reliability concerns force us to restrict ourselves to intellectually manageable programs. This faces us with the questions "But how do we manage complex structure intellectually? What mental aids do we have, what patterns of thought are efficient? What are the intrinsic limitations of the human mind that we had better respect?" Without knowledge and experience, such questions would be very hard to answer, but luckily enough, our culture harbours with a tradition of centuries an intellectual discipline whose main purpose it is to apply efficient structuring to otherwise intellectually unmanageable complexity. This discipline is called "Mathematics". If we take the existence of the impressive body of Mathematics as the experimental evidence for the opinion that for the human mind the mathematical method is, indeed, the most effective way to come to grips with complexity, we have no choice any longer: we should reshape our field of programming in such a way that their methods of understanding become equally applicable, for there are no other means.

Add EWD303
Source Link
cjs
  • 1.3k
  • 8
  • 13

On Working Programs

One can also look at this from the more narrow viewpoint of, "I just want to write a program and make sure it works." Even here this becomes math if you take as a constraint "I really do want to, as best I can, make sure it works." Dijkstra's EWD303, "On the Reliability of Programs," makes this argument in detail. His summary:

  1. I shall argue that our programs should be correct
  2. I shall argue that debugging is an inadequate means for achieving that goal and that we must prove the correctness of programs
  3. I shall argue that we must tailor our programs to the proof requirements
  4. I shall argue that programming will become more and more an activity of mathematical nature.

On "Computing Science" versus "Computer Science"

On "Computing Science" versus "Computer Science"

On Working Programs

One can also look at this from the more narrow viewpoint of, "I just want to write a program and make sure it works." Even here this becomes math if you take as a constraint "I really do want to, as best I can, make sure it works." Dijkstra's EWD303, "On the Reliability of Programs," makes this argument in detail. His summary:

  1. I shall argue that our programs should be correct
  2. I shall argue that debugging is an inadequate means for achieving that goal and that we must prove the correctness of programs
  3. I shall argue that we must tailor our programs to the proof requirements
  4. I shall argue that programming will become more and more an activity of mathematical nature.

On "Computing Science" versus "Computer Science"

added 1317 characters in body
Source Link
cjs
  • 1.3k
  • 8
  • 13
Loading
Source Link
cjs
  • 1.3k
  • 8
  • 13
Loading