Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

RubyLanguage

From ZeroWiki

관련 페이지

Ruby

마츠모토 유키히로(Matz)가 1995년 SmallTalk, Perl, Python 의 장점을 취하여 만든 객체지향 스크립트 언어이다. 펄보다 강력하고 파이썬보다 객체지향적이다.

흔히 Ruby를 칭하는 명칭으로 진정한 객체지향 언어, 보다 나은 Perl, 동작하는 의사코드, ALGOL의 탈을 쓴 Lisp등이 있다.

특징

진정한 객체지향 언어

  • Ruby는 진정한 객체 지향 언어이다.
    • Ruby에서는 숫자, 문자열, 정규표현, 입출력, 클래스 자체마저 객체이다. '객체가 아닌 자료형'은 존재하지 않는다.
    • 모든 작업은 객체를 이용한 작업이며, 작업의 결과물 또한 객체이다. 메소드나 코드 블록을 객체로 다룰 수 있다.
number = Math.abs(number); // 자바 절대값 구하기
number = nember.abs   # 루비 절대값 구하기
  • 클래스 기반의 객체지향을 채용했고, 모든 객체는 특정 클래스의 인스턴스이다.
  • 모든 클래스는 Object 클래스의 자손 클래스이다.
    • 단, Ruby 1.9에 도입된 BasicObject 클래스는 예외.

보다 나은 Perl

  • Perl과의 유사성
    • 텍스트 처리에 적합한 HighlevelLanguage 이다.
    • Ruby는 문자열을 간단히 다룰 수 있는 많은 기능을 갖추고 있다.
    • Ruby는 확장 정규표현 기능이 인터프리터와 잘 통합되어 있다.
    • C언어 라이브러리를 랩핑한 라이브러리를 지니고 있다.
  • Perl보다 나은 점
    • 스파게티 코드를 작성할 가능성이 덜하다.

동작하는 의사코드

  • Ruby 코드는 간결해서
    • 이해하기 쉽다.
    • 보다 본질적인 면에 집중할 수 있다.
    • C++, Java, C# 등의 언어로 작성한 코드 예문은
      • 본질적인 면과 상관없이 컴파일을 위한 코드가 많이 포함된다.
      • 언어 자체의 표현 능력 부족으로 의사코드를 사용해야했다.
  • Ruby를 사용하면
    • 생각하는대로 코드를 작성하면 된다.
    • 프로그래밍 상의 개념을 설명할 때 실제로 동작하지 않는 의사코드를 작성할 필요가 없다.
  • "Hello!" 를 세 번 출력하는 Ruby 예제 코드. 코드를 영어 문장을 읽듯이 읽어내려갈 수 있다.
3.times do
  puts "Hello!"
end

ALGOL의 탈을 쓴 Lisp

  • Ruby는 ALGOL 프로그래머에게 친숙하게 설계되었다.
    • 절차를 나열해서 차례로 실행하는 방식으로 구성된다.
    • 변수에 대입하고 변수값을 조작하고 식이 가지는 부가작용에 의해 기능을 실현한다.
    • 블록을 이용하여 프로그램을 구조화한다.
  • Ruby는 Lisp으로부터 많은 사고방식을 계승한다.
    • 고수준함수(블록 구문 메소드)
    • Domain Specific Language
    • 메타 프로그래밍

실행환경

인터프리터

  • MRI - Ruby의 창시자 Matz가 개발한 인터프리터.
  • IronRuby - .NET Dynamic Language Runtime 상에서 동작. Ruby를 .NET 언어로서 이용할 수 있다.
  • Ruby.NET - Ruby 프로그램을 .NET MSIL(중간언어)로 컴파일.
  • XRuby - Ruby 프로그램을 자바 가상머신 바이트 코드로 컴파일.
  • Rubinius - Ruby로 작성된 Ruby 인터프리터.
  • MacRuby - Objective-C로 작성된 인터프리터. Mac OS X 상에서 작동.

참고

  • 프로그래밍 루비 - '곡괭이 책'으로 잘 알려진 책. 본책과 별책으로 나뉘어있다. 루비를 익히는 것에 그치지 않고 파워풀하게 사용할 수 있도록 많은 내용을 담고 있다. 매우 두꺼움.
  • 입문자를 위한 루비 - 타 언어 프로그래머를 위한 Ruby 입문서. 책이 매우 얇고 핵심적인 내용만을 다루고 있어 이미 프로그래밍을 할 줄 아는 사람이라면 빠르게 루비를 익힐 수 있다.

언어분류