четверг, 11 апреля 2013 г.

Pythons Innards

Перечитываю снова Pythons Innards (Yaniv Aknin).

Это — серия из нескольких статей о том, как устроен CPython изнутри.
  • Интерпретатор байткода
  • Что из себя представляет этот самый байткод
  • Что такое стек в понятии CPython, и как оно работает
  • Как устроены дескрипторы, слоты и классы на нижнем уровне
  • Пространства имен (namespaces)

Для «простых программистов, работающих работу» — наверное, ничего интересного.
Тем, кто желает разобраться в Питоне «до последнего байта» — очень рекомендую.

Вдобавок очень хочу посоветовать Ely Bendersky с его Python Internals. Эта серия статей тоже посвящена «внутреннему устройству» и прекрасно сочетается с тестами Yaniv Aknin.

  • Как создаётся объект (в деталях)
  • Что такое class и чем отличается от type
  • Как именно происходит вызов callable
  • И т.д. (symbol tables, например)

На самом деле подобного рода информации очень немного. Документация хорошо описывает CPython C API но не рассказывает о деталях, о том как это всё работает.

У меня до C кода дело доходило разве до обсуждения реализации GIL насколько я помню.

Если есть еще интересные статьи по внутреннему устройству — пишите в комментариях, я добавлю сюда. Наверняка что-то запамятовал, но в целом тема раскрыта очень скудно.

Так что если хотите узнать «как оно работает на самом деле» — читайте  статьи по ссылкам.

UPD.
По устройству типов данных:
Строки
Целые числа
Списки
Словари (для версий Python <3.3)

Лекция Larry Hastings (release manager для Python 3.4, между прочим) с US PyCon 2012 на рассматриваемую тему.


9 комментариев:

  1. По устройству типов данных:

    * (Строки) http://www.laurentluce.com/posts/python-string-objects-implementation/
    * (Инты) http://www.laurentluce.com/posts/python-integer-objects-implementation/
    * (Списки) http://www.laurentluce.com/posts/python-list-implementation/
    * (Словари) http://www.laurentluce.com/posts/python-dictionary-implementation/ (для версий Python <3.3)

    ОтветитьУдалить
  2. > Если есть еще интересные статьи по внутреннему устройству — пишите в комментариях, я добавлю сюда.

    Добавляйте.

    ОтветитьУдалить
  3. @Rostyslav Dzinko спасибо, добавил. Когда-то читал эти статьи, но не смог вспомнить автора.

    ОтветитьУдалить
  4. Вот еще в закладках нарыл. Какая-то черная практика :)
    * http://pyevolve.sourceforge.net/wordpress/?p=2171

    ОтветитьУдалить
  5. А вот эту ссылку переносить в статью не буду. Не хочу показывать «еще три способа сломать напрочь интерпретатор».

    ОтветитьУдалить
  6. Не знаю на сколько в тему, но вот несколько докладов о работе Python:

    http://www.youtube.com/watch?v=twQKAoq2OPE
    http://www.youtube.com/watch?v=XGF3Qu4dUqk

    ОтветитьУдалить
    Ответы
    1. Первый доклад не о работе Python а скорее вообще о том как запускается процесс и что с ним происходит, куда расходуется память и т.д. В общем такой себе ликбез для тех, кто пишет на Python и C в глаза не видел.
      Larry Hastings рассказывает о внутреннем устройстве. Я изначально не хотел давать ссылки на видео, но эту добавлю.

      Удалить
  7. А можно узнать как вообще стать python core developer? Допустим желающий не знает Си (или знает его на начальном уровне). Очень хотелось бы прочесть вашу статью по этой теме.

    ОтветитьУдалить
  8. Вообще-то хватит и питона.
    Как стать — открываете http://bugs.python.org/ и вперед!

    ОтветитьУдалить