Scala, Clojure, Groovy 그리고 개발자의 언어

http://www.okjsp.net/seq/216749

 

 

Scala, Clojure, Groovy 그리고 개발자의 언어

개발자도 세컨드 언어 혹은 함수형 언어 하나쯤은 해야 할 시기가 온거 같습니다. 
모바일로 갈아타지 않는다면, 클라우드 환경, 엔터프라이즈 환경에서는 자바 자체만으로는 해결 할 수 없는 측면들이 나와서 세컨드 언어에 대한 수요가 점진적으로 생겨나지 않을까 하는 생각이 많이 드네요. 

대표적으로는, 외국 사례를 보면 루비와 파이썬이 제일 많이 쓰이는걸로 보이네요. 

전체 랭킹 참조 : http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 

Github & StackOverFlow Top 10 : http://www.mimul.com/pebble/default/2012/02/16/1329382829582.html 

대부분의 지표상, 상위권에 스크립트 언어들이 많이 있습니다. 
배우기 쉽고, 코딩에 대한 결과물을 바로바로 확인 할수도 있고, 오픈소스 형태로 진화하면서 확장 및 패치도 비교적 안정적으로 제공 되고 있으니까 여러가지 잇점이 있겠죠. 
저는 개인적으로 프로토타입을 작성하기 쉽다, 테스트 코드를 작성하기 쉽다 등등의 이유가 스크립트 언어의 인기 이유라고 봅니다. 
거기에 점점 개발툴이나 개발 환경도 풍부해지니 예전처럼 설정이나 실행환경, 개발 환경때문에 애 먹는 일도 요즘은 거의 없어졌으니까요. 

파이썬같은 경우는 웹은 물론이고 Splunk 와 같은 엔터프라이즈 솔루션도 있고 게임이나 데스크탑 어플에도 쓰이므로 아마 제일 강력한 레퍼런스가 있지 않나 싶네요. (자바 보다 오래됐습니다) 

자바 개발자들에게는 비슷한 형태로 따져봤을때 (파이선을 하면 좋겠지만)그루비, 스칼라, 클로져가 눈에 띄네요. 

그루비는 배우기 쉽고, 자바와 가장 궁합이 잘 맞아 보입니다. 
Spring 기반의 지원이 눈에 띄죠. 
http://www.springsource.org/ 
이클립스 기반의 STS 와 같은 형태로 GGTS (groovy-grails-tool-suite) 
가 개발 환경입니다. 익숙하겠죠…? 
JMX 와 강력한 리플렉션 지원, 초간단 정규식, 클로저 형태의 동적 스크립트의 매력도 느낄 수 있습니다. 각종 빌더등이 지원이 되서 간단한 형태의 코딩으로 강력한 기능을 수행합니다. 
근데 아직 레퍼런스가 많진 않다고 하네요. 

스칼라 같은 경우는 하이브리드 펑셔널 객체지향 언어입니다. 
JVM 위에서 돌아가며 함수형과 객체지향적인 측면을 다 지원한다고 합니다. 또 레퍼런스가 많은 편입니다. 
twitter, FourSquare, Tumblr 등등 
개발툴로 이클립스(플러그인)와 인텔리제이가 지원되고 성능이 좋다고 알려져 있습니다. 
간단한 문법을 보았는데, 약간 자바스럽지(?) 않습니다. 그루비에 비해서는 배우기가 좀 더 어려워 보입니다. 

마지막으로 클로저는 Java와 가까운 동적 타이핑 스크립트 언어입니다. 
빠른 프로토타이핑, 스크립트 및 새로운 구문 (Java를 알고 있다고 가정하고) 습득하지 않고도 동적 언어를 배우기 위하여 좋다고 합니다. 
멀티 트랜잭션 메모리 및 멀티스레드 환경에서 강력한 고급 기능을 지원하는 Lisp 패밀리 언어 입니다. 
JVM위에서 돌아가고 요즘 Lisp 커뮤니티, Java 커뮤니티 사이에서 꽤나 인지도 있는 상황입니다. 

빅데이타, 클라우드, 모바일, 엔터프라이즈 환경으로 시장이 확대되고 있고 
자바와 스프링 (혹은 SQL) 만으로는 고급 개발자 이상의 장벽을 뛰어넘기 힘든 상황이 됐습니다. 
10년차가 넘어가면 자바 개발자에서 모바일 환경의 전문가가 되던가, 엔터프라이즈 레벨의 아키텍쳐를 그릴 수 있는 사람이 되던가, 빅데이터 환경에 경험을 축적하여 전문가가 되던가 해야 이 급변하는 시장 상황에서 살아남게 될거 같다는 생각이 듭니다. 

저도 이제 곧 10년차가 되어가네요. 
준비하지 않으면 그저 평범한 고급 개발자가 되겠죠. 
^_^