스칼라 소개


Scala는 Scalable Language의 약자로 멀티 패러다임 프로그래밍 언어입니다.

EPFL(Ecole Polytechnique Fédérale de Lausanne)의 Martin Odersky는 Funnel의 작업을 바탕으로 2001년부터 Scala를 디자인하기 시작했습니다. .

Funnel은 기능적 프로그래밍 아이디어와 페트리넷을 결합한 프로그래밍 언어입니다.

Odersky의 이전 작업은 Generic Java 및 javac(Sun Java 컴파일러)에 관한 것이었습니다. Java 플랫폼용 Scala는 2003년 말/2004년 초에 출시되었습니다. .NET 플랫폼용 Scala는 2004년 6월에 출시되었습니다. 두 번째 버전인 v2.0은 2006년 3월에 출시되었습니다.

2009년 9월 현재 최신 버전은 2.7.6 버전입니다. Scala 2.8의 예상 기능에는 재정의된 Scala 컬렉션 라이브러리, 메서드, 패키지 개체 및 Continuation에 대한 명명된 매개 변수와 기본 매개 변수가 포함됩니다.

2009년 4월 Twitter는 대부분의 백엔드 프로그램을 Ruby에서 Scala로 마이그레이션했으며 나머지도 마이그레이션할 계획이라고 발표했습니다. 또한 Wattzon은 전체 플랫폼이 이미 Scala 인프라를 기반으로 작성되었다고 공개적으로 발표했습니다.


Scala 기능

객체 지향 기능

Scala는 순수 객체 지향 언어이며 모든 값은 객체입니다. 객체의 데이터 유형과 동작은 클래스와 특성으로 설명됩니다.

클래스 추상화 메커니즘을 확장하는 방법에는 두 가지가 있습니다. 하나는 하위 클래스 상속이고 다른 하나는 유연한 혼합 메커니즘입니다. 이 두 가지 접근 방식은 다중 상속 문제를 피할 수 있습니다.

함수형 프로그래밍

스칼라도 함수형 언어이고, 그 함수를 값으로 사용할 수도 있습니다. Scala는 익명 함수 정의를 위한 경량 구문을 제공하고, 고차 함수를 지원하고, 여러 수준의 함수 중첩을 허용하고, 커링을 지원합니다. Scala의 케이스 클래스와 내장 패턴 일치는 함수형 프로그래밍 언어에서 일반적으로 사용되는 대수 유형과 동일합니다.

또한 프로그래머는 Scala의 패턴 일치를 사용하여 정규식과 유사한 코드를 작성하여 XML 데이터를 처리할 수 있습니다.

정적 유형

Scala에는 컴파일 타임 검사를 통해 코드 보안과 일관성을 보장하는 유형 시스템이 있습니다. 유형 시스템은 특히 다음 기능을 지원합니다.

  • 일반 클래스

  • 공분산 및 반공분산

  • 주석

  • 유형 매개변수의 상한 및 하한 제약

  • 범주 및 추상 유형을 객체 멤버로 처리

  • 복합 유형

  • 자체 참조 시 유형을 명시적으로 지정

  • 보기

  • 다형성 접근 방식

확장성

Scala는 실제로 도메인별 애플리케이션 개발에 도메인별 언어 확장이 필요한 경우가 많다는 사실을 고수하도록 설계되었습니다. Scala는 라이브러리 형태로 새로운 언어 구성을 쉽고 원활하게 추가할 수 있는 다양한 고유한 언어 메커니즘을 제공합니다.

  • 모든 메소드를 접두사 또는 후위 연산자로 사용할 수 있습니다

  • 예상되는 유형에 따라 클로저를 자동으로 구성할 수 있습니다.

동시성

Scala는 Actor를 동시성 모델로 사용합니다. Actor는 사서함을 통해 메시지를 보내고 받는 스레드와 유사한 개체입니다. 액터는 스레드를 재사용할 수 있으므로 프로그램에서 수백만 개의 액터를 사용할 수 있는 반면 스레드는 수천 개만 생성할 수 있습니다. 2.10 이후 버전에서는 Akka가 기본 Actor 구현으로 사용됩니다.


Scala를 사용하는 사람

  • 2009년 4월 Twitter는 백엔드 프로그램 대부분을 Ruby에서 Scala로 마이그레이션했으며 나머지는 이동할 계획이라고 발표했습니다. 또한 마이그레이션할 예정입니다.

  • 또한 Wattzon은 전체 플랫폼이 이미 Scala 인프라를 기반으로 작성되었다고 공개적으로 발표했습니다.

  • UBS는 일반 제품에 Scala를 사용합니다.

  • Coursera는 Scala를 서버 언어로 사용합니다.


Scala 웹 프레임워크

다음은 현재 널리 사용되는 두 가지 Scala 웹 애플리케이션 프레임워크입니다.

  • Lift Frame

  • 재생 프레임