Перейти к содержимому

Донат
На хостинг
ISK за переводы
до 75kk за 1000зн.
Хроники EVE
Сборник
Новичкам
Полезная информация
Фотография

Stackless Python 2.7


  • Авторизуйтесь для ответа в теме
44 ответов в теме

#1
AllSeeingI

AllSeeingI

    Clone Grade Lambda

  • Tech III Pilots
  • PipPipPipPipPipPip
  • 5107 сообщений
325
  • EVE Ingame:IlluminatedOne
  • Client:Eng
Если мы посмотрим на мир с высоты неприступной крепости CCP в горах Equus Mortuus, то увидим, что этот мир меняется. Вселенная медленно остывает, мы стареем, наши утилиты - развиваются.

Как вы уже наверное знаете, технологической основой EVE Online является язык программирования Stackless Python. Когда мы начинали разрабатывать EVE, мы могли рассчитывать только на карманные часы, Stackless Python 1.5 и диск с записями группы Randver. Тогда Stackless Python оперировал так называемыми "продолжениями" ("Continuations"), использовать которые было весьма мудрено.

Позже мы перешли на Stackless Python 2.0. Кроме изменений в родительском языке - Питоне - вариант Stackless включил в себя "тасклеты" ("Tasklets") и "каналы" ("Channels"), которые мы изучили и полюбили.

С тех пор мы следим за развитием языка. Мы обновлялись вслед за выходом версий Python 2.1, 2.3 и 2.5.

Из-за объёма работ по переходу на новые версии - как в плане сложностей в реинтеграции кода, так и в плане количества времени разработчиков - мы пропускали все остальные версии. Но каждая новая версия приносит с собой и плюсы:

  • новые возможности языка, которые делают разработку проще и эффективнее,
  • библиотека Питона постоянно улучшается в кол-ве фич и в быстродействии,
  • сам язык становится быстрее,
  • разработка ведётся на текущей версии языка.
И вот теперь, после нескольких лет на Stackless Python 2.5, мы перешли на версию 2.7. Python 2.7 был выпущен несколько недель назад, и за ним последовал диалект Stackless Python 2.7.

Подобные миграции - непростое дело. Множество модификаций языка должны рассмотрены. Масса кода на C должны быть перекомпилирована. В массу кода на Питоне должны быть внесены мелкие изменения.

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

Пример: мы обнаружили, что некоторые текстовые поля ведут себя некорректно. Пользователь вводит цифру процента 5.55%, но этот процент округляется вниз - 5.5% - а не вверх, как должно быть. Выяснилось, что в Питоне 2.7 был немного изменён алгоритм округления чисел с плавающей запятой, и что 5.5% - это, на самом деле, правильное значение (из-за того, что значение 5.55 хранится как 5.4999). Для исправления этой ошибки мы использовали модуль decimal, работающий над значениями в десятичном формате.

Python 2.7 - последняя версия языка в ветке 2.x, с которой мы работаем; планов перехода на Python 2.8 у нас нет. Дальше мы будем работать над переходом на версию 3.2 - но произойдёт это не скоро. Переход с ветки 2 на ветку 3 - ещё более существенный шаг; между этими двумя ветками множество несовместимостей как на уровне языка, так и на уровне API. Кроме того, на данный момент мы не видим особых преимуществ от такого перехода.

Что версия 2.7 даст игрокам? В ближайшей перспективе - ничего. А вот в дальней перспективе новая версия языка позволит нам делать нашу работу проще, быстрее и лучше.

А ещё у нас появилась новая игла для граммофона. Stackless Python 2.7 и Randver будут нас развлекать ещё очень долго.

- CCP Porkbelly

Оригинал девблога.

Прим. перев.: клиент, основанный на Stackless Python 2.7 был выпущен с патчем Tyrannis 1.0.4.

Сообщение отредактировал AllSeeingI: 25 August 2010 - 8:18

  • 2
Listen up! "Teamwork" means staying out of my way! - Seifer, Final Fantasy VIII.

#2
Anastasy

Anastasy

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1662 сообщений
73
  • EVE Ingame:Anastasy BL
  • Corp:T R I B E
  • Ally:Minmatar Republic
  • Client:Eng
Ну вот теперь неверующие и все знающие как лучше, убедились, что кода на С там не меньше питоновского.
  • 0

#3
Avendy+

Avendy+

    Clone Grade Delta

  • Tech III Pilots
  • PipPip
  • 151 сообщений
12
  • EVE Ingame:Paxom
  • EVE Alt:Avendy
  • Corp:VVS
  • Ally:AAA
  • Client:Eng
Странно, перевод девблога уже 3 часа на форуме и еще ни одного супер знатока программирования не отписалось на каком языке нужно делать ЕВУ =)
Что-то тут не так....
  • 0

#4
Finder

Finder

    Clone Grade Lambda

  • Tech III Pilots
  • PipPipPipPipPipPip
  • 4034 сообщений
280
  • EVE Ingame:Netzari
  • Corp:[VISJE]
  • Client:Eng
Тему об исходниках, где их качать и какой они свежести предлагаю не трогать.
  • 0

#5
xo3e

xo3e

    not playing the game but still better than you

  • Tech III Pilots
  • PipPipPipPipPip
  • 2228 сообщений
900
  • EVE Ingame:Zoat Aon
  • Corp:.GCC.
  • Ally:HYDRA RELOADED
  • Client:Eng

супер знатока программирования не отписалось


от того, что я знаю, что питон это адовый ужас, а серверную часть нужно было писать на си и только на си (и с совсем другой архитектурой распределения ресурсов) - ничего ведь не изменится.

inb4 сделай лучше, раз такой крутой

Сообщение отредактировал xo3e: 25 August 2010 - 11:37

  • 0

CHECK YOURSELF BEFORE YOU SHREK YOURSELF


#6
Finder

Finder

    Clone Grade Lambda

  • Tech III Pilots
  • PipPipPipPipPipPip
  • 4034 сообщений
280
  • EVE Ingame:Netzari
  • Corp:[VISJE]
  • Client:Eng

от того, что я знаю, что питон это адовый ужас, а серверную часть нужно было писать на си и только на си (и с совсем другой архитектурой распределения ресурсов) - ничего ведь не изменится.


Да хоть на яве. Боттлнек там в кластеринге а не в перформансе отдельных тредов, так что от С никакого преимущества не будет. Зато вылавливать всякие висящие нулевые поинтеры, утечки памяти, переполненные буфферы и прочий бред, не говоря уже об оперативных апдейтах функциональности или миграциях на другое железо.. - тут им и 24 часов в сутки на даунтаймы не хватит. Не говоря уж о том, что я вообще с трудом понимаю как можно процедурно реализовать продукт с такой частотой и глубиной изменений в логике.
  • 0

#7
myst

myst

    Clone Grade Theta

  • Tech III Pilots
  • PipPipPipPip
  • 1192 сообщений
664
  • EVE Ingame:Shinah Myst
  • Corp:CEDRA
  • Client:Eng

от того, что я знаю, что питон это адовый ужас, а серверную часть нужно было писать на си и только на си (и с совсем другой архитектурой распределения ресурсов) - ничего ведь не изменится.

Айлолд.
  • 0

#8
vhl

vhl

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 517 сообщений
51
  • EVE Ingame:Ngen Chi
  • Corp:RTSQ
  • Ally:AAA
  • Client:Eng

Боттлнек там в кластеринге а не в перформансе отдельных тредов,

ORLY? Откуда инфа? Вы из комманды разработчиков?
  • 0

[ 2010.06.30 18:48:16 ] Irn Akerl > у меня есть куча русских, которым нельзя доверять, которые не будут помогать за деньги, но, конечно же сделают все возможное во имя великой идеи русского единства и т.д. и т.п.
[ 2010.06.30 18:48:29 ] Irn Akerl > ты не можешь себе представить, как я зол на них


#9
DarkPhoenix

DarkPhoenix

    Hatred

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPipPip
  • 28656 сообщений
4376

