2. 다른 언어와의 비교


2.1 Python과의 비교

Python은 여러 면에서 루비와 라이벌 관계에 있는 언어입니다. Python과 루비는 둘 다 객체지향 해석형 언어이나 몇 가지 부분에 있어 다른 접근 방법을 취하고 있습니다. 둘간의 가장 커다란 차이점은 루비는 순수 객체지향 언어이나 Python은 하이브리드형 객체지향 언어라는 점입니다.

흔히들 루비는 Python보다 마케팅에 있어 더 성공적이었다고 평가합니다. 2005년 12월에 루비 책의 판매량이 Python을 제쳤다는 발표가 있는 등 현재로서는 루비쪽에 더 모멘텀이 있어 보이는 상황입니다.

2.2 Perl과의 비교

루비는 원래 더 나은 Perl을 지향점으로 설계된 언어입니다. 루비는 Perl의 장점을 그대로 갖춘 반면 Perl의 약점인 코드 가독성, 객체 지향성 등에서 탁월함을 자랑합니다. Perl 개발자라면 루비에 쉽게 익숙해질 것입니다.

2.3 Java와의 비교

우선 루비가 해석형언어인 반면 Java는 가상머신(virtual machine) 기반의 실행환경을 가지고 있습니다. 이로 인해 루비에서의 개발이 더 편리한 반면, Java의 실행 속도가 더 빠르다는 차이가 납니다. 루비 2.0은 가상머신을 지원할 예정이므로, 향후 실행 속도의 격차는 줄어들겠으나, 아직까지는 Java의 실행 속도가 더 빠른 것이 사실입니다.

Java와 비교했을때 루비의 가장 큰 장점은 코드의 간결성입니다. 루비의 소스코드는 직관적이며 이해가 쉬움에도 불구하고 매우 간결하다는 특징을 가지고 있습니다. 같은 프로그램을 루비와 Java로 작성했을때 루비 버전의 소스 길이가 Java 버전에 비해 절반 이하인 경우가 일반적입니다. 이러한 소스 코드의 간결성은 코드 작성 시간에는 더욱 커다란 차이를 가져와서 보통 루비로 프로그램을 작성 하는 시간은 자바에 비해 2-5배 정도 빠르다는 의견이 많습니다.

위의 내용을 요약하면 Java는 보다 컴퓨터의 실행환경에 최적화된 언어이고, 루비는 보다 프로그래머에 작업환경에 최적화된 언어라고 말할 수 있겠습니다. 이외에도 루비와 Java의 기술적인 차이에는 다음과 같은 내용이 있습니다.

Java는 스태틱 타이핑 기반. 루비는 다이내믹 타이핑 기반. Java는 원시형 데이타 타입을 가진 하이브리드 객체지향 언어. 루비는 순수 객체지향 언어. Java의 클래스는 한 번 정의되면 변경 불가능한 폐쇄형. 루비의 클래스는 프로그램 실행중에도 재정의 가능한 오픈형. Java는 인터페이스를 사용한 폴리몰피즘 지원. 루비는 믹스인을 통한 덕타이핑 지원. 루비는 그 이외에도 클로져, 메타프로그래밍 등을 지원합니다.

또한가지 중요한 차이 중 하나는 Java 개발자는 일반적으로 IDE 개발환경을 선호하고, 루비 개발자는 흔히 텍스트 편집기와 쉘 기반의 개발환경을 선호한다는 것입니다. 이는 메타프로그래밍, 쉬운 자동 코드 생성 등으로 인해 루비의 경우 IDE가 가져다주는 이점이 별로 없다는 것이 주된 이유일 것입니다.

2.4 PHP와의 비교

PHP와 루비의 가장 큰 차이는 PHP가 웹 전용 개발언어인 반면 루비는 범용 프로그래밍 언어라는 점입니다. PHP는 name space가 없고, 기본적으로 객체지향적이지 않아 대규모 프로젝트의 경우 소스 코드 관리가 어려운 면이 있습니다. PHP의 제약에 불편함을 느껴온 개발자라면 루비 기반의 레일스 프레임워크를 사용해 볼 것을 권장합니다.