최근에 프로그래밍계를 뜨겁게 달군 화제중 하나는 유명 마이크로 블로깅 서비스인 Twitter 가 루비 온 레일즈에서 Scala 로 옮겨탄 것에 대한 인터뷰 기사였다.

Twitter on Scala
A Conversation with Steve Jenson, Alex Payne, and Robey Pointer
by Bill Venners
http://www.artima.com/scalazine/articles/twitter_on_scala.html

위 인터뷰에서 특기할만한 사항들
- 루비의 런타임 환경은 오랫동안 실행되는 서버형 프로세스에 적합하지 않다. 가비지 컬렉터도 문제가 있다. 반면 자바가상머신은 오랫동안 실전에서 다듬어져 문제가 없다. 스칼라는 JVM 기반으로 동작한다
- 루비는 아직 제대로 된 멀티쓰레드 지원이 없다. 루비 언어의 쓰레드는 운영체제상의 쓰레드로 나눠질 수 없어서, 한개의 코어밖에 사용할 수 없다.
- 루비의 동적타이핑 환경은, 유저 입력에 대한 엄밀한 검사가 중요한 서버환경에서는 결국 약점으로 작용한다. 코드의 이곳저곳에 null 체크와 kind_of? 체크를 해야만 했고, 결국 자체적인 정적타이핑 환경을 만들게 되었다. 스칼라는 정적 타이핑환경이지만 타입추론이 잘 되어 있어서 코드를 지저분하게 하지 않는다.

프로그래밍 계에서는 수많은 기술이 나타났다 사라지고, 그중에 일부가 계속 사용되고 그중에서도 아주 소수만이 대중적인 관심을 받게 되는데, 대중의 관심을 받게 되는 가장 큰 이유중 하나는 어떤 잘 알려진, 혹은 대규모 프로젝트에서 'xx 기술을 사용했다' 라는 실전활용사례가 뜨면서 부터이다.

위 기사를 보고나서 Scala 에 대한 관심이 생겨 찾아보니

스칼라 언어 홈페이지:
http://www.scala-lang.org

스칼라 책:
http://www.artima.com/shop/programming_in_scala

등을 찾을 수 있어 책을 eBook 으로 구매해서 보고 있다.

Ruby 와 Erlang, C# 다음으로 새로운 언어를 공부하게 된 셈인데 (제대로 코딩을 하고 프로젝트를 해가면서 짜는게 아니라 그냥 이런 식으로 사람들이 문제를 해결해가는구나라는 정보를 얻는 정도에 불과하긴 하다) 함수형 언어와 절차형 언어의 형식을 모두 받아들이면서, 실용성과 확장성을 추구한 점이 가장 눈에 띈다. 언어의 이름도 Scalable Language 의 줄임말인대로 간단한 스크립트부터 대규모 서비스까지 다양한 도메인에 확장할 수 있다. 거기에 Erlang 의 특징을 받아들인 Actor 단위의 Concurrency library 를 지원한다.

Programming in Scala 책 자체는 상당히 보기 쉽게 씌여졌다. 특히 함수형 언어에 익숙하지 않은 사람에게 친절하게 설명하면서 접근하는 편이라 읽기가 쉽다.

imcgames 의 김학규입니다