Как стать автором
Обновить

Ответ на Python vs Ruby

Время на прочтение2 мин
Количество просмотров36K
Пользователь eyeofhell недавно написал статью Python vs Ruby.
Знатный холивар получился. Не могу не поддержать. Сначала думал написать в комментарии — но ответ вышел слишком объемным.


О себе:
Я пишу на Питоне десять с лишним лет, с Руби знаком довольно поверхностно.
С недавних пор являюсь Python Core Developer с commit rights.

На последнем US PyCon в Санта-Кларе Гвидо ван Россум произнес замечательную речь — всем рекомендую посмотреть.

В частности, он указал, что Питон и Руби — почти что близнецы-братья. Различия между ними гораздо меньше, чем противопоставление этих языков всем остальным.
Давайте дружить, а не выяснять кто круче.

Теперь по конкретным претензиям к автору (по части Питона, конечно — пусть знающий рубист тоже скажет веское слово).

— Питон имеет встроенный модуль ssl. Из-за древних лицензионных дрязг с Микрософт (поправьте, если не так) в дистрибутив для Windows этот модуль не включается. На всех остальных ОС он есть.

— subprocess позволяет указывать параметры командной строки одной строчкой, при этом следует вызывать с параметром shell=True. Это не так лаконично, как просто скобки — но способ есть. К тому же следует понимать, что вызов подпроцесса далеко не всегда сводится к подстановке текстового вывода в переменную. Есть еще return code, stderr, интерактивность…

— Питон может импортировать модули по относительному пути. Это именно относительный путь для модулей, а не файлов. Модули должны лежать в пакетах (папках, в которых есть __init__.py). Читатели уже указали на этот момент.

— codecs.open позволяет указать кодировку для открываемого файла. open поддерживает параметр encoding для тех же целей.

— хорошо это или нет, но при использовании потоков операционной системы нет надежного способа уничтожить поток. Всегда есть риск того, что используемые ресурсы не освободятся (память, соединения с базой данных и прочие сокеты и т.д.) Поэтому Питон и не имеет такой возможности. Нужно послать потоку сообщение тем или иным способом, а уж там он сам обязан разобраться.

Прочее: как уже читатели отметили, некоторые части не включены в дистрибутив Питона, но доступны как сторонние библиотеки.

— pytz. Список timezone обновляется чаще, чем полуторагодичный период для выпуска нового Питона. В документации ссылки на pytz нет — поправим.

— шаблонизатор. Большее, чем string.Template в стандартную поставку не включили. Потому что не ясно, какой шаблонизатор устроил бы всех. jinja2, которым я пользуюсь — отличная штука. Опять же слишком быстро развивающаяся и слишком независимая, чтобы быть частью Питона как дистрибутива.

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

И, наконец, главное.
python2 уже мертв. Да, мы часто делаем bug-fixes. python2.7.3 будет скоро. Но Двойка закончилась два года назад.

Все больше и больше библиотек подтверждают свою поддержку Тройки.
— SQLAlchemy сделала это уже давно.
— Jinga2 — тоже.
— Pyramid — неделю назад.
— WebOb, от которого зависела Pyramid — в конце прошлого года.
— Django тоже перейдет на тройку — они обещали.

Ребята, Python3 — это ваше будущее, которое наступает на пятки. Будьте готовы!

UPD: Django 1.5, которая выйдет осенью, будет иметь экспериментальную поддержку Python 3.3
Теги:
Хабы:
Всего голосов 117: ↑105 и ↓12+93
Комментарии147

Публикации

Истории

Работа

Data Scientist
62 вакансии

Ближайшие события