Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ruby_or_not_ruby.pdf

 ruby_or_not_ruby.pdf

Presentation what I gave on DevClub meetup on January, 30th in Tallinn.

Mikhail Vaysman

January 28, 2013
Tweet

More Decks by Mikhail Vaysman

Other Decks in Programming

Transcript

  1. Ruby-ть или не Ruby-ть
    Михаил Вайсман
    для devclub.eu
    вот в чем вопрос

    View full-size slide

  2. Вводная часть

    View full-size slide

  3. Приз за лучший
    вопрос

    View full-size slide

  4. Обо мне

    View full-size slide

  5. Учился

    View full-size slide

  6. СПбГТУ

    View full-size slide

  7. Работал

    View full-size slide

  8. Что делал?
    Писал на MS Visual Basic 3.0
    Чинил компьютеры
    Администрировал Windows и Unix
    Писал скрипты на Perl
    Писал автоматические тесты на Java
    Занимался ручным тестированием
    Писал на Ruby и Ruby on Rails

    View full-size slide

  9. Основная часть

    View full-size slide

  10. Почему Ruby?
    Интерпретируемый
    Множество реализаций
    Две основные парадигмы: ОО и
    Функциональная
    Оптимизирован для людей
    Свобода, гибкость и легкость

    View full-size slide

  11. Множество
    реализаций
    Классическая реализация (MRI) на C
    MacRuby
    JRuby
    IronRuby
    RubyMotion (iOS)
    mruby

    View full-size slide

  12. Функциональная
    Юкихиро “Матц” Мацумото очень
    любит Emacs
    Лямбды
    Каррирование
    Функции высших порядков (блоки)

    View full-size slide

  13. Функциональная
    Лямбды
    Каррирование

    View full-size slide

  14. Функциональная
    Функции высших порядков (блоки)

    View full-size slide

  15. Объектно
    Ориентированная
    Все есть объект
    “Утиная” типизация
    Посылка сообщений
    Простое наследование
    Подмешивание (mixin)
    Открытая ОО модель

    View full-size slide

  16. “Утиная” типизация
    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.

    View full-size slide

  17. Оптимизирован для
    людей
    Легко читать и писать код
    Лаконичность
    Синтаксический сахар
    Необязательные скобки
    Язык “гнется” под задачу
    Поддержка UTF-8

    View full-size slide

  18. Свобода, гибкость и
    легкость
    Весь исходный код открытый
    Можно изменять базовые классы
    Изменение языка налету
    Система управления библиотеками
    (GEMS)

    View full-size slide

  19. Гордость и
    предубеждение

    View full-size slide

  20. Сильные стороны
    Сообщество!!!
    Красивый код
    Сильно развитое тестирование
    Легко создавать DSL
    Удобен для решения интеграционных
    задач
    Rails

    View full-size slide

  21. calc[master]% ruby tape.rb 123.tape
    [|1|]
    [ 1 ,|2|]
    [|3|, 1 , 2 ]

    View full-size slide

  22. Слабые стороны
    Скорость работы
    Есть множество решений
    Частое отсутствие документации
    Можно посмотреть код и/или тесты
    Обратиться к сообществу
    Можно создать очень запутанный код
    Это вопрос дисциплины

    View full-size slide

  23. DSL
    Ruby
    Rake
    RSpec
    Cucumber/Gherkin
    Sinatra

    View full-size slide

  24. Sinatra
    При старте пишет
    == Sinatra/1.3.4 has
    taken the stage…
    При остановке
    пишет
    == Sinatra has
    ended his set
    (crowd applauds)

    View full-size slide

  25. Rails
    Веб фреймворк
    MVC
    Модульный
    Текущая версия 3.2

    View full-size slide

  26. Twitter
    Basecamp
    Github
    Groupon
    ResumUP
    Shopify
    Hulu
    Livingsocial
    Cookpad
    Spree
    Lumosity
    Rails используется

    View full-size slide

  27. Демо
    Невероятный японский квайн
    Невидимый идентификатор
    Y-комбинатор
    Факториал
    Член ряда Фибоначчи

    View full-size slide

  28. Y-комбинатор
    cos => 0,739085133215161

    View full-size slide

  29. Вопрос и Ответы

    View full-size slide

  30. Контакты
    Twitter: @vaysman
    E-Mail: [email protected]
    Github: vaysman

    View full-size slide

  31. Исходный код
    https:/
    /github.com/Vaysman/samples
    https:/
    /gist.github.com/4672957

    View full-size slide