콘텐츠로 이동

2024 11 05

2024-11-05

Java / Kotlin / Scala

참고: https://okky.kr/articles/424642

  • 개요
    • Scala: 아카데미에서 설계 -> 함수형 프로그래밍과 다른 패러다임 간의 하이브리드
    • Kotlin: 소프트웨어 회사에서 출발 -> 실용적
  • Java에 문제라도?
    • 많은 사람이 사용중이라, 설계자는 뭔가 잘못되어도 근본을 바꾸기 어려움
  • Why Scala & Kotlin?
    • Kotlin: Java의 개선판 => "필요한" 모든 것 제공
    • Scala: 철학이 다름 => "원하는" 모든 것 제공
  • Java vs Scala/Kotlin
    • 객체지향: 자바에서는 숫자 primitive, 스칼라/코틀린은 모두 객체.
    • 함수형
      • 코틀린은 람다/고차함수 지원하나, 함수형 프로그래밍 패러다임 완전히 지원은 X
      • 스칼라는 함수형 지원: Currying/memoization/partial application/type classes 등도 모두 지원
  • 자바보다 생산성 우위를 가지는 것들
    • 타입 추론/싱글톤/데이터 클래스 생성
    • [Kotlin]
      • null-safety, smart casts(새로운 유형으로 자동 캐스팅) 와 같은 흥미로운 지원
        • 해당 변수가 실제로 해당 타입의 변수인지 여부 확인
    • [Scala]
      • 함수형, 객체지향적 모든 기능 제공.
      • 많은 자유와 기회 -> 코드가 목적이 명확하지 않게 될 수도 있음
  • 자바와 상호운용성
    • [Kotlin]
      • 자바와의 호환성 유지를 위함.
    • [Scala]
      • 호환이 쉽지만은 않다
  • 철학
    • [Kotlin] : 더 나은 자바
      • 람다, 기본 기능, null 없는 처리 등 Syntatic Sugar
    • [Scala] : 자바보다 훨씬 더 많은 것
      • 자바가 못하는 것을 할 수 있도록 설계
      • 고급 함수 프로그래밍 훌륭한 지원
      • 복잡성 증가, 사용하기 어려워져...ㅜ