1 / 24

Ruby by Tim Hanson & Mamadou Seck

Ruby by Tim Hanson & Mamadou Seck. Philosophy. "I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language.” - Yukihiro « Matz »

neal
Download Presentation

Ruby by Tim Hanson & Mamadou Seck

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ruby by Tim Hanson & Mamadou Seck

  2. Philosophy "I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language.” - Yukihiro « Matz » Matsumoto

  3. History • Created in Japan in the mid-1990s • Christmas 1996: Version 1 released • 2000: First English book printed • 2005: Ruby on Rails popularized it • 2008: Ruby version 1.8.7 released • 2010: Ruby version 1.9.2 released • (not fully compatible with Rails 3.0)

  4. Overview • Influenced by Perl, Smalltalk, Eiffel, and Lisp • Supports Multiple Programming Paradigms • Functional • Object-Oriented • Imperative • Reflective • Dynamic typing • Automatic Memory Management • Interactive Ruby Shell • Centralized Package Management via RubyGems

  5. TIOBE Index

  6. Multiple Implementations • Ruby 1.8.7 • MRI – Matz’ Ruby Interpreter • Written in C • Single pass interpreted language • Slow • Compatible with Rails 3 • Just-in-time Compilation implementations • YARV, JRuby, Rubinius, Iron Ruby, HotRuby • MacRuby (ahead-of -time compilation too) • Ruby 1.9.2 • Based on YARV • Unicode support • Changes broke many unmaintained gems • Rails 3 not fully supported

  7. Performance

  8. Command Line Utilities • ri – ruby index • works like man in linux • irb – interactive ruby shell • gem – RubyGem package manager • works like apt-get or yum in linux but installs ruby packages (gems) likes rails • ruby – runs ruby scripts • ruby script.rb • shebang line : #! /usr/bin env ruby

  9. Identifiers and Scope • Identifiers • Can’t include white space • Can’t include nonprinting characters • Case sensitive • First character denotes scope • $ - global variables • @ - instance variables • @@ - class variables • Lower case letter or underscore - local variables • Upper case letter – constant • Capital letter – constant (convention – all caps) • Capital letter – class (convention – CamelCase) • Method ending with: • ? - return boolean value (convention) • ! – use with caution (convention for mutators) • = - can be invoxed using assignment syntax

  10. Data Types • Numeric • Integer – automatically converts between subtypes • Fixnum • Bignum – arbitrary precision • Float • Digit has to appear on both sides of decimal point • i.e. can’t write just .1 • BigDecimal – arbitrary precision • Complex • Rational • No primitives – everything is an object

  11. Data Types Continued • Symbols • prefixed by : • Lightweight strings • Strings • Many methods for String processing • Can be single quoted or double quoted • Can use any non-alphanumeric delimiter • %!Also a valid string! • Hashes • Key – Value pairs like Dictionaries in Python • Arrays • Untyped • Mutable • Elements don’t have to be from same class • 0 is the first element and -1 is the last element • Methods size and length both return size • Self expanding • Nil extended if assign element beyond the end

  12. Assignment • Parallel assignment • No pre or post increment or decrement operators • Conditional Assignment • x || = “default” #assigned if x is nil or false • x && = “other” #assigned if x is NOT nil or false • Self Assignment Operators • x += 2 • x - = 2 • x *= 2 • x /= 2 • x **= 2

  13. Flow Control • If statement • Keywords if, then, elseif, else, end • Parentheses optional • Multiple forms • Ternary Operator

  14. Loops • Many Different Ways to Write Loops

  15. Loops Continued • One line loops use braces

  16. Loops Continued • More Ways to Do the Same Loop

  17. Loops Continued • Even More Ways

  18. Example Programs

  19. Readability • Pros • Identifier naming conventions denote scope • Methods ending in ? are boolean • Methods ending in ! are dangerous • Braces used for one liners • Begin and End used for blocks • Doesn’t require semicolons • Cons • Many different ways to do the same thing • Precedence in arguments to function calls • can be confusing because () are optional • There are no keywords or reserved words • - You can override everything

  20. Writability • Pros • Many ways to do the same thing • Dynamic Typing • Can write really compact code • Functional Programming is powerful • Debugging is easy with interpreter • Extensive Libraries Available • Cons • None

  21. Reliability • Pros • Supports Exception Handling • Interpreter allows for rapid testing • Cons • Dynamically Typed • Allows Aliasing • Many third party libraries are not maintained • Multiple language implementations that do • not work exactly the same

  22. Cost • Pros • Open Source • Free Compilers • Rapid Development Cycle • Netbeans adds IDE support • Feature multiplicity makes learning basics of • Ruby easy for new developers • Cons • Mastering all of Ruby takes a long time • Slow Execution • you might have to rewrite your code • in a new language at some point

  23. Who uses Ruby? • Amazon • Basecamp • BBC • CISCO • EA • Funnyordie.com • IBM • JP Morgan • Lucent • NASA • Oakley • Penny-arcade.com • Pitchforkmedia.com • Oracle • Scribd.com • Siemens • Twitter • Yahoo!

  24. References • en.wikipedia.org/wiki/Ruby_%28programming_language%29 • BLOG.OBIEFERNANDEZ.COM • www.skorks.com/2009/09/a-wealth-of-ruby-loops-and-iterators/ • www.ruby.org/ • ruby-lang.org

More Related