Ruby-ть или не Ruby-ть
Михаил Вайсман
для devclub.eu
вот в чем вопрос
Slide 2
Slide 2 text
Вводная часть
Slide 3
Slide 3 text
Приз за лучший
вопрос
Slide 4
Slide 4 text
Обо мне
Slide 5
Slide 5 text
Учился
Slide 6
Slide 6 text
Школа
Slide 7
Slide 7 text
СПТУ
Slide 8
Slide 8 text
Армия
Slide 9
Slide 9 text
СПбГТУ
Slide 10
Slide 10 text
Работал
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
Что делал?
Писал на MS Visual Basic 3.0
Чинил компьютеры
Администрировал Windows и Unix
Писал скрипты на Perl
Писал автоматические тесты на Java
Занимался ручным тестированием
Писал на Ruby и Ruby on Rails
Slide 13
Slide 13 text
Основная часть
Slide 14
Slide 14 text
Почему Ruby?
Интерпретируемый
Множество реализаций
Две основные парадигмы: ОО и
Функциональная
Оптимизирован для людей
Свобода, гибкость и легкость
Slide 15
Slide 15 text
Множество
реализаций
Классическая реализация (MRI) на C
MacRuby
JRuby
IronRuby
RubyMotion (iOS)
mruby
Slide 16
Slide 16 text
Функциональная
Юкихиро “Матц” Мацумото очень
любит Emacs
Лямбды
Каррирование
Функции высших порядков (блоки)
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
Функциональная
Лямбды
Каррирование
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
Функциональная
Функции высших порядков (блоки)
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
Объектно
Ориентированная
Все есть объект
“Утиная” типизация
Посылка сообщений
Простое наследование
Подмешивание (mixin)
Открытая ОО модель
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
“Утиная” типизация
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.
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
Оптимизирован для
людей
Легко читать и писать код
Лаконичность
Синтаксический сахар
Необязательные скобки
Язык “гнется” под задачу
Поддержка UTF-8
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
Свобода, гибкость и
легкость
Весь исходный код открытый
Можно изменять базовые классы
Изменение языка налету
Система управления библиотеками
(GEMS)
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
Гордость и
предубеждение
Slide 36
Slide 36 text
Сильные стороны
Сообщество!!!
Красивый код
Сильно развитое тестирование
Легко создавать DSL
Удобен для решения интеграционных
задач
Rails
Слабые стороны
Скорость работы
Есть множество решений
Частое отсутствие документации
Можно посмотреть код и/или тесты
Обратиться к сообществу
Можно создать очень запутанный код
Это вопрос дисциплины
Slide 42
Slide 42 text
DSL
Ruby
Rake
RSpec
Cucumber/Gherkin
Sinatra
Slide 43
Slide 43 text
No content
Slide 44
Slide 44 text
Rake
Slide 45
Slide 45 text
No content
Slide 46
Slide 46 text
No content
Slide 47
Slide 47 text
RSpec
Slide 48
Slide 48 text
No content
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
No content
Slide 51
Slide 51 text
Sinatra
При старте пишет
== Sinatra/1.3.4 has
taken the stage…
При остановке
пишет
== Sinatra has
ended his set
(crowd applauds)
Slide 52
Slide 52 text
No content
Slide 53
Slide 53 text
Cucumber
Slide 54
Slide 54 text
No content
Slide 55
Slide 55 text
No content
Slide 56
Slide 56 text
No content
Slide 57
Slide 57 text
Rails
Веб фреймворк
MVC
Модульный
Текущая версия 3.2
Slide 58
Slide 58 text
Twitter
Basecamp
Github
Groupon
ResumUP
Shopify
Hulu
Livingsocial
Cookpad
Spree
Lumosity
Rails используется
Slide 59
Slide 59 text
Демо
Slide 60
Slide 60 text
Демо
Невероятный японский квайн
Невидимый идентификатор
Y-комбинатор
Факториал
Член ряда Фибоначчи