0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Чтобы глубже погрузиться в настройку окружения Python, нам нужно вспомнить теоретические основы этого языка. Они помогут глубже разобраться в окружении и работе с ним.</p>
1
<p>Чтобы глубже погрузиться в настройку окружения Python, нам нужно вспомнить теоретические основы этого языка. Они помогут глубже разобраться в окружении и работе с ним.</p>
2
<h2>Язык программирования</h2>
2
<h2>Язык программирования</h2>
3
<p>Что такое язык программирования? За этим понятием скрываются две связанных, но независимых темы.</p>
3
<p>Что такое язык программирования? За этим понятием скрываются две связанных, но независимых темы.</p>
4
<p>С одной стороны, языком программирования называют синтаксические и семантические правила, по которым записывается и работает исходный код.</p>
4
<p>С одной стороны, языком программирования называют синтаксические и семантические правила, по которым записывается и работает исходный код.</p>
5
<p>В отличие от естественных языков, эти правила достаточно строги. Любая мельчайшая ошибка приведет к тому, что код либо не запустится, либо будет работать некорректно.</p>
5
<p>В отличие от естественных языков, эти правила достаточно строги. Любая мельчайшая ошибка приведет к тому, что код либо не запустится, либо будет работать некорректно.</p>
6
<p>Например, в Python нельзя написать my name = 5 с пробелом в имени переменной. Эти правила существуют не только в книгах, но и в головах конкретных программистов и разработчиков языка.</p>
6
<p>Например, в Python нельзя написать my name = 5 с пробелом в имени переменной. Эти правила существуют не только в книгах, но и в головах конкретных программистов и разработчиков языка.</p>
7
<p>Часто весь свод правил существует в виде отдельного специального документа и называется<strong>спецификацией</strong>.</p>
7
<p>Часто весь свод правил существует в виде отдельного специального документа и называется<strong>спецификацией</strong>.</p>
8
<p>С другой стороны, языком программирования называют программу, которая запускает и компилирует наш код. Обычно ее называют<strong>средой выполнения</strong>.</p>
8
<p>С другой стороны, языком программирования называют программу, которая запускает и компилирует наш код. Обычно ее называют<strong>средой выполнения</strong>.</p>
9
<p>Среда выполнения - это конкретное воплощение спецификации, поэтому ее иногда называют<strong>реализацией</strong>.</p>
9
<p>Среда выполнения - это конкретное воплощение спецификации, поэтому ее иногда называют<strong>реализацией</strong>.</p>
10
<p>У конкретного языка может существовать несколько реализаций, в том числе<strong>эталонная реализация</strong>, на которую равняются все остальные. Различные реализации могут разрабатываться разными людьми и компаниями.</p>
10
<p>У конкретного языка может существовать несколько реализаций, в том числе<strong>эталонная реализация</strong>, на которую равняются все остальные. Различные реализации могут разрабатываться разными людьми и компаниями.</p>
11
<p>У Python нет выделенной спецификации, но есть эталонная реализация. Она называется<strong>CPython</strong>- это интерпретатор Python, реализованный на языке C. Если вы слышите разговоры про Python, то скорее всего имеется в виду именно эталонная реализация CPython.</p>
11
<p>У Python нет выделенной спецификации, но есть эталонная реализация. Она называется<strong>CPython</strong>- это интерпретатор Python, реализованный на языке C. Если вы слышите разговоры про Python, то скорее всего имеется в виду именно эталонная реализация CPython.</p>
12
<p>Прочие варианты обычно имеют свои названия. Например, реализация языка для запуска программ на платформе .NET называется<a>IronPython</a>.</p>
12
<p>Прочие варианты обычно имеют свои названия. Например, реализация языка для запуска программ на платформе .NET называется<a>IronPython</a>.</p>
13
<h2>Python</h2>
13
<h2>Python</h2>
14
<p>Python - интерпретируемый язык программирования с сильной динамической типизацией. Разберем эти слова по отдельности.</p>
14
<p>Python - интерпретируемый язык программирования с сильной динамической типизацией. Разберем эти слова по отдельности.</p>
15
<h3>Интерпретируемый язык программирования</h3>
15
<h3>Интерпретируемый язык программирования</h3>
16
<p>Компьютеры не умеют читать программы на языке программирования. Они лишь исполняют машинный код, набор команд для процессора и других микросхем. Чтобы нашу программу смог выполнить компьютер ее нужно перевести на машинный код.</p>
16
<p>Компьютеры не умеют читать программы на языке программирования. Они лишь исполняют машинный код, набор команд для процессора и других микросхем. Чтобы нашу программу смог выполнить компьютер ее нужно перевести на машинный код.</p>
17
<p>Существует два основных подхода в переводе: компиляция и интерпретация.</p>
17
<p>Существует два основных подхода в переводе: компиляция и интерпретация.</p>
18
<p>При компиляции весь код программы считывается, анализируется и переводится в машинный код. Так как код обрабатывается целиком, то это позволяет избегать многих ошибок в программе - они будут отловлены на стадии анализа. Но как недостаток, компиляция может длиться довольно долго. Пока программа не "соберется", результатов ее мы так и не получим. Языки C, Rust, Go это<strong>компилируемые языки</strong>.</p>
18
<p>При компиляции весь код программы считывается, анализируется и переводится в машинный код. Так как код обрабатывается целиком, то это позволяет избегать многих ошибок в программе - они будут отловлены на стадии анализа. Но как недостаток, компиляция может длиться довольно долго. Пока программа не "соберется", результатов ее мы так и не получим. Языки C, Rust, Go это<strong>компилируемые языки</strong>.</p>
19
<p>При интерпретации, специальная программа интерпретатор, считывает и переводит код построчно, а не целиком. Такой подход позволяет сразу запустить программу и получать ее результаты, но об ошибке в коде мы узнаем лишь когда интерпретатор дойдет до строчки с ней. Языки Python, JS, Ruby, PHP это<strong>интерпретируемые</strong>языки.</p>
19
<p>При интерпретации, специальная программа интерпретатор, считывает и переводит код построчно, а не целиком. Такой подход позволяет сразу запустить программу и получать ее результаты, но об ошибке в коде мы узнаем лишь когда интерпретатор дойдет до строчки с ней. Языки Python, JS, Ruby, PHP это<strong>интерпретируемые</strong>языки.</p>
20
<p><em>В реальности все чуть сложнее. У Python и многих интерпретируемых языков есть частичная компиляция, а у компилируемых языков есть построчная компиляция схожая с интерпретацией. Но основное разделение все еще сохраняется</em></p>
20
<p><em>В реальности все чуть сложнее. У Python и многих интерпретируемых языков есть частичная компиляция, а у компилируемых языков есть построчная компиляция схожая с интерпретацией. Но основное разделение все еще сохраняется</em></p>
21
<p>Процесс исполнения кода на Python выглядит так:</p>
21
<p>Процесс исполнения кода на Python выглядит так:</p>
22
<ul><li>Вы запускаете программу</li>
22
<ul><li>Вы запускаете программу</li>
23
<li>Интерпретатор открывает файлы программы и загружает из них<strong>исходный код</strong></li>
23
<li>Интерпретатор открывает файлы программы и загружает из них<strong>исходный код</strong></li>
24
<li>Затем интерпретатор преобразует исходный код в<strong>байткод</strong>, проверяет ошибки синтаксиса и начинает исполнять по шагам</li>
24
<li>Затем интерпретатор преобразует исходный код в<strong>байткод</strong>, проверяет ошибки синтаксиса и начинает исполнять по шагам</li>
25
</ul><h3>Сильная типизация</h3>
25
</ul><h3>Сильная типизация</h3>
26
<p>С точки зрения компьютера, программа и ее машинный код, это всего лишь набор команд. Он не делает различия между разными данными как числа и буквы, ведь это в конечном итоге выражается в двоичный код. Но для нас, людей, число и буква разные понятия. И в языке программирования их выражают по-разному. То какие значения данных существуют в языке и как они соотносятся друг с другом называется<strong>типизацией</strong>или<strong>типами данных</strong>.</p>
26
<p>С точки зрения компьютера, программа и ее машинный код, это всего лишь набор команд. Он не делает различия между разными данными как числа и буквы, ведь это в конечном итоге выражается в двоичный код. Но для нас, людей, число и буква разные понятия. И в языке программирования их выражают по-разному. То какие значения данных существуют в языке и как они соотносятся друг с другом называется<strong>типизацией</strong>или<strong>типами данных</strong>.</p>
27
<p>Python - это язык с сильной типизацией. Это значит, что он не преобразовывает, без указания на это, значения одних типов в значения других. Или еще говорят, не приводит типы автоматически.</p>
27
<p>Python - это язык с сильной типизацией. Это значит, что он не преобразовывает, без указания на это, значения одних типов в значения других. Или еще говорят, не приводит типы автоматически.</p>
28
<p>Другими словами, Python не даст сложить число со строкой. При попытке сделать что-то подобное мы получим ошибку. Python требует, чтобы любые преобразования типов были явными - программист должен явно использовать в каждом конкретном случае соответствующие функции-преобразователи.</p>
28
<p>Другими словами, Python не даст сложить число со строкой. При попытке сделать что-то подобное мы получим ошибку. Python требует, чтобы любые преобразования типов были явными - программист должен явно использовать в каждом конкретном случае соответствующие функции-преобразователи.</p>
29
<h3>Динамическая типизация</h3>
29
<h3>Динамическая типизация</h3>
30
<p>Есть языки, в которых интерпретатор производит проверку типов, доступности функций и переменных во время выполнения кода. Такие языки называются<strong>динамически типизированными</strong>. Если мы случайно ошиблись и вызвали несуществующую функцию, то ошибка всплывет только во время вызова этой функции.</p>
30
<p>Есть языки, в которых интерпретатор производит проверку типов, доступности функций и переменных во время выполнения кода. Такие языки называются<strong>динамически типизированными</strong>. Если мы случайно ошиблись и вызвали несуществующую функцию, то ошибка всплывет только во время вызова этой функции.</p>
31
<p>В статически типизированных языках подобные ошибки отслеживаются раньше - на этапе анализа исходного текста без запуска кода на выполнение. Слово "статический" как раз означает, что программа не выполняется.</p>
31
<p>В статически типизированных языках подобные ошибки отслеживаются раньше - на этапе анализа исходного текста без запуска кода на выполнение. Слово "статический" как раз означает, что программа не выполняется.</p>
32
<p>Обычно статическими проверками занимаются компиляторы, но существуют и специальные инструменты -<strong>статические анализаторы кода</strong>. Для некоторых языков с динамической типизацией такие анализаторы тоже существуют, но отслеживают значительно меньшее число ошибок.</p>
32
<p>Обычно статическими проверками занимаются компиляторы, но существуют и специальные инструменты -<strong>статические анализаторы кода</strong>. Для некоторых языков с динамической типизацией такие анализаторы тоже существуют, но отслеживают значительно меньшее число ошибок.</p>