Live data from Hacker News

Striking parallels between mathematics and software engineering

radar.oreilly.com

11–20 of 36 posts

Re: Striking parallels between mathematics and software engineering

#11
post #4

This is why one of the most valuable uses of time for mathematicians and especially software engineers is to study the historical development of techniques and technologies. Understanding how matrices are a product of the quest for finding solutions to systems of linear equations gives you a much better idea for when and how to apply matrix techniques. Most math textbooks limit themselves to "The determinant is defin…

I agree. I also always found I learned math better when it came from authors who knew the history of the topic and where the different ideas fit in with the wider landscape of mathematics or cs. Knuth and Terence Tao are two people who do this amazingly well. And I believe, really prioritises it.

Re: Striking parallels between mathematics and software engineering

#12
post #10

If you can find a way to get a hold of it, Saunders MacLane's Mathematics: Form and Function is a tremendous book for understanding how math arises from the world and reflects it. What's written here is a lot more specific than that, of course, but if this illustration interests you then it might be a good book to try digging into a little bit. On the other hand, while I am always cognizant and amazed by the POV of m…

The reason that you notice it more with older math, is that older math is older, and has had more time to be improved.

Imagine if you had an API that had been in use and continuously improved for millenia.

Re: Striking parallels between mathematics and software engineering

#13
post #10

If you can find a way to get a hold of it, Saunders MacLane's Mathematics: Form and Function is a tremendous book for understanding how math arises from the world and reflects it. What's written here is a lot more specific than that, of course, but if this illustration interests you then it might be a good book to try digging into a little bit. On the other hand, while I am always cognizant and amazed by the POV of m…

The reason that you notice it more with older math, is that older math is older, and has had more time to be improved. Imagine if you had an API that had been in use and continuously improved for millenia.

Continuously improved is important to note too. Backwards compatibility isn't really a thing in mathematics. You simply have to create enough value and teach people how to use your new mechanism.

Re: Striking parallels between mathematics and software engineering

#14
post #3

Linear algebra got a lot easier for me when I realised that matrices are just linear functions, and matrix multiplication is function composition. Abstract algebra and category theory give you incredibly useful program and API structuring techniques; you can get lots of nice properties for free by following these well-worn existing patterns, even more so than OOP design patterns. We make use of them a lot in Haskell,…

There's also this: http://www.haskell.org/haskellwiki/Curry-Howard-Lambek_corre...

This one is beautiful as well.

It was mind-opening for me to think of types in terms of provability (intuitionistic/constructive logic) rather than truth (classical logic). The only way to prove that a function returning a value of type T actually halts (and therefore does not actually “return” bottom/void) is to run it and obtain that T value, i.e., to find the object that the type claims exists.

Re: Striking parallels between mathematics and software engineering

#15
post #4

This is why one of the most valuable uses of time for mathematicians and especially software engineers is to study the historical development of techniques and technologies. Understanding how matrices are a product of the quest for finding solutions to systems of linear equations gives you a much better idea for when and how to apply matrix techniques. Most math textbooks limit themselves to "The determinant is defin…

To be a bit contrarian, linear algebra is waaaay more useful than just as an outgrowth of solving systems of equations.

My own point of view is that linear algebra is by far the most successful part of mathematics: 'Most' questions you can come up with have satisfactory answers. This is in contrast to, say, number theory, where there's a bunch of nice elementary results and a lot of interesting questions that seem nigh impossible to solve.

As a result, it's a pretty common game in mathematics to start with something new or difficult that you want to describe, and then do your level best to turn your questions into linear algebra problems so that you can actually get answers. The extent to which this doesn't work is the extent to which you need to develop new ideas. (One example of such an approach is algebraic graph theory. Turn a graph into an interesting matrix, and then use the linear algebraic properties of that matrix to describe interesting properties of your graph.)

Re: Striking parallels between mathematics and software engineering

#16
post #8

Interesting. While I agree with the general premise (a lot of mathematics is a human-made construction), the concrete examples she provided feel somewhat forced. Especially the comparison to OOP - I personally don't see how it adds to understanding the various subdivisions defined by abstract algebra.

Object oriented can be read as "category theoretic, but with the arrows missing." And category theory certainly adds something to the algebra...

Re: Striking parallels between mathematics and software engineering

#17
post #4

This is why one of the most valuable uses of time for mathematicians and especially software engineers is to study the historical development of techniques and technologies. Understanding how matrices are a product of the quest for finding solutions to systems of linear equations gives you a much better idea for when and how to apply matrix techniques. Most math textbooks limit themselves to "The determinant is defin…

Can you suggest any good reads which incorporate the history & motivation of linear algebra? I have had some experience with the common text books, but never put much effort into incorporating it into the way I think, precisely because it did not seem worth my time to just memorize methods without much context.

Re: Striking parallels between mathematics and software engineering

#18
post #9

I've just started reading http://en.m.wikipedia.org/wiki/Where_Mathematics_Comes_From It's about math as a human construction. Very comforting to see ones inner metaphores and mental models of math "legitimised" and exposed in a scientific framework. One could hope for a companion: Where Software Engineering Comes From.

Cool! Thanks for the link. I've not read that book, but it looks very interesting and related. It great to see others' perspective on math as a human construction.

Another book on the topic of history of mathematics is "Journey Through Mathematics" by Enrique Gonzalez-Velasco. From its back cover:

"This book offers an accessible and in-depth look at some of the most important episodes of two thousand years of mathematical history. Beginning with trigonometry and moving on through logarithms, complex numbers, infinite series, and calculus, this book profiles some of the lesser known but crucial contributors to modern day mathematics."

Re: Striking parallels between mathematics and software engineering

#19
post #8

Interesting. While I agree with the general premise (a lot of mathematics is a human-made construction), the concrete examples she provided feel somewhat forced. Especially the comparison to OOP - I personally don't see how it adds to understanding the various subdivisions defined by abstract algebra.

That's because the inheritance in abstract algebra is so bloody obvious. At least when I studied math, it was the first subject in which the template was:

Let's define something, and consider what we can figure out about it.

Now let's add another property, and see what we can figure out.

Now let's add yet another property, and see what happens.

Etc.

One winds up familiar with the whole progression group --> abelian group (although not much time is spent on that one) --> ring --> integral domain --> unique factorization domain --> principal ideal domain --> Euclidean domain --> field.

Re: Striking parallels between mathematics and software engineering

#20
post #4

This is why one of the most valuable uses of time for mathematicians and especially software engineers is to study the historical development of techniques and technologies. Understanding how matrices are a product of the quest for finding solutions to systems of linear equations gives you a much better idea for when and how to apply matrix techniques. Most math textbooks limit themselves to "The determinant is defin…

Can you suggest any good reads which incorporate the history & motivation of linear algebra? I have had some experience with the common text books, but never put much effort into incorporating it into the way I think, precisely because it did not seem worth my time to just memorize methods without much context.

I recently enjoyed Bashmakova and Smirnova's The beginnings and evolution of algebra. It covers the development of algebra from Babylonian math to group theory. One of the valuable things it does is cover the evolution of notation for mathematical problems. Now next time someone complains that "Prefix is hard! Infix is natural!" I can throw this book at them.
Post reply on HN