Slide 1

Slide 1 text

Калибровочная страница.

Slide 2

Slide 2 text

Еще одна калибровочная страница. Хватит листать мою презентацию.

Slide 3

Slide 3 text

Python vs Ruby

Slide 4

Slide 4 text

Картинка с эльфийками

Slide 5

Slide 5 text

Зачем сравниваем? Нельзя хорошо решать все задачи, поэтому языки программирования постепенно специализируются на определенном круге задач. Знание того, на чем специализирован язык, позволяет лучше выбрать какой код писать и какие библиотеки использовать в спорных ситуациях.

Slide 6

Slide 6 text

Что сравниваем? ● Сильные и слабые стороны - то, что заметно при каждодневном использовании. ● Блоки и list comprehension сами по себе не сильные и не слабые стороны.

Slide 7

Slide 7 text

Что не сравниваем? Библиотеки ● Их очень много. ● Такие сравнения уже есть.

Slide 8

Slide 8 text

Начнем с Python Потому что мы питонисты, или кто?

Slide 9

Slide 9 text

Документация лучше С вступительной частью, литературными отступлениями и многочисленными примерами. Для Ruby многие модули, например DL или Win32API не документированы вообще, документация в целом значительно слабее.

Slide 10

Slide 10 text

Потоки ● В python есть давно, в Ruby 1.9+ ● Python активно поднимает GIL, Ruby - нет.

Slide 11

Slide 11 text

Unicode В Python есть давно, в Ruby 1.9+

Slide 12

Slide 12 text

Именованные аргументы Появились в Ruby только в версии 2.0, вышедшей несколько дней назад. До этого - эмуляция через словари.

Slide 13

Slide 13 text

Легкость взаимодействия с OS Благодаря встроенной библиотеке ctypes. Встроенная в Ruby библиотека dl намного хуже документирована и сложнее в использовании, авторы рекомендуют сторонние библиотеки ffi.

Slide 14

Slide 14 text

Функция является объектом Позволяет естественно использовать делегирование и делегаты.

Slide 15

Slide 15 text

Декораторы Позволяют использовать аспектно- ориентированные подходы к решению задач.

Slide 16

Slide 16 text

Батарейки в комплекте ● json ● SQLite ● Tk ● архивы

Slide 17

Slide 17 text

Распространенность Если у какой-нибудь программы или библиотеки есть binding (VirtualBox, Qt, GTK...) - то в большинстве случаев это будет Python

Slide 18

Slide 18 text

Переход между версиями Мейнстрим для Python - версии 2.6 и 2.7, которые практически не отличаются друг от друга. Переход на 3.0 - неторопливый и никого ни к чему не обязывающий процесс. Разница между Ruby 1.8 и 1.9 огромна, переход в самом разгаре, есть жертвы :)

Slide 19

Slide 19 text

Все настолько просто? Давайте посмотрим с другой стороны.

Slide 20

Slide 20 text

Заточенность под embedded DSL ● Блоки ● instance_eval ● Вызов функций без скобок

Slide 21

Slide 21 text

Интерполяция строк Позволяет крайне лаконично формировать сложные текстовые объекты непосредственно в исходном коде.

Slide 22

Slide 22 text

Встроенный установщик пакетов Команда gem позволяет скачать и установить нужную версию пакета и его зависимостей. Для Python существует как минимум три конкурирующие системы установки пакетов, которые нужно устанавливать отдельно. В понедельник на PyCon Russia анонсировали четвертую.

Slide 23

Slide 23 text

Удобный вызов shell команд С помощью заключения их в апострофы. В Python для корректной работы с путями необходимо передавать аргументы списком в subprocess.check_output

Slide 24

Slide 24 text

Подавление ожидаемых ошибок

Slide 25

Slide 25 text

Интерполяция из Regexp

Slide 26

Slide 26 text

Синтаксические мелочи ● Для классвое не нужно везде писать self ● Индексирование за пределами контейнера ● switch

Slide 27

Slide 27 text

Другие батарейки ● Встроенная поддержка OpenSSL ● Встроенная поддержка OLE в Windows ● Встроенный шаблонизатор erb ● Временные папки с автоудалением ● Время и дата с поддержкой UTC ● Чтение файлов всегда в binary mode ● Потоку можно сделать exit

Slide 28

Slide 28 text

Выводы Ruby ● Обработка текста ● DSL ● shell скрипты ● Надо использовать 1.9

Slide 29

Slide 29 text

Python ● Enterprise ● GUI ● Многопоточность ● Биндинги ● Техподдержка

Slide 30

Slide 30 text

Вопросы? Можно задать сейчас или позже на e-mail: [email protected] skype: eyeofhell Рассказывал и показывал Петров Григорий, руководитель R&D отдела Фаматек