본문 바로가기

만들어 봐요/Scala

Scala란 무엇인가?


스칼라 간단 소개

스칼라는 함수형 객체지향 프로그래밍 언어 입니다. 스칼라는 자바의 복잡한 단점을 해결하기 위해 만들어 졌습니다. 스칼라는 자바 바이트 코드를 사용하기 때문에 JVM위에서 실행 시킬 수 있습니다. 또한 자바의 클래스들을 바로 사용할 수도 있고, 자바에서도 스칼라 코드들을 호출할 수 있습니다. 그래서 자바 프로그래머들이 아주 빠르게 배울 수 있는 언어 중 하나입니다. 물론 문법적으론 차이가 있기에 따로 공부를 해야하긴 합니다. 주요 특징들부터 설명해보겠습니다.


함수형 프로그래밍

앞선 소개에서 스칼라는 함수형 프로그래밍을 표방한다고 간략히 적었었습니다. 그렇다면 함수형 프로그래밍이란 무엇일까요? 함수는 입력 값을 파라미터를 통해 입력 받고, 출력 값을 리턴하는 구조를 가지고 있습니다. 하지만 때론 파라미터를 통하지 않고 입력 받는 경우도 있습니다.

int readData() {
  int data = Reading.getValue(System.currentTimeMills());
  return data;
}


위와 같은 함수는 입력 파라미터가 없음에도 getValue 안에서 현재 시각을 받아와 처리를 하고 있습니다. 이 또한 이 함수의 숨겨진 입력 값입니다. 이러한 함수를 우리는 순수(pure)하지 않다고 합니다. 함수형 프로그래밍은 이렇게 숨겨진 값을 없애고 순수(pure)한 함수를 만들도록 지향하는 프로그래밍 입니다.



그럼 스칼라의 주요 특징에 대해서 알아보도록 하겠습니다.


데이터 타입

스칼라의 모든 데이터 타입은 객체 입니다. 즉, 자바처럼 primitive 타입을 지원하는 것이 아닌 모든 것이 객체로 이루어져 있고 자바의 Object와 같은 클래스는 Any클래스 입니다.


싱글턴 객체

자바에서는 static을 활용하여 싱글턴 객체를 생성합니다. 싱글턴 패턴을 이용해서 만들기도 하지요. 스칼라는 이러한 과정이 필요 없습니다. object 키워드를 이용하여 아주 쉽게 싱글턴 객체로 사용할 수 있습니다.


변수 선언

스칼라는 변수를 선언할 때 val와 var 두 가지의 키워드를 사용합니다. var는 일반적으로 알고 있는 변수와 동일합니다. 하지만 val는 초기에 정의한 이후에 값을 변경할 수 없습니다. 위의 설명에 있는 함수형 프로그래밍을 위해 var대신 val를 사용할 것을 권장하고 있습니다.


자바와의 관계

스칼라는 JVM위에서 동작하는 코드입니다. 따라서 빌드할 때 스칼라 라이브러리만 추가해준다면 자바에서도 스칼라 코드들을 호출해서 사용 가능합니다. 또한 스칼라 타입들을 자바 타입으로 또는 그 반대로 타입 변환하는 것도 아주 쉽습니다. 물론, 자바에서 스칼라 맵이나 리스트를 읽어들일 때 보기에 약간 더 복잡해 보이기는 합니다.

반응형

'만들어 봐요 > Scala' 카테고리의 다른 글

1. Count 값 구하기 - var 말고 val 쓰자  (0) 2019.08.06
var말고 val 쓰자!!  (0) 2019.08.06