The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Стратегия параллельного поддержания веток Python 2 и Python ..."
Отправлено Филипп Филиппович, 01-Янв-14 19:54 
Ожидаемо, в общем-то. И я очень рад, что такое мнение наконец-то звучит в PSF. С одной стороны, Python 3 как язык в целом стройнее и логичнее. Я бы ОЧЕНЬ хотел его использовать в работе, и на старте каждого питоновского проекта делаю небольшой анализ, нельзя ли его сделать на Python 3. Но поскольку обычно оказывается нужна куча сторонних библиотек, выясняется, что несколько из них всё ещё не поддерживают третью ветку. Перепиливать их самим на Python 3 невозможно (объём работ в разы превышает трудоёмкость самого проекта). И приходится благополучно продолжать жизнь на второй ветке, которая наверняка фактически будет поддерживаться ещё долго, даже если на python.org будет официально объявлено об отсутствии поддержки.

Вот, по-моему, чуть-чуть бы поменьше радикализма в сломе совместимости -- и было бы всё замечательно. Не "ломай всё, раз уж всё равно решили где-то сломать", а "ломай там, где уж совсем никак, но ломай поменьше". Такой подход упростил бы портирование кода (а ведь именно в портировании кода библиотек вся проблема) в разы.

Вот зачем, спрашивается, было переименовывать unicode в str, а str в новый тип? Понятно, что хотелось поддержки многоязычности по умолчанию безо всяких кодировок. Но ведь именно это сломало невероятное количество кода. А ведь вполне можно было разрулить то же самое более щадящим образом. Кому так уж мешала необходимость поставить буковку u перед константой в кавычках, если предполагается многоязычность? И ведь всё равно будет полно ситуаций, когда о понятии "кодировка" нужно помнить. Нет, поймите правильно, это всё очень красиво и логично. Но стоило ли конкретно это изменение сопряжённых с ним проблем? ИМХО, не стоило совершенно. В Python 2 кухню с кодировками нужно было понять ровно один раз, и ни для кого, кроме писателей хелловорлдов, это проблемы не составляло, а в итоге разруливанием именно этой проблемы сломано, боюсь, не менее 70% того кода, который ломается при переходе со второй ветки на третью. То есть отказавшись от одного, экстремистского по сути своей, изменения, можно было этак втрое уменьшить количество проблем портирования.

А прежняя семантика оператора деления кому мешала? Что противоестественного в том, что 2/3 будет 0? Это в большинстве языков так, и ни один язык пока именно от этого не умер.

Вывод: к сожалению, в Python 3 попало несколько изменений, сделанных в интересах самых малоквалифицированных пользователей ("чайников" и "хелловорлдщиков"), но при этом именно этими изменениями и была сломана большая часть совместимости кода. И эти конкретные изменения, что важно, грубо противоречат интересам тех, кто использует Python профессионально (в частности, разрабатывает и поддерживает сторонние библиотеки). Наверное, массовый переход на Python 3 состоится всё равно. Но он мог бы быть гораздо легче, если бы в чисто внешнем причёсывании языка было допущено чуть меньше радикализма. Вот вполне можно было поломать не 70% кода, а 5%, и тогда портирование было бы куда как проще.

И меня удивляет, когда великодушный диктатор говорит, что GIL -- это нормально. В итоге вместо многопоточного сервера приходится писать какой-то ужас то на greenlets, то на Twisted с обязательной расшивкой обработчиков на куски сопрограмм и обёртыванием каждой длительной операции неизвестно во что, и заниматься кучей подобных, пусть иногда красивых по идеям и реализации, но лишних в контексте прикладной задачи вещей. А если бы там была полноценная многопоточность, было бы гораздо проще. Там, где нужна действительно параллельная обработка, предлагается ограничиваться техникой fork. Но это же безумие, поскольку безо всякой нужды усложняет отладку и архитектуру приложения. Иногда fork -- отличное решение, но почему это должно быть единственной возможностью?

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру