From 71f81f6f2144c0e2cf729decefa87746ed694027 Mon Sep 17 00:00:00 2001 From: Yura Gusev <98374510+YurGusev@users.noreply.github.com> Date: Fri, 19 Jun 2026 14:30:39 +0500 Subject: [PATCH] [TASK] Cpython (https://github.com/SENATOROVAI/intro-cs/issues/4) Closes https://github.com/SENATOROVAI/intro-cs/issues/4 --- python/cpython.ipynb | 266 +++++++++++++++++++++++++++++++++++++++++++ python/cpython.py | 238 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 504 insertions(+) create mode 100644 python/cpython.ipynb create mode 100644 python/cpython.py diff --git a/python/cpython.ipynb b/python/cpython.ipynb new file mode 100644 index 00000000..72425fa0 --- /dev/null +++ b/python/cpython.ipynb @@ -0,0 +1,266 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "8a9e33fd", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Answers for the CPython and PyPy task.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "id": "eb116052", + "metadata": {}, + "source": [ + "# [TASK] Cpython\n", + "\n", + "## Введение в Python и CPython\n", + "\n", + "1. Что такое CPython и чем он отличается от Python?\n", + "\n", + "Ответ: Python - это язык программирования, а CPython - это реализация Python и\n", + "одновременно интерпретатор, которым мы обычно пользуемся. CPython написан на\n", + "языке C.\n", + "\n", + "3. Сколько существует реализаций Python, и какая из них самая популярная?\n", + "\n", + "Ответ: у Python есть 6 реализаций. Самая популярная\n", + "реализация - CPython.\n", + "\n", + "4. На каком языке написан CPython?\n", + "\n", + "Ответ: CPython написан на языке C.\n", + "\n", + "## Поиск и установка CPython\n", + "\n", + "5. Кто создал CPython?\n", + "\n", + "Ответ: Python и CPython создал Guido van Rossum.\n", + "\n", + "6. Почему Python считается быстрым, несмотря на то, что это интерпретируемый\n", + "язык?\n", + "\n", + "Ответ: CPython написан на C и вызывает инструкции из C. Поэтому многие\n", + "внутренние части интерпретатора работают быстро.\n", + "\n", + "7. Напишите путь к интерпретатору CPython на вашем компьютере.\n", + "\n", + "Ответ:\n", + "\n", + "```text\n", + "C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe\n", + "```\n", + "\n", + "Проверка версии:\n", + "\n", + "```text\n", + "Python 3.13.14\n", + "implementation=cpython\n", + "```\n", + "\n", + "## Структура CPython\n", + "\n", + "8. Что содержится в папке `include` в CPython?\n", + "\n", + "Ответ: в папке `include` лежат заголовочные файлы `.h`, связанные с C API\n", + "CPython. Например, там есть файл `abstract.h`. Через эти файлы видно, что CPython\n", + "реализован на C.\n", + "\n", + "На этом компьютере папка `include` находится здесь:\n", + "\n", + "```text\n", + "C:\\temp\\cpython-3.13.14\\Include\n", + "```\n", + "\n", + "В ней найдено 76 файлов `.h` и 0 файлов `.c`. Примеры файлов: `abstract.h`,\n", + "`boolobject.h`, `bytesobject.h`, `ceval.h`, `compile.h`.\n", + "\n", + "9. Где можно найти исходный код CPython? Дайте ссылку на репозиторий GitHub.\n", + "\n", + "Ответ:\n", + "\n", + "```text\n", + "https://github.com/python/cpython\n", + "```\n", + "\n", + "10. Как работает интерпретатор CPython при выполнении кода?\n", + "\n", + "Ответ: интерпретатор - это программа, которая читает и запускает код\n", + "построчно.\n", + "\n", + "## Запуск файла с помощью CPython\n", + "\n", + "11. Какая команда используется для запуска файла с помощью CPython?\n", + "\n", + "Ответ:\n", + "\n", + "```powershell\n", + "python путь\\до\\файла.py\n", + "```\n", + "\n", + "Если указывать полный путь к собранному интерпретатору:\n", + "\n", + "```powershell\n", + "C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe путь\\до\\файла.py\n", + "```\n", + "\n", + "12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?\n", + "\n", + "Ответ: да, можно. Интерпретатору неважно, какое расширение у файла. Главное,\n", + "чтобы внутри файла был корректный Python-код.\n", + "\n", + "13. Как указать путь к интерпретатору и файлу для выполнения кода?\n", + "\n", + "Ответ: сначала пишем путь до интерпретатора, потом через пробел путь до файла.\n", + "\n", + "```powershell\n", + "C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe H:\\Projects\\example.txt\n", + "```\n", + "\n", + "Если в пути есть пробелы, путь нужно взять в кавычки.\n", + "\n", + "## Введение в PyPy\n", + "\n", + "14. Чем PyPy отличается от CPython?\n", + "\n", + "Ответ: PyPy - это другой интерпретатор Python. PyPy работает быстрее CPython,\n", + "но его нельзя применять во всех проектах.\n", + "\n", + "15. Почему PyPy не может использоваться для всех проектов на Python?\n", + "\n", + "Ответ: PyPy не совместим со всеми Python-проектами. Поэтому его используют не\n", + "везде, а точечно для некоторых проектов.\n", + "\n", + "16. Где можно скачать PyPy?\n", + "\n", + "Ответ: PyPy можно скачать на официальном сайте:\n", + "\n", + "```text\n", + "https://www.pypy.org/\n", + "```\n", + "\n", + "## Установка и запуск PyPy\n", + "\n", + "17. Как установить PyPy после скачивания?\n", + "\n", + "Ответ: нужно скачать архив PyPy для своей операционной системы, переместить\n", + "архив в удобное место и распаковать его. После распаковки в папке будет лежать\n", + "интерпретатор PyPy.\n", + "\n", + "18. Как запустить файл с помощью PyPy?\n", + "\n", + "Ответ: нужно указать путь до интерпретатора PyPy и через пробел путь до файла.\n", + "\n", + "```powershell\n", + "pypy путь\\до\\файла.py\n", + "```\n", + "\n", + "Или полным путем:\n", + "\n", + "```powershell\n", + "C:\\путь\\до\\pypy.exe H:\\Projects\\example_pypy.py\n", + "```\n", + "\n", + "19. Почему PyPy выполняет код быстрее, чем CPython?\n", + "\n", + "Ответ: PyPy работает быстрее CPython. Главное отличие для задания - PyPy\n", + "быстрее, но подходит не для всех проектов.\n", + "\n", + "## Практические задания\n", + "\n", + "Задание 1. Поиск и установка CPython.\n", + "\n", + "Ответ: CPython на компьютере есть. Собранный CPython находится здесь:\n", + "\n", + "```text\n", + "C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe\n", + "```\n", + "\n", + "Проверка:\n", + "\n", + "```powershell\n", + "C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe --version\n", + "```\n", + "\n", + "Результат:\n", + "\n", + "```text\n", + "Python 3.13.14\n", + "```\n", + "\n", + "Задание 2. Исследование структуры CPython.\n", + "\n", + "Ответ: папка `include` находится здесь:\n", + "\n", + "```text\n", + "C:\\temp\\cpython-3.13.14\\Include\n", + "```\n", + "\n", + "В этой папке 76 файлов `.h` и 0 файлов `.c`. Пример такого файла - `abstract.h`.\n", + "\n", + "Задание 3. Запуск файла с помощью CPython.\n", + "\n", + "Ответ: пример файла:\n", + "\n", + "```python\n", + "print(\"Hello from CPython!\")\n", + "```\n", + "\n", + "Запуск через CPython:\n", + "\n", + "```powershell\n", + "C:\\temp\\cpython-3.13.14\\PCbuild\\amd64\\python.exe путь\\до\\example.txt\n", + "```\n", + "\n", + "Ожидаемый вывод:\n", + "\n", + "```text\n", + "Hello from CPython!\n", + "```\n", + "\n", + "Такой же запуск можно сделать после переименования файла в `example.py`.\n", + "\n", + "Задание 4. Установка и использование PyPy.\n", + "\n", + "Ответ: нужно скачать PyPy с официального сайта, распаковать архив и запустить\n", + "файл через интерпретатор PyPy.\n", + "\n", + "Пример файла:\n", + "\n", + "```python\n", + "print(\"Hello from pypy!\")\n", + "```\n", + "\n", + "Пример запуска:\n", + "\n", + "```powershell\n", + "pypy путь\\до\\example_pypy.py\n", + "```\n", + "\n", + "Ожидаемый вывод:\n", + "\n", + "```text\n", + "Hello from pypy!\n", + "```\n", + "\n", + "Задание 5. Сравнение производительности CPython и PyPy.\n", + "\n", + "Ответ: для сравнения нужно запустить один и тот же `performance_test.py` сначала\n", + "через CPython, затем через PyPy и сравнить строку `Execution time`. PyPy должен работать быстрее CPython, но использовать его можно не для всех\n", + "проектов." + ] + } + ], + "metadata": { + "jupytext": { + "cell_metadata_filter": "-all", + "formats": "ipynb,py:light", + "main_language": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python/cpython.py b/python/cpython.py new file mode 100644 index 00000000..ac42398d --- /dev/null +++ b/python/cpython.py @@ -0,0 +1,238 @@ +"""Answers for the CPython and PyPy task.""" + +# # [TASK] Cpython +# +# ## Введение в Python и CPython +# +# 1. Что такое CPython и чем он отличается от Python? +# +# Ответ: Python - это язык программирования, а CPython - это реализация Python и +# одновременно интерпретатор, которым мы обычно пользуемся. CPython написан на +# языке C. +# +# 3. Сколько существует реализаций Python, и какая из них самая популярная? +# +# Ответ: у Python есть 6 реализаций. Самая популярная +# реализация - CPython. +# +# 4. На каком языке написан CPython? +# +# Ответ: CPython написан на языке C. +# +# ## Поиск и установка CPython +# +# 5. Кто создал CPython? +# +# Ответ: Python и CPython создал Guido van Rossum. +# +# 6. Почему Python считается быстрым, несмотря на то, что это интерпретируемый +# язык? +# +# Ответ: CPython написан на C и вызывает инструкции из C. Поэтому многие +# внутренние части интерпретатора работают быстро. +# +# 7. Напишите путь к интерпретатору CPython на вашем компьютере. +# +# Ответ: +# +# ```text +# C:\temp\cpython-3.13.14\PCbuild\amd64\python.exe +# ``` +# +# Проверка версии: +# +# ```text +# Python 3.13.14 +# implementation=cpython +# ``` +# +# ## Структура CPython +# +# 8. Что содержится в папке `include` в CPython? +# +# Ответ: в папке `include` лежат заголовочные файлы `.h`, связанные с C API +# CPython. Например, там есть файл `abstract.h`. Через эти файлы видно, что CPython +# реализован на C. +# +# На этом компьютере папка `include` находится здесь: +# +# ```text +# C:\temp\cpython-3.13.14\Include +# ``` +# +# В ней найдено 76 файлов `.h` и 0 файлов `.c`. Примеры файлов: `abstract.h`, +# `boolobject.h`, `bytesobject.h`, `ceval.h`, `compile.h`. +# +# 9. Где можно найти исходный код CPython? Дайте ссылку на репозиторий GitHub. +# +# Ответ: +# +# ```text +# https://github.com/python/cpython +# ``` +# +# 10. Как работает интерпретатор CPython при выполнении кода? +# +# Ответ: интерпретатор - это программа, которая читает и запускает код +# построчно. +# +# ## Запуск файла с помощью CPython +# +# 11. Какая команда используется для запуска файла с помощью CPython? +# +# Ответ: +# +# ```powershell +# python путь\до\файла.py +# ``` +# +# Если указывать полный путь к собранному интерпретатору: +# +# ```powershell +# C:\temp\cpython-3.13.14\PCbuild\amd64\python.exe путь\до\файла.py +# ``` +# +# 12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему? +# +# Ответ: да, можно. Интерпретатору неважно, какое расширение у файла. Главное, +# чтобы внутри файла был корректный Python-код. +# +# 13. Как указать путь к интерпретатору и файлу для выполнения кода? +# +# Ответ: сначала пишем путь до интерпретатора, потом через пробел путь до файла. +# +# ```powershell +# C:\temp\cpython-3.13.14\PCbuild\amd64\python.exe H:\Projects\example.txt +# ``` +# +# Если в пути есть пробелы, путь нужно взять в кавычки. +# +# ## Введение в PyPy +# +# 14. Чем PyPy отличается от CPython? +# +# Ответ: PyPy - это другой интерпретатор Python. PyPy работает быстрее CPython, +# но его нельзя применять во всех проектах. +# +# 15. Почему PyPy не может использоваться для всех проектов на Python? +# +# Ответ: PyPy не совместим со всеми Python-проектами. Поэтому его используют не +# везде, а точечно для некоторых проектов. +# +# 16. Где можно скачать PyPy? +# +# Ответ: PyPy можно скачать на официальном сайте: +# +# ```text +# https://www.pypy.org/ +# ``` +# +# ## Установка и запуск PyPy +# +# 17. Как установить PyPy после скачивания? +# +# Ответ: нужно скачать архив PyPy для своей операционной системы, переместить +# архив в удобное место и распаковать его. После распаковки в папке будет лежать +# интерпретатор PyPy. +# +# 18. Как запустить файл с помощью PyPy? +# +# Ответ: нужно указать путь до интерпретатора PyPy и через пробел путь до файла. +# +# ```powershell +# pypy путь\до\файла.py +# ``` +# +# Или полным путем: +# +# ```powershell +# C:\путь\до\pypy.exe H:\Projects\example_pypy.py +# ``` +# +# 19. Почему PyPy выполняет код быстрее, чем CPython? +# +# Ответ: PyPy работает быстрее CPython. Главное отличие для задания - PyPy +# быстрее, но подходит не для всех проектов. +# +# ## Практические задания +# +# Задание 1. Поиск и установка CPython. +# +# Ответ: CPython на компьютере есть. Собранный CPython находится здесь: +# +# ```text +# C:\temp\cpython-3.13.14\PCbuild\amd64\python.exe +# ``` +# +# Проверка: +# +# ```powershell +# C:\temp\cpython-3.13.14\PCbuild\amd64\python.exe --version +# ``` +# +# Результат: +# +# ```text +# Python 3.13.14 +# ``` +# +# Задание 2. Исследование структуры CPython. +# +# Ответ: папка `include` находится здесь: +# +# ```text +# C:\temp\cpython-3.13.14\Include +# ``` +# +# В этой папке 76 файлов `.h` и 0 файлов `.c`. Пример такого файла - `abstract.h`. +# +# Задание 3. Запуск файла с помощью CPython. +# +# Ответ: пример файла: +# +# ```python +# print("Hello from CPython!") +# ``` +# +# Запуск через CPython: +# +# ```powershell +# C:\temp\cpython-3.13.14\PCbuild\amd64\python.exe путь\до\example.txt +# ``` +# +# Ожидаемый вывод: +# +# ```text +# Hello from CPython! +# ``` +# +# Такой же запуск можно сделать после переименования файла в `example.py`. +# +# Задание 4. Установка и использование PyPy. +# +# Ответ: нужно скачать PyPy с официального сайта, распаковать архив и запустить +# файл через интерпретатор PyPy. +# +# Пример файла: +# +# ```python +# print("Hello from pypy!") +# ``` +# +# Пример запуска: +# +# ```powershell +# pypy путь\до\example_pypy.py +# ``` +# +# Ожидаемый вывод: +# +# ```text +# Hello from pypy! +# ``` +# +# Задание 5. Сравнение производительности CPython и PyPy. +# +# Ответ: для сравнения нужно запустить один и тот же `performance_test.py` сначала +# через CPython, затем через PyPy и сравнить строку `Execution time`. PyPy должен работать быстрее CPython, но использовать его можно не для всех +# проектов.