http://www.artima.com/scalazine/articles/twitter_on_scala.html
Twitter에서 Scala로 backend queueing system을 바꿨다고 하는군요. Ruby를 사용하는데서의 어려움을, 1) 시스템을 빌드하다보면 언제부턴가 나도 모르게 type system을 빌드하고 있다, 2) long running process를 위한 최적화가 부족하다, 3) 쓰레드 지원이 미약하다(green thread만 지원)에서 찾고 있습니다.
한때 Ruby에 심취한 적 있지만 현재는 Python 코더인 저로서는 Ruby의 한계를 쓰레드 지원이 미약한 점, 온갖 해킹 코드가 난무하게되면 readability가 떨어질 수 있는데 Ruby 커뮤니티는 본질적으로 그러한 해킹을 즐기며 이의 부작용이 우려된다는 점, Metaprogramming의 개념은 훌륭하고 멋지지만 도무지 이해하기 힘들다는 점을 Ruby가 메인스트림이 되기에 부족한점으로 생각하고 있습니다.
Scala는 다음과 같은 이유로 탄생하였다고 합니다.
http://www.scala-lang.org/node/25
After having written hundreds of thousands lines of Java himself, Martin Odersky, Professor at EPFL, was well aware of the frustrations faced by Java programmers. He formed the vision of applying the best knowledge of the academic research community to the problem of making the Java programming experience better, even fun. His first pragmatic step was Java Generics, seen as a major success by the Java community. But for the full vision of scalable concurrent programming to be achieved he saw that the basic Java syntax would need to change. You simply couldn’t get there from here. But a deceptively simple shift in syntax gained better uniformity to the object-oriented aspects of Java, and this in turn enabled a natural fusion with functional programming concepts which are critical for tackling concurrency. In 2001 Scala was born.
개인적으로 자바는 꽤나 괜찮은 언어임에도 불구하고 이제는 포인터 빼놓고 생각하면 C++ 못지않게 Learning Curve가 높아져버린 언어로 생각하고 있습니다. 특히 Generics는 프로그래머의 사고를 언어의 구현 세부사항에 집착하게하는 매우 나쁜 결과물로 생각하고 있지만, 하지만서도 워낙 널리 쓰이고 있는 언어이기에 Scala와 같은 확장은 많은 가능성을 갖고 있는 것으로 보입니다. 하지만 Artima글을 읽어보면 사실 ‘그냥 재밌을거 같아서’도 꽤나 중요한 이유입니다. ㅎㅎ
Twitter의 개발자는 starling이라는 루비의 메시지 큐 시스템을 Scala 1500라인으로 포팅하여 공개하였는데 이 와중에 Apache Mina가 큰 도움을 주었다고 합니다.