SlideShare a Scribd company logo
WELCOME TO 
RUBY! 
with rails
WHAT IS RUBY? 
간결함과 생산성을 강조한 동적인 오픈 소스 
프로그래밍 언어입니다. 
루비의 우아한 문법으로 자연스럽게 읽고 쓰기 
편한 프로그램을 만들수 있습니다.
C++ VS RUBY VS JAVA 
SCRIPT 
▪ C++ 
for(int i = 0; i < 5; ++i) 
puts(“hello”); 
▪ RUBY 
5.times { puts “hello” } 
▪ Java Script 
for (var i = 0; i <= 5; i++) 
puts(“hello”);
모든 것은 객체다. 
▪ 처음에 마츠는 이상적인 문법을 가진 언어를 찾고 있 
었다. 그 때를 회고하며 그는 “나는 펄보다 강력하고 파 
이썬보다는 객체지향적인 스크립트 언어가 필요했다” 
라고 말해다. 
▪ 루비에서는 모든 것이 객체이다. 따라서 루비에서 모 
든 것은 자신만의 속성과 액션을 갖는다. 객체지향 프 
로그래밍에서 이런 속성을 인스턴스 변수라고 하고, 
액션을 메서드라고 한다.
루비의 유연함 
▪ 개발자가 루비의 어떤 부분이든 자유롭게 바꿀 수 있기 때문에 매 
우 유연한 언어라고 할 수 있다. 원한다면 루비 코어 부분도 제거하 
고 재정의할 수 있다. 이미 존재하는 코드에 무엇인가를 덧붙일 수 
도 있다. 루비는 기본적으로 개발자의 사고를 제한하지 않는다. 
class Numeric 
def plus(x) 
self.+(x) 
end 
end 
y = 5.plus 6 
# 이제 y는 11이 되었다
블럭 
▪블록은 코드를 데이터와 같이 취급하게 해주는 기능이다. 즉, 
함수를 정의하는 식으로 블록을 정의하여 다른 메소드에 이를 
인자로 넘길 수 있다. 
>> ["apple", "banana", "orange"].map {|fruit| fruit.upcase} 
=> ["APPLE", "BANANA", "ORANGE"]
텍스트 처리 #01 
▪루비의 텍스트 처리 기능은 Perl을 그대로 벤치마킹했다. 
▪여기서 주목할 부분은 루비가 Perl 스타일의 텍스트 처리 
기능을 온전히 객체지향적으로 구현하고 있다는 점이다 
>> /([0-9]+)/.class 
=> Regexp 
>> /([0-9]+)/.=~("A year has 365 days.") 
=> 11 
# 0-9 즉 숫자가 있는 첫 위치를 반환
텍스트 처리 #02 
▪텍스트 처리에 있어 정규식의 주요 사용 케이스 중 하나는 
바로 텍스트의 일부를 치환하는 작업이다. 
▪루비에서는 문자열 객체의 'sub' 메소드와 정규식 패턴을 
사용하여 문자열의 특정 부분을 치환할 수 있다. 
>> "banana".sub(/a/, "@") 
=> "b@nana"
텍스트 처리 #03 
▪매칭되는 모든 패턴을 치환하고 싶다면, 'sub' 대신에 'gsub'를 
사용한다. 
>> "banana".gsub(/a/, "@") 
=> "b@n@n@"
프로시저 (proc) 
▪ Proc와 블럭의 다른 점이라면, 블럭은 한번만 사용하기 위해서 적당한 방법이고 
Proc는 재 사용이 가능하다라는 점이다. 
class MyClass 
def initilize(thing, &action) 
@action = action 
end 
def do_thing 
@action.call(self) 
end 
end 
run = MyClass.new("RUN") { ... } 
stop = MyClass.new("STOP") { ... }
람다 (lambda) 
▪익명함수다. 프로시저처럼 재사용이 가능하다. 차이라고 하면 리턴 값을 사용할 수 있다. 
말그대로 익명 함수 이므로. 
def n_times(thing) 
return lambda {|n| thing * n } 
end 
p1 = n_times(23) 
p1.call(3) -> 69 
p1.call(4) -> 92 
p2 = n_times("Hello ") 
p2.call(3) -> "Hello Hello Hello "
TRY! RUBY! 
▪http://tryruby.org/
참고 자료 
▪http://tryruby.org/ 
▪http://ruby-lang.org/ko 
▪http://beyond.daesan.com/pages/ruby-broadens-your- 
thinking 
▪인사이트 프로그래밍 
루비 http://www.yes24.com/24/goods/2314079

More Related Content

PDF
M5 6 1
PPTX
PPTX
javascript01
PDF
자바스크립트 제대로 알고쓰기
PDF
[WEB UI BASIC] Javascript 2탄
PDF
5 6 1
PPTX
김성훈 - 뛰어난 디버거가 되는 방법
PDF
Ruby on Rails Presentation
M5 6 1
javascript01
자바스크립트 제대로 알고쓰기
[WEB UI BASIC] Javascript 2탄
5 6 1
김성훈 - 뛰어난 디버거가 되는 방법
Ruby on Rails Presentation

Similar to Welcome to ruby! (20)

