- •Об авторе
- •О группе редакторов
- •Предисловие
- •Введение
- •Как использовать эту книгу
- •Загрузка исходного кода CPython
- •Что в исходном коде?
- •Настройка среды разработки
- •IDE или редактор?
- •Настройка Visual Studio
- •Настройка Visual Studio Code
- •Настройка Vim
- •Выводы
- •Компиляция CPython
- •Компиляция CPython на macOS
- •Компиляция CPython на Linux
- •Установка специализированной версии
- •Знакомство с Make
- •Make-цели CPython
- •Компиляция CPython на Windows
- •Профильная оптимизация
- •Выводы
- •Грамматика и язык Python
- •Спецификация языка Python
- •Генератор парсеров
- •Повторное генерирование грамматики
- •Выводы
- •Конфигурация и ввод
- •Конфигурация состояния
- •Структура данных конфигурации среды выполнения
- •Конфигурация сборки
- •Сборка модуля из входных данных
- •Выводы
- •Генерирование конкретного синтаксического дерева
- •Парсер/токенизатор CPython
- •Абстрактные синтаксические деревья
- •Важные термины
- •Пример: добавление оператора «почти равно»
- •Выводы
- •Компилятор
- •Исходные файлы
- •Важные термины
- •Создание экземпляра компилятора
- •Флаги будущей функциональности и флаги компилятора
- •Таблицы символических имен
- •Основная компиляция
- •Ассемблер
- •Создание объекта кода
- •Использование Instaviz для вывода объекта кода
- •Пример: реализация оператора «почти равно»
- •Выводы
- •Цикл вычисления
- •Исходные файлы
- •Важные термины
- •Построение состояния потока
- •Построение объектов кадров
- •Выполнение кадра
- •Стек значений
- •Пример: добавление элемента в список
- •Выводы
- •Управление памятью
- •Выделение памяти в C
- •Проектирование системы управления памятью Python
- •Аллокаторы памяти CPython
- •Область выделения объектной памяти и PyMem
- •Область выделения сырой памяти
- •Нестандартные области выделения памяти
- •Санитайзеры выделенной памяти
- •Арена памяти PyArena
- •Подсчет ссылок
- •Сборка мусора
- •Выводы
- •Параллелизм и конкурентность
- •Модели параллелизма и конкурентности
- •Структура процесса
- •Многопроцессорный параллелизм
- •Многопоточность
- •Асинхронное программирование
- •Генераторы
- •Сопрограммы
- •Асинхронные генераторы
- •Субинтерпретаторы
- •Выводы
- •Объекты и типы
- •Примеры этой главы
- •Встроенные типы
- •Типы объектов
- •Тип type
- •Типы bool и long
- •Тип строки Юникода
- •Словари
- •Выводы
- •Стандартная библиотека
- •Модули Python
- •Модули Python и C
- •Набор тестов
- •Запуск набора тестов в Windows
- •Запуск набора тестов в Linux или macOS
- •Флаги тестирования
- •Запуск конкретных тестов
- •Модули тестирования
- •Вспомогательные средства тестирования
- •Выводы
- •Отладка
- •Обработчик сбоев
- •Компиляция поддержки отладки
- •LLDB для macOS
- •Отладчик Visual Studio
- •Отладчик CLion
- •Выводы
- •Бенчмаркинг, профилирование и трассировка
- •Использование timeit для микробенчмарка
- •Использование набора тестов производительности Python
- •Профилирование кода Python с использованием cProfile
- •Выводы
- •Что дальше?
- •Создание расширений C для CPython
- •Улучшение приложений Python
- •Участие в проекте CPython
- •Дальнейшее обучение
- •Препроцессор C
- •Базовый синтаксис C
- •Выводы
- •Благодарности
Настройка среды разработки
В этой главе мы будем работать как с кодом C, так и с кодом Python. Очень важно, чтобы среда разработки была настроена для обоих языков.
Исходный код CPython примерно на 65 % написан на Python (его значительную часть составляют тесты) и на 24 % — на языке C. Оставшуюся часть составляет смесь других языков.
IDE ИЛИ РЕДАКТОР?
Если вы еще не решили, какую среду разработки использовать, сначала необходимо принять принципиальное решение: выбрать интегрированную среду разработки (IDE) или редактор кода?
zz IDE предназначены для конкретного языка и инструментария. Во многих IDE имеются интегрированные средства тестирования, проверки синтаксиса, контроля версий и компиляции.
zz Редактор кода позволяет править файлы с программным кодом независимо от языка. Многие редакторы кода представляют собой простые текстовые редакторы с подсветкой синтаксиса.
Из-за своей полнофункциональной природы IDE часто потребляют больше аппаратных ресурсов. Таким образом, при ограниченном объеме памяти (менее 8 Гбайт) рекомендуется использовать редактор кода.
Кроме того, запуск IDE занимает больше времени. Если вам нужно быстро отредактировать файл, то, пожалуй, редактор кода для этого подойдет лучше.
Книги для программистов: https://t.me/booksforits
Настройка Visual Studio 25
Существуют сотни платных и бесплатных редакторов и IDE. Вот ряд примеров для работы с кодом CPython:
ПРИЛОЖЕНИЕ |
НАЗНАЧЕНИЕ |
ПОДДЕРЖИВАЕТСЯ |
Microsoft Visual Studio Code |
Редактор |
Windows, macOS и Linux |
Atom |
Редактор |
Windows, macOS и Linux |
Sublime Text |
Редактор |
Windows, macOS и Linux |
Vim |
Редактор |
Windows, macOS и Linux |
Emacs |
Редактор |
Windows, macOS и Linux |
Microsoft Visual Studio |
IDE (C, Python и др.) |
Windows |
PyCharm by JetBrains |
IDE (Python и др.) |
Windows, macOS и Linux |
CLion by JetBrains |
IDE (C и др.) |
Windows, macOS и Linux |
Версия Microsoft Visual Studio также доступна для Mac, но она не поддерживает плагин Python Tools для Visual Studio и компиляцию C.
В следующих разделах будут рассмотрены подготовительные действия для нескольких редакторов и IDE:
zz Microsoft Visual Studio
zz Microsoft Visual Studio Code
zz JetBrains CLion
zz Vim
Перейдите к разделу для выбранного вами приложения или прочитайте все, чтобы сравнить разные варианты.
НАСТРОЙКА VISUAL STUDIO
Новейшая версия Visual Studio — Visual Studio 2019 — имеет встроенную поддержку Python и исходного кода C для Windows. Я рекомендую использовать ее для примеров и упражнений этой книги. Если на вашем компьютере уже установлена версия Visual Studio 2017, она тоже подойдет.
Книги для программистов: https://t.me/booksforits
26 Настройка среды разработки
ПРИМЕЧАНИЕ
Никакие платные возможностиVisual Studio не обязательны для компи ляции CPython или чтения книги. Вы можете использовать бесплатное издание Community Edition.
Тем не менее для профильной оптимизации (profile-guided optimization) потребуется издание Professional Edition и выше.
Редактор Visual Studio можно бесплатно загрузить с веб-сайта Microsoft Visual Studio1.
После того как вы загрузите программу установки Visual Studio, вам будет предложено выбрать устанавливаемые компоненты. Для книги понадобятся следующие компоненты:
zz Рабочая конфигурация разработки Python (Python development).
zz Необязательные средства нативной разработки Python (Python native development tools).
zz Python 3, 64-разрядная версия (3.7.2).
Если у вас уже установлена версия Python 3.7, вы можете убрать галочку напротив Python 3 (3.7.2). Также можно отказаться от установки любых необязательных средств, если вы захотите сэкономить место на диске.
Программа установки загружает и устанавливает все необходимые компоненты. Установка может занять до часа; возможно, вам стоит продолжить чтение и вернуться к этому разделу после ее завершения.
Когда установка будет завершена, щелкните на кнопке Launch, чтобы запустить Visual Studio. Вам будет предложено войти в систему. Если у вас имеется учетная запись Microsoft, вы можете выполнить вход или пропустить этот шаг.
Затем будет предложено открыть проект. Также можно клонировать Gitрепозиторий CPython прямо из Visual Studio — для этого выберите вариант
Clone or check out code.
В поле расположения репозитория введите адрес https://github.com/python/ cpython, выберите локальную папку для установки и нажмите Clone.
1 https://visualstudio.microsoft.com/vs/.
Книги для программистов: https://t.me/booksforits
Настройка Visual Studio 27
Visual Studio загружает копию CPython с GitHub, для чего используется версия Git, входящая в поставку Visual Studio. Этот шаг также избавляет вас от хлопот с установкой Git в Windows. Загрузка может занять до десяти минут.
ВАЖНО
Visual Studio автоматически встает на master-ветку.Прежде чем перехо дить к компиляции,убедитесь в том,что вы переключились на ветку 3.9 в окне TeamExplorer. Переключение на ветку 3.9 — важный шаг. Masterветка изменяется ежечасно, и многие примеры и упражнения в книге вряд ли будут работать на ней.
После того как проект будет загружен, необходимо передать Visual Studio информацию о файле решения PCBuild pcbuild.sln, выбрав команду Solutions and Projects pcbuild.sln:
Итак, среда Visual Studio настроена, а исходный код загружен. Можно переходить к компиляции CPython на Windows; эта процедура рассматривается в следующей главе.
Книги для программистов: https://t.me/booksforits