Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I certainly haven't applied any of those examples either. ^_^ Abstract algebra, topology, etc. are all studies of problems that already have mental frameworks. People already did an incredible amount of legwork building the apparati for understanding these fields (no pun intended). The value of learning these frameworks, if you're not going to work in those fields directly, is to understand how to build your own framework.

What kind of tools are in your toolbox for breaking problems down? Where is my problem different from others, and where is my problem fundamentally the same? How can we isolate these parts and handle them on their own terms? This is fundamentally mathematics, however it's ultimately expressed.

Here's a small selection of those ideas I've picked up from mathematics that have absolutely paid dividends in my day-to-day:

* The idea of a "homomorphism", a structure-perserving map between two different domains of discourse. The more I learn about category theory, the more I realize that homomorphisms are conceptually everywhere in software. The more I learn about domain-driven design, the more I realize the role functors (a particular kind of homomorphism) really play in software design.

* The idea of a "fixed point", for limiting behavior of processes. Fixed points are especially pleasant in domains where processes have some sense in which they "grow monotonically". When I can model a system as a series of operations that "add knowledge" and don't invalidate prior results, I know I have a wealth of analytical tools at my disposal.

* The idea of products (pairing) and sums (choice) in type theory, for modeling interactions between components. I feel like I'm in a straitjacket when using a language without sum types; I have to encode what I really mean using tools that don't let me get there directly.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: