SlideShare a Scribd company logo
RUBY IS NOT
JUST A GEM
Ruby is also an awesome programming language.
It is a good choice for those who like and follow the
KISS principle.
IN THIS
PRESENTATION:
➤ Short language history
➤ Ruby’s flow
➤ Some code examples
➤ Ruby’s community
➤ Few words about nowadays problems of complex
systems development & how Ruby ships us in solving
them
➤ Your questions and my answers
MEET THE LIFE
STORY (SHORT
RUBY’S HISTORY
NOTES)
21 years old
BIRTH
1993
Matz (Yukihiro Matsumoto) wanted a language perfect for his
needs:
➤ Syntactically Simple
➤ Truly Object-Oriented
➤ Having Iterators and Closures
➤ Exception Handling
➤ Garbage Collection
➤ Portable
TODDLER
YEARS
December, 1996
➤ Ruby 1.0 was released
➤ Ruby 1.1 shortly followed in August of
1997
➤ The first stable version of Ruby (1.2)
was released in December of 1998.
PRIMARY SCHOOL
YEARS
1998-2004
➤ In 1998, Matz created a simple English homepage for Ruby - ‘Ruby-
Talk’. Ruby was beginning to spread beyond Japan.
➤ In October of 1999: the first book on the Ruby programming
language «The Object-oriented Scripting Language Ruby» by
Yukihiro Matsumoto and Keiju Ishitsuka.
➤ In 2001, the first English book on Ruby, Programming Ruby (“The
Pickaxe”), was published.
➤ Ruby 1.8 was released in 2003. This release made large amounts of
changes to the agile 10-year-old language.
➤ In 2004, RubyGems was released to the public.
THE REBELLIOUS
TEENAGER
2005-2012
➤ 2005: Ruby on Rails (RoR)
➤ In March of 2007, Ruby 1.8.6 was
released
➤ December, 2007: Ruby 1.9
➤ 2011: Ruby 1.9.3 (stable)
STRONG
ADULT
2013-nowadays
➤ February 2013: Ruby 2.0.0 was released
➤ Christmas day of 2013: Ruby 2.1.0 was released
➤ Ruby’s 21st birthday (February 24, 2014): Ruby 2.1.1
was released. Ruby is now legally allowed to drink in the
US. (Speed improvements and bugfixes).
➤ May of 2014: Ruby 2.1.2 was released (more bugfixes
and is the current stable version of Ruby).
FUTURE
Matz wanted a programming language that suited his needs, so
he built one. (If you can’t find something that you like, program it
yourself).
From 0.95 to 2.1.2, Ruby has struck the awe of those who wished
to program the way they wanted, not the way the machine
wanted.
We can’t know the future of the Ruby language, but we can
predict it based on the past. I believe that the Ruby language, and
its fantastic community will continue furthering the language
above and beyond what others think is possible, and projects built
using it will do the same.
RUBY’S FLOW
Ruby code
Ruby interpreter
jRuby
MRI
PEACES OF
CODE
puts ’’Hello, World!’’
1. Hello world
=> Hello, World!
a = 10
puts ’’now ’a’ is equal to: #{a}’’
2. String interpolation
=> now ’a’ is equal to 10
array = [1, "a", [2, :b]]
array.first
=> 1
array.select {|e| [String, Array].include?(e) }
=> ["a", [2, :b]]
array.map &:to_s
=> ["1", "a", "[2, :b]"]
2. Play with Arrays
hash = {field: "2", key: [3, "4"]}
hash[:key]
=> "2"
hash.keys
=> [:field, :key]
hash.flatten
=> [:field, "2", :key, [3, "4"]]
other_hash = {field: 3, other_key: "c"}
hash.merge other_hash
=> {:field=>3, :key=>[3, "4"], :other_key=>"c"}
2. Play with Hashes
class Fruit
attr_reader :weight, :eaten
def initialize(weight)
@weight = weight
@eaten = false
end
def eat
if @eaten
raise "This #{class}" was already eaten"
end
@eaten = true
end
end
3. Some OOP
class Apple < Fruit
attr_reader :cultivar
def initialize(weight, cultivar)
super(weight)
@cultivar = cultivar
end
def eat
super
@weight = @weight * 0.1
end
end
test_apple = Apple.new(300, "Rannet")
test_apple.weight
=> 300
test_apple.cultivar
=> «Rannet»
test_apple.eaten
=> false
test_apple.eat
=> true
test_apple.weight
=> 30
test_apple.eat
=> RuntimeError: This Apple was already eaten
RUBY’S
COMMUNITY
➤ Ruby groups: rubyusergroups.org
➤ Ruby mailing (Ruby-Talk, Ruby-Core, Ruby-Doc, Ruby-CVS)
➤ Ruby IRC (irc://irc.freenode.net/ruby)
➤ Blogs (O’Reilly Ruby, Riding Rails, Ruby Inside, Matz’ Blog)
➤ Contribute to Ruby Core (https://github.com/ruby/ruby)
➤ Conferentions (RubyConf, RubyKaigi, …)
NOWADAYS
DEVELOPMENT PROBLEMS
COMPLEXITY
USERS COUNT
TIME, DEV RESOURCES
SUPPORT, COMPUTING
RESOURCES, DATA STORAGE
Ievgenii Narovlianskyi - Ruby is not just a gem

More Related Content

Viewers also liked

Les indications géographiques comme propriété intellectuelle: protéger la rép...
Les indications géographiques comme propriété intellectuelle: protéger la rép...Les indications géographiques comme propriété intellectuelle: protéger la rép...
Les indications géographiques comme propriété intellectuelle: protéger la rép...
ExternalEvents
 
Scholarshipppt
ScholarshippptScholarshipppt
Scholarshipppt
kophelp
 
Drakon
DrakonDrakon
Evaluación formativa.
Evaluación formativa.Evaluación formativa.
Evaluación formativa.
Student
 
HSBD Day hoc theo du an
HSBD Day hoc theo du anHSBD Day hoc theo du an
HSBD Day hoc theo du an
k38103027
 
نظام إدارة التعلم الالكتروني Moodle lms
 نظام إدارة التعلم الالكتروني Moodle lms نظام إدارة التعلم الالكتروني Moodle lms
نظام إدارة التعلم الالكتروني Moodle lms
Ali Alshourbagy
 

Viewers also liked (6)

Les indications géographiques comme propriété intellectuelle: protéger la rép...
Les indications géographiques comme propriété intellectuelle: protéger la rép...Les indications géographiques comme propriété intellectuelle: protéger la rép...
Les indications géographiques comme propriété intellectuelle: protéger la rép...
 
Scholarshipppt
ScholarshippptScholarshipppt
Scholarshipppt
 
Drakon
DrakonDrakon
Drakon
 
Evaluación formativa.
Evaluación formativa.Evaluación formativa.
Evaluación formativa.
 
HSBD Day hoc theo du an
HSBD Day hoc theo du anHSBD Day hoc theo du an
HSBD Day hoc theo du an
 
نظام إدارة التعلم الالكتروني Moodle lms
 نظام إدارة التعلم الالكتروني Moodle lms نظام إدارة التعلم الالكتروني Moodle lms
نظام إدارة التعلم الالكتروني Moodle lms
 

Similar to Ievgenii Narovlianskyi - Ruby is not just a gem

How to use Ruby in QA, DevOps, Development. Ruby lang Intro
How to use Ruby in QA, DevOps, Development. Ruby lang IntroHow to use Ruby in QA, DevOps, Development. Ruby lang Intro
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
Viacheslav Horbovskykh
 
Ruby Class 1
Ruby Class 1Ruby Class 1
Ruby Class 1
Sarah Allen
 
1 Intro
1   Intro1   Intro
1 Intro
liahhansen
 
01 index
01 index01 index
01 index
Walker Maidana
 
Kungfurails2009
Kungfurails2009Kungfurails2009
Kungfurails2009
Daniel Lv
 
Ruby programming
Ruby programmingRuby programming
Ruby programming
Kartik Kalpande Patil
 
Optimizing for programmer happiness
Optimizing for programmer happinessOptimizing for programmer happiness
Optimizing for programmer happiness
Josh Schramm
 
Ruby on Rails Fundamentals, Class 1
Ruby on Rails Fundamentals, Class 1Ruby on Rails Fundamentals, Class 1
Ruby on Rails Fundamentals, Class 1
Sarah Allen
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
knoppix
 
02 ruby overview
02 ruby overview02 ruby overview
02 ruby overview
Walker Maidana
 
Ruby
RubyRuby
Ruby introductions
Ruby introductionsRuby introductions
Ruby introductions
Binh Bui
 
Ruby Past, Present, Future
Ruby   Past, Present, FutureRuby   Past, Present, Future
Ruby Past, Present, Future
adamfine
 
Why ruby
Why rubyWhy ruby
Why ruby
Bill Chea
 
Page List & Sample Material (Repaired)
Page List & Sample Material (Repaired)Page List & Sample Material (Repaired)
Page List & Sample Material (Repaired)
Muhammad Haseeb Shahid
 
Ruby on Rails Introduction M&P - IT Skill Development Program 07
Ruby on Rails Introduction M&P - IT Skill Development Program 07Ruby on Rails Introduction M&P - IT Skill Development Program 07
Ruby on Rails Introduction M&P - IT Skill Development Program 07
Muhammad Sunny ✈
 
Initiation à Ruby on Rails
Initiation à Ruby on RailsInitiation à Ruby on Rails
Initiation à Ruby on Rails
Microsoft Technet France
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
Andy Maleh
 
Ruby in mule
Ruby in muleRuby in mule
Ruby in mule
Ramakrishna kapa
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
myuser
 

Similar to Ievgenii Narovlianskyi - Ruby is not just a gem (20)

How to use Ruby in QA, DevOps, Development. Ruby lang Intro
How to use Ruby in QA, DevOps, Development. Ruby lang IntroHow to use Ruby in QA, DevOps, Development. Ruby lang Intro
How to use Ruby in QA, DevOps, Development. Ruby lang Intro
 
Ruby Class 1
Ruby Class 1Ruby Class 1
Ruby Class 1
 
1 Intro
1   Intro1   Intro
1 Intro
 
01 index
01 index01 index
01 index
 
Kungfurails2009
Kungfurails2009Kungfurails2009
Kungfurails2009
 
Ruby programming
Ruby programmingRuby programming
Ruby programming
 
Optimizing for programmer happiness
Optimizing for programmer happinessOptimizing for programmer happiness
Optimizing for programmer happiness
 
Ruby on Rails Fundamentals, Class 1
Ruby on Rails Fundamentals, Class 1Ruby on Rails Fundamentals, Class 1
Ruby on Rails Fundamentals, Class 1
 
Ruby tutorial
Ruby tutorialRuby tutorial
Ruby tutorial
 
02 ruby overview
02 ruby overview02 ruby overview
02 ruby overview
 
Ruby
RubyRuby
Ruby
 
Ruby introductions
Ruby introductionsRuby introductions
Ruby introductions
 
Ruby Past, Present, Future
Ruby   Past, Present, FutureRuby   Past, Present, Future
Ruby Past, Present, Future
 
Why ruby
Why rubyWhy ruby
Why ruby
 
Page List & Sample Material (Repaired)
Page List & Sample Material (Repaired)Page List & Sample Material (Repaired)
Page List & Sample Material (Repaired)
 
Ruby on Rails Introduction M&P - IT Skill Development Program 07
Ruby on Rails Introduction M&P - IT Skill Development Program 07Ruby on Rails Introduction M&P - IT Skill Development Program 07
Ruby on Rails Introduction M&P - IT Skill Development Program 07
 
Initiation à Ruby on Rails
Initiation à Ruby on RailsInitiation à Ruby on Rails
Initiation à Ruby on Rails
 
Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
 
Ruby in mule
Ruby in muleRuby in mule
Ruby in mule
 
Intro To Ror
Intro To RorIntro To Ror
Intro To Ror
 

Recently uploaded

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 

Recently uploaded (20)

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 

Ievgenii Narovlianskyi - Ruby is not just a gem

  • 1. RUBY IS NOT JUST A GEM Ruby is also an awesome programming language. It is a good choice for those who like and follow the KISS principle.
  • 2. IN THIS PRESENTATION: ➤ Short language history ➤ Ruby’s flow ➤ Some code examples ➤ Ruby’s community ➤ Few words about nowadays problems of complex systems development & how Ruby ships us in solving them ➤ Your questions and my answers
  • 3. MEET THE LIFE STORY (SHORT RUBY’S HISTORY NOTES) 21 years old
  • 4. BIRTH 1993 Matz (Yukihiro Matsumoto) wanted a language perfect for his needs: ➤ Syntactically Simple ➤ Truly Object-Oriented ➤ Having Iterators and Closures ➤ Exception Handling ➤ Garbage Collection ➤ Portable
  • 5. TODDLER YEARS December, 1996 ➤ Ruby 1.0 was released ➤ Ruby 1.1 shortly followed in August of 1997 ➤ The first stable version of Ruby (1.2) was released in December of 1998.
  • 6. PRIMARY SCHOOL YEARS 1998-2004 ➤ In 1998, Matz created a simple English homepage for Ruby - ‘Ruby- Talk’. Ruby was beginning to spread beyond Japan. ➤ In October of 1999: the first book on the Ruby programming language «The Object-oriented Scripting Language Ruby» by Yukihiro Matsumoto and Keiju Ishitsuka. ➤ In 2001, the first English book on Ruby, Programming Ruby (“The Pickaxe”), was published. ➤ Ruby 1.8 was released in 2003. This release made large amounts of changes to the agile 10-year-old language. ➤ In 2004, RubyGems was released to the public.
  • 7. THE REBELLIOUS TEENAGER 2005-2012 ➤ 2005: Ruby on Rails (RoR) ➤ In March of 2007, Ruby 1.8.6 was released ➤ December, 2007: Ruby 1.9 ➤ 2011: Ruby 1.9.3 (stable)
  • 8. STRONG ADULT 2013-nowadays ➤ February 2013: Ruby 2.0.0 was released ➤ Christmas day of 2013: Ruby 2.1.0 was released ➤ Ruby’s 21st birthday (February 24, 2014): Ruby 2.1.1 was released. Ruby is now legally allowed to drink in the US. (Speed improvements and bugfixes). ➤ May of 2014: Ruby 2.1.2 was released (more bugfixes and is the current stable version of Ruby).
  • 9. FUTURE Matz wanted a programming language that suited his needs, so he built one. (If you can’t find something that you like, program it yourself). From 0.95 to 2.1.2, Ruby has struck the awe of those who wished to program the way they wanted, not the way the machine wanted. We can’t know the future of the Ruby language, but we can predict it based on the past. I believe that the Ruby language, and its fantastic community will continue furthering the language above and beyond what others think is possible, and projects built using it will do the same.
  • 10. RUBY’S FLOW Ruby code Ruby interpreter jRuby MRI
  • 11. PEACES OF CODE puts ’’Hello, World!’’ 1. Hello world => Hello, World!
  • 12. a = 10 puts ’’now ’a’ is equal to: #{a}’’ 2. String interpolation => now ’a’ is equal to 10
  • 13. array = [1, "a", [2, :b]] array.first => 1 array.select {|e| [String, Array].include?(e) } => ["a", [2, :b]] array.map &:to_s => ["1", "a", "[2, :b]"] 2. Play with Arrays
  • 14. hash = {field: "2", key: [3, "4"]} hash[:key] => "2" hash.keys => [:field, :key] hash.flatten => [:field, "2", :key, [3, "4"]] other_hash = {field: 3, other_key: "c"} hash.merge other_hash => {:field=>3, :key=>[3, "4"], :other_key=>"c"} 2. Play with Hashes
  • 15. class Fruit attr_reader :weight, :eaten def initialize(weight) @weight = weight @eaten = false end def eat if @eaten raise "This #{class}" was already eaten" end @eaten = true end end 3. Some OOP class Apple < Fruit attr_reader :cultivar def initialize(weight, cultivar) super(weight) @cultivar = cultivar end def eat super @weight = @weight * 0.1 end end
  • 16. test_apple = Apple.new(300, "Rannet") test_apple.weight => 300 test_apple.cultivar => «Rannet» test_apple.eaten => false test_apple.eat => true test_apple.weight => 30 test_apple.eat => RuntimeError: This Apple was already eaten
  • 17. RUBY’S COMMUNITY ➤ Ruby groups: rubyusergroups.org ➤ Ruby mailing (Ruby-Talk, Ruby-Core, Ruby-Doc, Ruby-CVS) ➤ Ruby IRC (irc://irc.freenode.net/ruby) ➤ Blogs (O’Reilly Ruby, Riding Rails, Ruby Inside, Matz’ Blog) ➤ Contribute to Ruby Core (https://github.com/ruby/ruby) ➤ Conferentions (RubyConf, RubyKaigi, …)
  • 18. NOWADAYS DEVELOPMENT PROBLEMS COMPLEXITY USERS COUNT TIME, DEV RESOURCES SUPPORT, COMPUTING RESOURCES, DATA STORAGE