좀 더 정통파 방식으로 category theory를 배우고 싶다면, 많은 사람들이 무료인 Tom Leinster의 Basic Category Theory를 추천함. 나도 곧 차근차근 볼 예정인데, 훑어본 인상으로는 TFA 같은 자료보다 더 수학적이지만 꽤 좋았음. 특히 category theory가 왜 하나의 연구 분야로 성립하는지 설명하는 데 더 설득력이 있었음
다만 이 책도 그렇고 category theory 책 전반이 대체로 학부 수준 수학에 이미 익숙한 사람을 기준으로 쓰였다고 봄. algebraic structures, linear algebra, topology에 익숙하지 않다면 중간중간 다른 자료를 함께 찾아봐야 할 가능성이 큼. 그리고 category theory는 자기가 통합하려는 의미론적 맥락을 어느 정도 알고 있을 때 더 인상적으로 다가옴. 예를 들어 책에서 initial property를 처음엔 자명하게 보이게 소개하지만, 임의의 구조에서는 그냥 성립하는 게 아니라는 점을 알아차려야 핵심이 보임
수학을 줄줄 검산할 생각 없이 글을 선의로 읽더라도, 글에 나온 이 JavaScript 예시만 봐도 신뢰가 흔들렸음: [1, 3, 2].sort((a, b) => { if (a > b) { return true } else { return false } }) 같은 코드는 유효한 comparator가 아님. API는 음수, 0, 양수를 기대하는데 boolean을 반환하고, 내 Chrome에서는 [1, 3, 2] 그대로 나왔음. 내가 보기에 글의 수학적 정확도도 이와 비슷한 수준이었고, 자세한 지적은 이 댓글에 정리해뒀음
왜 그 코드가 꼭 JavaScript라고 가정하는지 의문이었음. 내가 본 바로는 원문 어디에도 언어 표시가 없었음
내가 보기엔 추상수학 전반, 특히 category theory의 진짜 장벽은 사람들이 "linear order"를 이해 못해서가 아님. 일상과 너무 멀리 떨어져 있어서 쓸모없어 보이는 감각이 더 큰 문제였음. 마치 완전히 매끈한 유리 위에 물을 붓는 느낌이었음
category theory 쪽에도 처음 들었을 때 머리가 띵하는 사실 같은 게 있는지 궁금했음. 예전에 group theory로 5차 초과 다항식에 일반적인 해석해가 없다는 걸 증명할 수 있다는 얘길 처음 들었을 때 정말 놀랐는데, category theory에도 그런 대응물이 있는지 묻고 싶었음
이 지적이 생각보다 더 맞는 말이라고 느낌. 수학의 목적이 정확한 사고에 있다면, 그 글은 너무 부정확했음. 아무도 그걸 신경 쓰지 않거나 못 본 듯해서 오히려 놀라웠고, 내 다른 댓글에 아주 불완전하지만 오류 목록을 적어뒀음. 내 결론은 일반 독자에게 이런 글이 별 도움이 안 된다는 쪽이었음. 틀린 수학도 맞는 수학과 비슷하게 소비된다면 실용성은 더 의심스러워짐
나는 이건 가르치는 방식의 문제라고 봄. order theory는 프로그래밍에서 아주 유용함. 핵심은 세상이 totally ordered comparator 중심이라고 보는 습관에서 벗어나는 일이고, preorder가 특히 강력하다고 느낌. 예를 들어 state machine transition은 어떤 경우 preorder로 볼 수 있고, 그렇게만 만들 수 있으면 복잡한 테스트를 <= 성립 여부를 확인하는 문제로 줄일 수 있음. 물론 익숙해지기까지 생각이 많이 필요하지만, 반대로 일상적인 작업에 계속 끌어오면 점점 친숙해짐. 그러면 테스트를 보면서 "이 조건식은 어떤 preorder로 모델링되겠네" 같은 감각이 생김
나는 이걸 박사과정 2년쯤 지나서야 의식적으로 깨달았음. 그리고 그 순간, 학위를 마치면 분야를 떠나고 싶다는 걸 바로 알게 됐음
글쓴이의 문체와 괄호 남용이 너무 괴로웠음. 진짜 parenthetic material은 드문 편이고, 좋은 기술 글쓰기는 괄호를 훨씬 절제해서 쓴다고 생각함
인터넷 전반, 특히 HN 댓글에서 괄호 표현이 과하게 많이 보인다고 느낌. 나도 가끔 그러긴 하지만, 중첩된 괄호를 설정한 단계 이상에서 접거나 취소선 처리해주는 브라우저 확장이 있으면 꽤 유용할 듯했음
나는 사람의 ADHD 기질을 괄호 사용량으로 어느 정도 읽을 수 있다고 농담처럼 느낌. 물론 Lisp 프로그래머라면 예외일 수 있음
category theory를 깊게 읽어본 건 아니지만, 프로그래머가 원래 해오던 일을 좀 더 수학적으로 표현한 버전처럼 느껴졌음. 추상화 수준을 오르내리고, 그래프를 다루고, 한 종류의 object를 다른 종류로 바꾸는 함수를 다루는 식의 사고와 꽤 닮아 보였음
category theory를 사실상 화살표만의 이론으로 설명하는 방식도 가능하다고 봄. 모든 object는 정의상 identity arrow를 가지니, 그 identity arrow를 object 자체와 대응시키면 됨. 그런 관점에서는 object가 일종의 syntactic sugar처럼 보임
나는 글을 열고 색깔 M&M 그림들로 가득한 걸 보자마자 이 점이 거의 즉시 자명하게 느껴졌고, 곧바로 닫아버렸음
예전에 공책과 연필로 이런 종류의 도식을 그리던 사람을 본 적이 있음. 그땐 graph theory로 보였고, 내가 말을 걸 타이밍을 놓친 게 아쉬웠음. 그 사람이 취미처럼 작업하는 것처럼 보여서 더 궁금해졌음. 이런 이론이나 수학으로 쉽게 만들 수 있는 퍼즐이 있는지, 실무나 연구하는 사람들에게 추천을 묻고 싶었음
나는 algebraic graph theory에서 s-arc transitive graphs 관련 작업을 해왔는데, 의외로 실제 그래프를 직접 그릴 일은 거의 없었음. 대부분은 group actions, automorphisms, arc-stabilisers 같은 걸 가지고 추론하는 일이었음. 실제로 어떤 식인지 궁금한 사람을 위해 간단한 메모를 여기에 올려뒀음. 내가 연구한 s-arc-transitivity 자체를 다루진 않지만, 분야의 분위기는 느낄 수 있음. graph theory의 상당 부분은 구체적인 그래프를 전혀 그리지 않고도 진행됨
나는 2015년 석사 때 category theory를 공부하면서 순서 관계가 data structures부터 algorithms까지 정말 많은 것에 영향을 준다는 걸 봤음. 꽤 기초적이면서도 핵심적인 내용으로 느껴졌음
이걸 보니 Haskell의 type classes가 떠올랐음. 자체 규칙 집합으로 order 개념을 우아하게 정의하면서, 관계를 깔끔하게 포착하는 방식이 닮아 보였음
이 자료는 order relations를 정말 명확하게 풀어준다고 느낌. 구조를 시각화해주니 추상적인 개념이 훨씬 소화하기 쉬워졌음
Hacker News 의견들
[1, 3, 2].sort((a, b) => { if (a > b) { return true } else { return false } })같은 코드는 유효한 comparator가 아님. API는 음수, 0, 양수를 기대하는데 boolean을 반환하고, 내 Chrome에서는[1, 3, 2]그대로 나왔음. 내가 보기에 글의 수학적 정확도도 이와 비슷한 수준이었고, 자세한 지적은 이 댓글에 정리해뒀음<=성립 여부를 확인하는 문제로 줄일 수 있음. 물론 익숙해지기까지 생각이 많이 필요하지만, 반대로 일상적인 작업에 계속 끌어오면 점점 친숙해짐. 그러면 테스트를 보면서 "이 조건식은 어떤 preorder로 모델링되겠네" 같은 감각이 생김