SlideShare a Scribd company logo
4
Most read
5
Most read
6
Most read
Ruby
Programming Language
Introduction
28 Jun 2015
Kwangshin Oh
kwangshin@gmail.com
http://kwangshin.pe.kr
Seven Languages in Seven Weeks
A Pragmatic
Guide to
Learning
Programming
Languages
By Bruce A. Tate
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
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
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
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
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
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
Interactive
Console
Ruby File
(*.rb)
Ruby: Interpreted Language
Image Source: http://www.iconsdb.com, http://dryicons.com and http://findicons.com
Ruby
Interpreter
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>
Compare: Compiled Language - Java
Java Source File
(*.java)
Java
Compiler
Java Class File
(*.class)
JRE
(Java Runtime Environment)
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
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>
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
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/
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
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
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>
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
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!
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
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!
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

More Related Content

PDF
Ruby Presentation
PPTX
Ruby programming
PDF
Let us c++ yeshwant kanetkar
PDF
MCA NOTES.pdf
PDF
Fortran introduction
PDF
Asp.net Lab manual
PDF
Memory Management In Python The Basics
PDF
Java notes | All Basics |
Ruby Presentation
Ruby programming
Let us c++ yeshwant kanetkar
MCA NOTES.pdf
Fortran introduction
Asp.net Lab manual
Memory Management In Python The Basics
Java notes | All Basics |

What's hot (20)

ODP
PDF
Let's Learn Ruby - Basic
PDF
Introduction to Ruby
PPT
Ruby Basics
 
PDF
Ruby on Rails for beginners
PPTX
Java 8 Lambda and Streams
PDF
Introduction to Ruby
PDF
Introduction to java (revised)
PDF
Ruby on Rails Presentation
PPT
JDBC – Java Database Connectivity
PDF
Introduction to Java Programming Language
PPTX
Node.js Express
PDF
TypeScript: coding JavaScript without the pain
PPTX
TypeScript Overview
PPT
Java collections concept
PPTX
JavaScript with Syntax & Implementation
PPTX
Java Beans
PPTX
SQLite - Overview
PDF
NodeJS for Beginner
Let's Learn Ruby - Basic
Introduction to Ruby
Ruby Basics
 
Ruby on Rails for beginners
Java 8 Lambda and Streams
Introduction to Ruby
Introduction to java (revised)
Ruby on Rails Presentation
JDBC – Java Database Connectivity
Introduction to Java Programming Language
Node.js Express
TypeScript: coding JavaScript without the pain
TypeScript Overview
Java collections concept
JavaScript with Syntax & Implementation
Java Beans
SQLite - Overview
NodeJS for Beginner
Ad

Viewers also liked (19)

PDF
Ruby on Rails Presentation
PDF
Vaporware To Awesome
PDF
Feeling Objects: Pattern Matching in Ruby
PDF
Reflection in Ruby
PDF
Lemme tell ya 'bout Ruby
PDF
Ruby Programming Introduction
PPTX
핀테크 코리아 2014 후기 - 오광신
PDF
Ruby Egison
PDF
Why Ruby
PPTX
Sapphire Presentation for Review_CPG_Food.PPTX
PDF
Pure Function and Rx
PDF
Akka Fault Tolerance
PDF
[Spring Camp 2013] Java Configuration 없인 못살아!
PDF
Sapphire Presentation
PPT
Web Development Ppt
PDF
Compose Async with RxJS
PDF
java 8 람다식 소개와 의미 고찰
KEY
Introducing Ruby
PDF
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
Ruby on Rails Presentation
Vaporware To Awesome
Feeling Objects: Pattern Matching in Ruby
Reflection in Ruby
Lemme tell ya 'bout Ruby
Ruby Programming Introduction
핀테크 코리아 2014 후기 - 오광신
Ruby Egison
Why Ruby
Sapphire Presentation for Review_CPG_Food.PPTX
Pure Function and Rx
Akka Fault Tolerance
[Spring Camp 2013] Java Configuration 없인 못살아!
Sapphire Presentation
Web Development Ppt
Compose Async with RxJS
java 8 람다식 소개와 의미 고찰
Introducing Ruby
IT 이노베이션 센터 이야기 - AWS Lambda를 활용한 개발 스폰서십 확보편
Ad

