430 likes | 519 Vues
Discover the basics of Ruby programming language through this introductory talk. Learn about Ruby's history, syntax, features, and usage. Get started and explore the world of Ruby programming.
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