SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
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/

Weitere ähnliche Inhalte

Was ist angesagt?

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

Was ist angesagt? (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)
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

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/