Just another Perl shrine | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
Why is it that most books on algorithms use mathematics to explain the underlying concepts? Are there no other way of explaining the concepts?
University level mathematics is essentially "the formal study of patterns": "numbers" being one system that have an interesting system of patterns, "graphs" being another, "topologies" being another, and so forth... "Reasoning" is an underlying patttern that requires internal self-consistancy; it's a very large part of what both mathematicians and computer scientists do. Any way of "explaining" a concept that is formally accurate and correct is essentially formal mathematics, just with an unconventional notation. The more "handwaving" the explanation requires, the less formal the mathematics is. If the argument becomes logically inconsistant, it's drifted from math to philosophy and/or religion. Standard mathematical notation is well known by a large group of people who reason carefully about things for a living ("mathematicans"). Computer programmers are a subset of people who reason carefully about things to do with programming for a living: to many authors, it makes sense to follow standards, and use the same notation everyone else does. Many mathematicans are programmers: in some universities, computer science is a specialization of a math degree. After all, it's easier to tell if you've coded an optimization problem correctly if you understand the underlying calculus; it's easier to tell if your genetic algorithm is working right if you understand the statistical models in use, and it's easier to know if your problem solving algorithm is working as designed if you understand the graph theory algorithm that underlies the search process. If you know enough binary algebra to prove that all logic gates can be build out of NAND gates, but not XOR, you won't bet the business by standardizing on XOR instead of NAND... and so forth... You can learn many of the specific applications by rote learning; or you can learn the mathematical theory that underlies the specific applications. Which is more useful depends on what your job is, and what you need to know to get the job done. It's generally more useful to know useful theories to try when you're doing something "cutting edge", like researching a new class of program. It's probably just wasted knowledge if you spend your life just editing config files all day...
-- In reply to Re: Mathematics eq CompSci
by Anonymous Monk
|
|