일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- elasticsearch
- design pattern
- scala
- Linux
- hdfs
- hibernate
- Spring Boot
- 스프링 배치
- Clean Code
- elastic search
- Gradle
- apache storm
- docker
- Storm
- Spring Batch
- intellij
- Angular2
- nginx
- SBT
- Java
- Hbase
- 엘라스틱서치
- hadoop
- DDD
- Domain Driven Design
- spark
- 제주
- Spring
- 도메인주도설계
- Spring XD
- Today
- Total
욱'S 노트
Scala - 소개 본문
스칼라는 현재적인 멀티-패러다임 프로그래밍 랭귀지이다. 정교하고 우아하며 타입-세이프한 일반적인 프로그래밍 패턴으로 표현한다.
스칼라는 객체지향언어다.
스칼라는 순수한 객체지향 언어이며 이 의미는 모든 값은 객체라는 것이다. 타입과 객체의 행위는 클래스와 트래잇으로 표현된다. 클래스는 서브클래스에 의해 확장될 수 있고 다중 상속을 깔끔하게 대체하는 유연한 믹스인-기반 컴포지션 메커니즘을 지원한다.
스칼라는 함수형언어다.
스칼라는 또한 함수형 언어다. 이 의미는 모든 함수는 값이라는 것을 의미한다. 스칼라는 익명 함수를 정의하기 위한 가벼운 문법을 제공한다. 하이오더 함수를 지원하며 함수의 중첩 및 커링을 지원한다. 스칼라의 케이스 클래스들과 많은 함수형 언어에서 사용중인 패턴 매칭 모델 대수학 타입을 빌트인으로 지원한다. 싱글턴 오브젝트는 클래스의 멤버가 아닌 함수를 그룹핑하는 편리한 방법을 제공한다.
더욱이 스칼라의 패턴 매칭 개념은 오른쪽-무시 시퀀스 패턴의 도움으로 객체 추출에 대한 일반적인 확장인 XML 데이터 처리로 확장될 수 있다. 이러한 의미로 시퀀스 이해는 포뮬레이팅 쿼리에 매우 유용하다. 이러한 특징은 스칼라를 웹 서비스와 같은 어플리케이션을 개발하는데 적합하게 만들어 준다.
스칼라는 정적 타입이다.
스칼라는 안전하고 논리적인 정적 타입 추상화를 위한 타입 시스템을 갖추고 있다. 타입 시스템은 다음을 지원한다.
- 제너릭 클래스
- 다양한 어노테이션
- 상향 및 하향 타입 바운딩
- 오브젝트 멤버로서 이너 클래스와 추상화 타입
- 컴파운드 타입
- 명시적인 타입 셀프 레퍼런스
- 묵시적인 파라미터와 컨버젼
- 폴리모픽 메소드
로컬 타입 추론 메커니즘은 중복된 타입 정보를 알려달라고 요구하지 않는다. 조합하면 이러한 특징들은 소프트웨어의 타입-세이프 확장 그리고 프로그래밍 추상화의 안전한 재사용의 강력한 기반이된다.
스칼라는 확장가능하다.
실제로 도메인-중심 어플리케이션 개발에서 자주 도메인-기반 언어 표현이 요구된다. 스칼라는 유니크한 언어 조합 매커니즘을 가지고 있다.
모든 메소드는 infix 또는 postfix 연산자로 사용될 수 있다.
타겟 타이핑 - 예상되는 타입으로 클로저 자동으로 생성된다.
위 두가지 특징의 조합으로 문법 확장 없이 새로운 구문을 정의할 수 있고, 메타-프로그래밍과 같은 매크로-지향하지 않고 새로운 구문을 정의할 수 있다.
스칼라는 JRE와 상호 호환되게 설계되었다. 특히 객체 자바 프로그래밍 언어의 메인스트림과 부드럽게 상호작용한다. 새로운 자바 피쳐인 어노테이션과 제너릭은 스칼라에 바로 적용할 수 있다. 자바 없는 스칼라 피처, default와 named parameter는 자바가 적합한 형식으로 컴파일된다. 스칼라는 자바와 같은 컴파일 모델을 가지고 있으며 기존재하는 수천개의 고급 라이브러리를 사용할 수 있다.
출처 : http://docs.scala-lang.org/tutorials/tour/tour-of-scala
'Programming > Scala' 카테고리의 다른 글
Scala - 익명 함수 (0) | 2016.11.02 |
---|---|
Scala - 믹스인 클래스 컴포지션 (0) | 2016.11.01 |
Scala - 트래잇 (0) | 2016.11.01 |
Scala - 클래스 (0) | 2016.11.01 |
Scala - 통합 타입 (0) | 2016.11.01 |