본문 바로가기

엔지니어가 되자/데이터엔지니어링

[글또] 스칼라와 친해지기 (개념/설치/문법)

 

 Java에서 갈라져 나온 언어인 스칼라를 정리해보자

 


 

1. 소개

 - 스위스 로잔 연방 공과대학교(EPFL)의 마틴 오더스키(Martin Odersky)가 개발했다. 

    - 자바의 제너릭 설계에도 참여했던 마틴 오더스키가 설계 도중 창안

    - 그렇기 때문에 자연스럽게 스칼라도 Java 계열의 언어이며 JVM위에서 동작하도록 고안되었다.

    - Scalable language를 줄여서 Scala가 되었다고 한다.

    - 초기 학습곡선이 꽤 높다고 한다. (무엇이 다른 언어에 비해 초기학습곡선을 높게 만든걸까?)

 

 - 미국에서 2018년부터 현재까지 프로그래머 연봉 1위의 언어라고 한다.

    - 아마 빅데이터 엔지니어링 관련하여 Spark과 호환이 가장 좋은 언어이기 때문이지 않을까 생각중.

    - 빅데이터 엔지니어 연봉 = 스칼라 프로그래머 연봉

 

 

2. 특징

REPL (Read - Evaluate - Print - Loop)

 - 스칼라의 배쉬 셸 명칭이다.

 - 스칼라가 셸에서 실행하는 순서를 그대로 약자화 한 명칭이다. 읽어들이고, 수행하고, 출력하고, 루프돌리는.

 - scala 명령어를 통해 터미널에서 시작 가능

 

 

Value vs Variable

 - 불변형의 Immutable 데이터가 저장되는 value (val)

    - Syntax는 --> val [변수명]: [타입명] = [벨류값]

val a: Int = 10

 - 가변형의 Mutable 데이터가 저장되는 variable (var)

    - Syntax는 --> var [변수명]: [타입명] = [벨류값]

var b: String = "Hello"

 - 둘 다 자바처럼 가비지 컬렉션에 의해 사용되지 않는 데이터는 자동 삭제된다.

 

 

타입추론 기능

 - 별도로 타입명을 지정해주지 않아도 스칼라가 알아서 데이터타입을 추론하여 저장하기도 한다

 

일급 객체로서의 함수

 - 스칼라 언어에서 함수는 일급객체

 - 고차함수, 함수 리터럴, 등 함수 자체를 다루는 범위가 넓음

 - 함수 자체를 함수의 파라미터로 넘길 수 있도록 설계되어있음

 

3. 친해지기

스칼라 설치하기 (mac os 기준)

homebrew를 이용해서 간단하게 설치가 가능하다. 일단 스칼라를 설치하기 이전에 JVM 위에서 돌아가는 언어이기 때문에 JDK가 설치가 되어있어야 한다. 오라클 공식홈페이지를 통해서 설치하고 터미널에서 java -version명령어를 통해 설치여부와 버전을 확인하기.

 

P.S

homebrew가 없다면 아래 링크에서 설치하기~

https://brew.sh/

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

Install Homebrew 아래의 터미널 명령어를 복사하여 맥에서 터미널 커맨드창에 입력해주고 잠시 기다려주면 패키지 관리를 해주는 brew가 설치가 된다.

 

그 다음에는 brew를 통한 스칼라 설치 명령어를 실행해준다~

brew update
brew install scala

 

잠시 기다려주면 설치가 완료되는데 터미널에 scala를 입력해주면 배쉬창을 통해 간단한 명령어를 입력할 수 있는 프롬프트가 실행된다

scala

 

모든 언어의 시작은 Hello로 부터..

 

간단한 스칼라 명령어 실행은 쉘에서 해도 상관 없지만 좀 더 긴 코드를 작성하려면 불편하기 때문에 인텔리제이에서 스칼라 실행환경을 만들고 테스트해보는 것이 좋을 것 같다. 아래 링크를 참고하기.

 

https://yujuwon.tistory.com/entry/IntelliJ%EC%97%90%EC%84%9C-scala-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0

 

IntelliJ에서 scala 사용해보기

우선 mac 기준으로 IntelliJ와 JDK는 깔려 있다는 가정하에 IntelliJ에서 IntelliJ IDEA > Plugins에서 scala를 검색해보자. 위의 그림과 같이 SBT와 Scala가 검색이 되는데 이 두 개의 플러그인을 모두 설치하자..

yujuwon.tistory.com

 

+

만약 brew를 이용하여 설치하는 것이 귀찮다면 아래 스칼라 공식 홈페이지에서 설치해도 무방하다. 원하는 버전을 선택하여 설치 진행.

https://www.scala-lang.org/download/

 

Download

You can choose between the battle tested Scala 2 or the newest Scala 3.

www.scala-lang.org

 

 

 

 스칼라 문법과 친해지기

 환경설정이 어느정도 되었다면 직접 이런저런 코드를 작성해볼 차례이다.

 

스칼라 언어의 재미있는 점 중 하나는 따로 명시적으로 연산 결과를 명시적인 변수에 저장을 하지 않더라도 REPL 상에서 실행된 명령어는  res[n]의 명칭으로 value 타입으로 저장이 된다는 것이다. 5*7를 연산하고 따로 저장하지 않더라도 아래의 셸 라인에서 res1에 접근함으로써 이전 연산 결과를 가져와서 재사용할 수 있게한다.

 

 

변수정의

 위에서 봤던 것 처럼 스칼라의 변수는 variable이거나 value이다. 그 차이점은 가변성이 있는지 없는지 이고, 가변성이 없는 value의 경우 데이터 연산 처리중 변하면 안되는 constant 벨류를 저장하는 데에 주로 사용된다. 아래 형식처럼 val a = 10을 넣어주어도 스칼라는 타입힌팅을 알아서 처리하기 때문에 Int형식으로 자동저장되는 것도 볼 수 있다.

 

 

If문

클래스정의는 object 키워드를 통해 사용. 함수정의는 def [함수명]([파라미터명]: [파라미터타입]): [반환타입] = {} 형식으로 사용한다. 자바를 전승하는 언어이기 때문에 자바처럼 기본 자료형타입 내에 작성되어있는 compare와 같은 메소드들도 사용 가능하다.  If문 같은 경우도 Syntax는 위와 같은데 다른 언어와의 차이점이라면 해당 분기의 실행 값의 맨 마지막 라인에 수행된 값이 res형태로 반환된다는 것이다. 

 

 

다음 포스팅에서는 루프문과 함수/클래스 형태의 코드를 좀 더 살펴보기로...

 

 


레퍼런스

 

https://namu.wiki/w/Scala

https://wikidocs.net/26134

 

1.스칼라?

스칼라는 2004년 마틴 오더스키(Martin Odersky)가 발표한 **객체 지향 언어의 특징과 함수형 언어의 특징을 함께 가지는 다중 패러다임 프로그래밍 언어**입니다 ...

wikidocs.net

https://dadk.tistory.com/18

 

[Scala] 스칼라는 무엇이며 왜 만들어 졌나 (일문번역)

원문 http://www.atmarkit.co.jp/ait/articles/1202/10/news122.html 아래는 번역한 것입니다. Twitter와 Foursquare , LinkedIn 이 사용하는 "Scala" " Scala "는 표준 Java 플랫폼에서 동작 할 수있는 프로그..

dadk.tistory.com

 

반응형