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.

23f4287eba5de8c758027734cb5aab9f?s=128

Mikhail Vaysman

January 28, 2013
Tweet

Transcript

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

    чем вопрос
  2. Вводная часть

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

  4. Обо мне

  5. Учился

  6. Школа

  7. СПТУ

  8. Армия

  9. СПбГТУ

  10. Работал

  11. None
  12. Что делал? Писал на MS Visual Basic 3.0 Чинил компьютеры

    Администрировал Windows и Unix Писал скрипты на Perl Писал автоматические тесты на Java Занимался ручным тестированием Писал на Ruby и Ruby on Rails
  13. Основная часть

  14. Почему Ruby? Интерпретируемый Множество реализаций Две основные парадигмы: ОО и

    Функциональная Оптимизирован для людей Свобода, гибкость и легкость
  15. Множество реализаций Классическая реализация (MRI) на C MacRuby JRuby IronRuby

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

    высших порядков (блоки)
  17. None
  18. Функциональная Лямбды Каррирование

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

  22. None
  23. Объектно Ориентированная Все есть объект “Утиная” типизация Посылка сообщений Простое

    наследование Подмешивание (mixin) Открытая ОО модель
  24. None
  25. “Утиная” типизация 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.
  26. None
  27. None
  28. Оптимизирован для людей Легко читать и писать код Лаконичность Синтаксический

    сахар Необязательные скобки Язык “гнется” под задачу Поддержка UTF-8
  29. None
  30. None
  31. None
  32. None
  33. Свобода, гибкость и легкость Весь исходный код открытый Можно изменять

    базовые классы Изменение языка налету Система управления библиотеками (GEMS)
  34. None
  35. Гордость и предубеждение

  36. Сильные стороны Сообщество!!! Красивый код Сильно развитое тестирование Легко создавать

    DSL Удобен для решения интеграционных задач Rails
  37. None
  38. None
  39. calc[master]% ruby tape.rb 123.tape [|1|] [ 1 ,|2|] [|3|, 1

    , 2 ]
  40. None
  41. Слабые стороны Скорость работы Есть множество решений Частое отсутствие документации

    Можно посмотреть код и/или тесты Обратиться к сообществу Можно создать очень запутанный код Это вопрос дисциплины
  42. DSL Ruby Rake RSpec Cucumber/Gherkin Sinatra

  43. None
  44. Rake

  45. None
  46. None
  47. RSpec

  48. None
  49. None
  50. None
  51. Sinatra При старте пишет == Sinatra/1.3.4 has taken the stage…

    При остановке пишет == Sinatra has ended his set (crowd applauds)
  52. None
  53. Cucumber

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

  58. Twitter Basecamp Github Groupon ResumUP Shopify Hulu Livingsocial Cookpad Spree

    Lumosity Rails используется
  59. Демо

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

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

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

  63. Контакты Twitter: @vaysman E-Mail: mikhail.vaysman@gmail.com Github: vaysman

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