saechimdaeki / Scala-playground

val curious = 자바/코틀린 개발자가 스칼라를 배우면 함수형 개발 실력이 오른다

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Scala-playground

why Scala?

  • 훨씬 간결한 문법으로 자바 플랫폼을 위한 코드를 작성
    • 한눈에 들어오는 분량으로 더 많은 코드를 이해하며 개발
  • 자바 코드와 상호운용이 매우 편하고 직관적
    • 수많은 자바 라이브러리를 그대로 활용
  • 함수형 프로그래밍 언어
    • OOP를 활용하면서 FP 점진적 학습 및 적용 가능

스칼라와 자바의 공통점

  • 스칼라는 자바와 마찬가지로 자바 가상 기계 (JVM)에서 동작
  • 스칼라도 객체 지향 프로그래밍 언어
  • 스칼라도 정적 타입 언어, 컴파일 타임에 타입 검사
  • 람다 함수 지원
  • IntelliJ나 VSCode 같은 통합 개발 환경 IDE이 매우 우수
  • 웹 애플리케이션 백엔드, 마이크로서비스 구축, 머신러닝에 활용할 라이브러리 풍부
image

스칼라와 자바가 다른점

  • 스칼라는 자바 환경을 그대로 쓰면서도, 더 나은 점이 많다.
  • 강력한 타입 추론 기능으로 마치 동적 타입 언어처럼 유연하고 편리
  • 순수 객체 지향 프로그래밍 언어, 연산자 같은 기호도 사실은 메서드
  • 순수 OOP 언어이면서 전격 함수형 프로그래밍 FP 가능
  • 스칼라의 모든 표현은 식(expression). 평가한 결과값이 반환
  • 변수나 컬렉션 모두 불변(immutable) 지향
  • null을 잘 쓰지 않음. 따라서 NullPointerException의 영향 적음

스칼라와 자바의 코드 수준 차이점

  • 스칼라에서는 식(expression) 끝에 세미콜론(;)을 쓰지 않아도 된다
  • 자바의 final 변수처럼 val로 불변(immutable) 변수를 선언
    • var로 변이(mutable) 변수를 선언
  • for 함축문이 단순 반복문 수준을 넘어 더 강력하고 편리한 기능을 제공
  • 패턴 부합(pattern matching) 기능
  • 여러 트레이트(trait)를 한 클래스나 한 오브젝트에 포함 가능(mix-in)
  • 확장(extension) 메서드로 닫힌(closed) 클래스에 추가 기능 덧붙이기 가능
  • 최신 오픈소스 함수형 프로그래밍 라이브러리 cats, scalaz
  • 케이스 클래스 (case class)로 함수형 데이터 모델링 편리
  • 이름 기반(by-name) 파라미터와 중위 표기법 (infix notation)으로 DSL 작성 편리

About

val curious = 자바/코틀린 개발자가 스칼라를 배우면 함수형 개발 실력이 오른다


Languages

Language:Scala 84.4%Language:Java 15.6%