430 likes | 518 Views
R uby Talk – An Introduction to. Premshree Pillai premshree@livejournal.com. S cope of Talk. What this talk is and what it isn’t Me, myself What is? Why use? How to? (a quick run through the syntax) Quick comparisons (with Perl and Python) Resources. P urpose. What this talk is?
E N D
Ruby Talk – An Introduction to Premshree Pillai premshree@livejournal.com
Scope of Talk • What this talk is and what it isn’t • Me, myself • What is? • Why use? • How to? (a quick run through the syntax) • Quick comparisons (with Perl and Python) • Resources Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Purpose What this talk is? • Get you interested • Get you started with Ruby What it isn’t? • Not a tutorial Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Who am I? (or why should you listen to me) • 21/male/single :) • Technology consultant • Freelance writer since 2001 • Perl/Python/Ruby/REBOL hacker Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
History (Ruby’s, 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 Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
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 Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Where can you use Ruby? • System (n/w, RegExps) • Web programming (using CGI) • Agents, crawlers • DB programming (using DBI) • GUI (Tk, RubyMagick) Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
General Features • High level language • True OO (everything’s an object!) • Interpreted • Portable • Low learning curve A quick scan thro’ the syntax Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Running Ruby • From the command line: ruby file.rb • Windows binary comes bundled with Scintilla Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Basic stuff print 'Hello, world!' p 'Hello, world!' # prints with newline my_var = gets # get input Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Operators • + (addition) • - (subtraction/negation) • * (multiplication) • / (division) • % (modulus) • ** (exponentiation) Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Operators (contd.) • == • <=> (returns -1, 0 or 1) • <, <=, >=, > • =~ (matching) • eql? (test of equality of type and values) Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Operators (contd.) • ++ and -- are not reserved operators • Use += and +- Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Logical Operators • and • or • not Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Typing • Dynamic typed • Type checking at run-time • Strong typed Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Basic Data Types • Integers and floats • Strings • Ranges • Arrays • Hashes Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Strings my_str = 'whatever' my_str = "blah, blah" my_str.split(",")[0].split("")[2] * 3 Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Ranges • Inclusive range my_range = 1 .. 3 my_range = 'abc' .. 'abf' • Non-inclusive range my_range = 1 … 5 my_range = 'abc' … 'abf' Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Arrays • my_array = [1, 2, 3] • Common methods: my_array.length my_array << 4 my_array[0], etc. Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Hashes • my_hash = { 'desc' => {'color' => 'blue',}, 1 => [1, 2, 3] } • print my_hash['desc']['color'] will return blue Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Hashes (contd.) • Common methods: my_hash.keys my_hash.values Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
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 Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Everything's an Object • Methods can be applied to data directly – not just on variables holding data • Example: 5.to_s will return "5" Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Code Blocks • Code blocks may use braces ( { } ) or do/end Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Code Blocks (contd.) • Example def my_print(what) print what end • You cannot use braces for function blocks Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
If Statement if expression code block elsif (expression) code block else code block end Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
While Statement • while expression code block end • Example: count = 1 while count < 10 print count count += 1 end Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
For Loop • for variable_name in range code block end • Example: for count in 0..2 print count end Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Iterators • array_or_range = value array_or_range.each { |x| print x } • Example: my_range = 1..5 my_range.each { |x| print x } Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Functions • Functions begin with the keyword def def function_name([args]) code block end • Example: def print_name(name='Ruby') print name end Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
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 “@” • Objects created using the new method Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Example class class My_class def initialize(arg1, arg2) @arg1 = arg1 @arg2 = arg1 end def print_arg1() print @arg1 end def print_foo() print "I Love Ruby!" end private def print_arg2() print @arg2 end end my_object = My_class.new(2, 3) my_object.print_arg1 my_object.print_arg2 # will cause an exception Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Inheritance class Derived_class < My_class def initialize() @arg = "I Love Ruby!" end def print_arg() print @arg end end my_object = Derived_class.new my_object.print_foo Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Notes on OO Ruby • Access specifiers: public, protected, private • Multiple inheritance not possible Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Ruby modules require 'net/http' superclass subclass Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Advanced topics • Regular expressions • Network programming • MT programming • GUI programming (using Tk) • Web programming Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
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! Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Perl compared to Ruby • Complicated OO • Cryptic code (Ruby is often called “A Better Perl”) PS:Don’t kill me! Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
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:Don’t kill me! Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
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/ Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Resources (contd.) • RubyForge http://rubyforge.org/ • ruby-talk http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
If God did OOP, he’d probably do it in Python; He’s now considering switching to Ruby! Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004
Thank you! Questions? Ruby Talk - An Introduction to Ruby -- Linux Bangalore/2004