SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Ruby
Сергей Зиновьев, Sr. Ruby developer
Игорь Ходырев, Sr. Ruby developer
Зачем Ruby?
Простые и понятные программы
Простой и понятный синтаксис
Малое время разработки
Историческая справка
1993 — начало разработки (Юкихиро
Мацумото a.k.a. Matz)
Название навеяно языком Perl
Цель разработки — «настоящий ОО» язык
программирования
1995 — первая версия в Японии
1997 — первая документация in English
2004 — появление Ruby on Rails
Место Ruby (Tiobe index)
Ruby — интерпретируемый
>javac MyProgram.java

>java MyProgram
>ruby my_program.rb
Ruby — динамический
def len(list)
x = 0
list.each { |_element| x += 1 }
end
public static int len(List list)
{
int x = 0;
Iterator listIterator =
list.iterator();
while(listIterator.hasNext()) {
x += 1;
}
}
Ruby — компактный
class Circle
attr_accessor :center, :radius
end
class Circle {
private Coordinate center, float radius;
public void setCenter(Coordinate center){
this.center = center;
}
public Coordinate getCenter(){
return center;
}
public void setRadius(float radius){
this.radius = radius;
}
public Coordinate getRadius(){
return radius;
}
}
Ruby — гибкий
HashMap<String, Integer> tripleLengths =
new HashMap<String, Integer>();
tripleLengths.put("Vasya", 15);
tripleLengths.put("Alex", 12);
tripleLengths.put("Anastasia", 27);
HashMap<String, Integer> tripleLengths =
new HashMap<String, Integer>();
List<String> names = Arrays.asList("Vasya",
"Alex", "Anastasia");
names.stream().forEach((name) -> {
tripleLengths.put(name, name.length()*3);
});
}
triple_lengths = {
"Vasya": 15,
"Alex": 12,
"Anastasia": 27
}
triple_lengths = Hash[
%w(Vasya Alex Anastasia).map do |name|
[name, name.length*3]
end
]
Гибкий, вплоть до выноса мозга
Внезапно…
[1] pry(main)> class Fixnum
[1] pry(main)* def +(i)
[1] pry(main)* self - i
[1] pry(main)* end
[1] pry(main)* end
[1] pry(main)> 1 + 1
=> 0
Ruby-окружение
RVM (https://rvm.io/)
RBenv (http://rbenv.org/)
системный пакет (Linux, Mac OS)
RubyInstaller for Windows — =/
Средства виртуализации
VMWare
VirtualBox
Parallels
Установка и настройка Ruby на Xubuntu 14.04
$ sudo apt-get update
$ sudo apt-get install git-core curl
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys
409B6B1796C275462A1703113804BB82D39DC0E3
$ curl -L https://get.rvm.io | bash -s stable --ruby
$ rvm use 2.2.2 --default
RVM
$ sudo apt-get update
$ sudo apt-get install git-core ruby-build
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ rbenv install 2.2.2
RBenv
Ruby — интерпретируемый
• ruby filename.rb
• irb — Interactive Ruby
• pry — irb на стероидах
Всё — объекты
Naming conventions
• переменные и методы — some_name
• классы — SomeClassName
• константы — I_AM_THE_CONSTANT
• присваивание
• составное присваивание
• возведение в степень
• равно
• не равно
Математические операции и присваивание
> a = 1
=> 1
> a += 2
=> 3
> b = a**2
=> 9
> b == a
=> false
> b != a
=> true
Условный оператор
if a > b
puts "Greater"
end
if num.odd?
puts "Нечётное"
else
puts "Чётное"
end
str = num.odd? ? 'Odd' : 'Even'
Условный оператор
unless you_lose do
puts 'Grab your prize here'
end
you_win = false
puts 'You win!' if you_win
you_lose = !you_win
puts 'You win!' unless you_lose
Массивы
>a = [1, 'hi', 3.14, 1, 2, [4, 5] * 3]
=> [1, "hi", 3.14, 1, 2, [4, 5, 4, 5, 4, 5]]
>a[2]
=> 3.14
>a.flatten.uniq
=> [1, 'hi', 3.14, 2, 4, 5]
>a.index(6)
=> nil
>a.flatten!
=> [1, "hi", 3.14, 1, 2, 4, 5, 4, 5, 4, 5]
>a.index(4)
=> 5
Хэши
> h = { asd: "qwe", zxc: "ftw" }
=> {:asd=> "qwe", :zxc=> "ftw"}
> h[:asd]
=> "qwe"
> h[:zzz]
=> nil
Enumerable
for i in 1..5
p i
end
(1..5).each { |i| p i }
Output:
1
2
3
4
5
=> nil
Enumerable
[1,2,3].map { |n| n**3 }
=> [1, 8, 27]
a = (1..5).reject { |i| i.even? }
=> [1, 3, 5]
a.reduce { |i, mult| i * mult }
=> 15
Классы, методы
class Person < Mammal
@@amount = 0
ADULT_AGE = 18
def initialize(name, age)
@name, @age = name, age
@@amount += 1
end
def adult?
@age >= ADULT_AGE
end
end
Литература
и ссылки
Programming Ruby 1.9 & 2.0
http://tryruby.org
Ruby Programming Language (O'Reilly)
https://github.com/bbatsov/ruby-style-guide
http://rubykoans.com
http://rubyweekly.com
Домашнее задание
1.http://tryruby.org
2.В одном массиве записан рост некоторых
студентов, а в другом (с тем же числом элементов)
- их фамилии в том же порядке, в котором указан
рост. Известно, что все студенты разного роста.
Напечатайте фамилию самого высокого студента.
3.Даны две строки. Определите, сколько начальных
символов первой строки совпадает с начальными
символами второй. Рассмотрите два случая: а)
известно, что строки разные; б) строки могут
совпасть.
Домашнее задание
https://goo.gl/yT8GPT
rubyvrn@gmail.com

Contenu connexe

En vedette

Uses and gratification theory
Uses and gratification theoryUses and gratification theory
Uses and gratification theoryAbbey Cotterill
 
Propiedad intelectual del soft ware
Propiedad intelectual del soft warePropiedad intelectual del soft ware
Propiedad intelectual del soft wareJoel Quintana
 
นิทาน
นิทานนิทาน
นิทานExitOfLove
 
Testing in projects
Testing in projectsTesting in projects
Testing in projectsDataArt
 
Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»DataArt
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent placesArpanasa
 
Fruit and vegetables
Fruit and vegetablesFruit and vegetables
Fruit and vegetablessofia84k
 
Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...
Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...
Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...DataArt
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finishedAbbey Cotterill
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finishedAbbey Cotterill
 
IT talk SPb: Найдется все
IT talk SPb: Найдется всеIT talk SPb: Найдется все
IT talk SPb: Найдется всеDataArt
 
Андрей Вересов - .NET Reflection
Андрей Вересов - .NET ReflectionАндрей Вересов - .NET Reflection
Андрей Вересов - .NET ReflectionDataArt
 
Николай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoTНиколай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoTDataArt
 
«Прототип за 60 секунд: о вайрфреймах и прототипах»
 «Прототип за 60 секунд: о вайрфреймах и прототипах» «Прототип за 60 секунд: о вайрфреймах и прототипах»
«Прототип за 60 секунд: о вайрфреймах и прототипах»DataArt
 
Reader’s theater (1)
Reader’s theater (1)Reader’s theater (1)
Reader’s theater (1)IIPCONX
 
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.DataArt
 
photos
photosphotos
photosdiakxr
 
Powell on leadership
Powell on leadershipPowell on leadership
Powell on leadershipLouis Collins
 
Fintech summit 2016 society one &amp; clearmatch
Fintech summit 2016   society one &amp; clearmatchFintech summit 2016   society one &amp; clearmatch
Fintech summit 2016 society one &amp; clearmatchGlen Frost
 
Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"DataArt
 

En vedette (20)

Uses and gratification theory
Uses and gratification theoryUses and gratification theory
Uses and gratification theory
 
Propiedad intelectual del soft ware
Propiedad intelectual del soft warePropiedad intelectual del soft ware
Propiedad intelectual del soft ware
 
นิทาน
นิทานนิทาน
นิทาน
 
Testing in projects
Testing in projectsTesting in projects
Testing in projects
 
Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»
 
Visiting unpleasent places
Visiting unpleasent placesVisiting unpleasent places
Visiting unpleasent places
 
Fruit and vegetables
Fruit and vegetablesFruit and vegetables
Fruit and vegetables
 
Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...
Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...
Дмитрий Паньков ( DataArt) "Business intelligence: перспективы для будущих сп...
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finished
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finished
 
IT talk SPb: Найдется все
IT talk SPb: Найдется всеIT talk SPb: Найдется все
IT talk SPb: Найдется все
 
Андрей Вересов - .NET Reflection
Андрей Вересов - .NET ReflectionАндрей Вересов - .NET Reflection
Андрей Вересов - .NET Reflection
 
Николай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoTНиколай Хабаров — Эволюция IoT
Николай Хабаров — Эволюция IoT
 
«Прототип за 60 секунд: о вайрфреймах и прототипах»
 «Прототип за 60 секунд: о вайрфреймах и прототипах» «Прототип за 60 секунд: о вайрфреймах и прототипах»
«Прототип за 60 секунд: о вайрфреймах и прототипах»
 
Reader’s theater (1)
Reader’s theater (1)Reader’s theater (1)
Reader’s theater (1)
 
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
Елизавета Скоморохова — Что такое Usability Expert Review и Usability testing.
 
photos
photosphotos
photos
 
Powell on leadership
Powell on leadershipPowell on leadership
Powell on leadership
 
Fintech summit 2016 society one &amp; clearmatch
Fintech summit 2016   society one &amp; clearmatchFintech summit 2016   society one &amp; clearmatch
Fintech summit 2016 society one &amp; clearmatch
 
Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"Яна Пролис "Создаем Dream Team"
Яна Пролис "Создаем Dream Team"
 

Similaire à Сергей Зиновьев и Игорь Ходырев - Ruby

Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Pavel Tsukanov
 
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the BeastAlexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the BeastAlexander Dymo
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPavel Vlasov
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013ScalaNsk
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo
 
2013 09 21 языки программирования
2013 09 21 языки программирования 2013 09 21 языки программирования
2013 09 21 языки программирования Yandex
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.Roman Brovko
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
 
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиZheka Kozlov
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Pavel Egorov
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPython Meetup
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиGetDev.NET
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++Andrey Karpov
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibAndrey Vlasovskikh
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Evgeny Borisov
 
Back to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодняBack to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодняAlexander Granin
 
Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruAlexander Shcherbinin
 

Similaire à Сергей Зиновьев и Игорь Ходырев - Ruby (20)

Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?
 
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the BeastAlexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
 
Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013Павел Павлов - Scala для профессионалов - Joker 2013
Павел Павлов - Scala для профессионалов - Joker 2013
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
 
2013 09 21 языки программирования
2013 09 21 языки программирования 2013 09 21 языки программирования
2013 09 21 языки программирования
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
 
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не знали
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
About Python
About PythonAbout Python
About Python
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
JavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработкиJavaScript: хороший тон клиентской разработки
JavaScript: хороший тон клиентской разработки
 
Ruby exceptions
Ruby exceptionsRuby exceptions
Ruby exceptions
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlib
 
Groovy jug-moscow-part 1
Groovy jug-moscow-part 1Groovy jug-moscow-part 1
Groovy jug-moscow-part 1
 
Back to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодняBack to the future: Функциональное программирование вчера и сегодня
Back to the future: Функциональное программирование вчера и сегодня
 
Вторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ruВторая лекция по основам ruby для студентов itc73.ru
Вторая лекция по основам ruby для студентов itc73.ru
 
Comma
CommaComma
Comma
 

Plus de DataArt

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR PartnersDataArt
 
Event management в IT
Event management в ITEvent management в IT
Event management в ITDataArt
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from insideDataArt
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)DataArt
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDataArt
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtDataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...DataArt
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's lifeDataArt
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиDataArt
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOpsDataArt
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real lifeDataArt
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестированияDataArt
 
Selenoid
SelenoidSelenoid
SelenoidDataArt
 
Selenide
SelenideSelenide
SelenideDataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"DataArt
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...DataArt
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGDataArt
 

Plus de DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

Сергей Зиновьев и Игорь Ходырев - Ruby

  • 1. Ruby Сергей Зиновьев, Sr. Ruby developer Игорь Ходырев, Sr. Ruby developer
  • 2. Зачем Ruby? Простые и понятные программы Простой и понятный синтаксис Малое время разработки
  • 3.
  • 4.
  • 5. Историческая справка 1993 — начало разработки (Юкихиро Мацумото a.k.a. Matz) Название навеяно языком Perl Цель разработки — «настоящий ОО» язык программирования 1995 — первая версия в Японии 1997 — первая документация in English 2004 — появление Ruby on Rails
  • 7. Ruby — интерпретируемый >javac MyProgram.java
 >java MyProgram >ruby my_program.rb
  • 8. Ruby — динамический def len(list) x = 0 list.each { |_element| x += 1 } end public static int len(List list) { int x = 0; Iterator listIterator = list.iterator(); while(listIterator.hasNext()) { x += 1; } }
  • 9. Ruby — компактный class Circle attr_accessor :center, :radius end class Circle { private Coordinate center, float radius; public void setCenter(Coordinate center){ this.center = center; } public Coordinate getCenter(){ return center; } public void setRadius(float radius){ this.radius = radius; } public Coordinate getRadius(){ return radius; } }
  • 10. Ruby — гибкий HashMap<String, Integer> tripleLengths = new HashMap<String, Integer>(); tripleLengths.put("Vasya", 15); tripleLengths.put("Alex", 12); tripleLengths.put("Anastasia", 27); HashMap<String, Integer> tripleLengths = new HashMap<String, Integer>(); List<String> names = Arrays.asList("Vasya", "Alex", "Anastasia"); names.stream().forEach((name) -> { tripleLengths.put(name, name.length()*3); }); } triple_lengths = { "Vasya": 15, "Alex": 12, "Anastasia": 27 } triple_lengths = Hash[ %w(Vasya Alex Anastasia).map do |name| [name, name.length*3] end ]
  • 11. Гибкий, вплоть до выноса мозга Внезапно… [1] pry(main)> class Fixnum [1] pry(main)* def +(i) [1] pry(main)* self - i [1] pry(main)* end [1] pry(main)* end [1] pry(main)> 1 + 1 => 0
  • 12. Ruby-окружение RVM (https://rvm.io/) RBenv (http://rbenv.org/) системный пакет (Linux, Mac OS) RubyInstaller for Windows — =/
  • 14. Установка и настройка Ruby на Xubuntu 14.04 $ sudo apt-get update $ sudo apt-get install git-core curl $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 $ curl -L https://get.rvm.io | bash -s stable --ruby $ rvm use 2.2.2 --default RVM $ sudo apt-get update $ sudo apt-get install git-core ruby-build $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc $ rbenv install 2.2.2 RBenv
  • 15. Ruby — интерпретируемый • ruby filename.rb • irb — Interactive Ruby • pry — irb на стероидах
  • 17. Naming conventions • переменные и методы — some_name • классы — SomeClassName • константы — I_AM_THE_CONSTANT
  • 18. • присваивание • составное присваивание • возведение в степень • равно • не равно Математические операции и присваивание > a = 1 => 1 > a += 2 => 3 > b = a**2 => 9 > b == a => false > b != a => true
  • 19. Условный оператор if a > b puts "Greater" end if num.odd? puts "Нечётное" else puts "Чётное" end str = num.odd? ? 'Odd' : 'Even'
  • 20. Условный оператор unless you_lose do puts 'Grab your prize here' end you_win = false puts 'You win!' if you_win you_lose = !you_win puts 'You win!' unless you_lose
  • 21. Массивы >a = [1, 'hi', 3.14, 1, 2, [4, 5] * 3] => [1, "hi", 3.14, 1, 2, [4, 5, 4, 5, 4, 5]] >a[2] => 3.14 >a.flatten.uniq => [1, 'hi', 3.14, 2, 4, 5] >a.index(6) => nil >a.flatten! => [1, "hi", 3.14, 1, 2, 4, 5, 4, 5, 4, 5] >a.index(4) => 5
  • 22. Хэши > h = { asd: "qwe", zxc: "ftw" } => {:asd=> "qwe", :zxc=> "ftw"} > h[:asd] => "qwe" > h[:zzz] => nil
  • 23. Enumerable for i in 1..5 p i end (1..5).each { |i| p i } Output: 1 2 3 4 5 => nil
  • 24. Enumerable [1,2,3].map { |n| n**3 } => [1, 8, 27] a = (1..5).reject { |i| i.even? } => [1, 3, 5] a.reduce { |i, mult| i * mult } => 15
  • 25. Классы, методы class Person < Mammal @@amount = 0 ADULT_AGE = 18 def initialize(name, age) @name, @age = name, age @@amount += 1 end def adult? @age >= ADULT_AGE end end
  • 26. Литература и ссылки Programming Ruby 1.9 & 2.0 http://tryruby.org Ruby Programming Language (O'Reilly) https://github.com/bbatsov/ruby-style-guide http://rubykoans.com http://rubyweekly.com
  • 27. Домашнее задание 1.http://tryruby.org 2.В одном массиве записан рост некоторых студентов, а в другом (с тем же числом элементов) - их фамилии в том же порядке, в котором указан рост. Известно, что все студенты разного роста. Напечатайте фамилию самого высокого студента. 3.Даны две строки. Определите, сколько начальных символов первой строки совпадает с начальными символами второй. Рассмотрите два случая: а) известно, что строки разные; б) строки могут совпасть.