웹에서의 함수형 언어 경험해보기


Youngrok Pak at 1 month ago.

 

차세대 웹 프론트엔드 기술에 대한 고민에 이어서 쓰는 글.

웹 개발의 새로운 아키텍처를 찾기 위해 함수형 언어를 탐색해본 결과, 함수형 언어로 실용 애플리케이션을 만들면 보기에 아름다운 코드가 잘 안 나오는 것 같다. 기호가 너무 많이 사용되고 종류도 많아서 딱 보면 뭔가 지저분한 느낌이 든다. 그동안 내가 함수형 언어에 가져왔던 깔끔한 이미지와는 정반대였다.

코드 분량이 짧으냐 하면 그것도 아닌 것 같다. 파이썬보다 좀더 간결한 코드가 나올 것으로 기대했는데, 오히려 더 많은 것 같기도 하다. 모든 것을 함수로 해야 하기 때문에 문법 요소도 더 적지 않을까 싶었는데, 이것도 정반대였다. 알아야 하는 개념이 훨씬 더 많았다.

elm 같은 경우는 런타임 에러가 절대 안 난다는 것을 내세우고 있는데, 과연 런타임 에러는 안 났지만, 에러 대신 동작이 내가 원하는 게 아닐 때 디버깅할 방법이 없었다. 아니, 사실 몇 가지 있긴 했는데, 매우 번거로워서 없는 셈 치고 싶을 정도였다.

타입 추론 + 강 타입의 장점은 전혀 못 느꼈다. 파이썬 하면서 타입 때문에 고생한 적이 없는데 elm에선 훨씬 많이 고생했다.

그동안 나는 개발을 하면서 변수에 대해 이런 생각을 한 적이 있다. 전역 변수보다는 멤버 변수가 낫고, 멤버 변수보다는 로컬 변수가 낫고, 로컬 변수보다는 변수가 없는 게 낫다. 상태는 좋은 코드의 적이다. 그래서, 이런 논리를 따라가면 함수형 언어로 코드를 짜면 좋은 코드가 나올 것이라고 생각했었다. 그렇지만 실제로 해본 결과는 잘 실감이 되지 않았다. 아직 익숙하지 않아서 그런 것일까?

그렇다고 코드 품질이 더 나쁘다고 말하고 싶진 않다. 겉으로 보기에 지저분해보이지만, 정상적인(elm의 경우 Task가 필요 없는) 경우의 코드는 리팩토링하기가 무척 쉬워서 일단 짜놓고 설계를 뜯어고치기가 쉬웠다. 미학적인 느낌과 별개로 코드의 구조가 더 깔끔하게 나올 수 있을 것 같기는 하다.

아직 완전히 포기하진 않았다. 일단 elm은 virtual dom 구현 방식이 꽤 매력적이었지만, 자료가 너무 부족해서 포기했는데, reasonml은 자료가 비교적 많고 페이스북이 서포트하고 있어서 한 번 더 시도해볼 만하다고 생각한다.


Comments




Wiki at WikiNamu