Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Top10 доводов против языка Ruby

15,602 views

Published on

Вольный перевод слайдов с конференции Matz'a.

Published in: Technology
  • @guesta5ae7b93 юзай jruby. В чем проблема?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Ruby is the best!.

    А при использование его как DSL, рвет всех
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • '''''1. Ruby очень тормознут. Даже если сделать скидку на то, что это скриптовый язык.
    2. Его гибкость и сама концепция языка не мотивирует программиста писать быстрый оптимизированый код.''''''
    Простой тест: http://oneline.org.ru/statii/speed-test.html

    ''''''''''''В ruby нет возможности передавать аргументы функции по адресу а не по значению. Тем же страдает и многими любимый питон. А в перле - запросто, и без всяких танцев с бубнами, типа создания класса под переменную или занесение ее в массив. Еще не хватает например таких простых конструкций как for (i=0; i

    0.step(12, 3) { } чем Вам плох?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 1. Ruby очень тормознут. Даже если сделать скидку на то, что это скриптовый язык.
    2. Его гибкость и сама концепция языка не мотивирует программиста писать быстрый оптимизированый код.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Top10 доводов против языка Ruby

  1. 1. Top10 причин доказывающих, что язык программирования Ruby - Отстой !
  2. 2. 10. Слишком молод
  3. 3. Нет библиотек <ul><li>Коллекция хороших библиотек, подобных CPAN для языка Perl, позволяет быстрее добиваться лучших результатов </li></ul><ul><li>Библиотеки Ruby: </li></ul><ul><ul><li>96 стандартных библиотек </li></ul></ul><ul><ul><li>Ruby Application Archive (RAA) содержит 1,200 приложений и библиотек </li></ul></ul><ul><ul><li>RubyForge приютил более 800 проектов </li></ul></ul><ul><ul><li>RubyGems обслуживает порядка 900,000 gems-пакетов </li></ul></ul>
  4. 4. Нет поддержки <ul><li>Документация </li></ul><ul><ul><li>Ядро 100% документировано </li></ul></ul><ul><ul><li>Документирование стандартной библиотеки в процессе </li></ul></ul><ul><ul><li>Доступны учебники для разных категорий программистов </li></ul></ul><ul><ul><li>Масса «бумажных» книг по Ruby </li></ul></ul><ul><li>Сообщество </li></ul><ul><ul><li>Списки рассылки на многих языках </li></ul></ul><ul><ul><li>Группы Usenet </li></ul></ul><ul><ul><li>Веб-форумы </li></ul></ul>
  5. 5. Никто не использует <ul><li>Компании, которые используют Ruby </li></ul><ul><ul><li>HP, Intel, NASA и NOAA </li></ul></ul><ul><li>Ruby используется </li></ul><ul><ul><li>Моделирование, обработка данных, кодогенерация, обработка изображений, прототипирование </li></ul></ul><ul><li>«Убойное приложение» </li></ul><ul><ul><li>Ruby on Rails </li></ul></ul><ul><ul><ul><li>Уже задействован в таких прибыльних веб-приложениях как Basecamp и Blinksale </li></ul></ul></ul>
  6. 6. 10. Слишком молод Время не стоит на месте !
  7. 7. 9. Нечитабельный программный код
  8. 8. Легкий синтаксис <ul><li>Опциональные ; </li></ul><ul><li>Удаление символов </li></ul><ul><li>Опциональные () </li></ul>
  9. 9. ООП-синтаксис <ul><li>obj.attribute = </li></ul><ul><li>dangerous! и query? </li></ul>
  10. 10. Простой и гибкий синтаксис <ul><li>Простое объявление: </li></ul><ul><ul><li>local_var = ... </li></ul></ul><ul><ul><li>@instance_var = ... </li></ul></ul><ul><ul><li>$global_var = ... </li></ul></ul><ul><li>do...end или {...} </li></ul><ul><li>Java-подобная обраборка исключений </li></ul><ul><li>Вставка в строку: любой Ruby-код внутри #{...} </li></ul>
  11. 11. Сравнение с другими языками <ul><li>Ruby: puts “Hello world!” </li></ul><ul><li>Java: threeVeryLongLines.weHopeWork... </li></ul><ul><li>Perl: #$<!&; </li></ul><ul><li>Lisp: ((a(((b)))(c))) </li></ul>
  12. 12. 9. Нечитабельный программный код Чистый синтаксис!
  13. 13. 8. Ruby - объектно-ориентирован
  14. 14. Ruby - объектно-ориентирован <ul><li>Все — объект </li></ul><ul><ul><li>Числа, блоки кода... ВСЕ! </li></ul></ul><ul><li>Продуман, не содержит синтаксического мусора </li></ul><ul><ul><li>Нет необходимости постоянно использовать “self”, как в Python </li></ul></ul>
  15. 15. Ruby имеет много ОО-ухищрений <ul><li>Автоматическая генерация конструктора, в отличие от Perl </li></ul><ul><li>Упрощенные средства доступа (вроде attr_accessor) </li></ul><ul><li>Объявленные методы взаимодействуют с базовым Ruby </li></ul>
  16. 16. Возможен процедурный стиль <ul><li>Вы можете игнорировать объявление класса, когда это необходимо </li></ul><ul><li>Вы можете вытворять все, что угодно с объектами внутри процедурного кода </li></ul>
  17. 17. 8. Ruby — объектно-ориентирован Очень гибкий!
  18. 18. 7. Использование «примесей»
  19. 19. Вы не можете выиграть с множественным наследованием <ul><li>Множественное наследование позволяет наследовать класс более, чем от одного родительского класса </li></ul><ul><ul><li>Плюс: простое моделирование древовидного наследования </li></ul></ul><ul><ul><li>Минус: проблема с ромбообразным наследованием (неопределенность) </li></ul></ul><ul><li>Вы не можете удовлетворить обе стороны </li></ul>
  20. 20. Ruby использует единичное наследование...
  21. 21. ...и «примеси» <ul><li>«Примеси» подобны интерфейсам в Java, но с реализацией </li></ul><ul><li>Нет ограничений на количество примесей </li></ul><ul><li>Выгоды множественного наследования без минусов </li></ul>
  22. 22. 7. Использование «примесей» Гораздо больше возможностей!
  23. 23. 6. Нет циклов
  24. 24. Хорошо известные циклы Си-подобные Ruby while { ... } until { ... } while ... end until ... end do { ... } while do { ... } until begin ... end while begin ... end until foreach { ... } each do ... end for(...;...;...) { ... }
  25. 25. Что такое циклы? <ul><li>“N + 1” ошибок </li></ul><ul><li>foreach { ... } это концептуальный шаг назад </li></ul><ul><ul><li>Объекты не управляют процессом своего собственного обхода </li></ul></ul>
  26. 26. Итераторы <ul><li>Объекты управляют своим собственным обходом </li></ul><ul><li>Нет больше “N + 1” ошибок </li></ul><ul><li>На каждый случай по спец. итератору </li></ul>
  27. 27. 6. Нет циклов Есть итераторы!
  28. 28. 5. Блоки кода повсюду
  29. 29. Что такое блоки кода? <ul><li>Любой метод может принимать блок кода в качестве параметра </li></ul><ul><li>Блоки могут быть вызваны сразу или сохранены для последующего использования </li></ul><ul><li>Блоки являются замыканиями </li></ul>
  30. 30. Для чего они нужны? <ul><li>Блоки позволяют вашему коду гармонично взаимодействовать с пользовательским кодом </li></ul><ul><li>Блоки — лучший путь указания области видимости </li></ul><ul><li>Блоки идеальны для различных транзакций </li></ul>
  31. 31. 5. Блоки кода повсюду Очень мощный!
  32. 32. 4. Настежь распахнут во время выполнения
  33. 33. Динамический инструментарий <ul><li>Мощные методы «самопознания» </li></ul><ul><li>eval() </li></ul><ul><ul><li>instance_eval() </li></ul></ul><ul><ul><li>class_eval() и module_eval() </li></ul></ul><ul><li>Обработка событий реального времени </li></ul>
  34. 34. Классы открыты <ul><li>Добавляйте методы к классу в любое время </li></ul><ul><ul><li>Даже к базовым классам </li></ul></ul><ul><li>Индивидуальная настройка объектов </li></ul><ul><li>Перегрузка операторов </li></ul><ul><li>Hook into Ruby’s math and conversion operations </li></ul>
  35. 35. 4. Настежь распахнут во время выполнения Необузданный!
  36. 36. 3. Ruby гуру мучаются с «утипизацией»
  37. 37. «Если что-то ходит как утка и крякает как утка, то это утка»
  38. 38. Философия «утипизации» <ul><li>Мы судим об объекте не по его типу, а по его поведению </li></ul><ul><li>Вы всегда можете проверить наличие того или иного метода </li></ul>
  39. 39. 3. Ruby гуру мучаются с «утипизацией» Всем бы так!
  40. 40. 2. Слишком игрушечный
  41. 41. 96 стандартных библиотек Read/Write CSV XML YAML Talk to Email FTP Web Serve Code Servlets XML-RPC Work with Math Templates Threads Tools for Debugging Docs Testing
  42. 42. 2. Слишком игрушечный Вранье!
  43. 43. 1. «Слишком хорош и продуктивен для большинства людей» — Михаил Кларк (Mike Clark)

×