Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 21

Следующий пример написан на Java:

public class Overlord {

public static void main (String[] args) {

int language = 3;

System.out.format("Language %d: I am Java! Scarier than C!\n", language);

}

}

Если вы никогда не писали программ ни на одном из этих языков, вам может

быть интересно, что все это такое. Некоторые языки нагружены значительным

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

они требуют, чтобы вы указали компьютеру некоторые низкоуровневые детали. По-

звольте мне объяснить.

Языки программирования имеют переменные — имена значений, которые вы

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

тип каждой переменной, который определяет, сколько места переменная займет

в памяти и что с ней можно сделать. Компьютер использует эту информацию, что-

бы скомпилировать программу в очень низкоуровневый машинный язык (харак-

терный для определенного аппаратного обеспечения, машины понимают его лучше,

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

их язык должен быть понятнее: людям или компьютерам. Объявление типов пере-

менных помогает компьютеру найти некоторые ошибки и работать быстрее, но это

требует предварительного продумывания и набора кода. Большая часть кода при-

меров, написанного на языках С, С++ и Java, требует объявления типов переменных.

Например, в каждом из примеров объявление типа int было необходимо для того,

чтобы переменная language считалась целым числом. (Другие типы включают в себя

числа с плавающей точкой, вроде 3.14159, и символьные или текстовые данные,

которые хранятся по-разному.)

Почему же они называются статическими языками? Потому что переменные

в этих языках не могут изменять свой тип, они статичны. Целое число — это целое

число, раз и навсегда.

Динамические языки — полная противоположность статических (они также на-

зываются скриптовыми языками). Эти языки программирования не заставляют

вас определять тип переменной перед тем, как ее использовать. Если вы напишете

36

Глава 1. Python: с чем его едят

что-то вроде x = 5, динамический язык определит, что 5 — это целое число, поэтому

переменная x имеет тип int. Эти языки позволяют вам достичь большего, написав

меньшее количество строк кода. Вместо того чтобы компилироваться, они интер-

претируются программой, которая называется — сюрприз! — интерпретатором.

Динамические языки обычно медленнее, чем статические, но их скорость повы-

шается, поскольку интерпретаторы становятся более оптимизированными. Долгое

время динамические языки использовались для коротких программ (сценариев),

которые часто предназначались для того, чтобы подготовить данные для обработ-

ки более длинными программами, написанными на статических языках. Такие

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

больше годятся для этой цели, в наши дни они могут решать и самые трудные за-

дачи по обработке данных.

Многоцелевым динамическим языком многие годы был Perl. Язык программи-

рования Perl очень мощный и имеет множество библиотек. Однако его синтаксис

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