- •§0.1. Базовые знания
- •§0.2. Где достать интерпретатор языка Питон?
- •§0.3. Установка интерпретатора языка Питон в unix
- •§0.3.1. Установка/обновление Питона из грт-пакета
- •§0.3.2. Установка Питона из исходного кода
- •§0.4. Установка Питона в ос Windows
- •§0.5. Запуск программ, написанных на Питоне
- •§0.6. Среда разработки
- •§1.1. Алгоритмы и программы
- •§1.2. Языки программирования и уровни абстракции
- •Глава 1. Базовые понятия
- •§1.3. Формальные и естественные языки
- •§1.4. Интерпретаторы и компиляторы
- •§1.5. Первая программа
- •§1.6. Что такое отладка?
- •§1.6.1. Синтаксические ошибки (syntax errors)
- •§1.6.2. Ошибки выполнения (runtime errors)
- •§1.6.3. Семантические ошибки (semantic errors)
- •§1.6.4. Процесс отладки
- •Глава 2. Переменные, операции и выражения
- •§2.1. Значения и типы
- •§2.2. Преобразование типов
- •§2.3. Переменные
- •§2.4. Имена переменных и ключевые слова
- •§2.5. Выражения
- •§2.6. Выполнение выражений
- •§2.7. Операторы и операнды
- •§2.8. Порядок операций
- •§2.9. Простейшие операции над строками
- •§2.10. Композиция
- •Глава 3. Функции §3.1. Подпрограммы
- •§3.2. Вызовы функций
- •§3.3. Справочная система
- •§3.4. Импорт модулей и математические функции
- •§3.5. Композиция
- •§3.6. Создание функций
- •§3.7. Параметры и аргументы
- •§3.8. Локальные переменные
- •§3.9. Поток выполнения
- •§3.10. Стековые диаграммы
- •§3.11. Функции, возвращающие результат
- •Глава 4. Компьютерная графика
- •Глава 5. Логические выражения, условия и рекурсия §5.1. Комментарии в программах
- •§5.2. Простые логические выражения и логический тип данных
- •§5.3. Логические операторы
- •§5.4. Выполнение по условию и «пустота»
- •§5.5. Ввод данных с клавиатуры
- •§5.6. Альтернативные ветки программы (Chained conditionals)
- •§5.7. Пустые блоки
- •§5.8. Вложенные условные операторы (Nested conditionals)
- •§5.9. Рекурсия
- •§5.10. Стековые диаграммы рекурсивных вызовов
- •§5.11. Максимальная глубина рекурсии
- •§5.12. Числа Фибоначчи
- •Глава 6. Циклы
- •§6.1. Оператор цикла while
- •§6.2. Счетчики
- •§6.3. Бесконечные циклы
- •§6.4. Альтернативная ветка цикла while
- •§6.5. Табулирование функций
- •§6.6. Специальные и экранируемые символы
- •§6.7. Числа Фибоначчи и оператор цикла while
- •§6.8. Вложенные операторы цикла и двумерные таблицы
- •§6.9. Классификация операторов цикла
- •§6.10. Управляющие структуры
- •Глава 7. Строки
- •§7.1. Оператор индексирования
- •§7.2. Длина строки и отрицательные индексы
- •§7.3. Перебор и цикл for
- •§7.4. Срезы строк
- •§7.5. Сравнение строк
- •§7.6. Строки нельзя изменить
- •§7.7. Функция find
- •§7.8. Циклы и счётчики
- •§7.9. Модуль string
- •§7.10. Классификация символов
- •§10.2. Операции над словарями
- •§10.3. Методы словарей
- •§10.4. Использование псевдонимов и копирование
- •§10.5. Разряженные матрицы
- •§10.6. Подсказки
- •§10.7. Тип «длинное целое число»
- •§10.8. Подсчет букв
§1.4. Интерпретаторы и компиляторы
Существует два типа трансляторов, преобразовывающих исходный код программ в машинные команды: интерпретаторы и компиляторы. Интерпретатор читает высокоуровневую программу (или исходный код) и, напрямую взаимодействуя с операционной системой, выполняет ее. Преобразование и выполнение программы выполняется построчно.
Исходный код
Интерпретатор
Операционная система
t>
Результат выполнения программы
В отличие от интерпретаторов, компиляторы полностью преобразовывает исходный код программы в машинный код (или так называемый объектный код), который операционная система может выполнить самостоятельно. Это позволяет выполнять скомпилированные программы даже на тех компьютерах, на которых нет компилятора. Кроме того, такие программы выполняются быстрее за счет того, что компьютеру не приходится каждый раз перед запуском программы выполнять ее разбор и преобразование в понятный для себя вид.
Исходный код
41
Объектный Компилятор (исполняемый)
^Г> код
4
Операционная система
Результат выполнения программы
Впрочем, современные интерпретаторы тоже способны сохранять промежуточный код, на выполнение которого затрачивается меньше времени за счет экономии на синтаксическом разборе исходного кода. Тем не менее, такой промежуточный код понятен
18
Ревизия: 170
Базовые понятия
только интерпретатору, поэтому для запуска программы его наличие на компьютере все равно необходимо.
Надо сказать, что при современных мощностях компьютеров и объемах памяти разница в скорости выполнения программ интерпретаторами и компиляторами уже почти незаметна, но процесс разработки и отладки программ на интерпретируемых языках намного проще2.
Язык Питон является интерпретируемым, т.к. написанные на нем программы выполняет интерпретатор.
Для Windows-версии Питона существует любопытный проект: ру2ехе, позволяющий создавать независимые ехе-файлы из скриптов.
По сути ру2ехе не является собственно компилятором - он преобразовывает скрипт в промежуточный код при помощи самого Питона и помещает в исполняемый файл необходимую часть интерпретатора вместе с этим промежуточным кодом и кодом всех используемых в программе модулей.
Таким образом, вы получаете ехе-файл и один или несколько dll-файлов, содержащих вашу программу вместе со средой выполнения. Теперь вам не нужен отдельный интерпретатор Питона для запуска этой программы.
Однако, полученный исполняемый файл может работать только под операционной системой Windows. Если ваша программа предназначена для выполнения только в этой системе и вы не хотите требовать от пользователей непременной установки Питона, тору2ехе может оказаться весьма полезным инструментом.
Получить дополнительную информацию и скачать ру2ехе можно здесь: http://starship.python.net/crew/theller/py2exe/. Там же можно найти ссылки на другие аналогичные проекты.
§1.5. Первая программа
Настало время запустить интерпретатор Питона и написать первую программу. Существует два способа использования интерпретатора: командный режим и режим выполнения программ из файлов. Если в командной строке интерпретатора Питона вы наберете команду, то интерпретатор тут же выведет результат ее выполнения:
$ python |
|
|
Python 2.3+ (#1, Sep 23 2003, 23:07 |
:16) |
|
[GCC 3.3.1 (SuSE Linux)] on linux2 |
|
|
Type "help", "copyright", "credits" |
or "license" |
for more |
information. |
|
|
>» print "Hello world!" |
|
|
Hello world! |
|
|
Первая строка примера - команда, которая запускает интерпретатор Питона в операционной системе UNIX. В операционной системе Windows для вызова интерпретатора достаточно в меню «Пуск —> Программы» вызвать среду разработки ШЬЕ. Следующие две строки - информация от интерпретатора (номер версии, авторские права - так он
2 Компилируемые языки пока незаменимы в системах реального времени, в которых даже малейшая задержка может повлечь за собой катастрофу (например, такие системы используются для управления маневрами космических кораблей и протеканием сложных физических процессов в лабораторных и производственных условиях).
19
Ревизия: 170
Базовые понятия
представляется). Четвертая начинается с приглашения интерпретатора >», которое обозначает, что он готов выполнять команды. Мы набрали команду print "Hello world! ", т.е. дали указание вывести на экран строку "Hello world! ", и в следующей строке интерпретатор вывел то, что мы просили.
Мы также можем записать программу в файл и использовать интерпретатор для того, чтобы ее выполнить. Такой файл называют сценарием или скриптом (от англ. script-сценарий). Например, используя текстовый редактор, создадим файл progl.py со следующим содержанием:
print "Hello world!"
Названия файлов, содержащих программы на Питоне, принято завершать последовательностью символов .ру (те, кто работают в операционных системах DOS или Windows, назовут это расширением). Для того чтобы выполнить программу, мы должны передать интерпретатору в качестве параметра название скрипта:
$ python progl.py Hello world!
В других программных средах метод запуска программ может отличаться, но принцип вызова интерпретатора останется таким же.
Упражнение. Попробуйте изменить свою первую программу так, чтобы в ней появились синтаксические ошибки: сначала ошибка, связанная с нераспознанной синтаксической единицей (т.е. непонятным словом), а затем - с неправильной структурой программы (можно попробовать поменять местами синтаксические единицы). Поэкспериментируйте.
