fender
20k
2020-02-06 22:17:42
14
2051

함수형 언어는 확실히 진입 장벽이 높게 느껴지긴 하네요


모나드 같은 단어에 조금 익숙해졌다 싶으니 '프리 모나드'는 또 뭔지...

이런 건 도대체 누가 만들어서 쓰는가 싶은 개념들을 찾아보면 스택 오버플로우에는 답변이 넘쳐나고, 유튜브에는 컨퍼런스 자료가 널려있더군요.

저런데서 활동하는 개발자들은 뭐하는 사람들인가 생각하면 기분이 묘합니다.

물론 함수형을 한다고 뛰어난 개발자라기 보단 다른 분야에 익숙한 경우로 생각하는 것이 맞겠지만, 이젠 개발을 20년 넘게 하고 있는데 듣도 보도 못한 것들이 계속 나오는 걸 보면, 프로그래밍 분야에서 한 사람이 막연하게라도 이해할 수 있는 범위는 이젠 손바닥 만큼도 못되는 느낌이 듭니다.

아마 그런 감정 때문에 제가 프로그래밍이 어느 정도 적성에 맞으면서도 천직으로 생각을 못하는 게 아닌가 싶습니다.

0
  • 댓글 14

  • Frudy
    6k
    2020-02-06 22:33:07 작성 2020-02-06 22:43:42 수정됨
    저도 공감합니다.
    객체지향은 사람의 사고방식을 옮겨노은방식이라
    비교적 이해가 좀 나은데
    함수형은 아직도 누가물어보면 정의를 말하지못하겠네요.

    특징은 몇개 더듬더듬 말하겠는데
    정의는 아직 모르겠는 신기한 영역이죠 ㅜㅜ

    그래서 설레네요.
  • 초무쿤
    5k
    2020-02-06 22:41:01 작성 2020-02-06 22:42:03 수정됨

    예전에는 객체지향 초창기 시절에는

    함수형 언어 개발하신분들이 객체지향 진입장벽이 높아서 많이들 힘들어하셨는데.

    세상은 돌고 도는거 같네요. ㅎㅎ;

    (사실 패라다임 쉬프트 아닌 트랜드란 개념 자체가 그냥 돌고 도는거일지도 모르죠.뭐.)

  • kenu
    51k
    2020-02-06 22:45:15
  • fender
    20k
    2020-02-06 22:49:52

    kenu // 네, 년도까진 기억이 안나는데 그 정도 즈음 코페에서 뵈었던 건 맞는 것 같습니다. 참 세월이 빠르네요 ㅎㅎ;

  • kenu
    51k
    2020-02-06 22:57:21

    kenu@okjsp.pe.kr 로 연락처 부탁드립니다.

    강남역 오실 날에 맛있는 식사 모시고 싶어서요.


  • fender
    20k
    2020-02-06 23:15:18

    강남 근처에 계시나보군요. 메일 드렸습니다 :)

  • 곰개발자
    2020-02-06 23:21:49

    저 개인적으로 스칼라 처음 배울때는 Future와 implicit를 이해하는데 시간이 좀 걸렸던 기억이 납니다. :) 


  • 으째
    59
    2020-02-07 09:27:32

    @fender

    저도 스칼라를 4년 정도인데 모나드까지인 것 같습니다.ㅎㅎ 

    cats나 pure function 쪽도 학습해봤는데 내가 이렇게 짜도 같이 개발하는 동료에게 어떻게 설득할 수 있을까에 딱 막히더라고요.

  • 김카프
    172
    2020-02-07 11:03:33 작성 2020-02-07 11:03:57 수정됨

    OOP적 사고로 따지면 모나드나 프리 모나드 같은 개념은 대충 디자인 패턴 정도로 봐야 하지 않을까요? 함수형 패러다임 그 자체와 함수형 패러다임에 딸려서 같이 나오는 개념은 다르게 봐야 하니까요.

    사실 이게 커뮤니티의 죄라고 볼 수도 있는 게, 함수형 패러다임에 대해 이야기하면 대개 람다 대수보다는 펑터(map)나 모나드(bind, flatMap)등을 강조하니까 사람들이 오히려 그쪽에 더 신경을 쓰는 것 같습니다.

    커뮤니티 보다보면 재미는 있는데 거의 종교 수준이라 이제는 그냥 조용히 제 공부만 합니다...

  • fender
    20k
    2020-02-07 11:28:12

    네, 말씀대로 그런 개념들은 함수형 패러다임의 '디자인 패턴'에 해당하는 내용이라는데 동의합니다.

    그런데 그렇게 본다면, 객체지향에서 디자인패턴을 모르면 복잡한 구조의 프로젝트를 이해하거나 만드는데 한계가 있듯, 함수형에 대해서도 비슷한 제약이 있지 않나 싶습니다.

    확실히 함수형 관련해서도 다소 종교적인 신념을 보이는 개발자들이 있는 건 맞습니다. 이는 경험상 새로운 기술이 나올 때 마다 반복되는 패턴이더군요.

    그럼에도 불구하고 무언가 크게 기술 동향이 바뀔 때는 보통 그런 맹목적 추종과 정말 중요한 혁신이 뒤섞여 있기 마련이고, 이를 구분할 능력을 키우기 위해서라도 어느 정도 공부는 필요한 것 같습니다.

  • 김카프
    172
    2020-02-07 11:59:52

    그런 구분이 목적이시라면 경험상 함수형 패러다임에 나오는 용어를 공부하기보다는 수학 그 자체에 집중하는 게 나은 것 같습니다. 람다 대수는 아직 괜찮은 교재를 못 찾아서 그냥 간단하게 몇 개만 아는데, 'Some History of Functional Programming Languages'에 나온 내용만 이해해도 썩 괜찮았습니다. 저자가 하스켈쪽 계통에서 중요한 역할을 한 분이라 하스켈쪽 계보만 쭉 나오긴 하는게 유일한 흠이지만요.

    범주론은 'category theory for programmers' 하나면 진짜 끝입니다. 어렵긴 어렵지만 읽을 가치가 있었습니다. 한 번 더 읽기는 해야하는데 시간이 없어서 못 읽는 게 아쉬울 뿐입니다.

  • fender
    20k
    2020-02-07 12:43:12

    사실 "Category Theory for Programmers"는 브라우저 툴바에 책갈피로 올려놓고 일 년 째 방치 중에 있습니다 ㅎㅎ; 남는 시간에 짬짬이 보는 것이고 올해는 머신러닝도 봐야해서 솔직히 선듯 손이 가진 않네요.

  • 김카프
    172
    2020-02-07 22:56:35 작성 2020-02-07 22:57:57 수정됨

    Free Monad같은 게 계속 나와서 머리를 괴롭게(?) 한다면 'Category Theory for Programmers'를 읽는 게 사실 상 맞다고 생각합니다.

    제가 정확하게 이해했다면 범주론은 사실 수학 연산을 추상화하고 일반화하는데 그 중점을 두는데, 이게 컴퓨터 사이언스에서 프로그래머가 어떻게 프로그램을 추상화하는가와 그 궤를 같이 합니다. 시시콜콜하게 이론으로 들어가면 힐베르트 프로그램이나 괴델의 불완전성 정리 등등도 있는데 아직 다 못 읽어서...

    어쨌든, 'Category Theory for Programmers'에서 나온 내용을 제 머리로 이해해보면, 펑터는 사실 컴퓨터에서 ADT를 구성하는 것에 대응하고, 모나드는 이 추상 트리를 해석해 결과를 내놓는 것에 대응합니다. Free Monad는 프로그래머가 스스로 자료 구조를 만들고 그것에 대한 해석기를 만드는 개념이 되는 거죠. 그래서 사람들이 그것을 두고 DSL을 만든다고 하는 것이고.

    사실 Free Monad는 유행이 조금 갔고 요즘은 Tagless Final이 유행하는 추세기는 합니다.

    그런데 함수형 프로그래머들이 이를 애지중지하는 것과는 좀 다르게, 제 눈에는 Free Monad나 Tagless Final이나 사실 OOP에 나오는 인터페이스와 크게 다를 바 없다는 것이...

  • fender
    20k
    2020-02-08 08:41:41

    이걸 봐야하나 말아야하나 했는데 두 분이나 추천하시니 보긴 봐야겠군요 ㅎㅎ; 올해 계획 중 하나로 추가해서 틈틈이 공부해 보겠습니다.

    두 분 모두 조언 감사드립니다!

  • 로그인을 하시면 댓글을 등록할 수 있습니다.