This document provides an introduction to the Ruby programming language, giving an overview of its history, features, syntax, and comparisons to other languages like Perl and Python. It discusses Ruby's object-oriented capabilities and provides examples of basic programming constructs. Resources for learning more about Ruby are also listed at the end.
1. R uby Talk – An Introduction to Premshree Pillai [email_address]
2. 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
3. P urpose What this talk is? Get you interested Get you started with Ruby What it isn’t? Not a tutorial
4. W ho am I? (or why should you listen to me) 21/male/single :) Technology consultant Freelance writer since 2001 Perl/Python/Ruby/REBOL hacker
5. H istory (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
6. W hat 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. W here can you use Ruby? System (n/w, RegExps) Web programming (using CGI) Agents, crawlers DB programming (using DBI) GUI (Tk, RubyMagick)
8. G eneral Features High level language True OO (everything’s an object!) Interpreted Portable Low learning curve A quick scan thro’ the syntax
9. R unning Ruby From the command line: ruby file.rb Windows binary comes bundled with Scintilla
10. B asic stuff print 'Hello, world!' p 'Hello, world!' # prints with newline my_var = gets # get input
22. D ata 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. E verything's an Object Methods can be applied to data directly – not just on variables holding data Example: 5.to_s will return "5"
24. C ode Blocks Code blocks may use braces ( { } ) or do/end
25. C ode Blocks (contd.) Example def my_print(what) print what end You cannot use braces for function blocks
26. I f Statement if expression code block elsif ( expression ) code block else code block end
27. W hile Statement while expression code block end Example: count = 1 while count < 10 print count count += 1 end
28. F or Loop for variable_name in range code block end Example: for count in 0..2 print count end
29. I terators array_or_range = value array_or_range.each { |x| print x } Example: my_range = 1..5 my_range.each { |x| print x }
30. F unctions Functions begin with the keyword def def function_name ( [args] ) code block end Example: def print_name(name='Ruby') print name end
31. O O 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
32. E xample 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
33. I nheritance 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
34. N otes on OO Ruby Access specifiers: public , protected , private Multiple inheritance not possible
35. R uby modules require 'net/http' superclass subclass
36. A dvanced topics Regular expressions Network programming MT programming GUI programming (using Tk) Web programming
37. N ow 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. P erl compared to Ruby Complicated OO Cryptic code (Ruby is often called “A Better Perl”) PS: Don’t kill me!
39. P ython 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!
40. R esources 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. R esources (contd.) RubyForge http://rubyforge.org/ ruby-talk http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml
42. If God did OOP, he’d probably do it in Python; He’s now considering switching to Ruby!