Similar to Ruby Programming Language - Introduction (20)

PDF
Ruby an overall approach
DOCX
Page List & Sample Material (Repaired)
PPTX
Ruby for .NET developers
PDF
Introduction to Ruby & Modern Programming
PPTX
Ruby introductions
PDF
Ruby tutorial
KEY
Learn Ruby 2011 - Session 2
KEY
Introduction to Ruby
PPTX
Ruby -the wheel Technology
PPTX
Ruby for PHP developers
PPTX
Ruby basics
PPTX
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
ZIP
Meta Programming in Ruby - Code Camp 2010
PDF
Moving from C++ to Ruby
DOC
Pré Descobrimento Do Brasil
PDF
Workin On The Rails Road
PDF
ruby_vs_perl_and_python
PDF
ruby_vs_perl_and_python
PPTX
Why ruby
Ruby an overall approach
Page List & Sample Material (Repaired)
Ruby for .NET developers
Introduction to Ruby & Modern Programming
Ruby introductions
Ruby tutorial
Learn Ruby 2011 - Session 2
Introduction to Ruby
Ruby -the wheel Technology
Ruby for PHP developers
Ruby basics
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
Meta Programming in Ruby - Code Camp 2010
Moving from C++ to Ruby
Pré Descobrimento Do Brasil
Workin On The Rails Road
ruby_vs_perl_and_python
ruby_vs_perl_and_python
Why ruby

More from Kwangshin Oh (6)

PPT
CS6201 Software Reuse - Design Patterns
PPT
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
PPT
CS6270 Virtual Machines - Retargetable Binary Translators
PPT
CS5261 Group 8 Presentation - US Mobile Industry
PPT
Jini Network Technology
PPT
Object-Oriented Programming Concepts
CS6201 Software Reuse - Design Patterns
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Retargetable Binary Translators
CS5261 Group 8 Presentation - US Mobile Industry
Jini Network Technology
Object-Oriented Programming Concepts

Recently uploaded (20)

PDF
iTop VPN Free 5.6.0.5262 Crack latest version 2025
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
history of c programming in notes for students .pptx
PPTX
Introduction to Artificial Intelligence
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
L1 - Introduction to python Backend.pptx
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
System and Network Administraation Chapter 3
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Transform Your Business with a Software ERP System
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
iTop VPN Free 5.6.0.5262 Crack latest version 2025
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Log360_SIEM_Solutions Overview PPT_Feb 2020.pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
wealthsignaloriginal-com-DS-text-... (1).pdf
history of c programming in notes for students .pptx
Introduction to Artificial Intelligence
Softaken Excel to vCard Converter Software.pdf
L1 - Introduction to python Backend.pptx
Upgrade and Innovation Strategies for SAP ERP Customers
System and Network Administraation Chapter 3
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Transform Your Business with a Software ERP System
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Operating system designcfffgfgggggggvggggggggg
Design an Analysis of Algorithms II-SECS-1021-03
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Which alternative to Crystal Reports is best for small or large businesses.pdf
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf

Ruby Programming Language - Introduction

  • 1. Ruby Programming Language Introduction 28 Jun 2015 Kwangshin Oh [email protected] http://kwangshin.pe.kr
  • 2. Seven Languages in Seven Weeks A Pragmatic Guide to Learning Programming Languages By Bruce A. Tate
  • 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. 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. 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. 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. 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. 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. Interactive Console Ruby File (*.rb) Ruby: Interpreted Language Image Source: http://www.iconsdb.com, http://dryicons.com and http://findicons.com Ruby Interpreter
  • 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. Compare: Compiled Language - Java Java Source File (*.java) Java Compiler Java Class File (*.class) JRE (Java Runtime Environment)
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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