ORLY? Откуда инфа? Вы из комманды разработчиков?

Если энтити (который долгое время работал в ццп как секьюрити спец) это подтвердит, тебе этого будет достаточно?

Сообщение отредактировал DarkPhoenix: 25 August 2010 - 14:29

  • 0

There is a place where the black stars hang
and the strangest eons call that amorphous mass
unknown, immense, ambivalent to all


#10
Spartanetz

Spartanetz

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 500 сообщений
-21
  • EVE Ingame:Spartanetz
  • Corp:VDV
  • Client:Eng
После этого патча 1.04 у меня уже несколько раз клиент на самом интересном месте по ошибке вылетал. До этого 3 года игры и такого ни разу не было.
  • 0

#11
vhl

vhl

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 517 сообщений
51
  • EVE Ingame:Ngen Chi
  • Corp:RTSQ
  • Ally:AAA
  • Client:Eng

Если энтити (который долгое время работал в ццп как секьюрити спец) это подтвердит, тебе этого будет достаточно?

Каким боком "охранник" может что-то подтверждать? :D
  • 0

[ 2010.06.30 18:48:16 ] Irn Akerl > у меня есть куча русских, которым нельзя доверять, которые не будут помогать за деньги, но, конечно же сделают все возможное во имя великой идеи русского единства и т.д. и т.п.
[ 2010.06.30 18:48:29 ] Irn Akerl > ты не можешь себе представить, как я зол на них


#12
intari

intari

    Clone Grade Alpha

  • Tech III Pilots
  • Pip
  • 54 сообщений
0
  • EVE Ingame:Nantrix
  • Corp:The Two Thrones
  • Client:Eng
вообще - об этом неоднократно писалось в тех же девблогах
  • 0

#13
DarkPhoenix

DarkPhoenix

    Hatred

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPipPip
  • 28656 сообщений
4376

Каким боком "охранник" может что-то подтверждать? ;)

Ему так или иначе приходилось проглядывать/профайлить многие участки кода. :1_7:
  • 0

There is a place where the black stars hang
and the strangest eons call that amorphous mass
unknown, immense, ambivalent to all


#14
Tenkuu no kaze

Tenkuu no kaze

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 703 сообщений
6
  • EVE Ingame:Spring Wind
  • Ally:exUNL
  • Client:Eng
а что это за группа Randver, которая мелькает в блоге неск раз? тыящик, гугль и вики не помогли (вылезает или про фольклор, или про лошадей), а по линку в самом блоге - платно, сэмплы не играют.. где их услышать-то можно? :1_7:

Сообщение отредактировал Tenkuu no kaze: 26 August 2010 - 14:32

  • 0
Изображение
Изображение

Я не злопамятный - отомщу и забуду.. а потом ещё раз отомщу...

#15
kezman77

kezman77

    Clone Grade Delta

  • Tech III Pilots
  • PipPip
  • 131 сообщений
4
  • EVE Ingame:Spiritdancer
  • Corp:[ANT]
  • Ally:AAA C
  • Client:Eng

а что это за группа Randver, которая мелькает в блоге неск раз? тыящик, гугль и вики не помогли (вылезает или про фольклор, или про лошадей), а по линку в самом блоге - платно, сэмплы не играют.. где их услышать-то можно? ^_^

тыцал по линке, сэмплы таки играют )
походу исланское кантри )
по звукам напоминает американское.
судя по единственному альбому 2003 года это не месные "биттлз"... впрочем, 300 000 населения та еще аудитория для оценки популярности
  • 0
Изображение

#16
Gramafon

Gramafon

    Боевой карибас

  • Tech III Pilots
  • PipPipPipPipPip
  • 3586 сообщений
1452
  • EVE Ingame:gramafon
  • Client:Eng

.....

А ещё у нас появилась новая игла для граммофона. Stackless Python 2.7 и Randver будут нас развлекать ещё очень долго.

- CCP Porkbelly

.....


Доктор, вы меня пугаете ^_^

Сообщение отредактировал Gramafon: 31 August 2010 - 11:36

  • 0

