스칼라는 이름에 포함 된 기능인 확장 가능한 언어로 청구됩니다 .
Scala라는 이름은 "확장 가능"및 "언어"의 포트만 토 (portmanteau)로, 사용자의 요구에 따라 확장되도록 설계되었습니다.
스칼라와 관련하여 "확장 가능"이란 무엇입니까? 스칼라가 Java보다 확장 가능한 이유는 무엇입니까?
스칼라는 이름에 포함 된 기능인 확장 가능한 언어로 청구됩니다 .
Scala라는 이름은 "확장 가능"및 "언어"의 포트만 토 (portmanteau)로, 사용자의 요구에 따라 확장되도록 설계되었습니다.
스칼라와 관련하여 "확장 가능"이란 무엇입니까? 스칼라가 Java보다 확장 가능한 이유는 무엇입니까?
답변:
Martin Odersky가 확장 가능한 언어 선택 으로 scala에 대해 이야기 할 때 , 그 의미는 언어 자체가 다음에 적합하다는 것입니다.
그는 성능 측면에서 확장 성을 언급하고 있지 않습니다!
스칼라는 대규모 엔터프라이즈 배포에서와 같이 빠른 스크립트에 적합하다고 주장 할 수있는 사실은 대략 다음과 같습니다.
스크립팅
Scala는 형식 유추와 기능적 스타일로 인해 간결하고 다이렉트 모음 등을 작성하기 때문에 스크립팅에 적합합니다.
응용
Scala는 정적 인 유형의 언어이므로 기능적 스타일과 명령형 스타일 모두에서 작동하기위한 훌륭한 기능이 있기 때문에 응용 프로그램 작성에 좋습니다. 스칼라는 Java와 호환되므로 거대한 라이브러리 에코 시스템을 활용할 수 있습니다.
엔터프라이즈 배포
스칼라는 바이트 코드로 컴파일하고 동적 유형 (즉, 유형이 지정되지 않은) 언어와 비교할 때 성능이 뛰어난 안정적인 시스템 인 Java Virtual Machine에서 실행됩니다. 다시 말하지만 정적으로 유형이 있다는 사실은 큰 코드베이스에서 리팩토링이 훨씬 쉬워진다는 것을 의미합니다.
Odersky의 말은 (Slide 11, http://www.slideshare.net/rawwell/scalaliftoff2009pdf )입니다.
"Scala는 다른 언어가 광범위한 곳에서는 깊습니다."
즉, 확장 성은 유연성과 표현력 측면에서 의미됩니다. 자신 만의 제어 구조를 만들 수 있습니다. 예를 들어 액터 프레임 워크는 라이브러리이지만 언어 기능을 사용하는 것 같습니다.
이것은 스칼라가 "초당 1.000.000 개의 요청에 응답하는"면에서 반드시 필요한 추상화에 따라 확장 될 것임을 의미합니다 (그러나 스칼라도 여기에서도 강력합니다).
실제로 Java의 확장 성을 제한하는 것은 JVM이 아니며 올바른 동시 코드를 작성하기가 어렵습니다. Scala는 함수형 프로그래밍과 액터 모델을 지원하여이를보다 쉽게 만듭니다.
웹 서버와 같이 동시성이 쉬운 경우 Java는 확장 성이 매우 뛰어납니다 (각 요청은 거의 독립적입니다). 그러나 하나의 장기 실행 작업을 병렬화하는 경우 올바른 결과를 얻는 것이 정말 어려울 수 있습니다.
스칼라는 확장 가능한 언어를 나타내며 성능 특성과 관련이 없습니다. 자세한 설명은 여기 ( http://www.artima.com/scalazine/articles/scalable-language.html) 에서 찾을 수 있습니다 .
두 언어가 동일한 바이트 코드를 생성 할 수 있다고 말하면 Java보다 확장 가능한 언어 자체는 필요하지 않습니다.
그러나 Actor 모델 과 함수형 프로그래밍 스타일은 확장 성을 향상시킬 수 있습니다 (정확한 동시성 프로그래밍을 단순화하고 동기화 요구를 줄임).
더 나은 통찰력을 얻으려면 액터 모델을 살펴보고 전통적인 멀티 스레드 Java 응용 프로그램과 비교하십시오.
Akka 프레임 워크를 사용하여 Scala에서 코딩하지 않고도 확장 성이 뛰어난 Java 응용 프로그램을 만들 수도 있습니다.