Ruby an overall approach

Uploaded on

An overall approach of Ruby. Presentation given at a paradigm programming course at FEUP ’12.

An overall approach of Ruby. Presentation given at a paradigm programming course at FEUP ’12.

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. RUBY Felipe Schmittan overall approach PPRO@FEUP 2012
  • 2. @schmittfelipe
  • 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 - 2000Yukihiro 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
  • 8. WHAT IS RUBY?
  • 9. “I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. Thats why I decided to design my own language.” -Yukihiro Matsumoto
  • 10. INFLUENCES Lisp Python RubyCLU 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 • ReflectiveIt also has a dynamic type system and automatic memory management;
  • 14. HOW IT WORKS?
  • 15. VS
  • 16. Getting StartedHelloWorld.javaclass HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); }}
  • 17. Getting StartedHelloWorld.rb puts “Hello World!” No main statement No semicolons ( )’s are optional
  • 18. ObjectJava String s = String.ValueOf(1);
  • 19. ObjectJava String s = String.ValueOf(1);Ruby s = 1.to_s
  • 20. ObjectJava String s = String.ValueOf(1);Ruby s = 1.to_sEverything is an object!
  • 21. TypesJavapublic void foo(ArrayList list) { list.add(“foo”); }
  • 22. TypesJavapublic void foo(ArrayList list) { list.add(“foo”); }Rubydef 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. TypesIf list is a string: ‘foo’If list is an array: [‘foo’]If list is a stream: foo is written to streamRubydef 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: 3Existing classes can be modified at any time.
  • 29. RECAPInfluences 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, Im trying to make Ruby natural, not simple.” - Matz
  • 30. 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