1장 a scalable language - codeport/scala GitHub Wiki

drypot님의 한글 번역

Summary

  • Scala는 scalable language이다
  • 표준 자바플랫폼 상에서 자바라이브라리와 함께 사용할 수 있다
  • 기술적으로 객체지향과 함수형 프로그래밍이 정적타입언어에 섞여있다

1.1 A language that grows on you

  • Scala는 성당보다는 시장에 가깝다

1.2 What makes Scala scalable?

  • 동일한 언어디자인에 객체지향과 함수형 프로그래밍을 잘 섞어놨다.
  • 스칼라는 객체지향 언어이다
    • 모든 값은 객체고 모든 오퍼레이션은 메서드 호출이다.
  • 스칼라는 함수형 언어이다
    • 함수는 first-class 값이다 : pass할수 있고 return할 수 있고 sotre할 수 있다.
    • 값을 변경하기 보다는 인풋값을 받아서 아웃풋값을 돌려주는 프로그램의 오퍼레이션이다.
    • 그래서 side effect가 없다.
  • 투명참조(referentially transparent) : 프로그램의 의미에 영향없이 어떤 인풋값에 대한 메서드 호출은 그 결과로 교체될 수 있다.

1.3 Why Scala?

  • Java와 상호작용하도록 디자인되었다
  • JVM bytecode로 컴파일된다
  • 짧은 코드를 지향한다.
    • 더 적게 타이핑하고 읽기 쉽고 이해하기 쉽다
  • 타입추론으로 간결하게 작성할 수 있다
  • 소프트웨어는 점점 복잡해 지는데 이는 피하는 대신 관리되어야 한다. Scala는 인터페이스의 추상화 레벨을 높혀서 관리할 수 있게 해준다

Alan Kay "I'm not against types, but I don't know of any type systems that aren't a complete pain, so I still like dynamic typing."

  • 정적타입 시스템의 이점
    • 검증할 수 있는 프로퍼티 : 런타임오류의 부재를 검증할 수 있다
    • 안전한 리팩토링
    • 문서화

1.4 Scala's roots

  • 스칼라는 많은 프로그래밍 언어와 연구에 영향을 받았다