개념 비교 + 실습 경험으로 푸는 결
학부에서 Java로 객체지향을 처음 배웠고, 이후 Haskell 입문 과목에서 함수형 패러다임을 접했습니다. 처음엔 두 방식이 왜 다른지 잘 몰랐는데, 상태 변경이 있느냐 없느냐가 가장 큰 차이라는 것을 직접 코드를 짜보면서 이해했습니다.
객체지향은 상태를 가진 객체가 메시지를 주고받는 방식이라, 복잡한 시스템을 역할 단위로 나누는 데 유리했습니다. 실제로 팀 프로젝트에서 5개 역할을 클래스로 나눴더니 각자 맡은 부분이 명확해졌습니다. 반면 함수형은 입력이 같으면 출력이 늘 같아서, 데이터 변환을 연속으로 처리하는 파이프라인에 잘 맞았습니다.
솔직히 처음엔 함수형 코드를 읽는 게 어려웠습니다. map과 filter를 중첩해서 쓰면 간결하지만, 흐름을 한 번에 파악하기 힘들었고 디버깅도 낯설었습니다. 두 패러다임을 실제로 써보고 나서야 상황에 따라 고르는 감각이 생겼다고 생각합니다.