Начнем с одной небольшой тайны и ее разгадки. Что, по-вашему, означают следующие две строки?
>(Ряд 1): (RS) K18, ssk, k1, turn work.
>(Ряд 2): (WS) Sl 1 pwise, p5, p2tog, p1, turn.
Выглядит как какая-то компьютерная программа. На самом деле это схема для вязания, а если точнее, фрагмент, который описывает, как связать пятку носка. Для меня эти строки имеют не больше смысла, чем кроссворд из газеты New York Times — для моего кота, но моя жена понимает их совершенно точно. Если вы вяжете, то тоже их поймете.
Рассмотрим еще один пример. Вы сразу поймете его предназначение, хотя и не сразу сможете определить результат:
>½ столовой ложки масла или маргарина;
>½ столовой ложки сливок;
>2 ½ стакана муки;
>1 чайная ложка соли;
>1 чайная ложка сахара;
>4 стакана картофельного пюре (охлажденного).
>Перед тем как добавить муку, убедитесь, что все ингредиенты охлаждены.
>Смешайте все ингредиенты.
>Тщательно замесите.
>Сделайте 20 шариков. Держите их охлажденными до следующего этапа.
>Для каждого шарика разровняйте муку на тряпочке.
>Раскатайте шарик при помощи рифленой скалки.
>Жарьте на сковороде до подрумянивания.
>Переверните и обжарьте другую сторону.
Даже если вы не готовите, вы сможете распознать кулинарный рецепт: список продуктов, за которым следуют указания по приготовлению. Но что получится в итоге? Это лефсе, норвежский деликатес, который напоминает тортилью. Полейте блюдо маслом, вареньем или чем-нибудь еще, сверните и наслаждайтесь.
Схема для вязания и рецепт имеют несколько похожих моментов:
• фиксированный словарь, состоящий из слов, аббревиатур и символов. Некоторые могут быть знакомы, другие же покрыты тайной;
• правила, описывающие, что и где можно говорить, — синтаксис;
• последовательность операций, которые должны быть выполнены по порядку;
• в некоторых случаях — повторение определенных операций (цикл), например способ приготовления каждого кусочка лефсе;
• в некоторых случаях — ссылка на другую последовательность операций (говоря компьютерными терминами, функция). Например, когда вы прочтете приведенный выше рецепт, вам может понадобиться рецепт приготовления картофельного пюре;
• предполагаемое знание контекста. Рецепт подразумевает, что вы знаете, что такое вода и как ее кипятить. Схема для вязания подразумевает, что вы умеете держать спицы в руках;
• ожидаемый результат. В наших примерах результатом будет предмет для ног и предмет для желудка. Главное — не перепутать.
Все эти идеи вы можете встретить и в компьютерных программах. Я воспользовался этими «непрограммами», чтобы показать, что программы не так страшны, как может показаться. Нужно всего лишь выучить верные слова и правила.
Теперь оставим этих дублеров и рассмотрим настоящую программу. Что она делает?
>for countdown in 5, 4, 3, 2, 1, "hey!":
>····print(countdown)
Если вы считаете, что это программа, написанная на языке программирования Python, которая выводит на экран следующее:
>5
>4
>3
>2
>1
>hey!
то вы знаете, что язык программирования Python выучить проще, чем понять рецепт или схему для вязания. К тому же вы можете тренироваться писать на языке программирования Python, сидя за удобным и безопасным столом, избегая опасностей вроде горячей воды и спиц.
Программа, написанная на языке программирования Python, содержит несколько специальных слов и символов: for, in, print, запятые, точки с запятой, скобки и т. д., — которые являются важной частью синтаксиса языка. Хорошая новость заключается в том, что язык программирования Python имеет более доступный и менее объемный синтаксис, чем большинство других языков программирования. Он кажется более понятным — почти как рецепт.
Вот еще одна небольшая программа, написанная на языке программирования Python, которая выбирает новостные клише из списка и выводит их на экран:
>cliches = [
>····"At the end of the day",
>····"Having said that",
>····"The fact of the matter is",
>····"Be that as it may",
>····"The bottom line is",
>····"If you will",
>····]
>print(cliches[3])
Эта программа выведет четвертое клише:
>Be that as it may
Списки — вроде cliches — представляют собой последовательность значений, доступ к которым осуществляется с использованием