Hacker News new | comments | show | ask | jobs | submit login

I think all programmers should learn one of the more abstract maths, like abstract algebra or real analysis. Like you say, it helps train in abstraction. However, I'm less than convinced that Category Theory is a good choice compared to other branches of math.

This may be a mathematician's bias, but Category Theory is somewhat underwhelming because you can't really do anything with it. It's actually too abstract--you can model basically every branch of mathematics with Categories, but you can't actually prove very much about them from this perspective. All you get is a different vocabulary to talk about results that you already knew. It's also less approachable because its objects of study are other branches of mathematics, whereas most other branches have number, vectors, and functions as standard objects.

Abstract Algebra, Real Analysis, and Set Theory will provide you with very similar experience with heavy abstraction, while also teaching some specific tools that are more practical. Abstract Algebra is the beating heart of Fourier Transforms and crypto algorithms, as well as a similar experience with data transformations that you would get from Category; Real Analysis gives a lot of numerical algorithms, stability, and a good handle on dealing with unbounded scaling; Set Theory is relational databases, data representation, and again with the data transformations. Category Theory gives you Monads... which are actually pretty cool, but I honestly found Category Theory more of a hindrance than help in figuring how they work.

tl;dr Every programmer should learn math for the abstraction. Category Theory is pretty good for this, but other maths might be better because Category Theorists are the Architecture Astronauts of the math world.

>This may be a mathematician's bias, but Category Theory is somewhat underwhelming because you can't really do anything with it. It's actually too abstract

It seems Category Theory might one day be useful in ordering "Upper Level Ontologies". Since it's logically impossible to have one consistent ontology( Incompleteness Theorem ) the next best thing is to find morphisms across knowledge domains, no?

I'm going to quote myself from 1 year ago:

""The amount of information out there is growing exponentially. The amount that needs to be known before you can contribute keeps exploding with each generation. Such that the practitioner might know just as much if not more than their predecessors but the scope of their knowledge as a fraction of the full body is many orders of magnitude smaller.

It is not just a matter of will but of physics of time and the chemistry of the brain. Underutilized connections fade such that unless you spent time actively practising the wide skill sets to sufficient depth they will fade. But there is not enough time to be able to do that.

I do think that more must be done in enabling bridges as a counter to this. It is a shame category theorist must wrap their material in such obtuse language as it seems that it would be just the tool for the job.""

What exactly would be the benefit of using category theory? What would you gain in comparison to doing just normal homomorphisms? And that's even assuming you would be able to find a homomorphism at all; it may well be prevented by the ontologies being mutually inconsistent, right?

The benefit is its flaw. Because it is so abstract it is able to describe many, many things. It can serve as a basis for all of maths and unlike set theory really focuses on structure. Very roughly, think of it like functional programming to Set theory's imperative nature.

I'm not getting your analogy :/

It is not a tight analogy. But: In set theory you pay a lot of attention to the internals of collections of objects. In category theory you are more interested in capturing structure and relationships.

In imperative programming you specify the internal sequence that makes up an operation, in functional programming you are more interested in the high level declarations, compositions and that the constraints on them are satisfied.

You gain proofs that apply to a wider variety of algebraic structures.

"Since it's logically impossible to have one consistent ontology( Incompleteness Theorem )..."

This pings right at an interest area of mine. Can you point to any references you know on the subject? Particularly cross-domain morphisms?

That was very much the goal of "Systems Theory"[1]. The problem is it's focused on "natural systems" with quantitative relationships. The work has fallen short in capturing phenomenological relationships.

I think Wilber's AQAL ontology comes closest to being the most "well defined"[2] but also a little whacky. The cornerstone of the model is differentiation across pronouns. The assertion is perspectives are partitioned across 1st, 2nd, and 3rd person perspectives. So for example, art, ethics, and "truth" are the broad knowledge domains. He takes this further by then saying you can take a 1st/2nd/3rd person perspective on actual 1st/2nd/3rd persons.

[1] http://en.wikipedia.org/wiki/Systems_theory

[2] http://wilber.shambhala.com/html/books/kosmos/excerptC/appen...

The value I got from my abstract algebra course is the ability to identify things that are identical, or at least similar. A big part of abstract 1 is just manipulating symbols to appear in a form that's usable with a provided theorem.

Conversely, the big benefit I got from analysis was learning to think in terms of significant similarity rather than strict equality.

Applications are open for YC Winter 2018

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact