SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
RUBY                  Felipe Schmitt
an overall approach   PPRO@FEUP 2012
@schmittfelipe
CONTENTS

•   Ruby’s history

•   What is Ruby?

•   Programming paradigms insight

•   How it works?

•   Ruby’s usage

•   Where can I learn more?
RUBY’S HISTORY
Timeline: 1993 - 2000


Yukihiro Matsumoto
•   Created in 1993

•   Popular only in Japan

•   All documentation written in Japanese
Timeline: 2000 - 2004

•   First english language book published in
    2000

•   Ruby has gained a lot of interest in Agile
    Development community but still
    unknown elsewhere
Timeline: 2004 - Today

•   Ruby on Rails, the framework that
    allowed ruby to step up to the spotlight

•   Ruby v1.9

•   Core 100% documented

•   96 standard libraries
WHAT IS RUBY?
“I wanted a scripting language that was more powerful than Perl, and more object-
oriented than Python. That's why I decided to design my own language.”
                                                                            -Yukihiro Matsumoto
INFLUENCES

        Lisp

 Python
                               Ruby
CLU     Perl
      Smalltalk
WHAT IS RUBY?



•A dynamic, open source programming language with a focus on simplicity
 and productivity. It has an elegant syntax that is natural to read and easy to
 write.
PROGRAMMING PARADIGMS
Multi-paradigm programming language

                    • Functional


                    • Object   oriented

                    • Imperative


                    • Reflective




It also has a dynamic type system and automatic memory management;
HOW IT WORKS?
VS
Getting Started


HelloWorld.java

class HelloWorldApp {
   public static void main(String[] args) {
      System.out.println("Hello World!");
   }
}
Getting Started


HelloWorld.rb


    puts “Hello World!”




                          No main statement


                          No semicolons

                          ( )’s are optional
Object

Java

       String s = String.ValueOf(1);
Object

Java

       String s = String.ValueOf(1);




Ruby

              s = 1.to_s
Object

Java

       String s = String.ValueOf(1);




Ruby

              s = 1.to_s

Everything is an object!
Types

Java

public void foo(ArrayList list) {
  list.add(“foo”);
  }
Types

Java

public void foo(ArrayList list) {
  list.add(“foo”);
  }



Ruby

def foo list
  list << “foo”
end
Types

                  Java

                  public void foo(ArrayList list) {
                    list.add(“foo”);
                    }



                  Ruby
                                     (?) return
                  def foo list
                    list << “foo”
                  end
(?) Object type
Types
If list is a string: ‘foo’

If list is an array: [‘foo’]

If list is a stream: foo is written to stream


Ruby

def foo list
  list << “foo”
end
Duck Typing




“If it walks like a duck and quacks like a duck, it must be a duck.”

                                      - Pragmatic Dave Thomas
Iterators
  Objects manage their own transversal

       Ruby

       array.each { |item|
         puts item
         }




No for loops:
     Loops                   N + 1 errors
Open classes
   Ruby

     class Array
       def average
        inject do |sum, var|
            sum + var
          end / size
       end
     end

     nums = [1,2,3,4,5]
     puts nums.average                  #prints: 3

Existing classes can be modified at any time.
WHO’S USING RUBY?
RECAP

Influences                             Style                   Overall
•   Perl’s syntax                     •   Simplicity          •   Everything is an object
•   Smalltalk’s semantics             •   Productivity        •   Flexible
•   Python’s design philosophy        •   Elegant syntax      •   Large standard library




                    “Actually, I'm trying to make Ruby natural, not simple.”
                                                                      - Matz
MORE STUFF
                                      Books
              Beginning Ruby: From Novice to Professional (2009)
                      The Expert’s Voice by Peter Cooper

                       The Ruby Programming Language (2008)
                   O’reilly by David Flanagan and Yukihiro Matsumoto

                Agile Web Development with Rails (2011) 4th edition
  Pragmatic Programmers by Sam Ruby, Dave Thomas and David Heinemeier Hansson

                                       Web
                               http://www.ruby-lang.org/
             http://www.slideshare.net/mbowler/ruby-for-java-programmers
http://www.slideshare.net/vishnu/the-top-10-reasons-the-ruby-programming-language-sucks
                      http://www.fincher.org/tips/Languages/Ruby/

Contenu connexe

Tendances

JRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRubyJRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRuby
elliando dias
 

Tendances (20)

Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRuby
 
RubyonRails
RubyonRailsRubyonRails
RubyonRails
 
Ruby on Rails : First Mile
Ruby on Rails : First MileRuby on Rails : First Mile
Ruby on Rails : First Mile
 
Making CLI app in ruby
Making CLI app in rubyMaking CLI app in ruby
Making CLI app in ruby
 
Ruby Metaprogramming 08
Ruby Metaprogramming 08Ruby Metaprogramming 08
Ruby Metaprogramming 08
 
Ruby On Rails Basics
Ruby On Rails BasicsRuby On Rails Basics
Ruby On Rails Basics
 
Pengantar Ruby on Rails
Pengantar Ruby on RailsPengantar Ruby on Rails
Pengantar Ruby on Rails
 
Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6Rubykaigi 2017-nishimotz-v6
Rubykaigi 2017-nishimotz-v6
 
Ruby on Rails 3
Ruby on Rails 3Ruby on Rails 3
Ruby on Rails 3
 
Ruby Beyond Rails
Ruby Beyond RailsRuby Beyond Rails
Ruby Beyond Rails
 
Opal - Ruby Style!! Ruby in the browser
Opal - Ruby Style!!  Ruby in the browserOpal - Ruby Style!!  Ruby in the browser
Opal - Ruby Style!! Ruby in the browser
 
Opal chapter 4_a_new_hope
Opal chapter 4_a_new_hopeOpal chapter 4_a_new_hope
Opal chapter 4_a_new_hope
 
Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)Ruby and Rails by Example (GeekCamp edition)
Ruby and Rails by Example (GeekCamp edition)
 
Crystal
CrystalCrystal
Crystal
 
JRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRubyJRoR Deploying Rails on JRuby
JRoR Deploying Rails on JRuby
 
Ruby on Rails Introduction M&P - IT Skill Development Program 07
Ruby on Rails Introduction M&P - IT Skill Development Program 07Ruby on Rails Introduction M&P - IT Skill Development Program 07
Ruby on Rails Introduction M&P - IT Skill Development Program 07
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To Rails
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
 
Web application intro + a bit of ruby (revised)
Web application intro + a bit of ruby (revised)Web application intro + a bit of ruby (revised)
Web application intro + a bit of ruby (revised)
 

Similaire à Ruby an overall approach

Why i love ruby than x
Why i love ruby than xWhy i love ruby than x
Why i love ruby than x
Samnang Chhun
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
myuser
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
knoppix
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
tutorialsruby
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
tutorialsruby
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
Henry S
 
Ruby introductions
Ruby introductionsRuby introductions
Ruby introductions
Binh Bui
 
JRuby - The Best of Java and Ruby
JRuby - The Best of Java and RubyJRuby - The Best of Java and Ruby
JRuby - The Best of Java and Ruby
Evgeny Rahman
 
Adventures of java developer in ruby world
Adventures of java developer in ruby worldAdventures of java developer in ruby world
Adventures of java developer in ruby world
Orest Ivasiv
 

Similaire à Ruby an overall approach (20)

Why i love ruby than x
Why i love ruby than xWhy i love ruby than x
Why i love ruby than x
 
Introduction to Ruby
Introduction to RubyIntroduction to Ruby
Introduction to Ruby
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
 
Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1Ruby on Rails Training - Module 1
Ruby on Rails Training - Module 1
 
Meta Programming in Ruby - Code Camp 2010
Meta Programming in Ruby - Code Camp 2010Meta Programming in Ruby - Code Camp 2010
Meta Programming in Ruby - Code Camp 2010
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
 
Introduction to Ruby & Modern Programming
Introduction to Ruby & Modern ProgrammingIntroduction to Ruby & Modern Programming
Introduction to Ruby & Modern Programming
 
Why ruby
Why rubyWhy ruby
Why ruby
 
JRuby: The Hard Parts
JRuby: The Hard PartsJRuby: The Hard Parts
JRuby: The Hard Parts
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
 
ruby_vs_perl_and_python
ruby_vs_perl_and_pythonruby_vs_perl_and_python
ruby_vs_perl_and_python
 
Intro for RoR
Intro for RoRIntro for RoR
Intro for RoR
 
Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1Code for Startup MVP (Ruby on Rails) Session 1
Code for Startup MVP (Ruby on Rails) Session 1
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
 
Ruby introductions
Ruby introductionsRuby introductions
Ruby introductions
 
JRuby - The Best of Java and Ruby
JRuby - The Best of Java and RubyJRuby - The Best of Java and Ruby
JRuby - The Best of Java and Ruby
 
Adventures of java developer in ruby world
Adventures of java developer in ruby worldAdventures of java developer in ruby world
Adventures of java developer in ruby world
 
10 Things you should know about Ruby
10 Things you should know about Ruby10 Things you should know about Ruby
10 Things you should know about Ruby
 
Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1Learn Ruby 2011 - Session 1
Learn Ruby 2011 - Session 1
 
Ruby
RubyRuby
Ruby
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Dernier (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Ruby an overall approach

  • 1. RUBY Felipe Schmitt an overall approach PPRO@FEUP 2012
  • 3. CONTENTS • Ruby’s history • What is Ruby? • Programming paradigms insight • How it works? • Ruby’s usage • Where can I learn more?
  • 5. Timeline: 1993 - 2000 Yukihiro Matsumoto • Created in 1993 • Popular only in Japan • All documentation written in Japanese
  • 6. Timeline: 2000 - 2004 • First english language book published in 2000 • Ruby has gained a lot of interest in Agile Development community but still unknown elsewhere
  • 7. Timeline: 2004 - Today • Ruby on Rails, the framework that allowed ruby to step up to the spotlight • Ruby v1.9 • Core 100% documented • 96 standard libraries
  • 9. “I wanted a scripting language that was more powerful than Perl, and more object- oriented than Python. That's why I decided to design my own language.” -Yukihiro Matsumoto
  • 10. INFLUENCES Lisp Python Ruby CLU Perl Smalltalk
  • 11. WHAT IS RUBY? •A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
  • 13. Multi-paradigm programming language • Functional • Object oriented • Imperative • Reflective It also has a dynamic type system and automatic memory management;
  • 15. VS
  • 16. Getting Started HelloWorld.java class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } }
  • 17. Getting Started HelloWorld.rb puts “Hello World!” No main statement No semicolons ( )’s are optional
  • 18. Object Java String s = String.ValueOf(1);
  • 19. Object Java String s = String.ValueOf(1); Ruby s = 1.to_s
  • 20. Object Java String s = String.ValueOf(1); Ruby s = 1.to_s Everything is an object!
  • 21. Types Java public void foo(ArrayList list) { list.add(“foo”); }
  • 22. Types Java public void foo(ArrayList list) { list.add(“foo”); } Ruby def foo list list << “foo” end
  • 23. Types Java public void foo(ArrayList list) { list.add(“foo”); } Ruby (?) return def foo list list << “foo” end (?) Object type
  • 24. Types If list is a string: ‘foo’ If list is an array: [‘foo’] If list is a stream: foo is written to stream Ruby def foo list list << “foo” end
  • 25. Duck Typing “If it walks like a duck and quacks like a duck, it must be a duck.” - Pragmatic Dave Thomas
  • 26. Iterators Objects manage their own transversal Ruby array.each { |item| puts item } No for loops: Loops N + 1 errors
  • 27. Open classes Ruby class Array def average inject do |sum, var| sum + var end / size end end nums = [1,2,3,4,5] puts nums.average #prints: 3 Existing classes can be modified at any time.
  • 29.
  • 30. RECAP Influences Style Overall • Perl’s syntax • Simplicity • Everything is an object • Smalltalk’s semantics • Productivity • Flexible • Python’s design philosophy • Elegant syntax • Large standard library “Actually, I'm trying to make Ruby natural, not simple.” - Matz
  • 31. MORE STUFF Books Beginning Ruby: From Novice to Professional (2009) The Expert’s Voice by Peter Cooper The Ruby Programming Language (2008) O’reilly by David Flanagan and Yukihiro Matsumoto Agile Web Development with Rails (2011) 4th edition Pragmatic Programmers by Sam Ruby, Dave Thomas and David Heinemeier Hansson Web http://www.ruby-lang.org/ http://www.slideshare.net/mbowler/ruby-for-java-programmers http://www.slideshare.net/vishnu/the-top-10-reasons-the-ruby-programming-language-sucks http://www.fincher.org/tips/Languages/Ruby/