Skip to content

Commit f714bcc

Browse files
1 parent 79a678b commit f714bcc

File tree

2 files changed

+270
-0
lines changed

2 files changed

+270
-0
lines changed

python/cpython.ipynb

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": null,
6+
"id": "a00aed79",
7+
"metadata": {},
8+
"outputs": [],
9+
"source": [
10+
"\"\"\"[TASK] Cpython #4.\"\"\""
11+
]
12+
},
13+
{
14+
"cell_type": "markdown",
15+
"id": "2f139ea1",
16+
"metadata": {},
17+
"source": [
18+
"1. Что такое CPython и чем он отличается от Python?\n",
19+
"\n",
20+
"CPython — это стандартная и самая распространенная реализация языка Python на языке C. Он так же является интерпретатором.\n",
21+
"\n",
22+
"Python — это язык программирования со своими правилами. А CPython программа для реализации языка программирования. \n",
23+
"\n",
24+
"3. Сколько существует реализаций Python, и какая из них самая популярная?\n",
25+
"\n",
26+
"Самых популярных всего 7 (если брать из книги): IPython, CPython, IronPython, Jython, PyPy, PythonNet, Stackless Python. \n",
27+
"\n",
28+
"Самая популярная CPython.\n",
29+
"\n",
30+
"4. На каком языке написан CPython?\n",
31+
"\n",
32+
"На языке С\n",
33+
"\n",
34+
"5. (опционально) Кто создал CPython?\n",
35+
"\n",
36+
"Guido van Rossum\n",
37+
"\n",
38+
"6. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык?\n",
39+
"\n",
40+
"Ну если о говорить о CPython. То его ядро написано С и он вызывает инструкции из С. Поэтому он быстрый\n",
41+
"\n",
42+
"7. Напишите путь к Интерпретатору CPython на вашем компьютере\n",
43+
"\n",
44+
"C:\\Users\\Иван Куликов\\AppData\\Local\\Programs\\Python\\Python313\n",
45+
"\n",
46+
"8. Что содержится в папке include в CPython?\n",
47+
"\n",
48+
"файлы на языке C, необходимые для работы интерпретатора и вызова инструкций\n",
49+
"\n",
50+
"9. Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб\n",
51+
"\n",
52+
"https://github.com/python/cpython\n",
53+
"\n",
54+
"10. (опционально) Как работает интерпретатор CPython при выполнении кода?\n",
55+
"\n",
56+
"Этап 1: Лексический анализ (Lexing)\n",
57+
"Исходный код разбивается на \"слова\" языка - токены.\n",
58+
"\n",
59+
"Этап 2: Синтаксический анализ (Parsing)\n",
60+
"Токены преобразуются в Абстрактное Синтаксическое Дерево (AST).\n",
61+
"\n",
62+
"Этап 3: Компиляция в байт-код\n",
63+
"AST компилируется в байт-код - низкоуровневые инструкции для виртуальной машины Python.\n",
64+
"\n",
65+
"Этап 4: Выполнение байт-кода виртуальной машиной\n",
66+
"Виртуальная машина CPython - это большой цикл, который последовательно выполняет инструкции байт-кода.\n",
67+
"\n",
68+
"11. Какая команда используется для запуска файла с помощью CPython?\n",
69+
"\n",
70+
"Для запуску через командную строку нужно сначала вставить пусть к интерпретатору а затем через пробел путь к желанному файлу для выполнения.\n",
71+
"\n",
72+
"12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?\n",
73+
"\n",
74+
"Да можно, так как интерпретатор воспринимает любой текст и если данный текст или информация содержат валидный Python-код то он без проблем выполнит его\n",
75+
"\n",
76+
"13. Как указать путь к интерпретатору и файлу для выполнения кода?\n",
77+
"\n",
78+
"Можно скопировать адресное окно самой папки сверху либо нажать на файл правой кнопкой мыши -> свойства -> будет строчка расположения\n",
79+
"\n",
80+
"14. Чем PyPy отличается от CPython?\n",
81+
"\n",
82+
"Работает в 10 раз быстрее\n",
83+
"\n",
84+
"15. Почему PyPy не может использоваться для всех проектов на Python?\n",
85+
"\n",
86+
"Он является достаточно новой реализацией Python поэтому совместим не со всеми проектами на Python\n",
87+
"\n",
88+
"16. Где можно скачать PyPy?\n",
89+
"\n",
90+
"https://pypy.org/download.html\n",
91+
"\n",
92+
"17. Как установить PyPy после скачивания?\n",
93+
"\n",
94+
"Распаковать архив\n",
95+
"\n",
96+
"18. Как запустить файл с помощью PyPy?\n",
97+
"\n",
98+
"Для запуску через командную строку нужно сначала вставить пусть к интерпретатору PyPy а затем через пробел путь к желанному файлу для выполнения.\n",
99+
"\n",
100+
"19. Почему PyPy выполняет код быстрее, чем CPython?\n",
101+
"\n",
102+
"PyPy быстрее CPython благодаря принципиально разной архитектуре выполнения кода.\n",
103+
"Ключевое отличие: PyPy использует Just-In-Time (JIT) компилятор, в то время как CPython работает как интерпретатор байт-кода.\n",
104+
"\n",
105+
"Если простыми словами JIT компилятор находит горячии участки кода (которые часто выполняются) и после некоторых вызовов сразу обращается к мишиному коду данного участка.\n",
106+
"\n",
107+
"Практические задания\n",
108+
"Задание 1: Поиск и установка CPython\n",
109+
"C:\\Users\\Иван Куликов>python --version\n",
110+
"Python 3.13.8\n",
111+
"\n",
112+
"Задание 2: Исследование структуры CPython\n",
113+
"Количество файлов: 77\n",
114+
"\n",
115+
"Задание 3: Запуск файла с помощью CPython\n",
116+
"Для txt\n",
117+
"C:\\Users\\Иван Куликов>python D:\\repo\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\example.txt\n",
118+
"Hello from CPython!\n",
119+
"\n",
120+
"Для py\n",
121+
"C:\\Users\\Иван Куликов>python D:\\repo\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\example.py\n",
122+
"Hello from CPython!\n",
123+
"\n",
124+
"Задание 4: Установка и использование PyPy\n",
125+
"C:\\Users\\Иван Куликов>pypy D:\\repo\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\example_pypy.py\n",
126+
"Hello from pypy!\n",
127+
"\n",
128+
"Задание 5: Сравнение производительности CPython и PyPy\n",
129+
"C:\\Users\\Иван Куликов>python D:\\repo\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\performance_test.py\n",
130+
"Result: 49999995000000\n",
131+
"Execution time: 0.5878703594207764 seconds\n",
132+
"\n",
133+
"C:\\Users\\Иван Куликов>pypy D:\\repo\\Data-Science-For-Beginners-from-scratch-SENATOROV\\python\\performance_test.py\n",
134+
"Result: 49999995000000\n",
135+
"Execution time: 0.008245229721069336 seconds\n",
136+
"\n",
137+
"вывод быстрее в 71 раз"
138+
]
139+
}
140+
],
141+
"metadata": {
142+
"language_info": {
143+
"name": "python"
144+
}
145+
},
146+
"nbformat": 4,
147+
"nbformat_minor": 5
148+
}

