Ruby Talk - PowerPoint PPT Presentation

1 / 43
About This Presentation
Title:

Ruby Talk

Description:

(test of equality of type and values) ... blue. Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004. 21. Hashes (contd. ... – PowerPoint PPT presentation

Number of Views:140
Avg rating:3.0/5.0
Slides: 44
Provided by: premshre
Category:
Tags: ruby | talk

less

Transcript and Presenter's Notes

Title: Ruby Talk


1
Ruby Talk An Introduction to
  • Premshree Pillai
  • premshree_at_livejournal.com

2
Scope of Talk
  • What this talk is and what it isnt
  • Me, myself
  • What is?
  • Why use?
  • How to? (a quick run through the syntax)
  • Quick comparisons (with Perl and Python)
  • Resources

3
Purpose
  • What this talk is?
  • Get you interested
  • Get you started with Ruby
  • What it isnt?
  • Not a tutorial

4
Who am I?
  • (or why should you listen to me)
  • 21/male/single )
  • Technology consultant
  • Freelance writer since 2001
  • Perl/Python/Ruby/REBOL hacker

5
History (Rubys, not mine)
  • Created (in Japan) by Yukihiro Matsumoto,
    popularly called Matz
  • Named as Ruby to reflect its Perl hertitage
  • Released to the public in 1995
  • Licensed under GPL or Ruby terms

6
What the heck is Ruby?
  • An object-oriented scripting language
  • As powerful as Perl simpler, better OO
  • The simplicity of Python
  • Follows the principle of Least Surprise What
    You Expect Is What You Get

7
Where can you use Ruby?
  • System (n/w, RegExps)
  • Web programming (using CGI)
  • Agents, crawlers
  • DB programming (using DBI)
  • GUI (Tk, RubyMagick)

8
General Features
  • High level language
  • True OO (everythings an object!)
  • Interpreted
  • Portable
  • Low learning curve
  • A quick scan thro the syntax

9
Running Ruby
  • From the command line
  • ruby file.rb
  • Windows binary comes bundled with Scintilla

10
Basic stuff
  • print 'Hello, world!'
  • p 'Hello, world!' prints with newline
  • my_var gets get input

11
Operators
  • (addition)
  • - (subtraction/negation)
  • (multiplication)
  • / (division)
  • (modulus)
  • (exponentiation)

12
Operators (contd.)
  • ltgt (returns -1, 0 or 1)
  • lt, lt, gt, gt
  • (matching)
  • eql? (test of equality of type and values)

13
Operators (contd.)
  • and -- are not reserved operators
  • Use and -

14
Logical Operators
  • and
  • or
  • not

15
Typing
  • Dynamic typed
  • Type checking at run-time
  • Strong typed

16
Basic Data Types
  • Integers and floats
  • Strings
  • Ranges
  • Arrays
  • Hashes

17
Strings
  • my_str 'whatever'
  • my_str "blah, blah"
  • my_str.split(",")0.split("")2 3

18
Ranges
  • Inclusive range
  • my_range 1 .. 3
  • my_range 'abc' .. 'abf'
  • Non-inclusive range
  • my_range 1 5
  • my_range 'abc' 'abf'

19
Arrays
  • my_array 1, 2, 3
  • Common methods
  • my_array.length
  • my_array ltlt 4
  • my_array0, etc.

20
Hashes
  • my_hash
  • 'desc' gt 'color' gt 'blue',,
  • 1 gt 1, 2, 3
  • print my_hash'desc''color'
  • will return
  • blue

21
Hashes (contd.)
  • Common methods
  • my_hash.keys
  • my_hash.values

22
Data Type Conversion
  • Converting to an Array
  • var_data_type.to_a
  • Converting to an String
  • var_data_type.to_s
  • More (guess!)
  • var_data_type.to_i
  • var_data_type.to_f

23
Everything's an Object
  • Methods can be applied to data directly not
    just on variables holding data
  • Example
  • 5.to_s will return "5"

24
Code Blocks
  • Code blocks may use braces ( ) or do/end

25
Code Blocks (contd.)
  • Example
  • def my_print(what)
  • print what
  • end
  • You cannot use braces for function blocks

26
If Statement
  • if expression
  • code block
  • elsif (expression)
  • code block
  • else
  • code block
  • end

27
While Statement
  • while expression
  • code block
  • end
  • Example
  • count 1
  • while count lt 10
  • print count
  • count 1
  • end

28
For Loop
  • for variable_name in range
  • code block
  • end
  • Example
  • for count in 0..2
  • print count
  • end

29
Iterators
  • array_or_range value
  • array_or_range.each x
  • print x
  • Example
  • my_range 1..5
  • my_range.each x
  • print x

30
Functions
  • Functions begin with the keyword def
  • def function_name(args)
  • code block
  • end
  • Example
  • def print_name(name'Ruby')
  • print name
  • end

31
OO Ruby
  • Classes are containers for static data members
    and functions
  • Declared using the class keyword. All class
    names should begin with a capital letter
  • Constructor declared using the initialize
    keyword
  • Class variables precede with an _at_
  • Objects created using the new method

32
Example class
  • class My_class
  • def initialize(arg1, arg2)
  • _at_arg1 arg1
  • _at_arg2 arg1
  • end
  • def print_arg1()
  • print _at_arg1
  • end
  • def print_foo()
  • print "I Love Ruby!"
  • end
  • private
  • def print_arg2()
  • print _at_arg2
  • end
  • end
  • my_object My_class.new(2, 3)
  • my_object.print_arg1

33
Inheritance
  • class Derived_class lt My_class
  • def initialize()
  • _at_arg "I Love Ruby!"
  • end
  • def print_arg()
  • print _at_arg
  • end
  • end
  • my_object Derived_class.new
  • my_object.print_foo

34
Notes on OO Ruby
  • Access specifiers public, protected, private
  • Multiple inheritance not possible

35
Ruby modules
  • require 'net/http'

superclass
subclass
36
Advanced topics
  • Regular expressions
  • Network programming
  • MT programming
  • GUI programming (using Tk)
  • Web programming

37
Now what?
  • What you can do now?
  • Get your hands dirty with Ruby
  • Write simple Ruby programs
  • What you have to do?
  • Explore Ruby modules
  • Find a problem, and Ruby it!

38
Perl compared to Ruby
  • Complicated OO
  • Cryptic code
  • (Ruby is often called A Better Perl)
  • PS Dont kill me!

39
Python compared to Ruby
  • Incomplete OO
  • Instance variables require self.var
  • No class method
  • No true GC (uses ref counting)
  • Not suitable for one-liners
  • PS Dont kill me!

40
Resources
  • Ruby Home Page
  • http//www.ruby-lang.org/en/
  • Programming Ruby
  • http//www.rubycentral.com/book/
  • RubyGarden
  • http//www.rubygarden.org/ruby
  • Ruby Application Archive (RAA)
  • http//raa.ruby-lang.org/

41
Resources (contd.)
  • RubyForge
  • http//rubyforge.org/
  • ruby-talk
  • http//blade.nagaokaut.ac.jp/ruby/ruby-talk/index
    .shtml

42
  • If God did OOP, hed probably do it in Python
    Hes now considering switching to Ruby!

43
  • Thank you!
  • Questions?
Write a Comment
User Comments (0)
About PowerShow.com