2. Objective: learn and compare
▶ What is Ruby and where it is come from?
▶ Why Ruby?
▶ Ruby basics
▶ Ruby ecosystem
▶ Ruby specialties
▶ How to get started?
3.
4. Facts
▶ First “Hello World” in 1995 (PHP 1995 too)
▶ Opensource (PHP too)
▶ Inspired by: Perl, Smalltalk, Lisp, Python …
▶ Philosophy: Designed for programmer
productivity and fun.
5. Creator
"I wanted a scripting language that was
more powerful than Perl, and more object-
oriented than Python. That's why I decided
to design my own language.”
Yukihiro (Matz) Matsumoto
6. Why Ruby?
▶ It’s fun!
▶ It’s going to make your better.
▶ And definitely it will sabotage what you
believe in.
7. Similarities
▶ Ruby has exception handling
▶ Garbage collector
▶ The is fairly large standard library
▶ The are classes and access modifiers
8. Ruby is Dynamic
▶ No need to declare variables
var = “World in hell”
var.class #String
var = 1
var.class #Fixnum
9. Ruby is Strong Typed
▶ Like in Java or C# there is no type
juggling.
You need to convert between types.
a = “1”
b=2
a + b #TypeError: can't convert Fixnum into String
a.to_i + b # 3
10. Everything is an Object
▶ Inspired by SmallTalk
▶ Unlike other programming languages that
states the same, Ruby really is.
11. Everything is an Object
▶ Primitive Types are an objects
10.times {puts “I am sexy and I know it!”}
#Output “I am sexy and I know it!”
#Output “I am sexy and I know it!”
#Output “I am sexy and I know it!”
#Output “I am sexy and I know it!”
#Output “I am sexy and I know it!”
#....(10 times)…
12. Everything is an Object
▶ Control structures are object methods
class Fixnum < Integer
def – numeric
# subtracting code
end
end
13. Ruby is Flexible
▶ Existing ruby code could be easily altered.
class Numeric
def toSquare
self * self
end
end
2.toSquare# 4
14. Duck typing
▶ Definition: When I see a bird that walks
like a duck and swims like a duck and
quacks like a duck, I call that bird a duck.
(Wikipedia)
16. So, is it a duck?
Swim? Yes
Can Quack? Yes
Is it a duck?
Definitely!
17. And this?
Swim? Yes
Can Quack? Yes. Kind of
strange, but still it
make quack like sound
Is it a duck?
Looks like!
18. How, about this?
Swim? Badly, but yes.
Can Quack? Yeah, make
Plenty of sounds but, can
quack also.
Is it a duck?
Sort of weird duck, but yes!
19. Or, probably this?
Swim? Yep
Can quack? Can
make weird quack
sounds.
Is it duck?
Trying very hard, so
yes
20. Duck Typing
▶ So, everything that could respond to
several criteria's that makes us believe
that it’s a duck, is a duck.
21. Duck Typing in context of Ruby
▶ There is no abstract classes and
interfaces.
▶ There is Modules and Mixins.
22. Modules and Mixins
▶ Modules define reusable pieces of code
that couldn’t be instantiated.
▶ Modules provides a namespace and
prevent name clashes
▶ Modules could be “mixin” to any class that
satisfy conventions described in
documentation (Should quack and swim
like a duck).
▶ In PHP 5.4 Traits is an equivalent to
Mixins
23. How we usually do this in PHP
Interface ILog
{
function write($message)
}
EventLog implements ILog
{
function write($message)
{
//useful code
}
}
24. How we do this in Ruby
module Log
def write
#code
end
End
class EventLog
include Log
def Prepare
end
end
25. Implementing Enumerable
▶ From Enumerable module documentation:
The Enumerable mixin provides collection
classes with several traversal and
searching methods, and with the ability to
sort. The class must provide a method
“each”, which
yields successive members of the
collection.
27. About coding guide lines
▶ Remember the times of Hungarian
notation?
$f_amount = 100.00;
$s_string = “I am definitely a string”;
▶ How many coding guide lines there?
▶ PEAR,
▶ Zend,
▶ Wordpress
▶ Your company standard
28. You. When you get someone's code
with different coding guide lines.