안녕하세요 프로그래밍으로 밥벌어먹고사는 30대 직장인입니다.
다름아니라 자기개발중에 범주론이 프로그래머들이 알면 정말 좋은 학문이라는 글을보고 작년에 혼자 독학을 했었습니다. 저같은 사람을 위해 프로그래머를 위한 카테고리 이론 자료가 있어(https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) 이를 참고했었는데요 주먹구구식으로 70프로 정도 공부하다가 어려워서 그만두었습니다.
그래도 맛보기라고나 할까요 공부를 하고나니 제 허접한 프로그래밍 패러다임이 한단계 진화?하는 경험을 했습니다. 해결해야하는 현실의 문제를 단순히 프로그래밍을 이용하여 해결하는것이 아니라 수학적 모델링을 거치고(일반적인 방식으로는 그러지 못한 부분을 추상화) 구현을 하는것이 더 완성도가 높고 부작용도 덜 하더라고요. 아무래도 이쪽 업계에서 근래 함수형 프로그래밍이 대세인 이유가 괜히 있는게 아니라는것을 몸소 체험하게 되었습니다.
그러다보니 수학을 더 깊게 공부하고 싶어졌습니다. 범주론을 공부할때도 기본지식이 부족해 나무위키를 찾아보기 일수였는데요 제가 공부를 참고했던 책의 저자는 수학을 깊게 모르는 프로그래머를 위해 책을 썼다 하지만 어느정도 기본 지식이 있어야 하겠더라고요. 특히 저자는 집합을 한번더 추상화한 개념으로 카테고리를 설명하던데 집합이라고는 고등수학정도 개념밖에 없는 저로써는 힘들더라고요. 대수학을 배운적도 없다보니 집합 말고도 환(ring) 이런 개념도 나오는데 좀 벅차더라고요.
사실 제 전공은 컴공은 아니고 전기전자 쪽 입니다. 학부과정때 수학이라고는 신호처리하면서 주구장창 푸리에 변환만 했었었고요 다른 종류의 수학에 대한 기본지식은 거의 없습니다. 어려웠지만 그래도 맛보기를 너무 신나게 해서일까요 진지하게 수학을 공부하고싶어졌습니다.실무에 도움을 받는것 이상으로 학문에 대한 흥미가 생겼습니다. (다시 대학가면 수학전공을 하고싶네요)
그래서 각설하고;; .. 일반 수학과 학부과정에서 하는 과정을 독학해보려하는데 조언을 구하고 싶습니다. 일단은 이산수학, 대수학으로 시작해서 범주론 까지 해보고 싶은데요 이러려면 어떤 단계로 공부하면 좋을꺼다 같은 조언을 조심스럽게 부탁드립니다.. 나무위키로 찾아 파악해보려했는데 쉽지않군요
유튜브에 category for programmers 이런 식으로 영상 몇 개 있습니다. 영어 되시면 참고해볼만 하겠네요. 다만 배경 지식 없으면 꽤 어려울 수 있습니다. 적어도 논리학이나 집합론을 먼저 배우는 게 좋을 거 같습니다.
함수형 언어에 응용되는 범주론(nat. trans., monad) 추상대수학에서의 범주론과는 집중적으로 다루는 포인트가 많이 다릅니다. (universal property, limit and colimits, representable functor, ...) 프로그래머를 위한 범주론 위주로 렉쳐노트를 찾아 보는 걸 추천드립니다.
하지만 pure math 쪽으로 가든, CS 쪽으로 가든 집합론과 논리학에 대한 지식은 있어야 수월하게 들어갈 수 있습니다.
https://openlogicproject.org/
https://github.com/jozefg/learn-tt
크으 감사하므니다