Hacker News new | ask | show | jobs
by yiransheng 3047 days ago
Some personal thoughts: the key for me at least, is a bit like the hammer-nail mentality. An software engineer for example has a (small) mathematical toolkit (a hammer), sometimes forcing your problem at hand into the shape of nail is sufficient to solve it.

A dump example, consider the problem of detect if two date ranges overlap (for a calendar app perhaps). By recognizing a date range, DateRange(a, b) as an interval on the real line: [a, b] or a set {x | a <= x <= b}, the problem becomes find if two sets' intersection is empty. Set {x | a <= x <=b } and {x | c <= x <= d}'s intersection is {x | (x >= a and x >= c) and (x <= b and x<=d)} which simplifies to {x | max(a, c) <= x <= min(b, d) }. Therefore, the set is empty iff max(a, c) > min(b, d).

Translating the problem into mathematical structures here (intervals), and manipulate them with math tools (inequalities) would count as applied math I guess. By having a repository of math knowledge and an eager attitude to look for opportunities to apply them, one can find success in solving practical problems. In this context, rigor and formal proofs are less important and math intuition is paramount.

An real world example I like to motivate myself with is Richard Feynman and connection machine[1], a story about Feynman using partial differential equations to model on boolean circuits. I do believe even with a limited set of mathematical tools, by trying them on every problem you encounter, you can still get good results. Something like, if one squint hard enough, you can find a monad anywhere :)

[1] http://longnow.org/essays/richard-feynman-connection-machine...