#17
Sedrick

Sedrick

    Clone Grade Theta

  • Tech III Pilots
  • PipPipPipPip
  • 1278 сообщений
19
  • Client:Eng
Stackless Python 2.7 на оф.сайте идёт как bleeding edge version.
http://zope.stackles.../sdocument_view

Сообщение отредактировал Sedrick: 31 August 2010 - 12:33

  • 0

#18
doommer

doommer

    iddqd

  • Tech III Pilots
  • PipPipPipPipPipPipPipPip
  • 9846 сообщений
1268
  • EVE Ingame:doommer
  • DUST Ingame:doommer
  • Corp:POH
  • Ally:RA
  • Channel:local chat
  • Client:Eng

Да хоть на яве. Боттлнек там в кластеринге а не в перформансе отдельных тредов, так что от С никакого преимущества не будет. Зато вылавливать всякие висящие нулевые поинтеры, утечки памяти, переполненные буфферы и прочий бред, не говоря уже об оперативных апдейтах функциональности или миграциях на другое железо.. - тут им и 24 часов в сутки на даунтаймы не хватит. Не говоря уж о том, что я вообще с трудом понимаю как можно процедурно реализовать продукт с такой частотой и глубиной изменений в логике.


реализовать можно всё, хоть на ассемблере, другое дело сколько это займет ресурсов и времени. Не совсем понятно что Вы имели ввиду под этой фразой: " Боттлнек там в кластеринге а не в перформансе отдельных тредов, так что от С никакого преимущества не будет.", а именно не понятно что именно может быть проблемного в кластеринге и почему тут язык программирования не причем.

адд: программа на любом интерпретируемом языке программирования, будет медленней работать чем её аналог на языке, на котором был написан этот интерпретатор, вообще сравнивать Perl\Python\PHP\etc и С++\C неуместно. По хорошему, каждому Языку Программирование, свое место и время, под определенны задачи, чем больше ты их знаешь тем легче справиться с той или иной задачей :lol:

Странно, перевод девблога уже 3 часа на форуме и еще ни одного супер знатока программирования не отписалось на каком языке нужно делать ЕВУ =)
Что-то тут не так....


а зачем? )

Сообщение отредактировал doommer: 05 September 2010 - 1:11

  • 0

#19
myst

myst

    Clone Grade Theta

  • Tech III Pilots
  • PipPipPipPip
  • 1192 сообщений
664
  • EVE Ingame:Shinah Myst
  • Corp:CEDRA
  • Client:Eng

адд: программа на любом интерпретируемом языке программирования, будет медленней работать чем её аналог на языке, на котором был написан этот интерпретатор, вообще сравнивать Perl\Python\PHP\etc и С++\C неуместно.

Бред.

Пока ты будешь писать программу на С, которая будет считать 2^1000, я на Python это посчитаю на раз-два, просто написав 2**1000. Логика вроде if/while работает с одинаковой скоростью тоже.
  • 0

#20
Finder

Finder

    Clone Grade Lambda

  • Tech III Pilots
  • PipPipPipPipPipPip
  • 4034 сообщений
280
  • EVE Ingame:Netzari
  • Corp:[VISJE]
  • Client:Eng
Я на простеньком примере попытаюсь объяснить. Систему с кластерингом можно представить как большой автобан, но утыканный светофорами в местах, где контроль должен передаваться от одной машины к другой. В такой ситуации в-общем-то неважно, будешь ли ты жечь движок на форсаже или ехать свои пенсионерские 120 - на каждом светофоре все равно будешь стоять и ждать как все. Поэтому зачем выпендриваться?

Что касается преимуществ С - в местах со сложной логикой работы с машинными ресурсами он может дать прирост производительности, если программист точно знает особенности работы системы и способы на них повлиять. Но если где-то ошибется, или еще интереснее - захочется поменять систему, то все это упадет с большим треском и придется затратить дополнительные месяцы чтоб все снова заработало.
А для пайтона вроде бы есть JIT-компилятор
  • 0




0 посетителей читают тему

0 members, 0 guests, 0 anonymous users