Page 1 Ruby by Tim Hanson & Mamadou Seck
Page 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
Page 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 released 2010: Ruby version released (not fully compatible with Rails 3.0)
Page 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
Page 5 TIOBE Index
Page 6 Multiple Implementations Ruby 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 Based on YARV Unicode support Changes broke many unmaintained gems Rails 3 not fully supported
Page 7 Performance
Page 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
Page 9 Identifiers and Scope Identifiers Can’t include white space Can’t include nonprinting characters Case sensitive First character denotes scope $ - global - 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
Page 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
Page 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
Page 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
Page 13 Flow Control If statement Keywords if, then, elseif, else, end Parentheses optional Multiple forms Ternary Operator
Page 14 Loops Many Different Ways to Write Loops
Page 15 Loops Continued One line loops use braces
Page 16 Loops Continued More Ways to Do the Same Loop
Page 17 Loops Continued Even More Ways
Page 18 Example Programs
Page 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
Page 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
Page 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
Page 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
Page 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!
Page 24 References en.wikipedia.org/wiki/Ruby_%28programming_la nguage%29 en.wikipedia.org/wiki/Ruby_%28programming_la nguage%29 BLOG.OBIEFERNANDEZ.COM BLOG.OBIEFERNANDEZ.COM loops-and-iterators/ loops-and-iterators/ ruby-lang.org ruby-lang.org