haskell이나 ml을 배우고 나면 타입시스템에 좀 더 친숙해질 수 있음

그러면 공변 반공변이 무슨 제약인지, recursive type이 뭔지, parametric type hierarchy(다른 용어가 기억이안남)이 뭔지 알아보는 데 더 거부감이 없어짐

그리고 그게 왜 쓸모가 있는지, 왜 주의해서 프로그래밍 해야하는지 알수 있게됨


lisp 계열 프로그래밍 언어를 배우고 나면 극단적 dynamicity에 친숙해질 수 있음

그러면서 multiple dispatch, homoiconicity, dynamic scoping 등을 체험하게 됨

그러면 다른 언어에서 이것을 시뮬레이션 하기 위해 만들어진 비지터 패턴(더블 디스패치), 어노테이션 프로세서 같은 거에 좀 더 총체적인 관점으로 접근할 수 있음

물론 리습은 피터노빅과 폴그레이엄, 제럴드 서스만 등의 저서를 읽기 위한 도구로써 더 좋다 생각함


그밖에도 Smalltalk, APL, Prolog 등 개념적으로 재밌는 언어들이 좀 많음


물론 이 언어들을 배우지 않고서도 그 개념들을 이해할 수 있긴함

근데 그걸 실제 체험하면서 배우는것과 문제를 해결하기 위해 억지로 머리속에 욱여넣는건 다르지


이건 CS 기초 과목들을 배우는것과 비슷하다고 생각함

운영체제, 컴퓨터구조 과목 내용

어차피 그 내용들 코딩짬좀 차다보면 어지간히 아는 내용들이 있음

캐시라든가 스레드, 메모리세그먼트 같은거 ㅇㅇ

워낙 유용하고 유명해서 코딩하다 주워듣는걸로도 짬짬이 알게되는 지식들이지


근데 그걸 종합적인 지식 세트로 배우면 흐름을 파악할 수가 있게 됨

그리고 실제 문제를 맞닥뜨렸을때 아이디어를 떠올리기가 쉬워지지

니가 떠올리는 아이디어라는게 결국에는 머릿속에 있는 다양한 생각의 도구들을 조합해서 나온거니까 ㅇㅇ


깃헙갤에도 코딩 하는것 만큼이나 언어 배우는게 재밌는 애들이 있을텐데

뭐 보통은 주변사람들이 잘 이해를 못함

근데 분명 그 지식들이 도움이 된다

그냥 너의 사고과정에 영향을 미침

예전에는 어렵게 느껴졌던게 어느순간 보니까 쉽게 읽힌다던지

내공이 쌓이는거지


언어 여럿 배우는거는 분명 의미 있는거니까

주변에서 뭐라 해도 니가 하고싶은걸 해라

그 사람들도 그렇게 안 해봤을텐데 안 해본놈들이 뭘 알겠음? ㅋㅋ