[책] 루비 프로그래밍 언어 외 1권

레거시 코드 활용전략

좋은 책이란 소문이 너무 많이 들려와서 안 사볼 수가 없는 지경인 책입니다. 과연 소문대로 좋은 책이군요 ^^;

책의 저자 자신이 워낙 뛰어난 개발자이며 컨설턴트인데다가 기존 시스템에 대한 업그레이드나 보수작업도 워낙 많이 해본 베테랑입니다.

남이 짜둔 프로그램을 어떻게 유지보수, 수정확장 하는가에 대한 교과서적인 해법을 보여줍니다. 책에서 가르치는 방법은 마술이 아닙니다. 오히려 남이 짜 놓은 프로그램은 악몽과도 같으니 이를 인정하고 매우 조심스럽고 천천히 조금씩 분해하여 정복해야 한다고 가르치고 있습니다(맞는 말입니다)

성급하게 래핑하거나 추상층에 숨겨서 문제를 땜빵하고 새로운 코드가 그 기능을 대체하게 하는 것으로는 또 다른 악몽을 만들어낼 뿐이죠. 하지만 그렇다고 천천히 적용할 방법론만 말하고 있는 것은 아닙니다. 실무 경험에서 나온 급하게 땜빵하기 편도 충실히 다루고 있습니다 ^^

루비 프로그래밍 언어

모두가 루비를 좋아할 때 왠지 반항심이 생겨 슥 훓어보기만 했습니다. 하지만 루비의 우수성은 이미 수 많은 개발자들이 언급하고 있습니다. 왜 그런지 궁금해서 참을 수가 없을 지경이 된 게 요즘이라고 할 수 있습니다. 그래서 이 책을 골랐습니다. 읽어보니 개발자들이 떠는 말 중에 받아들일 수 있는 부분이 있고 아닌 부분이 있습니다만, 일단 우아하다는 표현은 받아들이기 힘들고 표현력이 짱이다라는 표현은 100% 동감할 수 있는 언어라고 생각합니다.

일단 책을 한 번 쭉 읽고 나니 느낌 상 프로토타입 언어를 순수 OOP로 구현한 뒤 lisp스타일의 클로저를 합성하고 파이썬 스타일의 코딩 규약 및 키워드를 도입하면 딱 루비의 느낌과 맞다는 생각입니다.

따라서 루비는 자바스크립트나 액션스크립트 사용자도 친숙한 개념이 많이 나오고 자바나 c++개발자에게도 그렇고 파이썬 2.x사용자에게도 그런 느낌이 들지만 반대로 생소하기도 할 것입니다.

개인적인 견해인데 현대의 언어는 대부분의 특징을 통합하고 있습니다.

  • 기본형에 대한 메서드 확장 지원
  • 스캄이나 ml2방식의 비정형화된 연산자 및 키워드 재정의
  • 광범위한 별명도입
  • 함수객체 및 런타임 함수 생성을 위한 람다식, 또한 이를 성립시키기 위한 클로저 제공
  • 확정된 클래스에 대한 런타임 변경 및 확장(프로토타입 등)

c++0x라던가 이제 발표될 최신 자바 6.x이라던가 c#4.x 등에서 위의 개념을 확장하거나 이미 구현하고 있습니다.

반대로 생각하면 알골60의 자식들이 일단 lisp의 자손들과 결혼하는 형국이군요. 곧 prolog의 선언적 발현에 대한 특징과도 결혼하지 않을까요.

여튼 현재 주류언어의 움직임이 oop베이스의 람다형 알고리즘 사용이라는 흐름을 갖고 있는 건 분명하고 이는 런타임에 그러한 부하를 걸어도 될 정도의 머신파워가 확보되었다는 반증이기도 하죠. 곧 더 강력한 머신 파워가 확보되면 기저층을 이루던 주류 시스템 언어조차도 더욱 ML2나 프롤로그의 특징을 반영하게 되겠죠.

활용처의 제약이나 한계를 두지 않은 오픈소스로서의 자유로운 루비는 이러한 언어의 세계에서 꽤나 진보적이고 파격적인 부분이 많습니다.

정말 그 자체가 갖고 노는 게 재밌군요 ^^