Программа. Язык программирования

Программа представляет собой совокупность последовательных инструкций, называемых алгоритмами, которые объект, именуемый исполнителем, должен реализовать для достижения конкретной задачи. Например, можно "запрограммировать" человека, создав для него руководство "как готовить оладьи", и он последовательно выполнит все предписания. Это руководство (программа для человека) будет написано на языке, понимаемом человеком, таком как русский или английский.

Однако в программировании чаще всего цели достигаются благодаря не людям, а вычислительной технике, для чего используются специализированные языки программирования. Эта необходимость обоснована тем, что машины не способны "понять" человеческую речь. Языки программирования обладают синтаксической однозначностью и ограниченностью, что их и отличает: они имеют четко определенный набор конструкций и слов, порядок которых нельзя менять.

Определение программы и языка программирования

Основные этапы исторического развития языков программирования

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

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

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

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

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

Эволюция языков программирования

Разнообразие языков программирования

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

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

Классификация языков программирования может быть основана на различных принципах, например, по назначению: для системного или прикладного программирования, разработки веб-приложений, управления базами данных, разработки мобильных приложений и тому подобного. Среди наиболее известных языков выделяются Java, C++, PHP и Python, последний из которых является основной темой этого курса.

Разнообразие языков программирования

Трансляция

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

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

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

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

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

Определения транслятора, компилятора и интерпретатора

Вопросы для самопроверки:

  1. Что представляет собой программа?
  2. Какова роль ассемблеров в программировании?
  3. Какое преимущество имеют языки высокого уровня по сравнению с ассемблерами?
  4. В чем заключается основное преимущество объектно-ориентированных языков?
  5. Чем обусловлено разнообразие языков программирования?

Программа курса:

  1. Описание курса
  2. Эволюция и основы языков программирования

    История программирования в кратком и понятном изложении. Что такое машинный язык, почему появились ассемблеры, языки высокого уровня и объектно-ориентированные. Зачем нужен транслятор, и почему он может быть либо компилятором, либо интерпретатором.

  3. Знакомство с основами Python

    Особенности языка Python, работа в интерактивном режиме и подготовка файлов с исходным кодом.

  4. Типы данных и переменные в Python

    Базовые типы данных в Python: целое, вещественное числа, строки. Изменение типа данных с помощью встроенных функций. Понятие об операциях и переменных. Присваивание значения переменной.

  5. Ввод и вывод данных с Python функциями

    Для вывода на экран в Python 3.x используется функция print(). Вывод может быть предварительно отформатирован. Для ввода данных с клавиатуры используется функция input(), которая возвращает в программу строку.

  6. Логические выражения и операторы в Python

    Логические выражения. Логические операторы языка Python: == (равно), != (не равно), (больше), = (больше или равно), and (логическое И), or (логическое ИЛИ), not (отрицание).

  7. Ветвление и условные операторы в Python

    Управление потоком программы с помощью операторов if-else. Создание логических ветвлений, обработка условий и выполнение разных блоков кода в Python.

  8. Изучите обработку ошибок и исключений в Python

    Общее представление об ошибках и исключениях в языке программирования Python. SyntaxError, NameError, TypeError, ValueError, ZeroDivisionError. Обработка исключений с помощью инструкции try-except.

  9. Множественное ветвление с if-elif-else в Python

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

  10. Цикл while и его применение в Python

    С помощью циклов в программировании организуется многократное следующее друг за другом выполнение одних и тех же участков кода. Бывают циклы с условием и со счетчиком. К первым относится цикл while, или цикл "пока".

  11. Изучите функции и их применение в Python

    Функции - важный элемент структурного программирования. Они позволяют обособить участок кода, выполняющий определенную задачу. В дальнейшем к нему можно обращаться из разных мест программы по имени, которым он назван. В языке Python функции определяются с помощью оператора def.

  12. Локальные и глобальные переменные в Python

    В программировании важное значение имеет представление о локальных и глобальных переменных. Локальные переменные существуют внутри функций и не доступны за ее пределами. Глобальные переменные видны во всей программе.

  13. Оператор return и возврат значений в Python

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

  14. Параметры и аргументы функций в Python

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

  15. Встроенные функции Python для работы

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

  16. Использование модулей в Python

    Использование модулей в программировании позволяет изолировать код, выполняющий частные задачи, в отдельные файлы. После чего обращаться к нему из разных программ. Создание модулей - следующий шаг после функций, когда участок кода обособляется внутри одного файла-программы. Для языка Python есть множество встроенных и сторонних модулей.

  17. Генерация псевдослучайных чисел в Python

    Для генерации псевдослучайных чисел в языке программирования Python используются функции модуля random. Функция random() генерирует вещественное число от 0 до 1. Функции randint() и randrange() производят целые псевдослучайные числа в указанных диапазонах.

  18. Изучение списков в Python - основы и операции

    Списки в Python - это аналог массивов в других языках программирования. Однако список может содержать элементы разных типов. В терминологии Python список - это изменяемая упорядоченная структура данных. Можно заменять его элементы, добавлять и удалять их, брать срезы. В язык встроены методы для работы со списками.

  19. Изучение цикла for в Python

    Цикл for в языке программирования Python предназначен для перебора элементов структур данных (списков, словарей, кортежей, множеств) и многих других объектов. Это не цикл со счетчиком, каковым является for во многих других языках. Нередко цикл for используется совместно с функцией range(), генерирующей объекты-диапазоны.

  20. Строки в Python - методы и срезы

    В Python строки - это неизменяемые последовательности символов или подстрок. Из них, так же как из списков, можно извлекать отдельные символы с помощью индексов или подстроки с помощью взятия срезов. В языке Python есть множество встроенных строковых методов, позволяющих упростить обработку строк.

  21. Кортежи - неизменяемые структуры данных

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

  22. Словари в Python - работа с ключами и значениями

    Словарь в Python - это изменяемая неупорядоченная структура данных, элементами которой являются пары "ключ:значение". В словари можно добавлять и удалять элементы, изменять значения ключей. В Python словари имеют ряд методов, упрощающих работу с ними.

  23. Работа с файлами в Python

    В языке программирования Python открытие файлов выполняется с помощью функции open(), которой передается два аргумента - имя файла и режим. Файл может быть открыт в режиме чтения, записи, добавления. Также может быть указан тип файла - текстовый или бинарный. Для файлов есть ряд встроенных методов чтения, записи и др.