Файл: Python среди других языков программирования python.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.12.2023

Просмотров: 25

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

PYTHON СРЕДИ ДРУГИХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

Python — это высокоуровневыйинтерпретируемый кроссплатформенный язык программирования.

Сколько слов вам понятно в этой фразе? В этом юните шаг за шагом мы разберём все понятия из этого= определения.

Почему это важно знать? Кто-то из вас уже знает основы программирования, а кто-то только начинает свой путь. В любом случае нам важно или освежить знания, или познакомиться с этими понятиями. Часть из этой информации вам понадобится при дальнейшем изучении курса и в работе, а часть поможет повысить общую эрудицию в программировании, и вам будет понятно, о чём говорят ваши коллеги и другие программисты.

Начнём с определения термина «язык программирования».

Язык программирования — это строго определённый набор правил, благодаря которому возможно взаимодействие человека с компьютером. Язык программирования — это инструмент, с помощью которого вы можете управлять компьютером.

Все программы, все операции, которые выполняют компьютеры, — результат следования инструкциям, которые для компьютеров пишут люди.

Представьте, что общаетесь с иностранцем, который не знает вашего языка, но вы знаете его язык. Компьютер и есть наш «иностранец».

Люди придумали много языков для общения с компьютером. Это было сделано по разным причинам:

✔️ Иногда нам очень важна скорость работы программы, и тогда инструкцию компьютеру надо давать на максимально понятном для него языке, чтобы не тратить время на перевод.

✔️ Иногда нам важнее, чтобы человек быстрее писал программы, и мы готовы уступить в скорости выполнения программы в пользу скорости написания.

По этому критерию языки программирования разделяются на две категории: высокоуровневые и низкоуровневые.

НИЗКОУРОВНЕВЫЕ ЯЗЫКИ

ВЫСОКОУРОВНЕВЫЕ ЯЗЫКИ

Созданы для удовлетворения нужд конкретной компьютерной архитектуры и учитывают требования «железа», поэтому скорость их работы, в отличие от высокоуровневых, выше.

Созданы с расчётом на то, что их должны понимать люди и с ними должно быть удобно работать. Они независимы: программистам не нужно в точности знать, на каком именно оборудовании будет запускаться их программа.

В случае с высокоуровневыми языками программирования скорость выполнения программы компенсируется скоростью её написания.

Однако работать с ними достаточно тяжело, поэтому они применяются редко и только для узкоспециализированных задач.

За удобство пользования приходится платить памятью. Программы, написанные на высокоуровневых языках, требуют для своей работы и хранения значительно больше памяти, чем программы, написанные на низкоуровневых языках.

Примеры низкоуровневых языков: AssemblerCIL

Примеры высокоуровневых языков: PythonC++JavaKotlinC#JavaScriptPHP и многие другие.


Пришло время разобраться, что означают понятия интерпретируемый и кроссплатформенный в определении языка Python. Эти понятия тесно связаны друг с другом.

Разработчики постоянно оперируют понятиями компилятор и интерпретатор — вы можете встретить их упоминание в документации, книгах, в курсе и в общении с коллегами. Начинающим разработчикам важно разобраться с тем, что стоит за этими терминами, поскольку компиляция и интерпретация являются одними из основных понятий в мире языков программирования. 

Начнём погружение в эту тему с понятия, которое мы часто будем упоминать при объяснении механизмов работы трансляторов — машинный код.

Машинный код (ещё его называют машинный язык) — это набор команд, которые непосредственно выполняются центральным процессором компьютера. Можно сказать, что машинный код, с одной стороны, представляет собой самое низкоуровневое представление компьютерной программы, и в то же время его можно рассматривать как упрощённый и аппаратно-зависимый (то есть зависящий от конкретной аппаратной части) язык программирования.

Сейчас мало кто пишет программы напрямую в машинном коде, хотя раньше он был практически единственным инструментом программиста. С появлением языков высокого уровня необходимость писать программы в машинном коде отпала. К тому же это достаточно непросто и часто приводит к ошибкам, поскольку разработчику при написании программ необходимо управлять отдельными битами и вычислять числовые адреса и константы вручную.

Для того чтобы программистам не было нужды погружаться в изучение и работу с машинным языком, а можно было работать исключительно с языками высокого уровня, были разработаны особые виды программ — трансляторы

Транслятор — программа, которая выполняет преобразование программы, написанной на одном из высокоуровневых языков программирования, в программу, состоящую из машинных команд. Язык, на котором написана входная программа, называется исходным языком, а сама входная программа — исходным кодом. Выходной язык называется целевым языком или объектным кодом. Можно сказать, что трансляторы — это переводчики программ с языков высокого уровня на машинный язык, с которым может работать процессор.




Существует две разновидности трансляторов: компиляторы и интерпретаторы. И, соответственно, языки программирования, использующие тот или иной подход к исполнению программ, называются компилируемыми или интерпретируемыми.

КОМПИЛЯТОР

Компилятор выполняет преобразование (компиляцию) программы, написанной на языке высокого уровня (исходный язык), в машинный код.

Затем этот код записывается в исполняемый файл (например, .exe-файл), который уже может быть запущен как и любая другая обычная программа на вашем компьютере.

Компиляция выполняется единожды, а исполняемый файл (программа) может использоваться в системе, под которую была выполнена компиляция, сколько угодно раз. Однако, если потребуется внести изменения в исходный код, это потребует и повторной компиляции, а процесс компиляции достаточно медленный.

ИНТЕРПРЕТАТОР

Интерпретатор напрямую выполняет текст кода без предварительного его преобразования в машинный код.

Программа всегда остаётся на исходном языке и не может быть запущена на выполнение без использования интерпретатора.

Каждая строка исходного кода переводится в машинный код за один проход интерпретатора.

