루비 (프로그래밍 언어)
위키백과 ― 우리 모두의 백과사전.
| 패러다임 | 다중 패러다임 |
|---|---|
| 발표 연도 | 1995년 |
| 설계자 | 마쓰모토 유키히로 |
| 개발자 | 마쓰모토 유키히로 |
| 미리보기 버전 | 1.9.2 / 2009년 7월 20일 |
| 자료형 체계 | 불규칙, 동적 타이핑 |
| 주요 구현체 | YARV, Jruby, Ruby.NET, IronRuby, Rubinius |
| 영향을 받은 언어 | 스몰토크, 리스프, 펄 |
| 영향을 준 언어 | 그루비 |
| 운영 체제 | 크로스 플랫폼 |
| 라이선스 | GNU 일반 공중 사용 허가서 |
| 웹사이트 | http://www.ruby-lang.org/ |
루비(Ruby)는 동적 객체 지향 프로그래밍 언어이다. 현재 루비 온 레일즈라는 신속한 웹 개발을 지원하는 웹 개발 프레임워크의 인기로 많은 주목을 받고 있다.
목차 |
[편집] 역사
1995년 일본의 프로그래머인 마츠모토 유키히로(
[편집] 루비의 방향
루비의 개발자 마츠모토 유키히로는 루비가 스트레스가 없는 쉬운 프로그래밍이고, 루비는 우리의 삶을 반영해야 하며, 프로그래밍 언어는 (컴퓨터가 아닌) 인간 중심으로 설계되어야 한다고 했다.
[편집] 구현 버전
루비는 크게 두 가지 버전으로 나누어 볼 수 있다. 하나는 마츠모토 유키히로가 만든 루비 인터프리터이다. 또 다른 하나는 자바 VM을 사용하는 것으로 JRuby라고 한다. 이것은 Ruby 2.0 에 해당한다. 루비 인터프리터는 유닉스, 리눅스, 마이크로소프트 윈도, 맥 오에스 텐, MS-DOS, OS/2, 아미가 등 많은 플랫폼에 이식되어 있다. JRuby는 순수한 자바에서 실행되기 때문에, 자바 환경을 실행시킬 수 있는 어떠한 곳에서도 실행 가능하다. 닷넷 기반의 IronRuby가 출시되어 있다. 한편 순수 루비 인터프리터가 갖는 속도의 한계를 뛰어넘기 위해 만들어진 바이트코드 인터프리터인 YARV가 있다. YARV는 2007년 12월에 발표된 루비 1.9.0 버전에 포함되어 있다. 루비는 이식성이 매우 높다. 대부분 GNU 리눅스에서 개발되었지만 대부분의 유닉스. 맥 OS X, 윈도우 95/98/Me/NT/2000/XP, 도스, BeOS, OS/2 등에서 동작한다.[1]
[편집] 파이썬과의 비교
프로그래밍 언어로서의 루비는 한마디로 말한다면, "객체 지향 펄"이라 할 수 있다. 즉 인터프리터 형식으로 실행되는 고기능 스크립트 언어이자 뛰어난 객체 지향적 언어이다. 이러한 특성을 가지면서 루비와 같이 가독성이 뛰어난 대표적인 스크립트 언어는 파이썬이다. 이런 유사함은 각각의 언어 사용자 간에 '어떤 언어가 더 뛰어난가?' 라는 논쟁을 일으켰다. 그러나 그런 논쟁은 대체적으로 기술적으로 너무 세부적인 곳에 집착한 의미 없는 논쟁이었다.
파이썬이 정형화된 들여쓰기를 요구하는 반면 루비는 정형화된 서식을 요구하지는 않는다.
사용자 수와 구현 시스템의 수와 질 등을 비교해 보면, 세계적으로 파이썬이 인기가 더 많다. 한편, 루비의 개발자가 일본 사람이기 때문에 일본에서는 루비의 인기가 높고 서적 등도 많이 출판되고 있다. 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'} 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
[편집] 반복 처리
- 배열의 각 요소로 반복 처리
list1 = [1, 2, 5, 13, 21] list1.collect!{|item| item*2} # list의 모든 요소가 2배가 됨 # 블럭을 사용하지 않고 구현하기 list2 = [1, 2, 5, 13, 21] n = 0 while n < list2.length list2[n] *= 2 n += 1 end
- 지정된 횟수를 반복 처리
3.times{ puts 'foobar' } # 결과: # foobar # foobar # foobar
[편집] 같이보기
- 루비 온 레일즈 (RoR, Ruby on Rails)
[편집] 주석
[편집] 바깥고리
- 비공식 한국 루비 개발자 포럼
- 루비 공식 홈페이지
- 루비 온 레일스 프레임워크 - 루비언어로 구현된 MVC모델 웹 프레임워크
- 루비포지 - 소스포지와 비슷한 역할
- Mac에서 Rails 개발환경 구축하기
- Full Ruby on Rails Tutorial
|
|
|
|---|---|
| 산업용 | 델파이 · 루비 · 리스프 · 비주얼 베이직 · 스몰토크 · 스킴 · 어셈블리 · 얼랑 · 에이다 · 오브젝티브-C · 자바 · 자바스크립트 · 코볼 · 파이썬 · Perl · 포트란 · 프롤로그 · 하스켈 · ABAP · AWK · C · C++ · C# · ML · PHP · PL/SQL · SAS · sh · VB.NET |
| 교육용 | 로고 · 에펠 · 파스칼 |
| 역사적 의미가 있는 언어 |
베이직 · 시뮬라 · 알골 · 클리퍼 · 파워빌더 · APL · MUMPS · PL/I |