작성: 2020-10-10 수정: 2020-10-10

Scala란?

Scala언어의 특징

해당 포스트는 한국데이터산업진흥원에서 운영하는 Youtube 데이터人싸 채널의 Fruitlab 최정열 Cto 님의 스칼라 프로그래밍 동영상을 개인적 공부 목적으로 정리함을 알립니다. 채널링크는 하단에 첨부합니다.

1. 개요

1.1 스칼라란?

  • Martin Order Sky 교수
    • 자바의 Generic을 만듬
    • 자바의 한계를 느끼고, 함수형 언어의 장점을 반영한 스칼라를 만들었음.
  • 확장가능한 언어(Scalable Language)
  • JVM 위에서 실행
    • JVM bytecode로 컴파일 되어서 실행
    • 자바와 혼용 가능
    • 자바와 동일한 성능

2. 스칼라의 특징

객체지향과 함수형 언어의 특징을 모두 가지고 있음

객체지향 프로그래밍

  • 프로그램을 명령어 리스트로 보는 것이 아닌 여러 개의 독립된 단위(객체)로 보는 것
  • 객체는 데이터와 연산을 하나로 묶은 것이며 각 객체를 포함시키거나 넘기는 등이 자유로움
  • 프로그램을 유연하고 변경이 유용한 구조
  • 대규모 소프트웨어 개발에 유리함

스칼라에서 객체지향 프로그래밍

  • 스칼라는 객체지향의 순수한 형태를 가지고 있음
  • 모든 값은 객체이고 모든 오퍼레이션은 메서드 호출
  • 숫자, 함수 등도 모두 객체

함수형 프로그래밍 정의

  • 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임(위키백과)

함수형 프로그래밍의 특징

  • 메서드 수행시 input을 받고 output만 리턴하며, 값의 변경을 내부에서 하지 않음. => 값 변경의 최소화는 버그의 가능성을 낮춰줌
  • 함수는 1급 계층(Class) 값

정적타입 시스템의 이점

  • 검증할 수 있는 프로퍼티: 런타임오류의 부재를 검증할 수 있다.
  • 안전한 리팩토링
  • 문서화

풍부한 표현력

  • 1급 함수
  • 클로저

짧은 코드를 지향

  • 간결한 코드는 버그의 가능성을 줄여줌
  • 타입 추론
  • 강렬한 리터럴
  • 고수준 언어