양배추가좋아
251
2018-01-13 11:47:41
5
815

함수형 프로그래밍을 배우면 좋은점이 뭘까요??


스칼라나 하스켈 같은 언어를 배운다면... 어떤 점이 좋을까요?

제가 이쪽 분야에 대해서 문외한이라.. 궁금해서 여쭤봅니다.

0
1
  • 댓글 5

  • 양배추가좋아
    251
    2018-01-13 12:19:06

     저는 데이터 분석가 + 데이터 엔지니어링(조금) 을 꿈꾸고 있는데요, 여러 구직 사이트에서 데이터 엔지니어링 우대조건이나 자격요건에 스칼라를 적어 놓은 경우가 많은걸 봤습니다. 원래 R, Python으로 데이터 전처리, 분석 연습만 몇년을 연습하다가... 반쯤 호기심에 스칼라를 직접 깔아보고 여러 예제들 돌려 봤었는데요, 제가 처음 스칼라를 접하고 R, Python의 몇가지 기능과 유사한 점이 꽤 있다는 걸 느꼈습니다. 예를들어서 map, filter, zip 등등... 그리고 함수를 연결해서 사용하는 R의 라이브러리와 비슷하다는 느낌을 받아서 꽤 유용한거 같다는 생각은 들었습니다.

     이런 와중에 스파크라는 걸 접해서 r에서 조금 연동해서 사용해봤는데... 인터넷에 검색해봤을 때는 스파크라는 대용량 데이터 처리 시스템(?)이 스칼라 언어를 제일 많이 지원한다고 해서... 이런 분산처리 시스템과 함수형 언어 가 어떤 연관성이 있는지도 궁금하고.. 데이터 분석을 할 때 R에서도 데이터를 나눠서 forEach 같은 걸로 나눠서 하기도 하는데... scala를 좀 더 파보면 데이터 분석을 할 때도 좀 도움을 받을 수 있지 않을까 생각을 했습니다.

    0
  • 세브라이드
    718
    2018-01-13 12:28:59 작성 2018-01-13 12:30:44 수정됨

    제 경험상 객체지향은 기능을 숨기지만 함수지향은 기능을 던집니다. 그렇다보니 객체지향 프로그래머는 우아한 디자인 패턴을 잘짜게 되는 경향이 있고 함수지향 프로그래머는 기능의 흐름에 빠삭해지는 경향이 있습니다.

    근데... 이것도 중수까지의 이야기지, 고수쯤 되면 객체지향 프로그래밍하면서 기능의 흐름에 통달하고 함수지향 프로그래밍하면서 눈물날정도로 우아한 디자인 패턴을 보여줍니다.

    그래서... 필요해서 배우는 거, 취미로 배우는 거면 모를까 공부로 스칼라, 하스켈을 배우는건 추천하지 않습니다. 그냥 지금 쓰는 주 언어에서 지원하는 함수지향 프로그래밍을 연습하세요. 그걸로 충분하고 그게 영양가가 훨씬 높습니다.

    0
  • 양배추가좋아
    251
    2018-01-13 12:57:00
    답변 감사합니다. 그래도 스칼라 한달 정도 맛보면서 얻은건 함수형언어가 대충 어떤것인지 알게 된거네요 ㅎㅎ 전에는 map apply 같은걸 쓰면서도 어디서 나온 개념인지도 몰랐거든요
    0
  • Wizardeye0
    103
    2018-01-13 18:08:04

    함수형 프로그래밍을 하는 이유는 개인적인 생각으로는 "가변 상태의 최소화" 를 효과적으로 달성하게 해주는 방식이기 때문인것 같습니다. 2년전에 남이 작성한 C++ 레거시 코드를 확장하다가 정말 "스레드-락" 때문에 멘탈이 무너졌습니다. 뭐 이건 성능이 나오게 하려면 안정성이 낮아지고, 안정성 있게 하다 보면 성능이 안나와서... 코드를 정말 새로 짜고 싶었습니다.

    구글링을 하면서 지식을 얻다가 "7가지 동시성 모델"이란 책을 읽고 결국 lock free design을 하려면 함수형 패러다임이 필요하겠다고 생각해서 스칼라를 공부하기 시작했습니다. 결국 어떤 스레드가 상태를 변경할 수 없다면 굳이 lock 을 걸 필요가 없거든요.

    만약 스칼라 공부를 하신다면 그러한 불변성을 최대한 반영하여 구현할 필요가 있습니다. 그렇지 않으면 결국 자바 동시성 모델 위에서 프로그래밍을 하셔야 할테고... CPU 성능을 잘 살리지 못하게 될테니까요. 최근에 Akka actor 와 스칼라로 미니 프로젝트를 해봤는데 참 괜찮은 언어인것 같습니다. 저는 스칼라를 공부하시는 것을 추천합니다. 


    0
  • 양배추가좋아
    251
    2018-01-13 20:52:46

    Wizardeye0 님 답변 감사합니다. 저는 오키 커뮤니티에 입문한지 1달 정도 되는 뉴비 인데요...

    그래서 아직 개발 분야는 잘 모릅니다만, 하루에 한번 정도는 들러서 글을 읽으면서 많은 도움을 받고 있습니다. 스칼라라는 함수형 언어를 접한것도 한달 밖에 되지 않았고, R , Python  등에서 쓰이는 몇가지 함수형 방식이 스칼라 입문 책에서 더욱 풍부하게 쓰이는걸 보고 뭔가 신비한 느낌도 들었습니다 ㅎㅎ. 

     

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