>I was referring to logical inferences you apply in _debugging_, not >program flow; nonetheless, sequential program flow can still be mapped >to symbolic logic.
Program flow involves time: symbolic logic doesn't. Using logic to debug is limited to dealing with snapshots, or worse, reasoning out in flowchart sequences: a rather inefficient way of debugging. Put even two concurrent tasks running, and logic interactions can explode to a level where it's not feasible to apply math.
I remember once I wrote a keyboard driver for an operating system, and I gave it to my Quality Assurance department for testing. It was quite a solid piece of code, so I was pretty confident it would pass. Fifteen minutes later my QA tester called me, "I broke it". I was surprised and asked, "how ?" She showed me: she stood in front of the keyboard, closed her two fists, and went, BANG-BANG-BANG-BANG-BANG hitting hard at the keyboard, at random, in a quick succession. You bet, the system hung. Now, you tell me how much math I would have to dig out to analyze it your way ? But the sequence of events immediately matched a pattern in my mind, and I KNEW what the problem was even before I got back to my desk - a timing window in an interrupt routine. A course inspection of the code, and five minutes later I had the solution.
So, use math for debugging ? Logic ? Nah, intuition's the key.
Also, debugging is often done at machine level, where the original meaning of the program is gone - much debugging is about nondeterministic, timing-related issues. And much debugging is not about reasoning programming conditions out, but about catching the error itself: a huge amount of programming is done with ICEs and logic analyzers, it's like trying to find cockroaches hidden in one's basement. It's more like digging for gold, there's a huge component of chance too.
Programming, dude, is an art - math and engineering are far seconds in programming.
>You don't need a college degree to be able to do math, either. So much >for your syllogism.
I don't know too many people who can do math, period, and out of those, how many don't have a college degree ? But anyone can program, it's an intuitive thing, if only one lets intuition take over.
>And if I have a very fast random character generator, I can write the >entire works of Shakespeare. Why, as you mentioned, worry about an >algorithm being O(n^k)? Just throw as many processors as necessary. >Utilize n processors and you can sort in O(n) time.
You can write the entire works of Shakespeare with a very fast character generator, but you cannot extricate such works from the rest of the garbage generated. And you can't prove you generated all such works either.
About sorting, use the right architecture - for example, a reconfigurable mesh - and you can probably sort in O(1) time. So ? I fail to see your point.
>Seems your OS doesn't scale well. As I said, "...let alone a good one."
A good, comprehensive OS takes years to develop by a whole lot of people, and that has nothing to do with mathematics or with the speed of algorithms. It has to do with the amount of work to be done and with the exponential growth of interactions that must be addressed by person-to-person contact and negotiation.
>Look at the Mozilla project and see if _no one_ is using math. Look up >who's responsible for image decompression. But by your reasoning you >don't even have to know programming. After all, why reinvent the wheel? >Probably all you need to know is how to call some other programmer.
JPEG is a problem space thing. It has nothing to do with the browser. Image decompression is a specialized component that is easily second-sourced, and it isn't an integral part of the architecture of Mozilla or of any Browser for that matter. Moreover, the only reason we use compression is that we're still relying on a dated, obsolete communications network. Improve the network, increase its bandwidth, and JPEG will be history.
And indeed, much programming is about calling some other programmer. It's called "reuse", and it's alive and kicking.
>Famous last words. :-)
Many browsers have been written by people who never wrote one before. And programming is precisely about being capable to write something that hasn't been written before. What one dude can do, another can too. Programming, mind you, isn't rocket science, in fact, it is no science at all. It's an art.
>I use math every day. Playing chess,
Chess is orthogonal to math. Chessplayers come from all walks of life.
I played championship chess when I was a kid, and I didn't use any math. Some of the people I played against were physicians, lawyers, artists, and people without even a college degree or profession. Their personal playing styles varied from Tahl-like aggressive attack prowess to a Petrossian positional play. Petrossian, actually, was a porter. Capablanca could beat everyone in sight when he was 10 years old. So could Brazilian grandmaster Henrique Mecking. Does a 10 year old know any math that you can use in a chess match ? And wasn't Bobby Fischer who said, "I put 98% of my mind into chess, 2% into everything else" ?
I'm Brazilian. I played soccer. Maracana~ stadium in Rio is an old and dear acquaintance of mine. You will have to scour generations of Brazilian world cup winner squads to find maybe one or two players who even have a college degree - the only one I remember was Tostao, who is a physician. Actually, many Brazilian soccer players don't even have high school.
>playing a Bach invention, improvising jazz,
I reached concert level in piano, so did my wife, and my daughter did the same in violin. Neither of us ever needed one ounce of math to do music. I happen to live within the musical world, some of my friends are conductors and professional musicians - many of them do not have a college degree, and some merely squeaked by high school. One very talented cello player I know had to get a GED to land a high school diploma. Some very gifted musicians I've met showed their gift when they were children - at 8, 9, 10 years old. Comes intuitively, you know, music is a gift, and it's well upstream from math.
>comparing insurance policies,
Now, that's probably the only place where you will need math. Wonder, we agree that some math is necessary out there, somehow.
>optimizing an algorithm.
Algorithms are conceived - if you get an algorithm to go from O(n^2) to O(n log n), that's a new algorithm and you'll be able to write qute a few papers about it. But optimizing the multiplicative constants, which is where most real-world optimization is done, often requires knowing computer architecture and being able to handle timing - and neither of those things are easily amenable to a mathematical treatment that gives efficient results, because the complexity of many real-world optimization problems carries it beyond the level of a reasonable applicability of mathematics. As a consequence, optimization is about feel, insight and intuition - an art. In fact, the whole of the programming field is more of an art than a science or an engineering discipline.
>As I stated, your definition of math is too narrow to be of practical >value.
And yours far overflows usability. Number sense doesn't require math, it's an intuitive gift of God or nature that is upstream from math. Programming requires some number sense - not very much - but nearly no mathematics beyond it. Unless, of course, we're programming mathematical things: but then, the math doesn't come from the needs of programming, it comes from the needs of the problem space we're trying to address. And programming, mind you, is that thing that ports from writing a JPEG subroutine to driving a computer keyboard to forking a zillion concurrent processes neither of which we know or care for what it does: programming is about writing programs, it's content free.
And you know what, my experience is, neither mathematicians nor even engineers or physicists make good programmers. Programming is way more art than science, and it's people with the creative juice from the other side that typically make the inroads in programming. You know, the hippie types with long hair, beards and jeans ? Yes.