In Steve Yegge’s linked post: > Math is a lot easier to pick up after you know how to program. In fact, if you're a halfway decent programmer, you'll find it's almost a snap. This couldn’t be more wrong. Mathematics is the hardest thing I have ever done. I’m sorry, but mathematics is orders of magnitude more intensive and difficult than most programming. A simple fact that shows this is the amount of programmers who…
What do you mean by “learning Mathematics?” It should be notes that significantly less than 50% of the US population even has to learn calculus so getting into the stuff that most people would consider pretty advanced is not so hard, right? I’d be curious what people’s coolest math tricks are that they’ve used at work. I did like one Taylor Series expansion and felt cool for a week.
The Mathematical Hacker (2012)
91–100 of 186 posts
Re: The Mathematical Hacker (2012)
#92Programming takes high precision thinking. Learning mathematics is what has tuned my mind to better, more precise, thinking. So I am grateful for this and feel I am a much better programmer for it. It also seems to sharpen up ones debugging skills.
There are other things that help also. Second, I'd say learning to write well helps a lot also. Programming is communication (by way of the source code you leave behind for others to read and interpret). A deft hand for exposition sits at the centre of good naming practices for code.
Re: The Mathematical Hacker (2012)
#93The math helped, was enough help to be a crucial difference and put me way ahead of the pack, that is, everyone else around. The math I did was to solve problems in the job I had. The job was as a programmer or other computer guy title, but I saw the problems and used math to attack them successfully.
So much for some generalizations. Some examples are needed:
Example 1: One afternoon Fred Smith, founder, COB, CEO of FedEx, stumbled out of his office, tired, frustrated saying "we need a computer". He had just been trying to schedule his fleet of airplanes. Soon the BoD was also concerned, so concerned that crucial, necessary equity funding was seriously at risk.
A guy I knew in ugrad physic class called me. At the time I was being a computer guy at Georgetown U. and also teaching courses in computer science. Several of us met in a conference room in the library to discuss what to do about the scheduling. There was lots of noise. Finally I announced that I would design and write the software. I got an account on a time sharing service offering CP67/CMS (VM/CMS) computing and wrote the software in my favorite language, then and now, PL/I.
Later in Memphis, one evening SVP Roger Frock and I used my software to develop and print out a schedule for the full planned fleet. The next day two representatives of Board Member General Dynamics went over the schedule and announced "It's a little tight in a few places, but it's flyable." The BoD was happy, and the funding came. Smith's remark was that the schedule "solved the most important problem" facing the company.
Role for math? Apparently I was the only one around who could see that calculations of great circle paths was just the the law of cosines for spherical triangles and to do the vector calculations to handle winds.
Right, not much math was involved, but the math was crucial, and I was the only one around who had it.
Example 2: At Georgetown a computer science prof got some public code for some statistical operations, wrote a main program to call that code, and used the result in teaching a course in statistics. In his testing, three of the public routines had problems. Two of the problems I fixed with just some PL/I tricks with memory and some algorithms from Knuth. For the third, there were numerical problems, and I solved those with a version of orthogonal polynomials. Not much math, but the math solved the problems the prof saw, and I was the only one around who knew that math.
Example 3: I was in a software house, part of KMS (early connection with laser fusion), and bidding on some software the Navy wanted. Part of the work was Nyquist sampling, the fast Fourier transform (FFT), power spectral estimation, digital filtering, etc. I had been working close to all that due to working with the FFT, got the Blackman and Tukey book on the statistics of power spectral estimation, quickly wrote some sample code, in PL/I, illustrating how to do much of what the Navy wanted in the bid, showed the code and its output to one of the Navy engineers, and presto, bingo KMS got coveted "sole source" from the Navy. My work with the math put our software house far ahead of the software houses we were competing with.
Example 4: The BoD at FedEx wanted some revenue projections. People around the office had hopes, intentions, dreams, etc. but nothing rational or convincing. We knew the current revenue and the revenue from the full, planned fleet. So, the projections were an interpolation between those two. Argue that the revenue would grow by current customers influencing customers to be so that the rate of growth would be proportional to the number of current customers doing the influencing and the number of customers to be being influenced. So, at time t, let the revenue ($ per day) be y(t), the current time t = 0, the current revenue y(0), and the planned revenue b. Then for some constant of proportionality k, we should have
d/dt y(t) = y'(t) = k y(t)(b - y(t))
So, this is a first order, linear, ordinary differential equation initial value problem. There is a closed solution based on, right, exponentials. It is just calculus to solve the equation. I did that, picked a reasonable k, drew a graph, and, ..., in short this work kept the BoD from collapsing and saved the company.
Calculus. Gee, just calculus. My big advantage was that I remembered calculus (quite well, and way beyond this problem) and was able to formulate the problem as calculus and solve the differential equation.
Right, the solution is a lazy S curve and is related to some models of Covid growth.
There were other examples in 0-1 integer linear programming, some original work in mathematical statistics, continuous time, discrete state space Markov processes, etc.
Here is how that can go: Are working in computing in a company, see a problem the company has, see some math that provides a solution, and, by writing some software and using available data, proceed with some success. Maybe no one else in the company sees the problem because they don't know enough math to see a math formulation and solution.
It appears that commonly where people are doing a lot of important work, there are important problems that need solving, are being neglected, and where some math can be the key tool in formulation and solution. A person with that math may be unique in the company.
But don't hold your breath looking for job descriptions that mention such usages of math. Uh, why not? Did I mention that the person with the math might be unique in that organization.
Also draw from the two old Disney movies Snow White and Cinderella and see the possible roles of jealousy and sabotage. In my experience, Disney was 100% correct.
Re: The Mathematical Hacker (2012)
#94Earlier quoted context omitted.
I disagree because Math is programming. All those symbols you see map to a set of steps (a program.). It’s just knowing what subroutine every esoteric symbol stands for that’s hard. I will agree it’s been more difficult learning math than programming for myself as well: but that’s because math is geared and targeted for people who like doing symbolic logic by hand. Math people think we’re a level below them (we are i…
>All those symbols you see map to a set of steps (a program.) Simply not true. Most mathematical statements, e.g. proofs of existence have no relation to a "program". >math is geared and targeted for people who like doing symbolic logic by hand. No, it is not. There is absolutely nothing interesting about symbol manipulation, it is always the least interesting part of a proof. It usually is the part the author handwa…
Re: The Mathematical Hacker (2012)
#95Earlier quoted context omitted.
>I never said that mathematics "is about computation." But programming is about computation. If mathematics isn't about computation as well, then they are not alike. >What I did say is that writing down mathematics is equivalent to writing software. It is not. That is plainly false. E.g. mathematics considers objects which are not computable and makes non-computable calculations with those objects. I am aware that yo…
>> What I did say is that writing down mathematics is equivalent to writing software. > It is not. That is plainly false. Whether the two look the same or not, maths and computer programs are in fact fundamentally isomorphic. [1] [1] https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspon...
Certainly not every computation is a proof. What statement does:
void f(){ printf("?"); }
prove?
Re: The Mathematical Hacker (2012)
#96Earlier quoted context omitted.
>All those symbols you see map to a set of steps (a program.) Simply not true. Most mathematical statements, e.g. proofs of existence have no relation to a "program". >math is geared and targeted for people who like doing symbolic logic by hand. No, it is not. There is absolutely nothing interesting about symbol manipulation, it is always the least interesting part of a proof. It usually is the part the author handwa…
A constructive proof of existence is exactly a program. (It might not always be a program for a Turing machine, because "constructive" and "computable" are not exactly the same - but that's beside the point.) Even a non-constructive proof of existence for x can be significant in a programmatic context; it tells you that you can posit an oracle for x (e.g. asking for it to be input by the user, introducing further ass…
It seems to me that it is an important point though.
> Even a non-constructive proof of existence for x can be significant in a programmatic context
Which has no relation whatsover to proofs and programms being the same thing.
Re: The Mathematical Hacker (2012)
#97Earlier quoted context omitted.
> I wouldn't even begin to understand how to self-teach myself Stokes Theorem or some shit Input it into a proof assistant, and rely on the same sort of feedback "does the computer accept your proof, or get stuck". The hard job of formalizing stuff for this purpose has seen significant progress, e.g. by the Lean mathlib project.
I would quibble with whether this is exactly equivalent. In programming I knew I needed to sort a list or find a most efficient path because some practical problem I was trying to solve demanded that I do that. Frequently I had a basically crap but working independent solution before I learned the names "EWD" or "A*". I independently discovered that I needed virtual interfaces (before I knew them by that name, "I wis…
For example, take any good static analyzer that implements abstract interpretation. It generally works using Galois connections, which is just abstract algebra.
Dijkstra's algorithm or A* came pretty early in the history of CS. It would be fair to compare their difficulty to something similar in mathematics, say some basic results in Euclidean geometry.
Re: The Mathematical Hacker (2012)
#98Earlier quoted context omitted.
I would quibble with whether this is exactly equivalent. In programming I knew I needed to sort a list or find a most efficient path because some practical problem I was trying to solve demanded that I do that. Frequently I had a basically crap but working independent solution before I learned the names "EWD" or "A*". I independently discovered that I needed virtual interfaces (before I knew them by that name, "I wis…
I think your comparison is a bit unfair. Essentially, CS is as hard as mathematics because it is mathematics. For example, take any good static analyzer that implements abstract interpretation. It generally works using Galois connections, which is just abstract algebra. Dijkstra's algorithm or A* came pretty early in the history of CS. It would be fair to compare their difficulty to something similar in mathematics,…
If you're discussing pure CS, the thing you can write down in a book and for which a computer is a largely theoretical device, sure CS is mathematics.
If we're talking about the practical reality that CS majors in America today are trying to achieve, and their undergraduate programs are trying to prepare them for, that's becoming a working programmer and has very little relation to mathematics.
Re: The Mathematical Hacker (2012)
#99Earlier quoted context omitted.
> I wouldn't even begin to understand how to self-teach myself Stokes Theorem or some shit Input it into a proof assistant, and rely on the same sort of feedback "does the computer accept your proof, or get stuck". The hard job of formalizing stuff for this purpose has seen significant progress, e.g. by the Lean mathlib project.
> Input it into a proof assistant, and rely on the same sort of feedback "does the computer accept your proof, or get stuck". The hard job of formalizing stuff for this purpose has seen significant progress, e.g. by the Lean mathlib project. As a math teacher who disagrees with the premise of the GGP post ("This couldn’t be more wrong. … I’m sorry, but mathematics is orders of magnitude more intensive and difficult t…
Re: The Mathematical Hacker (2012)
#100Earlier quoted context omitted.
A constructive proof of existence is exactly a program. (It might not always be a program for a Turing machine, because "constructive" and "computable" are not exactly the same - but that's beside the point.) Even a non-constructive proof of existence for x can be significant in a programmatic context; it tells you that you can posit an oracle for x (e.g. asking for it to be input by the user, introducing further ass…
>but that's beside the point It seems to me that it is an important point though. > Even a non-constructive proof of existence for x can be significant in a programmatic context Which has no relation whatsover to proofs and programms being the same thing.