Ruby를 다시 열심히 공부 중이다.
언어에 대한 학습은 어느정도 끝났고 API와 응용프레임워크인 RoR을 공부하고 있다.

처음 Ruby를 공부하기 시작했을 때 “Java개발자를 위한 Ruby프로그래밍”인가 하는 글을 어디선가 읽은 적이 있는데 그때 나온 얘기가 Ruby로 Java프로그래밍을 하지 말라는 것이었다. 마치 C를 오래 개발하던 사람이 C++이나 자바을 쓰면서도 여전히 C프로그래밍 하듯이 하는 것처럼 자바개발자들은 Ruby로 프로그래밍을 할 때도 자바식으로 개발한다는 것이다. 그 글을 읽으면서 같은 OOP언어인데 뭐 그리 다른 점이 있을까하고 생각을 했었는데 막상 Ruby를 공부하고 보니 그 말에 수긍이 가기 시작했다. 언어의 문법과 API들을 어느정도 익히고 난 뒤에도 Ruby로 코드를 작성하면서 이게 Ruby의 적절한 프로그래밍 방식인가 하는 의문이 자꾸 든다. 이럴때 가장 좋은 방법은 잘 개발되어진 Ruby프로그램을 분석하면서 프로그래밍 스타일을 배우는 것일 것이다. 뭘 연구해본다나… 

Ruby에서 가장 잘 활용되는 것은 block이다. 자바의 anonymous inner class를 이용한 template/callback방식의 개발과 유사한 것인데 자바개발자들 사이에서는 이것이 별로 사용되지 않는 반면에(SpringFramework은 예외!) Ruby는 거의 모든 부분에서 block이 적극 활용된다. 나는 이미 Spring을 통해서 그런 방식의 개발에 익숙해져서 그런지 block이라는 것이 매우 친근하게 느껴졌다.

내가 가장 맘에 든 부분은 바로 Duck Typing이다. Ruby에는 Type이 없다. 자바와 같은 Strong type이 없다는 뜻이다. 그래서 Ruby같은 언어를 Dynamic Typing Language 라고 부르는 것 같다. 그래서 자바개발자들이 애용하는 Interface갈은 것이 필요없다. Interface는 하나의 Class가 여러개의 Type을 지원하게 함으로서 다형성 등을 효과적으로 이용하게 하는 효과가 있다. 하지만 Ruby에는 interface가 필요없다. duck typing이 있기 때문이다. 그래서 Test를 만들때 Mocking을 하기가 너무 쉽다. 그냥 같은 이름을 가진 method가 있는 다른 오브젝트를 mock/stub으로 넘기면 된다. 특히 연산자를 method취급하고 따라서 연산자를 오버라이딩하는 것이 가능하기 때문에 연산자를 이용한 duck typping은 더욱 편리하다.

그리고 Module을 include하는 방식으로 만드는 mixin. 자바에서는 AOP의 고급기법을 써야 가능한 방식인데 Ruby에서는 너무 쉽게 구현된다.

하지만 맘에 들지 않는 것도 많다. 너무 컨벤션이 많다. 또 한가지 기능에 대해서도 언어차원에서 다야한 방법으로 접근하게 되어있다. 따라서 표준화된 깔끔한 코드를 만들 수 있으려면 코딩표준등이 잘 세워져야 할 것이다. 아니라면 개발자마다 독특한 – 어쩌면 가독성이 매우 떨어지는 코드가 만들어지기 쉽다.

그리고 언어적으로도 아직 완성도가 떨어진다. 오픈소스 방식으로 개발되어서 그런지는 모르겠지만 버전에 따라서 자꾸 변하는 언어가 왠지 어설퍼 보인다. 이제 2.0이 되면서 또 많은 변화가 있을 것 같은데 버전간 호환성등의 문제가 슬슬 나타날 것 같다.

그리고 project path구성과 갈은 것들이 역시 불편해 보인다. 깔끔하지 않은 require문을 볼때마다 뭔가 엉성해보이는 것은 어쩔 수가없다.

아직은 Ruby가 주류언어가 되고 범용적으로 쓰일지 의문이다. Ruby만으로 구성된 엔터프라이즈 시스템이 나오려면 글세.. 제법 많은 시간과 발전이 필요하지 않을까 싶다. 오픈소스 커뮤니티 레벨이 아니라 대형업체의 공식적인 지원도 필요할 것이다. 나는 Ruby가 DSL을 포용하려는 자바기술에 좋은 조력자가 되었으면 하는 바람이다.

아직 비공개로만 개발해서 적용하고 있는 OSAF의 첫 공개버전에는 아마 Ruby가 큰 부분을 차지하고 있을지 모르겠다.

Related posts:

  1. 최적의 Ruby IDE
  2. 켄트 벡의 오리사냥 – Optimistic Typing
  3. JRuby의 활용
  4. Maven archetype 설정파일 자동생성기 – ArchetypeXmlWriter
  5. 이번주 할 일
  6. 이번주 계획과 이것 저것
  7. Ruby Symbols
  8. JRuby개발자 SUN에 고용되다
  9. MacBook 구입하다
  10. Maven 의존관계 수렁에 빠지다
  11. Ruby와 Ruby On Rails
  12. 유쾌한 이슈처리 재촉 메일
  13. Extemporary Speaking
  14. 나만의 컴퓨터를 꿈꾸며
  15. JDK7에는 Closure가 추가될까?

Facebook comments:

to “Ruby를 공부하면서…”

  1. below youll discover the link to some websites that we assume you need to visit

  2. just beneath, are quite a few completely not connected internet sites to ours, having said that, they’re surely worth going over

  3. I really like and appreciate your blog post. Awesome.

  4. Here is a great Blog You may Locate Interesting that we Encourage You

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha