forked from codeport/scala
-
Notifications
You must be signed in to change notification settings - Fork 0
1장 a scalable language
miracle0k edited this page Apr 7, 2013
·
5 revisions
- Scala는 scalable language이다
- 표준 자바플랫폼 상에서 자바라이브라리와 함께 사용할 수 있다
- 기술적으로 객체지향과 함수형 프로그래밍이 정적타입언어에 섞여있다
- Scala는 성당보다는 시장에 가깝다
- 동일한 언어디자인에 객체지향과 함수형 프로그래밍을 잘 섞어놨다.
- 스칼라는 객체지향 언어이다
- 모든 값은 객체고 모든 오퍼레이션은 메서드 호출이다.
- 스칼라는 함수형 언어이다
- 함수는 first-class 값이다 : pass할수 있고 return할 수 있고 store할 수 있다.
- 값을 변경하기 보다는 인풋값을 받아서 아웃풋값을 돌려주는 프로그램의 오퍼레이션이다.
- 그래서 side effect가 없다.
- 투명참조(referentially transparent) : 프로그램의 의미에 영향없이 어떤 인풋값에 대한 메서드 호출은 그 결과로 교체될 수 있다.
- 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."
- 정적타입 시스템의 이점
- 검증할 수 있는 프로퍼티 : 런타임오류의 부재를 검증할 수 있다
- 안전한 리팩토링
- 문서화
- 스칼라는 많은 프로그래밍 언어와 연구에 영향을 받았다