1. 더 좋은 코드를 짜게 될 것입니다
여러분은 애플리케이션을 안정화시키고, 의도하지 않았던 부작용으로부터 발생하는 이슈들을 줄이기 위해 함수형 프로그래밍 테크닉을 사용할 수 있을 것입니다. 변할 수 있는 자료 구조로부터 변하지 않는 자료구조로 바꾸고, 일반적인 메서드로부터 환경에 영향을 미치지 않는 순수한 함수(pure functions)로 바꿈으로써, 여러분의 코드는 더 안전해지고, 더 안정화되고, 더 쉽게 이해될 것입니다.
또한, 여러분의 코드는 더 간단해지고 더 표현력이 있어질 것입니다. 만약 현재 Python, Ruby나 Javascript와 같은 동적 언어로 작업을 하고 있다면, 짧은 표현 문법(expressive syntax)을 사용하는 것, 불필요한 구두법을 피할 수 있는 것, 맵과 필터로 작업을 간단하게 한줄로 줄이는 것 등의 장점에 이미 익숙할 것입니다. 만약 Java, C# 그리고 C++ 같은 정적 타입 언어에 더 익숙하다면, 타입과 구두점, 정형화된 코드를 없앨 수 있습니다. 또한, 다른 컴파일 언어에서는 보기 힘든 표현 문법을 채택하는 것이 가능합니다.
마지막으로, 당신의 코드에 타입이 강하게 적용될 수도 있고(명백하게 타입을 구체화하지 않고도 말이죠) 다중 상속과 믹스인(mix-in) 모두를 지원합니다. 더불어, 어떤 타입 불일치이던지, 코드가 실행되기 전에 잡아냅니다. 정적 타입 언어 개발자는 타입 안정성(type safety)과 스칼라 낼 수 있는 성능에 익숙해 질 것입니다. 동적 언어 개발자는 표현 언어(expressive language)에 머물면서도 안정성과 성능을 놀라울 만큼 향상시킬 수 있을 것입니다.
2. 더 좋은 엔지니어가 될 것입니다
타입 안정성을 갖추고 고성능인 애플리케이션(Java나 C++에서 처럼)을 짧고 표현적인 코드(Ruby나 Python에서 처럼)로 작성할 수 있는 엔지니어는 다른 이들에게 깊은 인상을 남기면서 몸값이 비쌀 것입니다. 저는 여러분이 이 책을 읽고 스칼라 프로그래밍을 시작한다면, 이 장점을 모두 취하는 프로그램을 작성할 수 있을 것이라고 생각합니다. 스칼라의 함수형 프로그래밍 특징의 장점을 모두 누리면서도 타입안정성을 갖춘 표현적인 코드를 작성할 수 있으며, 그 어느때보다 생산적이 될 것입니다.
어떤 새로운 프로그래밍 언어를 학습하는 것이든, 이질적인 문법을 접하는 것 이외에도, 문제를 해결하고 알고리즘과 자료 구조를 디자인하는데에 새로운 접근을 할 수 있는 혜안을 주기에 노력할 가치가 있습니다. 하지만 스칼라같은 함수형 프로그래밍 언어를 공부하는 것은 무엇보다도, 자료 변이성, 고계함수(higher-order function), 부작용 등의 컨셉을 새로운 아이디어로써 받아들이게 해줄 뿐만 아니라, 이를 현재의 코딩 작업과 디자인에 적용하는 방법에 대한 도움을 주기 때문에 가치가 있습니다. 인라인 함수와 정적 타입으로 작업하는 것이 현재의 니즈에 맞지 않을 수도 있지만, 이들의 장점과 단점에 대해 직접 경험해볼 수 있을 것입니다. Java 8에서의 새로운 람다 표현처럼, 여러분이 현재 사용중인 언어에 부분적으로 이러한 기능들을 적용하는 것이 가능해졌을 때, 여러분은 그들을 적절하게 다룰 준비가 될 것입니다.
3. 더 행복한 엔지니어 될 것입니다
위 문구에는 과장이 다소 포함되어있긴 하지만, 만약 여러분이 더 잘 작동하고, 더 잘 읽히고, 디버깅이 더 잘되고, 전보다 빠르게 실행되는 코드를 쉽게 작성 할 수 있는 수준의 능숙한 개발자가 된다면, 무엇보다도 이러한 코드를 더 빠르게 작성할 수 있는 개발자가 된다면, 그 과정이 행복해질 것입니다.
물론 코딩이 인생의 전부라고 말하는 것이 아닙니다. 평균적인 소프트웨어 엔지니어의 작업 스케쥴 중 반 이상이 코드를 작성하는 데에 소요된다는 뜻도 아닙니다.
그러나 코드를 작성하는 시간이 더 즐거워질 것이고, 여러분의 작업에 더 큰 자부심을 가질 수 있을 것입니다. 이 정도면, 새로운 것을 배우기 충분한 이유가 되지 않을까요.
이전 글 : 사물 인터넷을 위한 자바 받아들이기
다음 글 : 람다식과 함께 커맨드 패턴 사용하기
최신 콘텐츠