Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 7371 / 1135 | Длительность: 09:49:00
Авторские права: Creative Commons Attribution 3.0
Лекция 1:

Почему следует научиться писать программы?

1.6. Терминология: интерпретатор и компилятор

Python - высокоуровневый (high-level) язык программирования, созданный, чтобы быть относительно простым для чтения и написания программ человеком, и для компьютерного чтения и выполнения. Другие высокоуровневые языки: Java, C++, PHP, Ruby, Basic, Perl, JavaScript и множество других.

Имеющиеся аппаратные средства внутри CPU не понимают любой из вышеперечисленных языков. CPU понимает язык, который называется машинным (machine-language). Машинный язык является простым, но очень утомительным в написании, т.к. представляет собой только нули и единицы:

01010001110100100101010000001111
11100110000011101010010101101101
...

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

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

Трансляторы языков программирования делятся на две основные категории: (1) интерпретаторы и (2) компиляторы.

Интерпретатор (interpreter) читает исходный код программы, написанный программистом, анализирует код, и выполняет инструкции на лету (on-the-fly).

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

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

>>> x = 6
>>> print x
6
>>> y = x * 7
>>> print y
42
>>>

В этом примере, мы просим Python запомнить значение 6 и используем метку x, по которой сможем восстановить значение позже. Мы убедились, что Python фактически вспоминает значение, используя print. Затем мы просим Python взять x, умножить его на 7 и полученный результат сохранить в переменной y. После этого мы просим Python вывести на экран значение, хранящееся в переменной y.

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

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

Если у вас ОС Windows, то часто программа, содержащая исполняемые машинные инструкции имеет расширение ".exe" или ".dll", "исполняемый файл" (executable) или "динамически загружаемая библиотека" (dynamically loadable library") соответственно. В Linux и Macintosh нет расширения, который бы однозначно отмечал файл как исполняемый.

Если вы откроете исполняемый файл в текстовом редакторе, выглядит все совершенно ненормально и не читаемо:

^?ELF^A^A^A^@^@^@^@^@^@^@^@^@^B^@^C^@^A^@^@^@\xa0\x82
^D^H4^@^@^@\x90^]^@^@^@^@^@^@4^@ ^@^G^@(^@$^@!^@^F^@
^@^@4^@^@^@4\x80^D^H4\x80^D^H\xe0^@^@^@\xe0^@^@^@^E
^@^@^@^D^@^@^@^C^@^@^@^T^A^@^@^T\x81^D^H^T\x81^D^H^S
^@^@^@^S^@^@^@^D^@^@^@^A^@^@^@^A\^D^HQVhT\x83^D^H\xe8
....

Не просто читать и писать на машинном языке, поэтому хорошо, что у нас есть интерпретаторы и компиляторы, которые позволяют нам писать на языке высокого уровня, таком как Python.

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

Интерпретатор Python написан на языке программирования Си. Вы можете посмотреть исходные коды Python на сайте : http://www.python.org. В ОС Windows исполняемый машинный код для Python, скорее всего, будет находиться в файле с именем:

C:\Python27\python.exe

1.7. Написание программ

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

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

1.8. Что такое программа?

Наиболее общее определение программы – последовательность инструкций на языке Python, которая создана, чтобы что-то делать. Наш простой скрипт hello.py – это программа. Программа может содержать инструкцию, состоящую из одной строки.

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

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

the clown ran after the car and the car ran into the tent
and the tent fell down on the clown and the car

Представим, что вы выполняете это задание, просматривая миллионы строк текста. Честно говоря, это проще сделать с помощью программы на языке Python, которая подсчитывает количество слов в тексте.

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

name = raw_input('Enter file:')
handle = open(name, 'r')
text = handle.read()
words = text.split()
counts = dict()

for word in words:
      counts[word] = counts.get(word,0) + 1
      
bigcount = None
bigword = None
for word,count in counts.items():
      if bigcount is None or count > bigcount:
         bigword = word
         bigcount = count
         
print bigword, bigcount

Исходный текст программы доступен в архиве: http://pycode.ru/files/python/words.zip

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

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

Алексей Виноградов
Алексей Виноградов

Видеокурс выложен на сайте Altube.ru вместо Youtube и плеер Altube не поддерживает субтитры. Прошу решить вопрос о предоставлении русских субтитров в этом англоязычном видеокурсе.

Петр Олейников
Петр Олейников

Данные файлы неоходимы не только для самостоятельных работ, но и для тестов. А по ссылкам в лекциях они не доступны, выдает ошибку 404.