RubyLanguage는 일본인 Yukihiro Matsumoto가 만든 객체지향 스크립트 언어이다.
PerlLanguage의 장점인 문자열 처리 기능을 거의 동등하게 가지면서(실제로 문법도 유사한 면이 있다) SmalltalkLanguage와 같이 순수한 객체지향 언어에 속한다. RubyLanguage를 좋아하는 사람들은 순수 OOP적 구조와 간결한 문법 깨끗한 구조를 장점으로 든다. 하지만 Ruby의 소위 "Perlish" 스타일을 싫어하는 사람도 많다. 그리고 여전히 여타 스크립트 언어에 비해 느린 실행 속도와 부족한 라이브러리 등은 해결해야할 문제다.
Perl의 CPAN, CommonLisp의 asdf, Python의 EasyInstall처럼 (혹은 DebianLinux의 AptGet이나 NetBsd의 PkgSrc, Gentoo의 Portage처럼?) 네트워크를 통해서 필요한 라이브러리를 찾아 설치할 수 있는 RubyGems(http://rubygems.org/ )가 있어서 설치의 불편함 보다는 얇은 라이브러리층이 문제가 된다. -- ageldama 2007-01-16 12:44:59
PragmaticProgrammer가 루비 언어 책을 (영어로) 집필한 것이 언어를 퍼뜨리는데에 한 몫 했으며, 최근 들어 테스트용 스크립트(특히 win32 플랫폼에서)로 SoftwareQualityAssuarance 전문가들(예컨대, Cem Kaner, Brian Marick, Bret Pettichord 같은)이 RubyLanguage를 적극적으로 사용하고 있다.코딩 예
- 파일에 들어있는 각 단어의 수를 세는 프로그램
#!/usr/bin/ruby -w File.open(ARGV[0]) do |f| # 파일 열고 a = Array.new h = Hash.new(0) f.each { |line| a += line.split } # 각 줄을 단어로 잘라서 배열에 추가 a.each { |word| h[word] += 1} # 배열의 각 단어에 대해 해쉬에 count증가 h.each { |key, val| print val, " [", key, "]\n"} # 해쉬의 내용을 출력 end
- Factorial 구하기.
#!/usr/bin/env ruby module Enumerable def product self.inject do |i, sum| sum *= i end end end ARGV.each do |arg| puts "#{arg.to_i}! == #{(1..arg.to_i).product}" end
-- ageldama 2007-01-16 12:50:49
관련 사이트
- Ruby 공식 사이트 http://www.ruby-lang.org/