스칼라는 객체 지향 프로그래밍 언어와 함수형 프로그래밍의 요소가 결합된 다중패러다임 프로그래밍 언어이다.
기존의 Java 언어가 너무 복잡하다는 단점을 극복하기 위해 2004년 처음 개발되어 배포되었으며 간결한 소스 코드를 사용하여 Java에서 구현할 수 있는 대부분의 기능을 구현할 수 있다. 또한 자바 바이트코드를 사용하기 때문에 자바 가상머신(JVM)에서 실행할 수 있고, Java 언어와 호환되어 대부분의 자바 API를 그대로 사용할 수 있다.
스칼라는 Java와 비교하여 훨씬 더 표현력이 좋기때문에 더 직관적이고 깔끔한 코드를 짤 수 있는 기회를 제공한다.
다음은 WordCount 프로그램을 Java와 Scala에서 구현한 코드이다.
비록 Java8를 이용하면 기존 Java 코드를 더욱 간결하게 만들 수 있지만 여전히 Scala를 따라잡기에는 역부족인것 같아 보인다.
기존의 Hadoop 기반의 데이터 인프라는 자바 언어를 통해 MapReduce 연산 그리고 알고리즘을 구현해야했습니다. 하지만 자바는 코드가 너무 길어 생산성 그리고 가독성이 매우 떨어집니다.
스칼라는 모든 것들이 일관성있게 그리고 간결하게 구현되도록 설계되었습니다. 이를 통해 얻을 수 있는 장점은 “적은 양의 코드로 방대한 규모의 시스템을 작성할 수 있다” 는 것입니다.
스칼라의 패턴매칭과 같은 특성은 특히 데이터를 주로 처리해야 하는 분야에서 매우 효율적으로 작동될 수 있다.
스칼라는 객체지향 프로그래과 함수형 프로그래밍을 모두 완벽하게 지원하는 언어이다. 모든 것을 객체로 바라보며 함수마저도 마치 하나의 값으로 취급하여 이를 변수 또는 파라미터로 넘길 수 있다.
함수형 프로그래밍을 지원하기에 모든 것을 함수로 해결하여 Side Effect를 발생시킬일이 없으며 Immutable 변수는 문제를 단순화시켜주기 때문에 데이터 공유 및 병렬처리에 강하다.
References