PDF
Python 01
PDF
How to use the Ruby programing language
PDF
RPG Maker와 Ruby로 코딩 시작하기 Day 3
PDF
Code_The_Web_150531_Ruby_1
PPTX
0327.web&ruby&rails
PDF
[A1]루비는 패셔니스타
PDF
[20150219] 루비 기초(Ruby Basic)
PPTX
Ruby - 6th (루비 6장 변수와 식)
PPTX
Lua script
PDF
Ruby_01_Ruby Basic
PDF
RPG Maker와 Ruby로 코딩 시작하기 Day 2
PPT
레일스를 이용한 애자일 웹 개발 가이드
PPTX
Ruby 스터디
PDF
온라인 게임 처음부터 끝까지 동적언어로 만들기
PPT
Python3 brief summary
PDF
Smalltalk at Altlang 2008
PPTX
파이썬 문자열 이해하기
PPTX
파이썬 문자열 이해하기
PPTX
Ruby Conf2017
PPTX
Python
 
Python 01
How to use the Ruby programing language
RPG Maker와 Ruby로 코딩 시작하기 Day 3
Code_The_Web_150531_Ruby_1
0327.web&ruby&rails
[A1]루비는 패셔니스타
[20150219] 루비 기초(Ruby Basic)
Ruby - 6th (루비 6장 변수와 식)
Lua script
Ruby_01_Ruby Basic
RPG Maker와 Ruby로 코딩 시작하기 Day 2
레일스를 이용한 애자일 웹 개발 가이드
Ruby 스터디
온라인 게임 처음부터 끝까지 동적언어로 만들기
Python3 brief summary
Smalltalk at Altlang 2008
파이썬 문자열 이해하기
파이썬 문자열 이해하기
Ruby Conf2017
Python
 
Ad

Welcome to ruby!

  • 1. WELCOME TO RUBY! with rails
  • 2. WHAT IS RUBY? 간결함과 생산성을 강조한 동적인 오픈 소스 프로그래밍 언어입니다. 루비의 우아한 문법으로 자연스럽게 읽고 쓰기 편한 프로그램을 만들수 있습니다.
  • 3. C++ VS RUBY VS JAVA SCRIPT ▪ C++ for(int i = 0; i < 5; ++i) puts(“hello”); ▪ RUBY 5.times { puts “hello” } ▪ Java Script for (var i = 0; i <= 5; i++) puts(“hello”);
  • 4. 모든 것은 객체다. ▪ 처음에 마츠는 이상적인 문법을 가진 언어를 찾고 있 었다. 그 때를 회고하며 그는 “나는 펄보다 강력하고 파 이썬보다는 객체지향적인 스크립트 언어가 필요했다” 라고 말해다. ▪ 루비에서는 모든 것이 객체이다. 따라서 루비에서 모 든 것은 자신만의 속성과 액션을 갖는다. 객체지향 프 로그래밍에서 이런 속성을 인스턴스 변수라고 하고, 액션을 메서드라고 한다.
  • 5. 루비의 유연함 ▪ 개발자가 루비의 어떤 부분이든 자유롭게 바꿀 수 있기 때문에 매 우 유연한 언어라고 할 수 있다. 원한다면 루비 코어 부분도 제거하 고 재정의할 수 있다. 이미 존재하는 코드에 무엇인가를 덧붙일 수 도 있다. 루비는 기본적으로 개발자의 사고를 제한하지 않는다. class Numeric def plus(x) self.+(x) end end y = 5.plus 6 # 이제 y는 11이 되었다
  • 6. 블럭 ▪블록은 코드를 데이터와 같이 취급하게 해주는 기능이다. 즉, 함수를 정의하는 식으로 블록을 정의하여 다른 메소드에 이를 인자로 넘길 수 있다. >> ["apple", "banana", "orange"].map {|fruit| fruit.upcase} => ["APPLE", "BANANA", "ORANGE"]
  • 7. 텍스트 처리 #01 ▪루비의 텍스트 처리 기능은 Perl을 그대로 벤치마킹했다. ▪여기서 주목할 부분은 루비가 Perl 스타일의 텍스트 처리 기능을 온전히 객체지향적으로 구현하고 있다는 점이다 >> /([0-9]+)/.class => Regexp >> /([0-9]+)/.=~("A year has 365 days.") => 11 # 0-9 즉 숫자가 있는 첫 위치를 반환
  • 8. 텍스트 처리 #02 ▪텍스트 처리에 있어 정규식의 주요 사용 케이스 중 하나는 바로 텍스트의 일부를 치환하는 작업이다. ▪루비에서는 문자열 객체의 'sub' 메소드와 정규식 패턴을 사용하여 문자열의 특정 부분을 치환할 수 있다. >> "banana".sub(/a/, "@") => "b@nana"
  • 9. 텍스트 처리 #03 ▪매칭되는 모든 패턴을 치환하고 싶다면, 'sub' 대신에 'gsub'를 사용한다. >> "banana".gsub(/a/, "@") => "b@n@n@"
  • 10. 프로시저 (proc) ▪ Proc와 블럭의 다른 점이라면, 블럭은 한번만 사용하기 위해서 적당한 방법이고 Proc는 재 사용이 가능하다라는 점이다. class MyClass def initilize(thing, &action) @action = action end def do_thing @action.call(self) end end run = MyClass.new("RUN") { ... } stop = MyClass.new("STOP") { ... }
  • 11. 람다 (lambda) ▪익명함수다. 프로시저처럼 재사용이 가능하다. 차이라고 하면 리턴 값을 사용할 수 있다. 말그대로 익명 함수 이므로. def n_times(thing) return lambda {|n| thing * n } end p1 = n_times(23) p1.call(3) -> 69 p1.call(4) -> 92 p2 = n_times("Hello ") p2.call(3) -> "Hello Hello Hello "
  • 13. 참고 자료 ▪http://tryruby.org/ ▪http://ruby-lang.org/ko ▪http://beyond.daesan.com/pages/ruby-broadens-your- thinking ▪인사이트 프로그래밍 루비 http://www.yes24.com/24/goods/2314079