[[TableOfContents]] = ê´€ë ¨ 페ì´ì§€ = [[pagelist(^RubyLanguage)]] = 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 * 메타 í”„ë¡œê·¸ëž˜ë° == 실행환경 == === ì¸í„°í”„리터 === * [http://www.ruby-lang.org MRI] - Rubyì˜ ì°½ì‹œìž Matzê°€ 개발한 ì¸í„°í”„리터. * [http://rubyforge.org/projects/ironruby/ IronRuby] - .NET Dynamic Language Runtime ìƒì—ì„œ ë™ìž‘. Ruby를 .NET 언어로서 ì´ìš©í• 수 있다. * [http://rubydotnet.googlegroups.com/web/Home.htm Ruby.NET] - Ruby í”„ë¡œê·¸ëž¨ì„ .NET MSIL(중간언어)ë¡œ 컴파ì¼. * [http://code.google.com/p/xruby/ XRuby] - Ruby í”„ë¡œê·¸ëž¨ì„ ìžë°” ê°€ìƒë¨¸ì‹ ë°”ì´íŠ¸ 코드로 컴파ì¼. * [http://rubini.us Rubinius] - Rubyë¡œ ìž‘ì„±ëœ Ruby ì¸í„°í”„리터. * [http://trac.macosforge.org/projects/ruby/wiki/MacRuby MacRuby] - Objective-Cë¡œ ìž‘ì„±ëœ ì¸í„°í”„리터. Mac OS X ìƒì—ì„œ ìž‘ë™. = ì°¸ê³ = == 웹 == * http://www.ruby-lang.org/en/ - 루비 ë©”ì¸ íŽ˜ì´ì§€ * http://www.rubycentral.com/ - íŠœí† ë¦¬ì–¼ ë° ë ˆí¼ëŸ°ìŠ¤ * http://testunit.talbott.ws/doc/index.html - 루비용 테스트 ìœ ë‹› * http://c2.com/cgi/wiki?RubyLanguage - ë£¨ë¹„ì— ëŒ€í•œ ì‚¬ëžŒë“¤ì˜ ì´ì•¼ê¸° * http://www-106.ibm.com/developerworks/linux/library/l-ruby1.html?t=gr,p=Ruby - 루비 íŠœí† ë¦¬ì–¼ * http://www-903.ibm.com/developerworks/kr/linux/library/l-ruby1.html?dwzone=linux#5 - 한글 íŠœí† ë¦¬ì–¼ * http://www.os.rim.or.jp/~eban/ - ruby win. GUI ìž‘ì—… 환경 * http://tryruby.org - Ruby를 간단히 배워볼 수 있는 대화형 웹 콘솔 * http://groups.google.com/group/rubykr - í•œêµ ë£¨ë¹„ ì‚¬ìš©ìž ëª¨ìž„ == ì±… == * [http://www.yes24.com/24/Goods/2314079?Acode=101 í”„ë¡œê·¸ëž˜ë° ë£¨ë¹„] - '곡ê´ì´ ì±…'으로 잘 ì•Œë ¤ì§„ ì±…. 본책과 별책으로 나뉘어있다. 루비를 ìµížˆëŠ” ê²ƒì— ê·¸ì¹˜ì§€ ì•Šê³ íŒŒì›Œí’€í•˜ê²Œ ì‚¬ìš©í• ìˆ˜ 있ë„ë¡ ë§Žì€ ë‚´ìš©ì„ ë‹´ê³ ìžˆë‹¤. 매우 ë‘꺼움. * [http://www.yes24.com/24/Goods/3279711?Acode=101 입문ìžë¥¼ 위한 루비] - 타 언어 프로그래머를 위한 Ruby 입문서. ì±…ì´ ë§¤ìš° ì–‡ê³ í•µì‹¬ì ì¸ ë‚´ìš©ë§Œì„ ë‹¤ë£¨ê³ ìžˆì–´ ì´ë¯¸ 프로그래ë°ì„ í• ì¤„ 아는 사람ì´ë¼ë©´ ë¹ ë¥´ê²Œ 루비를 ìµíž 수 있다. ---- ["언어분류"]