Douglas Crockford의 <JavaScript: The World's Most Misunderstood Programming Language>를 번역하였습니다. <JavaScript: 세상에서 가장 오해가 많은 프로그래밍 언어>를 눌러주세요.

요즘은 JavaScript를 가장 많이 쓰고 있는데, 요즘이야 Prototype, dojo, jQuery, Mochikit, YUI 등 3 세대 Ajax 라이브러리가 쏟아져 나오면서 인식이 많이 달라졌지만, 예전에는 초보자들이나 쓰는 프로그래밍 언어 같지 않은 간단한 스크립트라는 인식이 강했던 것이 사실이었죠. 이 글은 Ajax가 유행하기 전에 JavaScript에 대한 그런 오해를 불식시키고자 작성된 글입니다.

REST vs SOAP

Posted 2007. 2. 24. 15:54
최근에 웹 서비스 쪽 개념들을 조금 살펴보고 있는데 새로운 약자들에 익숙해 지려니 시간이 좀 걸리네요. 특히 WSDL, SOAP 등 복잡한 XML 기반의 명세서들을 보고 있노라면 명세서만 보다가 세월 다 갈지도 모른다는 불안감이 엄습해 옵니다.

이미 2003년도의 글이지만, Tim O'Reilly의 글을 보면 아마존에서의 SOAP과 REST 사례를 들고 있습니다. 아마존이 두 가지 인터페이스를 다 제공했는데 결과적으로 간단한 REST (XML over HTTP)가 85%의 점유율을 보였다는 거죠. (지금 상황은 어떤지 확인은 안 해봤습니다.)[1]

예전에는 우수한 기술이 성공한다는 생각이 강했는데, 요즘은 진입 장벽이 낮고 많은 개발자들이 쉽게 이해해서 전파할 수 있는 기술이 가장 우수한 기술이라는 생각이 드네요. 많은 사람들이 참여할 수 있어야 그만큼 발전의 속도도 빠르고 결국은 복잡한 기술을 앞지르게 되는 것 같습니다. 동적인 언어도 그렇고, Rails 같은 웹프레임워크도 그런 사례이죠. 반대로 분산 시스템의 핵심적인 표준이었지만 너무 어려워서 아무도 제대로 못 쓰던 CORBA도 있습니다.

[1] SOAP, WS-* 등의 기술과 HTTP+POX (Plain Old XML) 대결 구도네요. 복잡한 EJB에 대항해서 POJO가 나온 것과 비슷한 대결 구도입니다. 어떤 기술이 너무 복잡해 지면 PO(Plain Old)라는 대항마가 나타나는 게 아닐까 싶습니다.

자바의 클로저 지원

Posted 2007. 2. 21. 01:40
자바 7에 추가될 자바 언어 관련 변화로는 클로저 지원이 있습니다. 클로저는 이미 함수형 언어에서는 보편적으로 쓰이고 있고, 루비에서도 코드 블록(code block)이라는 이름으로 지원되고 있는 언어 기능입니다. 이와 관련하여 클로저 명세를 주도하고 있는 Neal Grafter가 발표한 <Advanced Topics In Programming Languages: Closures For Java>를 구글 비디오를 통해 보았습니다.

Grafter의 강연에 따르면 자바의 클로저 지원도 자바 제네릭스와 마찬가지로 컴파일 타임에 모두 이루어지며, 내부적으로 익명 내부 클래스(anonymous inner class)를 사용하고 있습니다. 다만 익명 내부 클래스는 예외 처리, final 외에 지역 변수를 받는 방법, return 문 지원 등과 관련하여 제약 사항이 있는데, 이를 클로저에서 해결하는데 복잡한 이슈가 있다고 하네요.

위 강연 비디오는 1시간 50분 정도로 꽤 길긴 한데, 자바 클로저의 요구사항과 해결 방법을 아주 명쾌하게 설명하고 있어서 좋더군요. 더불어 클로저를 지원했을 때 JDK API가 어떻게 변화하게 될지에 대해서도 이야기하고 있습니다. 좀 더 관심 있으신 분은 현재 논의 중인 자바 클로저 명세서(Closures for the Java Programming Language)도 참고하시기 바랍니다.

강연을 보면서 받은 느낌은 JDK를 통해 구현된 API(예를 들어 Collection 클래스에 map이나 reduce 함수 등을 추가)를 사용하는 것은 간단하지만, 직접 클로저를 사용하는 메서드를 구현하기는 상당히 까다로울 것으로 보입니다. 이 부분은 JVM을 고치지 않고 어떻게든 컴파일러로 모두 처리하려고 노력한 제네릭스랑 상당히 유사한 면이 있습니다. 또한 lexical scoping하는 요소가 변수 밖에 없는 Scheme과 같은 언어와 달리 생각해야 할 요소가 많아서 사용자 입장에서는 별로 직관적이지 않은 구현이 될 수 밖에 없는 부분이 있고요.



뱀다리

블로그의 제목을 "소프트웨어 이야기"에서 "프로그래밍 언어 이야기"로 변경하였습니다. 앞으로는 주 관심 분야인 프로그래밍 언어 쪽에 좀 더 관심을 집중하고 자세히 다루려고 합니다.


« PREV : 1 : ··· : 42 : 43 : 44 : 45 : 46 : 47 : 48 : ··· : 82 : NEXT »