Download presentation
Presentation is loading. Please wait.
1
Page 1 Ruby by Tim Hanson & Mamadou Seck
2
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
3
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 1.8.7 released 2010: Ruby version 1.9.2 released (not fully compatible with Rails 3.0)
4
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
5
Page 5 TIOBE Index
6
Page 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
Page 7 Performance
8
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
9
Page 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
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
11
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
12
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
13
Page 13 Flow Control If statement Keywords if, then, elseif, else, end Parentheses optional Multiple forms Ternary Operator
14
Page 14 Loops Many Different Ways to Write Loops
15
Page 15 Loops Continued One line loops use braces
16
Page 16 Loops Continued More Ways to Do the Same Loop
17
Page 17 Loops Continued Even More Ways
18
Page 18 Example Programs
19
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
20
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
21
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
22
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
23
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!
24
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 www.skorks.com/2009/09/a-wealth-of-ruby- loops-and-iterators/ www.skorks.com/2009/09/a-wealth-of-ruby- loops-and-iterators/ www.ruby.org/ www.ruby.org/ ruby-lang.org ruby-lang.org
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.