작성: 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급 함수
- 클로저
짧은 코드를 지향
- 간결한 코드는 버그의 가능성을 줄여줌
- 타입 추론
- 강렬한 리터럴
- 고수준 언어