Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ruby Programming Language - Introduction

7,785 views

Published on

It is an introduction to Ruby Programming Language.

Published in: Software
  • Be the first to comment

Ruby Programming Language - Introduction

  1. 1. Ruby Programming Language Introduction 28 Jun 2015 Kwangshin Oh kwangshin@gmail.com http://kwangshin.pe.kr
  2. 2. Seven Languages in Seven Weeks A Pragmatic Guide to Learning Programming Languages By Bruce A. Tate
  3. 3. Why New Programming Language? “Learning a new programming language will show you new ways of thinking, and new approaches to problem solving that will help you be a better programmer in any language.” - Pragmatic Bookshelf “Ultimately, programming is about understanding, and understanding is about ideas. So, exposure to new ideas is essential to a deeper understanding of what programming is all about.” - Foreword By Joe Armstrong, creator of Erlang
  4. 4. Agenda  Ruby is…  History & Why?  With a Spoonful of Sugar  So, Ruby is…  Ruby: Interpreted Language  Ruby: Interpreted Language – Example  Compare: Compiled Language - Java  Ruby: Object-Oriented Language  Ruby: Pure Object-Oriented Language  Ruby: Dynamically Typed Language  What is Duck Typing?  Ruby: Duck Typing Code Example  Download & Installation  Ruby Code  Reference
  5. 5. Ruby is…  Programming Language! Dynamic Open Source  Focus on… Simplicity Productivity  Has an elegant syntax Natural to read Easy to write Image Source: Ruby Programming Language
  6. 6. History & Why?  Ruby’s Creator Yukihiro “Matz” Matsumoto  Created in about 1993  Motivation The primary motivation was to amuse himself! Just a hobby at the beginning New object-oriented language that combines characteristics from Lisp, Smalltalk and Perl To enhance programmers’ productivity “Ruby is simple in appearance, but is very complex inside, just like our human body.” - Matz, speaking on the Ruby-Talk mailing list, May 12th, 2000. Image Source: Ruby Everywhere
  7. 7. With a Spoonful of Sugar  Ruby with more syntactic sugar Makes code easier to read and write  Focus on the efficiency of the programmers “A spoonful of sugar makes the medicine go down.” Mary Poppins Image Source: Disney Wiki – A Spoonful of Sugar
  8. 8. So, Ruby is…  Interpreted Language Ruby code is executed by an interpreter  Object-Oriented Language Encapsulation Inheritance Polymorphism  Dynamically Typed Language Types are bound at execution time Image Source: Skillcrush - Ruby
  9. 9. Interactive Console Ruby File (*.rb) Ruby: Interpreted Language Image Source: http://www.iconsdb.com, http://dryicons.com and http://findicons.com Ruby Interpreter
  10. 10. Interactive Console Ruby File (Ha.rb) Ruby: Interpreted Language - Example D:Ruby22bin>type Ha.rb 3.Times do print “Ha “ end D:Ruby22bin>ruby Ha.rb Ha Ha Ha D:Ruby22bin> D:Ruby22bin>ruby 3.Times do print “Ha “ end ^D Ha Ha Ha D:Ruby22bin>
  11. 11. Compare: Compiled Language - Java Java Source File (*.java) Java Compiler Java Class File (*.class) JRE (Java Runtime Environment)
  12. 12. Ruby: Object-Oriented Language  Encapsulation [State & Behavior] : Packaged together  Inheritance [Class Tree] : Object types are organized  Polymorphism [Many Forms] : Objects can be shown Image Source: What Is an Object? Image Source: What Is Inheritance?Image Source: Object-Oriented Concepts
  13. 13. Ruby: Pure Object-Oriented Language  Ruby Programming Language Everything is an object!  Compare: Java Programming Language Primitive types (int, char, ……) are not objects! D:Ruby22bin>irb irb(main):001:0> 4 => 4 irb(main):002:0> 4.class => Fixnum irb(main):003:0> 4 + 4 => 8 irb(main):004:0> 4.methods => [:to_s, :inspect, :- @, :+, ∙∙∙∙∙∙, :__id__] irb(main):005:0>
  14. 14. Ruby: Dynamically Typed Language Types are bound at execution time Flexibility Execution Safety  Types are bound at compile time  Flexibility  Execution Safety Dynamically Typed Statically Typed Java
  15. 15. What is Duck Typing? Quacks like a duck Swims like a duck Walks like a duck Call it a duck “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” - James Whitcomb Riley Image Source: https://www.iconfinder.com and http://www.vectors4all.net/
  16. 16. Ruby: Duck Typing Code Example D:Ruby22bin>irb irb(main):001:0> i = 0 => 0 irb(main):002:0> a = ['100', 100.0] => ["100", 100.0] irb(main):003:0> while i < 2 irb(main):004:1> puts a[i].to_i irb(main):005:1> i = i + 1 irb(main):006:1> end 100 100 => nil irb(main):007:0> We consider this to_i method as quack! Duck typing doesn’t care what the underlying type might be (whether string or float). string float
  17. 17. Download & Installation  Current Stable Version  Ruby 2.2.2 (As of 28 Jun 2015)  Windows  RubyInstaller - http://rubyinstaller.org/downloads/  OS X  Homebrew - http://brew.sh/  Debian GNU/Linux and Ubuntu  apt – command : $ sudo apt-get install ruby-full  CentOS, Fedora, and RHEL  yum – command :$ sudo yum install ruby
  18. 18. Ruby: Sample Code D:Ruby22bin>ruby properties = ['object oriented', 'duck typed', 'productive', 'fun'] properties.each {|property| puts "Ruby is #{property}."} ^D Ruby is object oriented. Ruby is duck typed. Ruby is productive. Ruby is fun. D:Ruby22bin>
  19. 19. Ruby Code: Hello World! D:Ruby22bin>irb irb(main):001:0> puts 'Hello World!' Hello World! => nil irb(main):002:0> language = 'Ruby' => "Ruby" irb(main):003:0> puts "Hello, #{language}" Hello, Ruby => nil irb(main):004:0> language = 'my Ruby' => "my Ruby" irb(main):005:0> puts "Hello, #{language}" Hello, my Ruby => nil irb(main):006:0> Ruby’s Interactive Console <One Quote String> Interpreted Literally <Two Quotes String> String Evaluation
  20. 20. Ruby Code: Comparison Operators D:Ruby22bin>irb irb(main):001:0> x = 4 => 4 irb(main):002:0> x < 5 => true irb(main):003:0> x > 4 => false irb(main):004:0> false.class => FalseClass irb(main):005:0> true.class => TrueClass irb(main):006:0> puts 'X value is equal to 4.' if x == 4 X value is equal to 4. => nil irb(main):007:0> Everything is an object in Ruby!
  21. 21. Ruby Code: Loops – until & while D:Ruby22bin>irb irb(main):001:0> x = 5 => 5 irb(main):002:0> x = x - 1 until x == 1 => nil irb(main):003:0> x => 1 irb(main):004:0> while x < 5 irb(main):005:1> x = x + 1 irb(main):006:1> puts x irb(main):007:1> end 2 3 4 5 => nil
  22. 22. Ruby Code: Expressions - true & false D:Ruby22bin>irb irb(main):001:0> puts '1 is true in Ruby' if 1 1 is true in Ruby => nil irb(main):002:0> puts 'String is true in Ruby' if 'Kwangshin Oh' (irb):2: warning: string literal in condition String is true in Ruby => nil irb(main):003:0> puts '0 is also true in Ruby' if 0 0 is also true in Ruby => nil irb(main):004:0> puts 'The false is false in Ruby' if false => nil irb(main):005:0> puts 'The nil is false in Ruby' if nil => nil irb(main):006:0> Everything ( but nil and false ) evaluate to true!
  23. 23. Reference  Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Language by Bruce A. Tate  https://pragprog.com/book/btlang/seven-languages-in-seven-weeks  Ruby Programming Language  https://www.ruby-lang.org/  Ruby-Talk mailing list, May 12th, 2000  http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/2773  Disney Wiki – A Spoonful of Sugar  http://disney.wikia.com/wiki/A_Spoonful_of_Sugar  Matzにっき (Matz Diary)  http://www.rubyist.net/~matz/  The Java™ Tutorials - Object-Oriented Programming Concepts  https://docs.oracle.com/javase/tutorial/java/concepts/index.html  Duck typing  https://en.wikipedia.org/wiki/Duck_typing

×