python/cpython.py

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
"""[TASK] Cpython #4."""
2+
3+
# 1. Что такое CPython и чем он отличается от Python?
4+
#
5+
# CPython — это стандартная и самая распространенная реализация языка Python на языке C. Он так же является интерпретатором.
6+
#
7+
# Python — это язык программирования со своими правилами. А CPython программа для реализации языка программирования.
8+
#
9+
# 3. Сколько существует реализаций Python, и какая из них самая популярная?
10+
#
11+
# Самых популярных всего 7 (если брать из книги): IPython, CPython, IronPython, Jython, PyPy, PythonNet, Stackless Python.
12+
#
13+
# Самая популярная CPython.
14+
#
15+
# 4. На каком языке написан CPython?
16+
#
17+
# На языке С
18+
#
19+
# 5. (опционально) Кто создал CPython?
20+
#
21+
# Guido van Rossum
22+
#
23+
# 6. Почему Python считается быстрым, несмотря на то, что это интерпретируемый язык?
24+
#
25+
# Ну если о говорить о CPython. То его ядро написано С и он вызывает инструкции из С. Поэтому он быстрый
26+
#
27+
# 7. Напишите путь к Интерпретатору CPython на вашем компьютере
28+
#
29+
# C:\Users\Иван Куликов\AppData\Local\Programs\Python\Python313
30+
#
31+
# 8. Что содержится в папке include в CPython?
32+
#
33+
# файлы на языке C, необходимые для работы интерпретатора и вызова инструкций
34+
#
35+
# 9. Где можно найти исходный код CPython дайте ссылку на репозиторий гитхаб
36+
#
37+
# https://github.com/python/cpython
38+
#
39+
# 10. (опционально) Как работает интерпретатор CPython при выполнении кода?
40+
#
41+
# Этап 1: Лексический анализ (Lexing)
42+
# Исходный код разбивается на "слова" языка - токены.
43+
#
44+
# Этап 2: Синтаксический анализ (Parsing)
45+
# Токены преобразуются в Абстрактное Синтаксическое Дерево (AST).
46+
#
47+
# Этап 3: Компиляция в байт-код
48+
# AST компилируется в байт-код - низкоуровневые инструкции для виртуальной машины Python.
49+
#
50+
# Этап 4: Выполнение байт-кода виртуальной машиной
51+
# Виртуальная машина CPython - это большой цикл, который последовательно выполняет инструкции байт-кода.
52+
#
53+
# 11. Какая команда используется для запуска файла с помощью CPython?
54+
#
55+
# Для запуску через командную строку нужно сначала вставить пусть к интерпретатору а затем через пробел путь к желанному файлу для выполнения.
56+
#
57+
# 12. Можно ли запускать текстовые файлы через интерпретатор Python? Почему?
58+
#
59+
# Да можно, так как интерпретатор воспринимает любой текст и если данный текст или информация содержат валидный Python-код то он без проблем выполнит его
60+
#
61+
# 13. Как указать путь к интерпретатору и файлу для выполнения кода?
62+
#
63+
# Можно скопировать адресное окно самой папки сверху либо нажать на файл правой кнопкой мыши -> свойства -> будет строчка расположения
64+
#
65+
# 14. Чем PyPy отличается от CPython?
66+
#
67+
# Работает в 10 раз быстрее
68+
#
69+
# 15. Почему PyPy не может использоваться для всех проектов на Python?
70+
#
71+
# Он является достаточно новой реализацией Python поэтому совместим не со всеми проектами на Python
72+
#
73+
# 16. Где можно скачать PyPy?
74+
#
75+
# https://pypy.org/download.html
76+
#
77+
# 17. Как установить PyPy после скачивания?
78+
#
79+
# Распаковать архив
80+
#
81+
# 18. Как запустить файл с помощью PyPy?
82+
#
83+
# Для запуску через командную строку нужно сначала вставить пусть к интерпретатору PyPy а затем через пробел путь к желанному файлу для выполнения.
84+
#
85+
# 19. Почему PyPy выполняет код быстрее, чем CPython?
86+
#
87+
# PyPy быстрее CPython благодаря принципиально разной архитектуре выполнения кода.
88+
# Ключевое отличие: PyPy использует Just-In-Time (JIT) компилятор, в то время как CPython работает как интерпретатор байт-кода.
89+
#
90+
# Если простыми словами JIT компилятор находит горячии участки кода (которые часто выполняются) и после некоторых вызовов сразу обращается к мишиному коду данного участка.
91+
#
92+
# Практические задания
93+
# Задание 1: Поиск и установка CPython
94+
# C:\Users\Иван Куликов>python --version
95+
# Python 3.13.8
96+
#
97+
# Задание 2: Исследование структуры CPython
98+
# Количество файлов: 77
99+
#
100+
# Задание 3: Запуск файла с помощью CPython
101+
# Для txt
102+
# C:\Users\Иван Куликов>python D:\repo\Data-Science-For-Beginners-from-scratch-SENATOROV\python\example.txt
103+
# Hello from CPython!
104+
#
105+
# Для py
106+
# C:\Users\Иван Куликов>python D:\repo\Data-Science-For-Beginners-from-scratch-SENATOROV\python\example.py
107+
# Hello from CPython!
108+
#
109+
# Задание 4: Установка и использование PyPy
110+
# C:\Users\Иван Куликов>pypy D:\repo\Data-Science-For-Beginners-from-scratch-SENATOROV\python\example_pypy.py
111+
# Hello from pypy!
112+
#
113+
# Задание 5: Сравнение производительности CPython и PyPy
114+
# C:\Users\Иван Куликов>python D:\repo\Data-Science-For-Beginners-from-scratch-SENATOROV\python\performance_test.py
115+
# Result: 49999995000000
116+
# Execution time: 0.5878703594207764 seconds
117+
#
118+
# C:\Users\Иван Куликов>pypy D:\repo\Data-Science-For-Beginners-from-scratch-SENATOROV\python\performance_test.py
119+
# Result: 49999995000000
120+
# Execution time: 0.008245229721069336 seconds
121+
#
122+
# вывод быстрее в 71 раз

0 commit comments

Comments
 (0)