В данном случае программа в машинном коде существует только во время интерпретации и не сохраняется в виде отдельного файла.

Схематично работу компилятора и интерпретатора можно изобразить так:



ДОСТОИНСТВА И НЕДОСТАТКИ КОМПИЛИРУЕМЫХ И ИНТЕРПРЕТИРУЕМЫХ ЯЗЫКОВ

КОМПИЛИРУЕМЫЕ ЯЗЫКИ

ИНТЕРПРЕТИРУЕМЫЕ ЯЗЫКИ



К основным достоинствам можно отнести скорость выполнения программы, поскольку исходный код преобразуются в машинный код, который после компиляции доступен для последующего исполнения без выполнения дополнительных операций.

Поэтому программы, написанные на компилируемых языках, работают эффективнее и быстрее.

С другой стороны, не стоит забывать, что это добавляет дополнительные ограничения на написание кода и делает его платформозависимым.



Главное их преимущество — это кроссплатформенность.

Кроссплатформенность, или платформонезависимость, — способность программы работать более чем на одной аппаратной платформе или в более чем одной операционной системе.

Итак, интерпретируемые языки не зависят от платформы. Кроме того, при написании программы на интерпретируемых языках мы можем применять продвинутые приёмы динамического программирования, например метапрограммирование (подробнее про метапрограммирование и почему это круто можно прочесть в этой статье).



Одним из их главных недостатков является их платформозависимость. Что это значит? Как мы выяснили выше, результирующий машинный код непосредственно зависит от программной и аппаратной платформы компьютера, на котором производится компиляция программы. Следовательно, программа, скомпилированная под Windows, не запустится на Linux или macOS без дополнительных манипуляций.





Разберём ещё одно важное понятие из мира языков программирования — синтаксис языка программирования.

Синтаксис языка программирования — это набор правил, на основе которых строится программа.

→ Если проводить аналогию с русским языком, синтаксис — это правила орфографии и пунктуации. В языке программирования есть строго определённый набор ключевых слов, которые описывают команды для компьютера. В этих словах важен каждый символ: любое несоответствие или неоднозначность в вашем коде вызовет ошибку.

→ Кроме того, важна и структура кода, который вы пишите, — это можно сравнить с логичностью повествования. Например, если мы рассказываем соседу о том, как нам удалось вырастить сад на нашем садовом участке, и говорим, что сначала дерево выросло, а потом мы посадили семечко, то воспроизведение таких действий будет лишено всякого смысла и не может быть выполнено нашим соседом. С программами аналогично: если будет нарушена структура кода, то инструкция не может быть выполнена компьютером.

Надеемся, что теперь фраза «Python — это высокоуровневый интерпретируемый кроссплатформенный язык программирования» стала для вас более понятной.

ПЛЮСЫ И МИНУСЫ PYTHON

Итак, почему же Python? Популярность этого языка растёт с каждым годом, и появляются всё новые и новые вакансии с требованием знания Python. Самое понятное преимущество для разработчика, на первый взгляд, — тот, у кого есть знания и опыт работы с Python, точно будет востребован на рынке.

?Но почему рынку это нужно? И в чём плюсы и минусы использования Python для решения различных задач?
«Дружелюбный» синтаксис

Недостаток по скорости работы с лихвой покрывается скоростью написания кода и возможностью лёгкой отладки благодаря очень простому и «человекочитабельному» синтаксису (и вы очень скоро в этом убедитесь).
Это один из основных плюсов, которым Python выделяется среди остальных языков программирования.


  Кстати, Инстаграм*начал использовать Python именно по этим причинам. По словам представителей компании, они перешли на Python, поскольку он удобен для разработки: в нём легко разобраться и реализовать нужный продукт, что даёт команде возможность сосредоточиться на разработке важных и нужных для пользователей функций. Кроме того, они отметили, что популярность языка позволяет ускорить найм сотрудников и увеличить команду.



Многогранность применения

  • Python является кроссплатформенным: код, который вы напишете, будет работать на всех популярных платформах (WindowsLinux, Mac).

  • Также у Pythonмножество сфер применения, начиная от программирования микроконтроллеров и заканчивая алгоритмами машинного обучения и анализа данных, благодаря которым Python и приобрёл такую популярность. Также Python можно использовать для разработки игр и работы с компьютерной графикой. С помощью Python очень удобно автоматизировать рутинные задачи, которые могут быть связаны с администрированием различных систем. А ещё Python позволяет быстро и просто создавать сайты.





  Как мы уже отметили в первом пункте, благодаря тому, что код на Python достаточно просто писать, он идеально подходит и часто используется для обучения в качестве первого языка программирования.


Обилие библиотек

Ещё широкому распространению языка Python способствовало обилие дополнительных библиотек — богатая коллекция уже готовых решений неких задач другими программистами с подробной документацией (справочником, описывающим, как пользоваться языком программирования) того, что они сделали. Остаётся только найти их и адаптировать под свои задачи.

Скорость работы

Python вне зависимости от версии является интерпретируемым языком программирования. Компилятор же преобразует всю программу сразу, а потом выполняет её.





Отсюда вытекает первый минус языка Python — это скорость его работы. Интерпретируемые языки затрачивают время на преобразование в машинный код во время выполнения самой программы, в отличие от компилируемых, которые делают это до момента начала выполнения.


  Но этот минус довольно условный, потому что в обычных задачах, где не идёт счёт на доли секунды, разница в скорости работы не будет заметна.


Неоптимальный расход ресурсов памяти

Python довольно гибко работает с типами данных (динамическая типизация будет подробно рассмотрена в следующем модуле) — из-за этого его работа с памятью неоптимальна, и программы на Python потребляют больше ресурсов, чем могли бы.