This document discusses Ruby for PHP developers. It begins by providing background on Ruby, noting that it was created in 1995 like PHP and is open source. The creator of Ruby wanted a scripting language more powerful than Perl and more object-oriented than Python. Ruby is described as being fun, making developers better, and sabotaging preconceptions. Key aspects of Ruby discussed include its dynamic and strong typing, everything being an object including primitive types, flexibility, duck typing using modules and mixins, and popular frameworks like Ruby on Rails. The document encourages PHP developers to learn Ruby and provides resources for doing so.
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.