Работая с python-ом натыкался на похожие проблемы. Когда посмотрел
stackless (тогда это был такой огромный патч к основной ветке), то
этот подход меня немного ошарашил - поддерживать ветку было бы сложно
даже автору, не говоря уж о других людях. С этим можно было бы жить,
переписав весь код с нуля. Но в этом случае есть риск привнести в
реализацию что-то своё (запуск релиза отложился бы на года, ведь
заморозили ветку CPython не просто так).
Это был демотиватор, теперь мотиватор: в любом случае python будет
идти путем, известным одному только GvR. Почему бы в таком случае не
продумать архитектуру приложения, оставив совместимость только по
синтаксису. Так или иначе, совместимость со сторонними модулями будет
ломается. Мне кажется, что не стоит тешить себя иллюзией, что это
будет Python на thread-стеройдах. Это будет совершенно новый язык.
Думаю что люди, пишущие для CPython, прекрасно отдавали себе в этом
отчет, потому и не ступили на этот путь.
Индикатором того, что мои слова близки к правде можно обратившись к
истории развития ipython и jython - эти обреченные быть вечно-
устаревшими по отношению к базовому функционалу. Да, обеспечение
совместимости - это хорошо, когда стараешься достичь какого-то идеала
среди языков программирования. Python же не идеал, хотя у него есть
чему поучиться - много интересных технических решений.
Если ставится задача набраться опыту в разработке новых языков
программирования, то попытаться написать что-то под уже работающую
платформу - это один из лучших способов самообучения.
Это все - лишь мое личное мнение. Хотелось бы узнать ваши мысли.
> Работая с python-ом натыкался на похожие проблемы. Когда посмотрел
> stackless (тогда это был такой огромный патч к основной ветке), то
> этот подход меня немного ошарашил - поддерживать ветку было бы сложно
> даже автору, не говоря уж о других людях. С этим можно было бы жить,
> переписав весь код с нуля. Но в этом случае есть риск привнести в
> реализацию что-то своё (запуск релиза отложился бы на года, ведь
> заморозили ветку CPython не просто так).
А сейчас разве не так? Stackless постоянно синхронизируется с основной веткой:
есть версии для 2.6, 2.7 и 3.1. Главный разработчик Stackless работает в CCP
Games (разработчик EVE Online), его там кормят, и покуда это так, проект он
точно не бросит.
> Это был демотиватор, теперь мотиватор: в любом случае python будет
> идти путем, известным одному только GvR. Почему бы в таком случае не
> продумать архитектуру приложения, оставив совместимость только по
> синтаксису. Так или иначе, совместимость со сторонними модулями будет
> ломается. Мне кажется, что не стоит тешить себя иллюзией, что это
> будет Python на thread-стеройдах. Это будет совершенно новый язык.
> Думаю что люди, пишущие для CPython, прекрасно отдавали себе в этом
> отчет, потому и не ступили на этот путь.
Если вы пишете, например, форумный движок, который будут ставить у себя
пользователи на разных системах, то тут пожалуй да - писать на Python - это
вообще обрекать себя на постоянную головную боль с обратной совместимостью
языка. Тогда всё вышесказаное справедливо на 100%.
Наши проекты хостятся на серверах, где конфигурацию окружения мы выбираем
сами. И такую, какая нам удобна. Иными словами, проект стартовал на Stackless
2.6, под эту версию мы затачиваем актуальные версии библиотек, и осуществлять
какие-то переходы на 2.7, 3.1 или, упаси бог, 4.0 не планируем. Stackless -
это именно Python на стероидах - столь же удобная разработка при более
высокой производительности.
К слову, портировать сетевые библиотеки на Stackless оказывается достаточно
просто - подменили сокеты, заставили работать чтение и запись через буферы, и
огонь. Сложности возникают только с протоколами, реализованными на C, типа
libmysqlclient, - там только полное переписывание.
> Если ставится задача набраться опыту в разработке новых языков
> программирования, то попытаться написать что-то под уже работающую
> платформу - это один из лучших способов самообучения.
Наша задача чисто инженерная - разработка в кратчайшие сроки
высокогонагруженных проектов, чтобы они работали быстро и безошибочно.
Stackless - это не академический проект, это вполне себе рабочая лошадка,
которую мы успешно оседлали, и хотим поделиться знаниями с сообществом.
Спасибо за проявленный интерес :)
On Oct 30, 6:51 pm, Alexander Lourier <a...@rulezz.ru> wrote:
> Наша задача чисто инженерная - разработка в кратчайшие сроки
> высокогонагруженных проектов, чтобы они работали быстро и безошибочно.
> Stackless - это не академический проект, это вполне себе рабочая лошадка,
> которую мы успешно оседлали, и хотим поделиться знаниями с сообществом.
Интересно, коли он настолько подрос. Спасибо за наводку :)