회사업무중 play framework를 사용할 계기가 있어 알아보던중 scala라는 언어를 알게 되었다.
그리고 급 관심이 생겼고 scala에 대해 공부하기 시작했다.
이를 바탕으로 오늘 포스팅은 scala에 대한 간단한 소개를 하려고 한다.
스칼라 소개는 tutorialpoint.com의 scala tutorial문서를 기반으로 번역한 글이다.
scala는 Scalabla Language의 줄임말로 하이브리드한 함수형 프로그래밍 언어이다.
Martin Odersky가 개발했고 2003년에 처음 배포되었다.
scala는 객체지향 언어와 함수형 언어를 통합한 것이 특징인데 JVM(자바 가상머신)위에서 컴파일 된다.
비즈니스 응용프로그램에 의지하는 많은 회사들이 개발생산성과 어플리케이션의 확장성, 전체적인 신뢰성을 끓어올리기위해 스칼라로 전환하고 있다.
여기 어플리케이션 개발자들이 스칼라를 우선적으로 선택하게 만드는 스칼라의 중요한 특징들이 있다.
1.scala는 객체 지향적이다.
scala는 모든 value들이 객체인점에서 보면 순수한 객체지향 언어이다.
객체의 타입과 행동들에 대한 설명은 다음 포스팅에서 설명하도록 하겠다.
클래스는 다중상속을 위한 깔끔한 대체물로써 서브클래스와 유연한 mixin기반의 혼합 메카니즘으로 확장된다.-->이 말은 번역하면서도 먼말인지 몰라 영어로 추가해서 써 놓았다.
(Classes are extended by subclassing and a flexible mixin-based composition mechanism as a clean replacement for multiple inheritance.)
2.scala는 함수적이다.
또 scala는 모든 함수가 value이고 모든 value가 객체이며 그 결과 모든 함수가 객체인 면에서 함수형 언어이다.
scala는 익명의 함수를 정의하기 위한 경량화된 문법을 제공하고, 고차 함수(higher-order function)를 제공한다.
scala는 함수중첩을 허용하고 currying을 제공한다. 이러한 개념은 다음포스팅에서 자세히 설명하도록 하겠다.
3.scala는 statically typed형 언어이다.
scala는 다른 statically typed형 언어(java,c++,c)와 다르게 쓸모없는 타입 정보를 제공해주지 안는다.
대부분의 경우의 type들을 구체화해 줄 필요가 없으면 반복할 필요도 없다.
4.scala는 jvm위에서 돌아간다.
scala는 java byte code로 컴파일 되면, jvm에 의해 실행된다. 이 의미는 scala와 자바는 공통된 런타임 플랫폼을 가지고 있다는 있다는 것을 의미한다. 그래서 여러분은 자바에서 scala로 쉽게 이동할 수 있다
scala 컴파일러는 scala 코드를 java byte code로 컴파일 하는데 이것은 scala 명령어로도 실행될 수 있다. scala 명령어는 자바명령어와 비슷한데, 즉 컴파일된 scala 코드를 실행시키는 것이다.
5.scala는 자바코드를 실행할 수 있다.
scala는 scala안에서 java sdk의 모든 클래스와 자바클래스,자바오픈소스프로젝트를 사용할수 있게 해준다.
Scala vs Java
Scala는 자바와 다른 몇가지 다른 특징들이 있다.
-모든 타입이 객체
-타입 추론
-중첩 함수
-함수는 객체
-Domain specific language(DSL) 지원
-Traits.?--> 이건 더 알아봐야 겠다.
-Closures.? --> 이것도.
-Erlang의 영감을 받은 동시성 지원?? -->이것도.
Scala Web Frameworks
Scala는 엔터프라이즈 웹 어플리케이션으로 어디서나 중요하게 사용되고 있다.
아래가 인기있는 Scala 웹프레임워크가 있다.
1.The Lift Framework
2.The Play Framework
3.The Bowler Framework
scala를 간단하게 소개해 보았다.
다음 포스팅때는 scala 환경을 셋팅하는 것을 주제로 포스팅 하도록 하겠다.
그때까지 see you soon~!
'Newbie's Log' 카테고리의 다른 글
Unity 3D란? (0) | 2014.08.29 |
---|---|
Scala Tutorial part 2 (0) | 2014.08.08 |
MVC(Model, View, Controller) 패턴에 대하여. (0) | 2014.08.07 |
AngularJS Tutorial (0) | 2014.07.29 |
TDD를 위한 Library: Toast - Unit Testing for CodeIgniter (0) | 2014.06.22 |