diff --git a/python/cpython.ipynb b/python/cpython.ipynb new file mode 100644 index 00000000..d06f6c0d --- /dev/null +++ b/python/cpython.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "6bd77ccf", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"[TASK] Cpython.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "id": "ef63cc83", + "metadata": {}, + "source": [ + "---\n", + "# Инструкция по созданию ветки \n", + "1. зайдите в кошку \n", + "2. нажмите история\n", + "3. пролистайте список коммитов вниз, до момента вашего самого первого коммита, потом выберите мой коммит и создайте новую ветку на его основе, назвав точно также как название ишьюса => **[Смотреть скриншот ](https://github.com/user-attachments/assets/311d9096-c0f2-4b9f-bf03-950b25a239f6)** \n", + "4. Выполните задание из этого ишьюса в новой ветке\n", + "---\n", + "\n", + " - Посмотрите видео [Интерпритатор Cpython и PYPY](https://youtu.be/ooLcXygrLnU) и ответьте на вопросы:\n", + " \n", + "Создаем файл в папке python/cpython.ipynb [в вашем репозитории](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV) и отвечаем в маркдауне на вопросы\n", + "\n", + "Введение в Python и CPython\n", + "\n", + " 1. Что такое CPython и чем он отличается от Python?\n", + "![image](https://github.com/user-attachments/assets/325fd195-ad0d-4a3b-897f-2af536179877)\n", + " 3. Сколько существует реализаций Python, и какая из них самая популярная?\n", + " 6 видов, самая популярная cpython\n", + " 4. На каком языке написан CPython?\n", + " На языке C\n", + "\n", + "Поиск и установка CPython\n", + "\n", + " 1. (опционально) Кто создал CPython?\n", + " Гвидо ван Россум\n", + " 2. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык?\n", + " В случае с cpython, перед выполнением код компилируется в байт код\n", + " 3. Напишите путь к Интерпретатору CPython на вашем компьютере\n", + " C:\\Users\\azoti\\AppData\\Local\\Programs\\Python\\Python313\\python.exe\n", + "\n", + "Структура CPython\n", + "\n", + " 8. Что содержится в папке include в CPython?\n", + " Библиотеки на языке C\n", + " 9. Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб\n", + " https://github.com/python/cpython\n", + " 10. (опционально) Как работает интерпретатор CPython при выполнении кода?\n", + " 1) Исходный код парсится и формируется абстрактное синтаксическое дерево\n", + " 2) АСТ компилируется в байт код\n", + " 3) Выполняет инструкции байт кода: стек, вызовы, объекты, ветвления\n", + " 4) Повторяющиеся модули кешируются, чтобы не делать лишнюю компиляцию\n", + "\n", + "Запуск файла с помощью CPython\n", + "\n", + " 11. Какая команда используется для запуска файла с помощью CPython?\n", + " python [filename].py\n", + " 12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?\n", + " Можно, потому что он смотрит на содержимое, а не расширения файла.\n", + " 13. Как указать путь к интерпретатору и файлу для выполнения кода?\n", + " Указать каталог расположения и сам интерпретатор и через пробел аналогично файл с кодом\n", + "\n", + "Введение в PyPy\n", + "\n", + " 14. Чем PyPy отличается от CPython?\n", + " Работает в разы быстрее чем Cpython\n", + " 15. Почему PyPy не может использоваться для всех проектов на Python?\n", + " Новый, не все поддерживает, поэтому пока только определенные вещи в проекте\n", + " 16. Где можно скачать PyPy?\n", + " pypy.org\n", + "\n", + "Установка и запуск PyPy\n", + "\n", + " 17. Как установить PyPy после скачивания?\n", + " Запустить скачанный исполняемый файл\n", + " 18. Как запустить файл с помощью PyPy?\n", + " Указать каталог расположения и сам интерпретатор и через пробел аналогично файл с кодом\n", + " 19. Почему PyPy выполняет код быстрее, чем CPython?\n", + " cpython построчно компилирует код в байт код каждый раз, а jit компилятор у pypy во время выполнения и только \"горячие\" пути (часто выполняемые), кешируя их\n", + "\n", + "\n", + "### Практические задания\n", + "Задание 1: Поиск и установка CPython\n", + "\n", + " Проверьте, установлен ли CPython на вашем компьютере:\n", + " Используйте поиск в меню \"Пуск\" (Windows) или терминале (Linux/Mac).\n", + " Введите команду python --version или python3 --version в терминале.\n", + " Если CPython не установлен, скачайте его с официального сайта Python https://www.python.org/downloads/ и установите.\n", + "\n", + " Установлен - 3.13.12\n", + "\n", + "Задание 2: Исследование структуры CPython\n", + "\n", + " Найдите папку, где установлен Python (например, через команду where python в терминале или свойства ярлыка).\n", + " C:\\Users\\azoti\\AppData\\Local\\Programs\\Python\\Python313\\include\n", + " Откройте папку include и изучите её содержимое. Какое количество файлов на C там есть?\n", + " 264 файла\n", + " Перейдите на [GitHub-репозиторий CPython](https://github.com/python/cpython) и найдите файл README. Прочитайте информацию о проекте.\n", + " Прочитал\n", + "\n", + "Задание 3: Запуск файла с помощью CPython\n", + "\n", + " Создайте текстовый файл example.txt с содержимым:\n", + "\n", + "print(\"Hello from CPython!\")\n", + "\n", + "Запустите файл через команду python <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу).\n", + "Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск.\n", + "\n", + "C:\\Users\\azoti\\AppData\\Local\\Programs\\Python\\Python313\\python.exe D:/example.txt\n", + "Hello from CPython!\n", + "\n", + "C:\\Users\\azoti\\AppData\\Local\\Programs\\Python\\Python313\\python.exe D:/example.py\n", + "Hello from CPython!\n", + "\n", + "\n", + "Задание 4: Установка и использование PyPy\n", + "\n", + " Перейдите на [официальный сайт PyPy](https://www.pypy.org/) и скачайте подходящую версию для вашей операционной системы.\n", + " Распакуйте скачанный архив в удобное место.\n", + " Создайте файл example_pypy.py с кодом:\n", + "\n", + "print(\"Hello from pypy!\")\n", + "\n", + "Запустите файл через PyPy \n", + "pypy <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу).\n", + "Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск.\n", + "\n", + "C:\\Users\\azoti\\Downloads\\pypy3.11-v7.3.21-win64\\pypy.exe d:/example_pypy.py\n", + "Hello from pypy!\n", + "\n", + "Задание 5: Сравнение производительности CPython и PyPy\n", + "\n", + " Создайте файл performance_test.py с кодом:\n", + "\n", + "```\n", + " import time\n", + " start_time = time.time()\n", + " total = 0\n", + " for i in range(1, 10000000):\n", + " total += i\n", + " end_time = time.time()\n", + " \n", + " print(\"Result:\", total)\n", + " print(\"Execution time:\", end_time - start_time, \"seconds\")\n", + "```\n", + "\n", + "\n", + "Запустите этот файл сначала через CPython, а затем через PyPy. Запишите результаты времени выполнения для обоих интерпретаторов.\n", + "Сделайте вывод о разнице в производительности.\n", + "\n", + "C:\\Users\\azoti\\Downloads\\pypy3.11-v7.3.21-win64\\pypy.exe d:/performance_test.py\n", + "Result: 49999995000000\n", + "Execution time: 0.009662389755249023 seconds\n", + "\n", + "C:\\Users\\azoti\\AppData\\Local\\Programs\\Python\\Python313\\python.exe d:/performance_test.py\n", + "Result: 49999995000000\n", + "Execution time: 0.8602514266967773 seconds\n", + "\n", + "Вывод: PyPy ускорил этот цикл примерно в 80–90 раз по сравнению с CPython\n", + "\n", + "### Завершите выполнение ишьюса, [согласно инструкции](https://github.com/SENATOROVAI/intro/issues/5)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.13.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python/cpython.py b/python/cpython.py new file mode 100644 index 00000000..62f1bf45 --- /dev/null +++ b/python/cpython.py @@ -0,0 +1,154 @@ +"""[TASK] Cpython.""" + +# --- +# # Инструкция по созданию ветки +# 1. зайдите в кошку +# 2. нажмите история +# 3. пролистайте список коммитов вниз, до момента вашего самого первого коммита, потом выберите мой коммит и создайте новую ветку на его основе, назвав точно также как название ишьюса => **[Смотреть скриншот ](https://github.com/user-attachments/assets/311d9096-c0f2-4b9f-bf03-950b25a239f6)** +# 4. Выполните задание из этого ишьюса в новой ветке +# --- +# +# - Посмотрите видео [Интерпритатор Cpython и PYPY](https://youtu.be/ooLcXygrLnU) и ответьте на вопросы: +# +# Создаем файл в папке python/cpython.ipynb [в вашем репозитории](https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV) и отвечаем в маркдауне на вопросы +# +# Введение в Python и CPython +# +# 1. Что такое CPython и чем он отличается от Python? +# ![image](https://github.com/user-attachments/assets/325fd195-ad0d-4a3b-897f-2af536179877) +# 3. Сколько существует реализаций Python, и какая из них самая популярная? +# 6 видов, самая популярная cpython +# 4. На каком языке написан CPython? +# На языке C +# +# Поиск и установка CPython +# +# 1. (опционально) Кто создал CPython? +# Гвидо ван Россум +# 2. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык? +# В случае с cpython, перед выполнением код компилируется в байт код +# 3. Напишите путь к Интерпретатору CPython на вашем компьютере +# C:\Users\azoti\AppData\Local\Programs\Python\Python313\python.exe +# +# Структура CPython +# +# 8. Что содержится в папке include в CPython? +# Библиотеки на языке C +# 9. Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб +# https://github.com/python/cpython +# 10. (опционально) Как работает интерпретатор CPython при выполнении кода? +# 1) Исходный код парсится и формируется абстрактное синтаксическое дерево +# 2) АСТ компилируется в байт код +# 3) Выполняет инструкции байт кода: стек, вызовы, объекты, ветвления +# 4) Повторяющиеся модули кешируются, чтобы не делать лишнюю компиляцию +# +# Запуск файла с помощью CPython +# +# 11. Какая команда используется для запуска файла с помощью CPython? +# python [filename].py +# 12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему? +# Можно, потому что он смотрит на содержимое, а не расширения файла. +# 13. Как указать путь к интерпретатору и файлу для выполнения кода? +# Указать каталог расположения и сам интерпретатор и через пробел аналогично файл с кодом +# +# Введение в PyPy +# +# 14. Чем PyPy отличается от CPython? +# Работает в разы быстрее чем Cpython +# 15. Почему PyPy не может использоваться для всех проектов на Python? +# Новый, не все поддерживает, поэтому пока только определенные вещи в проекте +# 16. Где можно скачать PyPy? +# pypy.org +# +# Установка и запуск PyPy +# +# 17. Как установить PyPy после скачивания? +# Запустить скачанный исполняемый файл +# 18. Как запустить файл с помощью PyPy? +# Указать каталог расположения и сам интерпретатор и через пробел аналогично файл с кодом +# 19. Почему PyPy выполняет код быстрее, чем CPython? +# cpython построчно компилирует код в байт код каждый раз, а jit компилятор у pypy во время выполнения и только "горячие" пути (часто выполняемые), кешируя их +# +# +# ### Практические задания +# Задание 1: Поиск и установка CPython +# +# Проверьте, установлен ли CPython на вашем компьютере: +# Используйте поиск в меню "Пуск" (Windows) или терминале (Linux/Mac). +# Введите команду python --version или python3 --version в терминале. +# Если CPython не установлен, скачайте его с официального сайта Python https://www.python.org/downloads/ и установите. +# +# Установлен - 3.13.12 +# +# Задание 2: Исследование структуры CPython +# +# Найдите папку, где установлен Python (например, через команду where python в терминале или свойства ярлыка). +# C:\Users\azoti\AppData\Local\Programs\Python\Python313\include +# Откройте папку include и изучите её содержимое. Какое количество файлов на C там есть? +# 264 файла +# Перейдите на [GitHub-репозиторий CPython](https://github.com/python/cpython) и найдите файл README. Прочитайте информацию о проекте. +# Прочитал +# +# Задание 3: Запуск файла с помощью CPython +# +# Создайте текстовый файл example.txt с содержимым: +# +# print("Hello from CPython!") +# +# Запустите файл через команду python <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу). +# Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск. +# +# C:\Users\azoti\AppData\Local\Programs\Python\Python313\python.exe D:/example.txt +# Hello from CPython! +# +# C:\Users\azoti\AppData\Local\Programs\Python\Python313\python.exe D:/example.py +# Hello from CPython! +# +# +# Задание 4: Установка и использование PyPy +# +# Перейдите на [официальный сайт PyPy](https://www.pypy.org/) и скачайте подходящую версию для вашей операционной системы. +# Распакуйте скачанный архив в удобное место. +# Создайте файл example_pypy.py с кодом: +# +# print("Hello from pypy!") +# +# Запустите файл через PyPy +# pypy <путь_до_файла> (замените <путь_до_файла> на фактический путь к вашему файлу). +# Проверьте, что выводится на экран. Попробуйте изменить расширение файла на .py и повторите запуск. +# +# C:\Users\azoti\Downloads\pypy3.11-v7.3.21-win64\pypy.exe d:/example_pypy.py +# Hello from pypy! +# +# Задание 5: Сравнение производительности CPython и PyPy +# +# Создайте файл performance_test.py с кодом: +# +# ``` +# import time +# start_time = time.time() +# total = 0 +# for i in range(1, 10000000): +# total += i +# end_time = time.time() +# +# print("Result:", total) +# print("Execution time:", end_time - start_time, "seconds") +# ``` +# +# +# Запустите этот файл сначала через CPython, а затем через PyPy. Запишите результаты времени выполнения для обоих интерпретаторов. +# Сделайте вывод о разнице в производительности. +# +# C:\Users\azoti\Downloads\pypy3.11-v7.3.21-win64\pypy.exe d:/performance_test.py +# Result: 49999995000000 +# Execution time: 0.009662389755249023 seconds +# +# C:\Users\azoti\AppData\Local\Programs\Python\Python313\python.exe d:/performance_test.py +# Result: 49999995000000 +# Execution time: 0.8602514266967773 seconds +# +# Вывод: PyPy ускорил этот цикл примерно в 80–90 раз по сравнению с CPython +# +# ### Завершите выполнение ишьюса, [согласно инструкции](https://github.com/SENATOROVAI/intro/issues/5) +#