English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Scala는 Scalable Language의 약자로, 다중 패턴의 프로그래밍 언어입니다
연방 공학 대학교 로캐르(EPFL)의 Martin Odersky는2001년에 Funnel을 기반으로 한 작업이 시작되어 Scala를 설계하기 시작했습니다.
Funnel은 함수형 프로그래밍 아이디어와 Petri 네트워크를 결합한 하나의 프로그래밍 언어입니다.
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 클래스 라이브러리를 재구성한 것, 메서드의 명명된 파라미터와 기본 파라미터, 패키지 객체(package object), 그리고 Continuation이 포함됩니다.
2009년4월, Twitter는 대부분의 백엔드 프로그램을 Ruby에서 Scala로 이전했음을 발표했으며, 나머지 부분도 이전할 계획임을 발표했습니다. 또한, Wattzon은 전체 플랫폼이 Scala 기반 인프라로 작성되었다고 공개적으로 선언했습니다.
Scala는 전적으로面向对象의 언어로, 모든 값이 객체입니다. 객체의 데이터 타입 및 행동은 클래스와 트레이트에 의해 설명됩니다.
클래스 추상화 메커니즘의 확장은 두 가지 방법이 있습니다: 하나는 서브클래스 상속이며, 다른 하나는 유연한 mixin 메커니즘입니다. 이 두 가지 방법은 다중 상속의 여러 문제를 피할 수 있습니다.
Scala는 또한 함수형 언어로, 함수를 값으로 사용할 수 있습니다. Scala는 익명 함수를 정의하는 데 사용되는 가벼운 문법을 제공하며, 고차 함수를 지원하고 함수를 여러 층으로 중첩할 수 있으며, 커리화를 지원합니다. Scala의 case class 및 내장된 패턴 매칭은 함수형 프로그래밍 언어에서 일반적으로 사용되는 대수형에 해당합니다.
더욱 더, 프로그래머는 Scala의 패턴 매칭을 사용하여 정규 표현식과 유사한 코드로 XML 데이터를 처리할 수 있습니다.
Scala는 타입 시스템을 가지고 있으며, 컴파일 시에 통과를 통해 코드의 안전성과 일관성을 보장합니다. 타입 시스템은 다음과 같은 특성을 지원합니다:
일반 클래스
변위 및 역변위
정의
타입 파라미터의 상한 및 하한 제약
클래스와 추상 타입을 객체 구성원으로 사용합니다
복합 타입
자신을 참조할 때 명시적으로 타입을 지정합니다
뷰
다형성 메서드
Scala의 설계는 실제로 특정 분야의 응용 프로그램 개발이 종종 해당 분야에 특화된 언어 확장이 필요하다는 사실을 기반으로 합니다. Scala는 새로운 언어 구조를 쉽게 추가할 수 있는 라이브러리 형태로 제공되는 많은 독특한 언어 기제를 제공합니다:
어떤 메서드든 전위 또는 후위 연산자로 사용할 수 있습니다.
예상 타입에 따라 자동으로 클로저를 생성할 수 있습니다.
Scala는 Actor를 사용하여 동기 모델을 제공하며, Actor는 메일함을 통해 메시지를 발송 및 수신하는 유사한 스레드实体입니다. Actor는 스레드를 재사용할 수 있으므로, 프로그램에서 수백만 개의 Actor를 사용할 수 있지만, 스레드는 수천 개만 생성할 수 있습니다. 동기성:2.10이후 버전에서 Akka를 기본 Actor 구현으로 사용합니다.
2009년4월, Twitter는 대부분의 백엔드 프로그램을 Ruby에서 Scala로 이전했으며, 나머지 부분도 이전할 계획이라고 발표했습니다.
또한, Wattzon은 자신의 전체 플랫폼이 Scala 기반 인프라로 작성되었다고 공개적으로 선언했습니다.
UBS는 Scala를 일반 제품에 사용하고 있습니다.
Coursera는 Scala를 서버 언어로 사용하고 있습니다.
아래는 다음과 같이 나열되었습니다:3현재 가장 인기 있는 Scala의 웹 애플리케이션 프레임워크: