관리 메뉴

nkdk의 세상

Scala를 시작하다. Hello Scala! 본문

My Programing/Scala&Lift

Scala를 시작하다. Hello Scala!

nkdk 2010. 6. 2. 21:59
Scala공부를 시작할까 합니다. ^^

오랜만에 시작하는 프로그래밍 언어군요.

일단 이 프로그램 언어는 펑션 프로그래밍이라고 하여 재미있는 점이 꽤 있더라고요.

Getting Started with Scala


자 시작해 봅시다.

일단 왜 스칼라인가 부터 있어야 하지 않을까요? 저도 한지는 얼마 되지 않아서 확실하게 정의하기는 힘들지만.. 일단 이 스칼라라는 언어는 자바를 완벽 지원합니다. 현재 저 같은 경우는 jre1.6.20 에서 작업하는데 완벽 지원되네요 ^^

그리고 또한 그 후에 파생되는 lift라는 프레임워크로 Ruby on Rails(이하 ROR)와 같은 효과를 낼 수 있는 일명 -- 뽑아내기 프로그램이 가능합니다. 그런데 왜! ROR로 하지 스칼라를 먼저 선택해서 해 보는가입니다. 일단.. 현 회사에서 ROR로 만들어져 있고 정말 간단하게 구축되어지는 모습을 보면 ROR을 먼저 파볼까 하고 했지만.. 역시나 속도의 면이나 기동의 면을 봤을 때 스칼라가 더 좋을 거 같더라고요. 일단 펑션 프로그래밍이라는 부분이 있던데 여기에 흥미가 생기더군요. 또한 예전부터 자바 프로그래밍을 했었기 때문에 여러 이슈들에 대해서에 대한 자신감? 하지만 역시 처음 배우는 부분에서는 헤매는건 마찬가지겠지요 :)
하지만.. 헤매는게 어느 정도 시간이 걸리는거는 배워 나가다 보니까 조금씩 익숙해 지는 시간이 줄어 드는 것 같습니다. ^^; 자 그럼 시작해 봅시다.
역시나 제대로된 장점 제대로된 결론적인 것들은 맨 나중에 씁시다. 꼭 목차에 뭐가 좋다 뭐가 좋다 이런거 인터넷에 많이 떠들어져 있지만, 역시 제가 한번 경험해 볼렵니다. 자 고고!

일단 처음 시작이니까 환경 잡아야죠?

일단 윈도우 환경으로 해 볼까요?

1. http://www.scala-lang.org/downloads
여기서 스칼라를 받습니다.
그리고 이게 자바 환경에서 돌아 가기 때문에

2. http://java.sun.com/javase/downloads/widget/jdk6.jsp
자바를 받습니다. ^^

그리고
윈도우 환경 변수를 잡아야 겠죠? 저는 jdk와 scala를 program_lang에다가 깔았어요.

SCALA_HOME : C:\program_lang\scala-2.8.0.RC3
JAVA_HOME : C:\program_lang\Java\jre6
Path : ;%SCALA_HOME%\bin <-이 부분 추가

환경은 이게 끝입니다. ^^;


자 그럼 시작해 볼까요? 역시나 Hello world의 아류작인 Hello Scala!를 만들어 보겠습니다.

window용 CMD
-- Start
C:> scala
Welcome to Scala ----

scala> object HelloWorld {
| def main(args: Array[String]) {
| println("Hello, world!")
| }
| }
defined module HelloWorld

scala> HelloWorld.main(null)
Hello, world!
unnamed0: Unit = ()
scala>:q
--end


이게 다음으로 재미있는게 리눅스나 유닉스에서 쉘 스크립트 프로그래밍으로 쓸 수도 있답니다. ^^

-- 쉘 스크립트 bash start

#!/bin/sh
exec scala "$0" "$@"
!#

object HelloWorld {
def main(args: Array[String]) {
println("Hello, world! " + args.toList)
}
}
HelloWorld.main(args)
-- end

자 다음은 scala파일의 컴파일 방법 인데요.

scalac HelloWorld.scala
scalac -d classes HelloWorld.scala <-기본 디렉토리 설정시

실행시
scala HelloWorld
scala -classpath classes HelloWorld <-classes폴더도 포함 실행

만약 기본적 메인을 쓰고 뭔가 간단한 작업만을 하고 싶다면,

object helloAppli extends Application {
println("Hello, world!")
}

이걸 써도 괜찮네요. Application이라는 클래스를 상속하면 되네요 ^^

그럼 다음 편에서 뵐께요 다음편에서는 스칼라의 주요 기능들이라는 제목으로 할까 생각 중인데.. ^^
주요 기능이라기는 뭐한가? ^^