최근 업무 관련해서 루비를 쓰게 됐다.
2007년에 루비를 잠깐 했었으나 숫자 야구 만들었던 게 다였고, 거의 6년만에 다시 해본 루비에 대한 감상을 정리한다.
우선 과거에 사용했던 시기를 떠올려본 루비에 대한 감상을 먼저 나열해보겠다.
- 스크립트 디버깅이 힘들다. IronRuby로 쓰면 좀 낫다.
- C와의 연동은 준수한편.
- 문자열 다루기 쉽다. 아주!
- 그렇지만 역시나 trim, chop 같은 메소드를 통해 문자열을 섬세하게 다뤄줘야 함은 여전함.
이번에 새로 루비를 쓰기 전까지 주로 써온 스크립트로는 batch script, jscript (java script의 윈도우 내장 스크립트), 펄, 루아 였다.
이번에 루비를 써보고 느낀 건 역시 쉬운 편이라는 점이었다.
1
2
# 파일 오픈
file = File.open(ARGV[0], "r+")
1
2
3
4
# 파일 라인 단위 파싱
file.each_line do | line |
blah blah
end
1
2
# 라인 공백 단위 파싱
ip, port, servername, gsid = line.split(/ /)
이렇게나 쉽게 파일과 문자열을 파싱 할 수 있다.
JScript가 C++이나 Java와 유사한 문법과 심지어 API 사용 마저 얼추 C++과 비슷하다는 장점(?)이 있다보니, 루비를 접하면서 C계열 보다는 펄 쪽에 좀 더 가깝지 않나 싶은 생각이 들었다. (파이썬은 안써봄.)
펄이 문자열 다루기에 강자인 반면, 코드 가독성을 있는 대로 떨굴 수 있다는 단점이 있었던 데에 비해, 루비는 간결함을 모토로 가독성 좋은 코드를 짧게 짜는 데에 장점이 있었다.
물론 복잡하게 짤라면 짤 수 있음은 여타 언어와 흡사하나, 의지(!)를 가졌을 때 간결하게 짜기에 적절하게 라이브러리도 필요한 기능 대다수가 기본 지원이었고, 준수했다.
위에 예제들 중에서 가장 맘에 들었던 것이 라인 공백 단위 파싱해서 적절한 변수에 담는 코드였다.
메타 데이터를 쉽게 읽고 처리할 수 있다는 점은 JScript, Batch Script 등처럼 쉽게 프로그램 사이의 연동 스크립트로써 사용할 수 있다는 의미이고, 루비 자체의 기능도 함께 사용하면 어지간한 기능은 구현 가능하다는 의미다.
이외에 든 생각은 아래와 같다.
- 루비가 쉽긴 하지만, 그렇다고 학습비용이 안들진 않는다.
- 느리다. 확실히 느림.
- 코딩이 유연하다지만, 실수는 여지없이 스크립트 오류를 발생 시키기에 논리적인 빈틈을 줄이는 노력은 다른언어와 다를 바 없다.
얼마나 많은 일을 할 수 있냐보다, 얼마나 짧은 시간에 직관적인 코드로 결과물을 만들어 낼 수 있느냐의 관점에서 봤을 때 분명히 루비는 좋은 언어라는 생각이 든다.
루비 온 레일즈도 어느정도 공부 해볼 생각이다. 루비에 좀 더 익숙해졌을 때의 감상이 지금과 같을지 궁금하니… 좀 더 써보고 다시 포스팅하겠음.