Notice
Recent Posts
Recent Comments
Today
Total
04-25 03:18
Archives
관리 메뉴

Jeongchul Kim

01 Scala와 Scala IDE 본문

MachineLearning

01 Scala와 Scala IDE

김 정출 2017. 11. 13. 21:25

01 Scala와 Scala IDE

Scala 개요

Scala는 간결하고 유연한 문법을 사용하는 정적 타입의 다중 패러다임 JVM언어로, 작은 인터프리터(Interpreter) 방식의 스크립트로부터 대규모의 복잡한 애플리케이션(Application)에 이르기까지 폭넓은 규모 확장성을 제공하는 도구이다.


Scala는 Scalable Language에서 비롯되었다.


Scala는 JVM의 성능과 최적화를 활용하며, Java를 중심으로 구축된 기존 라이브러리와 도구를 사용할 수 있다.

* JVM(Java Virtual Machine)은 자바 바이트 코드를 실행할 수 있는 주체이며, 다른 컴퓨터 기종에서도 바이트 코드를 실행할수 있도록 구현되거나, Java Processor처럼 하드웨어와 소프트웨엉를 혼합해 구현하기도 한다.


Scala.js(http://www.scala-js.org)는  Scala를 Javascript로 포팅하는 실험 프로젝트이다.



Scala는 정적 타입 지정(static typing)을 채택하였다. Scala Type System은 Java Type System의 단점을 고쳤고, Type Inference을 사용해서 불필요한 타입 표기를 생략할 수 있게 지원한다.


Scala는 객체 지향 프로그래밍(OOP)이다. Scala는 Mixin composition을 사용해서 Type을 깔끔하게 구현하는 Trait로 Java 객체 모델을 보완한다.


Scala는 함수형 프로그래밍(Functional Programming: FP)이다. FP는 동시성, 빅데이터(Bigdata), 일반적인 코드의 정확성(Correctness)을 사고하는데 있어서 최선의 도구이다. 정확성은 소프트웨어가 요구 사항을 만족하고 설계나 코딩상의 결함이 없음을 의미한다. 불변값(Immutable Value), First Class 함수, side effect가 없는 함수, higher-order 함수, 함수 컬렉션(Collection)은 모두 간결하고 강력하며 정확한 코드를 작성하는데 기여한다.


Scala는 Java Type System을 더 유연한 generics로 확장하고 코드 정확성을 높이기 위해 몇가지 개선을 덧붙였다. 도메인 특화언어(Domain Specific Language: DSL)을 만들 수 있다.


규모 확장성- 아키텍처

Scala를 사용하며 Interpreter방식의 스크립트로부터 대규모의 복잡한 애플리케이션까지 작성할 수 있다.


Java 8은 Java 5의 generic 도입 이후에 람다(lambda)라는 익명 함수를 사용할 수 있으면서 큰 변화를 가져왔다. 또한 인터페이스는 Method 선언에 기본 default 구현을 추가할 수 있도록 확장되었다. 그로 인해 Scala의 trait처럼 유용한 Mixin composition 사용할 수 있다. 그러나 Scala는 더 강력한 Inference Type을 제공한다. 강력한 Pattern matching과 for comprehension은 코드 크기와 타입 간의 결합을 크게 줄여준다.


Scala 설치하기

Terminal에서 스칼라 명령행 도구를 별도 설치하기 위해서는

$ brew install scala


$ scala


Ctrl+D 로 빠져나온다


$ scala -version

$ scala -help


IDE 설치하기

JDK(Java Development Kit) 설치

http://www.oracle.com/technetwork/java/javase/downloads/


Scala

공식 스칼라 웹사이트에서 Scala를 내려받는다.

http://www.scala-lang.org/


다음의 사이트에서 DOWNLOAD 버튼을 클릭한다.


1번 부터 시작한다.


다음 섹션에서 SBT를 설치할 예정이므로 INTELLIJ를 다운로드 받는다.


IntelliJ IDEA로 이동한다. DOWNLOAD 버튼을 클릭한다.


Free Open-source인 Community를 다운받는다.



다운로드가 진행되고 dmg를 풀어 설치를 진행한다.


Swing이나 Android는 Disable 합니다.


Scala Install 버튼을 클릭합니다.



Start using IntelliJ IDEA 버튼을 클릭합니다.

IntelliJ IDEA 설치가 완료되었습니다.


SBT 설치

Scala 빌드 도구인 SBT를 설치해야 한다. SBT는 최신 빌드 도구 중 하나이며, Scala로 작성된 범용 빌드 도구이다.

SBT는 대화형 REPL(Read, Eval, Print, Loop 명령을 읽어서 계산한 다음에 결과를 출력하는 루프)로 시작한다.

SBT Doc 문서

https://twitter.github.io/scala_school/ko/sbt.html

SBT 공식 사이트

http://www.scala-sbt.org/


다음의 사이트에서 빨간색 버튼 ‘DOWNLOAD’을 클릭한다. 설치 요령이 나온다.



Mac의 경우 다음과 같다.

Homebrew

$ brew install sbt@1


MacPorts(Third-party package)

$ port install sbt


$ sbt test

Scala 컴파일러나 외부 라이브러리를 포함해서 해당 프로젝트가 의존하는 모든 라이브러리를 내려받는다.


$ sbt


다음에서 console을 입력한다. 이를 통해 scala로 진입한다.

> console


Ctrl+D로 빠져나온다.



$ sbt

> console

> val name = “Kim Jeong Chul”

> println(name)


여기서 val 키워드를 사용해서 불변값인 Immutable 변수를 선언했다.

Interpreter가 출력하는 값에는 name의 Type과 값이 있다.


Scala의 주석은 //, /* */ 이다.



'MachineLearning' 카테고리의 다른 글

Spark Scala Wikipedia dataset  (0) 2017.11.27
DART: Dropouts meet Multiple Additive Regression Trees  (0) 2017.11.14
Bayesian Optimization  (2) 2017.10.31
AUC(Area under an ROC curve)와 ROC  (0) 2017.10.31
SSD : Single Shot MultiBox Detector  (0) 2017.04.21
Comments