Closing keynote in RubyConf Uruguay 2013
HOW RUBYPROGRAMMED ME
View Slide
@janogonzalez
@hop_in
@dynlangchile
LANGUAGE&THOUGHT
LANGUAGESHAPES OURTHOUGHTHOW
CHICKEN/EGG
DISCLAIMER
NOT ALINGUIST
NOT ANEUROSCIENTIST
NOT APHILOSOPHER
JUST MYEXPERIENCE
AND OPINIONS
DON’T WORRY
PROGRAMMER’SBRAIN
OUR BRAIN
LANGUAGESSHAPE YOURTHOUGHTWHICH
THE PROBLEM
“Ars longa, vita brevis”–Hippocrates
HOW TO CHOOSE
“A language that doesn't affectthe way you think aboutprogramming, is not worthknowing.”–Alan Perlis
PARADIGMS
SINTAX
IDIOMS
COMMUNITY
RUBY
BLOCKSFile.open('my.txt').each do |line|puts line if line =~ /jano/end
JAVASCRIPT
PROTOTYPESfunction Person(name) {this.name = name;}Person.protoype.sayHi = function() {return “Hi, I’m “ + this.name;};var jano = new Person(‘Jano’);jano.sayHi();
PYTHON
INDENTATIONdef median(pool):copy = sorted(pool)size = len(copy)if size % 2 == 1:return copy[(size - 1) / 2]else:return (copy[size/2 - 1] + copy[size/2]) / 2
LISP
MACROS(defmacro for ((var start stop) &body body)(let ((gstop (gensym)))`(do ((,var ,start (1+ ,var))(,gstop ,stop))((> ,var ,gstop)),@body)))
HASKELL
PATTERN MATCHINGmap _ [] = []map f (x:xs) = f x : map f xs
FORTH
STACK BASED: STAR! ( -- )42 EMIT ;: STARS!( n -- )0 DO STAR LOOP ;CR 7 STARS
REMIX IT!
LANGUAGESSHAPE YOURTHOUGHTLET
“The determined RealProgrammer can writeFORTRAN programs in anylanguage.”–Ed Post
“The determined RealProgrammer can writeFORTRAN programs in anylanguage.”–Ed Postclose-minded?C, Ruby, Lisp, etc
ARE YOU CHUCK?
ॳ৺
BEGINNER’SMIND
OPENNESS
A CUP OF TEA
EMPTY YOUR CUP
कഁ
PROTECT/OBEYSHU
DETACH/DISGRESSHA
LEAVE/SEPARATERI
HEY! THIS IS ARUBYCONFERENCE
RUBY&MY BRAIN
RUBYCHANGEDMY BRAINHOW
A TALE OF TWODEVELOPERS
HACKERV/STHINKER
HACKER
GET THINGSDONEHACKER
FASTHACKER
HACKSHACKER
MAINTENANCENIGHTMAREHACKER
NEEDS MORE DUCT TAPE
THINKER
THINKS ABOUTABSTRACTIONSTHINKER
THINKS ABOUTMANTAINABILITYTHINKER
TOO MANYABSTRACTIONSTHINKER
ANALYSISPARALYSISTHINKER
NEEDS MORE LAYERS
MY STORY
THE HACKER YEARS
THE LEARNING YEARS
THE UML YEARS
THE HACKERWAS GONE
UML, RUP, GoF,XML, ETC.
STOCKHOLMSYNDROME
EVOLUTION?
THE ONE TRUE WAY™
THE PATH?
FEAR
I WAS SOWRONG!
EVERYDAY LIFEIS THE PATH
ENTERRUBY
SMALLTALK INPERL’S DISGUISE
HAPPYTHINKER
THINKERclass AccountProtectionProxydef initialize(real_account, owner_name)@subject = real_account@owner_name = owner_nameenddef method_missing(name, *args)check_access@subject.send( name, *args )end...end
OMG! GoF NEVERWAS SO EASY
HAPPYHACKER
HACKER$1 if str ~= /(foo)+/
ONE LINERS FTW!
HACKER❤THINKER
LET’S WORKTOGETHER
HARMONY
HARMONY(1..42).select(&:even?).map { |n| n * 2 }.reduce(&:*)
THE PATH ISNO PATH
WEIRDFACT
(EVERY DEVELOPER IS AMANAGER)
(OMG)
RUBY&MY LIFE
RUBYCHANGEDMY LIFEHOW
NEW GIGS
CONFERENCES
NEW FRIENDS
CRAZY FRIENDS
I❤.RB
I❤.UY
I❤.AR
RUBY&YOUR LIFE
RUBYCHANGEYOUR LIFELET
PROGRAMMINGCHANGEYOUR LIFELET
FORK & MERGE
LEARN
HAVEFUN
SHARE
(AND REPEAT)loop dolearnhave_funshareend
THANKS!