MJay

Scala 공부해보기 - Day 1 본문

Cloud Computing/Spark

Scala 공부해보기 - Day 1

MJSon 2017. 12. 5. 13:46
Edit

Scala 공부해보기 - Day 1


왜 스칼라 인가

scalable language

간결하고 우유연하다 정적 타입의 다중 패러다임 JVM 언어이다.

작은 인터프리터 방식의 스크립트부터 대규모의 복잡한 애플리케이션에 이르기까지 폭넓은 규모 확장성을 제공하는 도구이다.

  • JVM과 자바스크립트 언어
    • 스칼라는 JVM의 성능과 최적화를 활욯했다.
  • 정적 타입
    • 스칼라는 튼튼한 애플리케이션을 만드는 도구로 정적 타입 지정을 채택했다.
    • 타입 추론을 사용해서 대부분의 귀찮고 불필요한 타입표기를 생략할 수 있게 지원한다.

객체 지향 프로그래밍을 완벽히 지원한다. 스칼라는 혼합 합성을 사용해서 타입을 깔끔하게 구현하는 트레이트로 자바 객체 모델을 보완한다. 스칼라에서는 모든 것이 객체이다. 수를 표현하는 함수도 객체이다

함수형 프로그래밍을 완전히 지원한다. FP는 동시성, 빅데이터, 일반적인 코드의 정확성을 사고하는데 최선의 도구이다. 불변값, 1급함수, 부수 효과가 없는 함수, 함수 컬렉션 등은 모두 간결하고 강력하며 정확한 코드를 작성하는데 기여한다

Scalability에 좋은 언어이다. ( 트레이트를 사용한 혼합 합성 , 추상 타입 멤버와 제네릭스, 내포 클래스, 명시적인 자기 타입 )

  • 스칼라의 매력
    • JVM, 라이브러리, 생산성 도구를 , 빅데이터, 고가용성과 강선성을 제공하는 간결하지만 표현련 높은 문법을 제공한다.
    • 시간이 걸리지만 이거 잘하면 프로그래밍 언어는 잘할 것이다.
    • 람다함수라고 불리는 익명 함수가 유용하다 -> 트레이터 처럼 유용한 혼합 합성을 사용할수 있다.

스칼라 설치하기

1 자바설치 -> 6,7,8 모두 사용 http://bit.ly/TEA7iC 에서 자바 개발도구를 다운받으면 된다.


