루비 (프로그래밍 언어)

위키백과 ― 우리 모두의 백과사전.

루비(Ruby)
로고 그림
패러다임  다중 패러다임
발표 연도  1995년
설계자  마츠모토 유키히로
개발자  마츠모토 유키히로
최근 버전  1.8.6-p110 / 2007년 9월 27일
미리보기 버전  1.9.0 / 2007년 12월
자료형 체계  불규칙, 동적 타이핑
주요 구현체  YARV, Jruby, Ruby.NET, IronRuby, Rubinius
영향을 받은 언어  스몰토크, 리스프,
영향을 준 언어  그루비
운영 체제  크로스 플랫폼
라이선스  GNU 일반 공중 사용 허가서
웹사이트  http://www.ruby-lang.org/

루비(Ruby)는 동적 객체 지향 프로그래밍 언어이다. 현재 루비 온 레일즈라는 신속한 웹 개발을 지원하는 웹 개발 프레임워크의 인기로 많은 주목을 받고 있다. 차기 Visual Basic이라는 호평을 받기도 하고 있다.[출처 필요]

목차

[편집] 역사

1995년 일본의 프로그래머인 마츠모토 유키히로에 의해 만들어져 대중에게 소개되었으며 현재 GNU 일반 공중 사용 허가서 아래 공개되어 있다. 2008년 1월 현재 최신 안정 버전은 1.8.6 버전이다. 1.9.0 버전이 2007년 12월 발표되었으나 아직 개발버전으로 간주되고 있다.

[편집] 루비의 철학

루비의 개발자 마츠모토 유키히로는 루비의 가장 중요한 점이 스트레스 없는 프로그래밍(쉬운 프로그래밍)이라고 한다.

[편집] 구현 버전

루비에는 크게 두가지 버전이 있다. 하나는 가장 많이 사용되는 루비 인터프리터이다. 또 다른 하나는 자바 VM을 사용하는 것으로 JRuby라고 한다. 루비 인터프리터는 유닉스, 리눅스, 마이크로소프트 윈도우즈, 맥 오에스 텐, MS-DOS, OS/2, 아미가 등 많은 플랫폼에 이식되어 있다. JRuby는 순수한 자바에서 실행되기 때문에, 자바 환경을 실행시킬 수 있는 어떠한 곳에서도 실행 가능하다. 요즘에는 .net 기반의 IronRuby가 출시 되어 있다. 한편 순수 루비 인터프리터가 갖는 속도의 한계를 뛰어넘기 위해 만들어진 바이트코드 인터프리터 YARV가 있다. YARV는 2007년 12월에 발표된 루비 1.9.0 버전에 포함되어 있다.

[편집] 파이썬과의 비교

프로그래밍 언어로서의 루비는 한마디로 말한다면, "객체 지향 "이라 할 수 있다. 즉 인터프리터 형식으로 실행되는 고기능 스크립트 언어이자 객체 지향 기능을 가진 언어이다. 이러한 특성을 가지면서 루비와 같이 가독성이 뛰어난 대표적인 스크립트 언어는 파이썬이다. 이런 유사함은 각각의 언어 사용자 간에 '어떤 언어가 더 뛰어난가?' 라는 논쟁을 일으켰다. 그러나 그런 논쟁은 대체적으로 기술적으로 너무 세부적인 곳에 집착한 의미 없는 논쟁이었다.

사용자 수와 구현 시스템의 수와 질 등을 비교해 보면, 세계적으로 파이썬이 인기가 더 많다. 한편, 루비의 개발자가 일본인이기 때문에 일본에서는 루비의 인기가 높고 서적 등도 많이 출판되고 있다. 2004년까지는 루비로 작성된 킬러 어플리케이션이 없었다. 하지만, 2004년 말에 발표되어 2005년에 폭발적인 인기를 모은 루비 온 레일즈에 의해 루비는 큰 주목을 받게 되었다.

[편집] 사용 예제

[편집] 기본적인 코드

  • 루비에서는 모든 것이 객체다.
-199.abs                                       -> 199
"ruby is cool".length                          -> 12
"Rick".index("c")                              -> 2

[편집] 컬렉션

  • 배열 작성과 사용법
a = [1, 'hi', 3.14, 1, 2, [4, 5]]

a[2]                      -> 3.14
a.reverse                 -> [[4, 5], 2, 1, 3.14, 'hi', 1]
a.flatten.uniq            -> [1, 'hi', 3.14, 2, 4, 5]
  • 해시의 작성과 사용법
hash = {'water' => 'wet', 'fire' => 'hot'}

puts hash['fire']                   -> hot

hash.each_pair do |key, value|
 puts "#{key} is #{value}"
end

(결과)
->              water is wet
->              fire is hot

[편집] 제어구조

다른 언어에서도 흔히 보는 제어구조를 제공한다.

if "fablic".length > 3
  puts 'ya'
else
  puts 'nop'
end
# 표시:         ya
 
n = 0
while n < 3
  puts 'foobar'
  n += 1
end
# 표시:         foobar
#               foobar
#               foobar

일부 제어구조에서는 이터레이터(Iterator)로 대신한다.

[편집] 블럭(Block)과 이터레이터(Iterator)

{ puts "Hello, World!" }
do puts "Hello, World!" end

[편집] 반복 처리

배열의 각 요소로 반복 처리

list = [1, 2, 5, 13, 21]
list.collect!{|item| item*2}          # list의 요소가 2배가 됨
list = [1, 2, 5, 13, 21]              # 블럭을 사용하지 않는 경우
n = 0
while n < list.length
  list[n] *= 2
  n += 1
end

지정된 횟수를 반복 처리

3.times{ puts 'foobar' }       #제어구문의 while과 동일

[편집] 같이보기

[편집] 바깥고리


이 문서는 컴퓨터에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다.