2 SBT 설치 -> Scala Build Tool (http://bit.ly/1toEO6H)


Mac에서 설치할려면
brew update –debug –verbose
brew install sbt@1 ```


3 코드 예제 내려받기 -> http://bit.ly/prog-scala-code

1.git clone https://github.com/deanwampler/prog-scala-2nd-ed-code-examples.git

4 SBT 실행 -> sbt test를 입력하면 스칼라 컴파일러나 외부 라이브러리를 포함해서 해당 프로젝트가 의존하는 모든 라이브러리를 내려받는다. sbt는 코드를 컴파일한 다음에 단위 테스트를 실행할 것이다.
5 SBT 밖에서 스칼라 실행 http://www.scala-lang.org 스칼라 내려받고 스칼라를 위한 자바독이라고 할수 있는 스칼라독도 내려받기


root package

SBT 사용하기

명령을 설명한다.

현재 사용 가능한 작업 중 가장 일반적으로 사용하는 것들을 보여준다.

모든 가용 작업을 보여준다

코드를 증분 컴파일한다.

코드를 증분 컴파일하고 테스트를 실행한다.

빌드로 산출된 결과물을 지운다.

저장된 파일이 바뀌면 증분 컴파일과 테스트를 진행한다.
(~ , 프로젝트 파일을 감시하다가, 일부 또는 전부가 변경되는 경우 작업을 실행한다는 뜻이다.)

스칼라 REPL을 시작한다.

프로젝트의 main 루틴 중 하나를 실행한다.

변수 x의 정의를 본다.

주로 ~test를 사용해서 항상 변경 사항을 컴파일하고 관련 테스를 실행한다. 매번 전체를 새로 빌드할때까지 기다릴 필요가 없다. ~test 상태에서 다른 명령을 실행하거나 sbt를 종료하고 싶다면 리턴키를 누르면 된다.

%23%23%23%23%20Scala%20%uACF5%uBD80%uD574%uBCF4%uAE30%20-%20Day%201%0A@%28Scala%29%0A**%uC65C%20%uC2A4%uCE7C%uB77C%20%uC778%uAC00**%0A%3E%20scalable%20language%0A%0A%3E%20%uAC04%uACB0%uD558%uACE0%20%uC6B0%uC720%uC5F0%uD558%uB2E4%20%uC815%uC801%20%uD0C0%uC785%uC758%20%uB2E4%uC911%20%uD328%uB7EC%uB2E4%uC784%20JVM%20%uC5B8%uC5B4%uC774%uB2E4.%0A%0A%3E%20%uC791%uC740%20%uC778%uD130%uD504%uB9AC%uD130%20%uBC29%uC2DD%uC758%20%uC2A4%uD06C%uB9BD%uD2B8%uBD80%uD130%20%uB300%uADDC%uBAA8%uC758%20%uBCF5%uC7A1%uD55C%20%uC560%uD50C%uB9AC%uCF00%uC774%uC158%uC5D0%20%uC774%uB974%uAE30%uAE4C%uC9C0%20%uD3ED%uB113%uC740%20%uADDC%uBAA8%20%uD655%uC7A5%uC131%uC744%20%uC81C%uACF5%uD558%uB294%20%uB3C4%uAD6C%uC774%uB2E4.%0A*%20**JVM%uACFC%20%uC790%uBC14%uC2A4%uD06C%uB9BD%uD2B8%20%uC5B8%uC5B4**%0A%09*%20%uC2A4%uCE7C%uB77C%uB294%20JVM%uC758%20%uC131%uB2A5%uACFC%20%uCD5C%uC801%uD654%uB97C%20%uD65C%uC6AF%uD588%uB2E4.%0A*%20**%uC815%uC801%20%uD0C0%uC785**%0A%09*%20%uC2A4%uCE7C%uB77C%uB294%20%uD2BC%uD2BC%uD55C%20%uC560%uD50C%uB9AC%uCF00%uC774%uC158%uC744%20%uB9CC%uB4DC%uB294%20%uB3C4%uAD6C%uB85C%20%uC815%uC801%20%uD0C0%uC785%20%uC9C0%uC815%uC744%20%uCC44%uD0DD%uD588%uB2E4.%0A%09*%20%uD0C0%uC785%20%uCD94%uB860%uC744%20%uC0AC%uC6A9%uD574%uC11C%20%uB300%uBD80%uBD84%uC758%20%uADC0%uCC2E%uACE0%20%uBD88%uD544%uC694%uD55C%20%uD0C0%uC785%uD45C%uAE30%uB97C%20%uC0DD%uB7B5%uD560%20%uC218%20%uC788%uAC8C%20%uC9C0%uC6D0%uD55C%uB2E4.%0A%09%0A%3E%20%uAC1D%uCCB4%20%uC9C0%uD5A5%20%uD504%uB85C%uADF8%uB798%uBC0D%uC744%20%uC644%uBCBD%uD788%20%uC9C0%uC6D0%uD55C%uB2E4.%20%uC2A4%uCE7C%uB77C%uB294%20%uD63C%uD569%20%uD569%uC131%uC744%20%uC0AC%uC6A9%uD574%uC11C%20%uD0C0%uC785%uC744%20%uAE54%uB054%uD558%uAC8C%20%uAD6C%uD604%uD558%uB294%20%uD2B8%uB808%uC774%uD2B8%uB85C%20%uC790%uBC14%20%uAC1D%uCCB4%20%uBAA8%uB378%uC744%20%uBCF4%uC644%uD55C%uB2E4.%20%uC2A4%uCE7C%uB77C%uC5D0%uC11C%uB294%20%uBAA8%uB4E0%20%uAC83%uC774%20%uAC1D%uCCB4%uC774%uB2E4.%20%uC218%uB97C%20%uD45C%uD604%uD558%uB294%20%uD568%uC218%uB3C4%20%uAC1D%uCCB4%uC774%uB2E4%0A%0A%3E%20%uD568%uC218%uD615%20%uD504%uB85C%uADF8%uB798%uBC0D%uC744%20%uC644%uC804%uD788%20%uC9C0%uC6D0%uD55C%uB2E4.%20FP%uB294%20%uB3D9%uC2DC%uC131%2C%20%uBE45%uB370%uC774%uD130%2C%20%uC77C%uBC18%uC801%uC778%20%uCF54%uB4DC%uC758%20%uC815%uD655%uC131%uC744%20%uC0AC%uACE0%uD558%uB294%uB370%20%uCD5C%uC120%uC758%20%uB3C4%uAD6C%uC774%uB2E4.%20%20%uBD88%uBCC0%uAC12%2C%201%uAE09%uD568%uC218%2C%20%uBD80%uC218%20%uD6A8%uACFC%uAC00%20%uC5C6%uB294%20%uD568%uC218%2C%20%uD568%uC218%20%uCEEC%uB809%uC158%20%uB4F1%uC740%20%uBAA8%uB450%20%uAC04%uACB0%uD558%uACE0%20%uAC15%uB825%uD558%uBA70%20%uC815%uD655%uD55C%20%uCF54%uB4DC%uB97C%20%uC791%uC131%uD558%uB294%uB370%20%uAE30%uC5EC%uD55C%uB2E4%0A%0A%3EScalability%uC5D0%20%uC88B%uC740%20%uC5B8%uC5B4%uC774%uB2E4.%20%28%20%uD2B8%uB808%uC774%uD2B8%uB97C%20%uC0AC%uC6A9%uD55C%20%uD63C%uD569%20%uD569%uC131%20%2C%20%uCD94%uC0C1%20%uD0C0%uC785%20%uBA64%uBC84%uC640%20%uC81C%uB124%uB9AD%uC2A4%2C%20%uB0B4%uD3EC%20%uD074%uB798%uC2A4%2C%20%uBA85%uC2DC%uC801%uC778%20%uC790%uAE30%20%uD0C0%uC785%20%29%0A*%20%uC2A4%uCE7C%uB77C%uC758%20%uB9E4%uB825%20%0A%09*%20JVM%2C%20%uB77C%uC774%uBE0C%uB7EC%uB9AC%2C%20%uC0DD%uC0B0%uC131%20%uB3C4%uAD6C%uB97C%20%2C%20%uBE45%uB370%uC774%uD130%2C%20%uACE0%uAC00%uC6A9%uC131%uACFC%20%uAC15%uC120%uC131%uC744%20%uC81C%uACF5%uD558%uB294%20%uAC04%uACB0%uD558%uC9C0%uB9CC%20%uD45C%uD604%uB828%20%uB192%uC740%20%uBB38%uBC95%uC744%20%uC81C%uACF5%uD55C%uB2E4.%0A%09*%20%uC2DC%uAC04%uC774%20%uAC78%uB9AC%uC9C0%uB9CC%20%uC774%uAC70%20%uC798%uD558%uBA74%20%uD504%uB85C%uADF8%uB798%uBC0D%20%uC5B8%uC5B4%uB294%20%uC798%uD560%20%uAC83%uC774%uB2E4.%0A%09*%20%uB78C%uB2E4%uD568%uC218%uB77C%uACE0%20%uBD88%uB9AC%uB294%20%uC775%uBA85%20%uD568%uC218%uAC00%20%uC720%uC6A9%uD558%uB2E4%20-%3E%20%uD2B8%uB808%uC774%uD130%20%uCC98%uB7FC%20%uC720%uC6A9%uD55C%20%uD63C%uD569%20%uD569%uC131%uC744%20%uC0AC%uC6A9%uD560%uC218%20%uC788%uB2E4.%0A%0A**%uC2A4%uCE7C%uB77C%20%uC124%uCE58%uD558%uAE30**%0A%3E1%20%uC790%uBC14%uC124%uCE58%20-%3E%206%2C7%2C8%20%uBAA8%uB450%20%uC0AC%uC6A9%20http%3A//bit.ly/TEA7iC%20%uC5D0%uC11C%20%uC790%uBC14%20%uAC1C%uBC1C%uB3C4%uAD6C%uB97C%20%uB2E4%uC6B4%uBC1B%uC73C%uBA74%20%uB41C%uB2E4.%0A%3E%0A%3E%21%5BAlt%20text%5D%28./1512390649632.png%29%0A%3E2%20SBT%20%uC124%uCE58%20-%3E%20Scala%20Build%20Tool%20%28http%3A//bit.ly/1toEO6H%29%0A%3E%0A%3E%21%5BAlt%20text%5D%28./1512390109803.png%29%0A%3EMac%uC5D0%uC11C%20%uC124%uCE58%uD560%uB824%uBA74%0A%3Ebrew%20update%20--debug%20--verbose%0A%3Ebrew%20install%20sbt@1%20%60%60%60%0A%3E%21%5BAlt%20text%5D%28./1512391025540.png%29%0A%3E%21%5BAlt%20text%5D%28./1512391136305.png%29%0A%0A%3E3%20%uCF54%uB4DC%20%uC608%uC81C%20%uB0B4%uB824%uBC1B%uAE30%20-%3E%20http%3A//bit.ly/prog-scala-code%0A%60%60%60%0Agit%20clone%20https%3A//github.com/deanwampler/prog-scala-2nd-ed-code-examples.git%0A%60%60%60%0A%3E4%20SBT%20%uC2E4%uD589%20-%3E%20**sbt%20test**%uB97C%20%uC785%uB825%uD558%uBA74%20%uC2A4%uCE7C%uB77C%20%uCEF4%uD30C%uC77C%uB7EC%uB098%20%uC678%uBD80%20%uB77C%uC774%uBE0C%uB7EC%uB9AC%uB97C%20%uD3EC%uD568%uD574%uC11C%20%uD574%uB2F9%20%uD504%uB85C%uC81D%uD2B8%uAC00%20%uC758%uC874%uD558%uB294%20%uBAA8%uB4E0%20%uB77C%uC774%uBE0C%uB7EC%uB9AC%uB97C%20%uB0B4%uB824%uBC1B%uB294%uB2E4.%20%20sbt%uB294%20%uCF54%uB4DC%uB97C%20%uCEF4%uD30C%uC77C%uD55C%20%uB2E4%uC74C%uC5D0%20%uB2E8%uC704%20%uD14C%uC2A4%uD2B8%uB97C%20%uC2E4%uD589%uD560%20%uAC83%uC774%uB2E4.%0A%3E5%20SBT%20%uBC16%uC5D0%uC11C%20%uC2A4%uCE7C%uB77C%20%uC2E4%uD589%20http%3A//www.scala-lang.org%20%uC2A4%uCE7C%uB77C%20%uB0B4%uB824%uBC1B%uACE0%20%uC2A4%uCE7C%uB77C%uB97C%20%uC704%uD55C%20%uC790%uBC14%uB3C5%uC774%uB77C%uACE0%20%uD560%uC218%20%uC788%uB294%20%uC2A4%uCE7C%uB77C%uB3C5%uB3C4%20%uB0B4%uB824%uBC1B%uAE30%0A%3E%21%5BAlt%20text%5D%28./1512392386478.png%29%0A%3Eroot%20package%0A%3E%21%5BAlt%20text%5D%28./1512402280979.png%29%0A%0A**SBT%20%uC0AC%uC6A9%uD558%uAE30**%0A%0A%0A%uBA85%uB839%uC744%20%uC124%uBA85%uD55C%uB2E4.%20%0A%21%5BAlt%20text%5D%28./1512448348180.png%29%0A%0A%uD604%uC7AC%20%uC0AC%uC6A9%20%uAC00%uB2A5%uD55C%20%uC791%uC5C5%20%uC911%20%uAC00%uC7A5%20%uC77C%uBC18%uC801%uC73C%uB85C%20%uC0AC%uC6A9%uD558%uB294%20%uAC83%uB4E4%uC744%20%uBCF4%uC5EC%uC900%uB2E4.%0A%21%5BAlt%20text%5D%28./1512448394226.png%29%0A%0A%uBAA8%uB4E0%20%uAC00%uC6A9%20%uC791%uC5C5%uC744%20%uBCF4%uC5EC%uC900%uB2E4%0A%21%5BAlt%20text%5D%28./1512448727233.png%29%0A%0A%uCF54%uB4DC%uB97C%20%uC99D%uBD84%20%uCEF4%uD30C%uC77C%uD55C%uB2E4.%0A%21%5BAlt%20text%5D%28./1512448765491.png%29%0A%0A%uCF54%uB4DC%uB97C%20%uC99D%uBD84%20%uCEF4%uD30C%uC77C%uD558%uACE0%20%uD14C%uC2A4%uD2B8%uB97C%20%uC2E4%uD589%uD55C%uB2E4.%0A%21%5BAlt%20text%5D%28./1512448916461.png%29%0A%0A%uBE4C%uB4DC%uB85C%20%uC0B0%uCD9C%uB41C%20%uACB0%uACFC%uBB3C%uC744%20%uC9C0%uC6B4%uB2E4.%0A%21%5BAlt%20text%5D%28./1512448923816.png%29%0A%0A%uC800%uC7A5%uB41C%20%uD30C%uC77C%uC774%20%uBC14%uB00C%uBA74%20%uC99D%uBD84%20%uCEF4%uD30C%uC77C%uACFC%20%uD14C%uC2A4%uD2B8%uB97C%20%uC9C4%uD589%uD55C%uB2E4.%20%0A%28%7E%20%2C%20%uD504%uB85C%uC81D%uD2B8%20%uD30C%uC77C%uC744%20%uAC10%uC2DC%uD558%uB2E4%uAC00%2C%20%uC77C%uBD80%20%uB610%uB294%20%uC804%uBD80%uAC00%20%uBCC0%uACBD%uB418%uB294%20%uACBD%uC6B0%20%uC791%uC5C5%uC744%20%uC2E4%uD589%uD55C%uB2E4%uB294%20%uB73B%uC774%uB2E4.%29%0A%21%5BAlt%20text%5D%28./1512448902442.png%29%0A%0A%uC2A4%uCE7C%uB77C%20REPL%uC744%20%uC2DC%uC791%uD55C%uB2E4.%0A%21%5BAlt%20text%5D%28./1512448958402.png%29%0A%0A%uD504%uB85C%uC81D%uD2B8%uC758%20main%20%uB8E8%uD2F4%20%uC911%20%uD558%uB098%uB97C%20%uC2E4%uD589%uD55C%uB2E4.%0A%21%5BAlt%20text%5D%28./1512448983484.png%29%0A%0A%uBCC0%uC218%20x%uC758%20%uC815%uC758%uB97C%20%uBCF8%uB2E4.%20%0A%0A%21%5BAlt%20text%5D%28./1512448999989.png%29%0A%0A%uC8FC%uB85C%20%7Etest%uB97C%20%uC0AC%uC6A9%uD574%uC11C%20%uD56D%uC0C1%20%uBCC0%uACBD%20%uC0AC%uD56D%uC744%20%uCEF4%uD30C%uC77C%uD558%uACE0%20%uAD00%uB828%20%uD14C%uC2A4%uB97C%20%uC2E4%uD589%uD55C%uB2E4.%20%uB9E4%uBC88%20%uC804%uCCB4%uB97C%20%uC0C8%uB85C%20%uBE4C%uB4DC%uD560%uB54C%uAE4C%uC9C0%20%uAE30%uB2E4%uB9B4%20%uD544%uC694%uAC00%20%uC5C6%uB2E4.%20%7Etest%20%uC0C1%uD0DC%uC5D0%uC11C%20%uB2E4%uB978%20%uBA85%uB839%uC744%20%uC2E4%uD589%uD558%uAC70%uB098%20sbt%uB97C%20%uC885%uB8CC%uD558%uACE0%20%uC2F6%uB2E4%uBA74%20%uB9AC%uD134%uD0A4%uB97C%20%uB204%uB974%uBA74%20%uB41C%uB2E4.%20%0A%0A%0A%0A%0A