Лого Лого Задания Чемпионат Скачать учебник Справочник Блог
Блог↶ Назад к постам

RaskaRaska 1772323200000 20 мин

Что такое программирование?

Ребёнок просит записать его в кружок по программированию? Разбираемся, что такое программирование, пригодится ли оно в жизни, и зачем им заниматься.

Boy Tries Programming

Запрограммированные системы и механизмы окружают современного человека абсолютно везде: начиная от холодильника и заканчивая компьютером (кстати, автор надеется, что путь от компьютера к холодильнику не является вашим основным в жизни). Лифт, светофор, автомобиль, телефон, роутер, терминал оплаты, ваш любимый пасьянс в Windows – всё это запрограммировано. Даже вы – тоже запрограммированы! (Это обращение не к вам – живым родителям, а к искусственно-интеллектуальным роботам, которые наверняка читают эту статью).

Так что же это такое - программирование?

Мы привыкли думать, что компьютер – это только ноутбук или телефон, но на самом деле «умные» устройства окружают нас повсюду, и каждое из них работает благодаря программе, которую заранее написал программист.

Представьте мультиварку. Она умеет готовить плов, суп или тушёные овощи не потому, что она «умная», а потому что в неё заранее заложены разные программы. Для каждого блюда в мультиварке существует свой набор рецептов и правил: какое давление выставить, как сильно нагревать продукты, когда прекратить работу. Но этим всё не ограничивается. Чтобы блюдо получилось, мультиварка должна не просто «включить нагрев», а постоянно измерять температуру, сравнивать её с заданной и решать, что делать дальше: добавить мощности, уменьшить, подождать или отключиться. Она следит за состоянием блюда до того момента, пока вы не откроете крышку, и делает это автоматически, без участия человека.

Программирование – это способ задавать поведение любой программируемой техники: от мультиварки до персонажа на экране компьютера.

Программирование помогает объяснить компьютеру, что именно он должен делать. Программа представляет собой своего рода рецепт, только вместо списка ингредиентов – команды, которые исполняет устройство. Код программы – это инструкции, записанные не на человеческом, а специальном языке, который понимает компьютер. У разных компьютерных языков свои правила, но все они сводятся к одному - описанию логики выполнения (алгоритма поведения или шагов, по которым действует программа). Алгоритм не является чем-то магическим – это просто план действий. Например: «включить», «нагревать 10 минут», «выключить».

Краткий экскурс в историю

kids-ui-Hand-driven-jacquard-loom-width-50

Лента из перфокарт с двоичным кодом узора для жаккардовой машины

Источник: wikipedia

Впервые машину, работу которой можно было задавать с помощью внешних команд, изобрёл Жозеф Мари Жаккар, создавший аж в 1804 году автоматический ткацкий станок. Задание узора с помощью перфокарт позволяло менять программу управления станком без изменений самого механизма станка.

Жаккардовый ткацкий станок

Источник: wikipedia

До этого изобретения логика работы устройств задавалась механически. Если логика меняется, устройство надо переделывать. Например, механические часы работают по определённой логике: секунды сменяются минутами, минуты часами. Смена времени задана маятником или пружиной и зубчиками в механических шестерёнках. Эту логику невозможно изменить без переделки механизма. Это не особенно нужно часам, но изобретение задания логики с помощью внешних команд стало настоящим прорывом в лёгкой промышленности. Теперь не нужно для каждого рисунка изобретать отдельный механизм ткацкого станка или шить вручную. Команды можно переписать и рисунок изменится. К 1812 году во Франции работало 11000 жаккардовых ткацких станков.

kids-ui-Jacquard-width-30

Портрет Жаккара, вытканный на жаккардовом станке

Источник: wikipedia

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

Компьютер и по сей день остаётся вычислительной машиной, а то, что именно он будет «вычислять», задаёт пользователь – программист. Он формулирует последовательность действий, а машина следует им. Всё что умеют компьютеры – это вычислять.

Автор предлагает рассматривать компьютер не как программируемую вычислительную машину, а как программируемый логический автомат. Логические автоматы умеют сравнивать числа, но сравнение - это вычитание. Так что строго формально, компьютер был и остаётся прежде всего вычислительной техникой.

Уже тогда люди поняли, что программирование является хорошим упражнением для развития ума, и ещё в 1960–1970‑е годы появился язык программирования Logo, созданный специально для детей. Знаменитая «черепашка» двигалась по экрану, рисуя линии и показывая, как компьютер выполняет каждую команду.

kids-ui-Remi_turtlegrafik-width-50

Пример применения черепашьей графики в Лого

Источник: wikipedia

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

Переходим к практической части

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

Взглянем на простейшие примеры. Например, программа, которая выводит на экран сообщение «Привет, мир!», состоит всего из одной команды: «напечатать буквы на экране». А игра, где персонаж двигается по нажатию клавиш, использует условия: если нажата стрелка вправо – двигаться вправо. Программа, которая считает от 1 до 10, использует цикл: она повторяет одно и то же действие – увеличивает число на единицу – пока не достигнет нужного значения.

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

Kidsprogramming

Для первых шагов в программировании детям лучше всего подходят языки, которые позволяют сразу видеть результат. Одним из наследников идей Logo является Kidsprogramming – простой и понятный язык, созданный специально для обучения детей основам программирования и логики.

В Kidsprogramming есть команды движения: LEFT (влево), RIGHT (вправо), UP (вверх), DOWN (вниз), MOVE (шаг вперёд). Также есть команды чтения и записи: READ (считать значение) и WRITE (записать значение). Есть условия: IF (если) и ELSE (иначе). Есть циклы для организации повторяющихся действий: REPEAT (повторять), WHILE (пока), BREAK (прервать цикл), RESTART (начать заново) и есть EXIT – команда завершения программы.

Разберём в качестве примера задание «Побег», которое есть на сайте Kidsprogramming.org. По сюжету вы являетесь роботом, и ваш создатель хочет разобрать вас на детали, чтобы собрать другого робота. Не самая приятная перспектива, не правда ли? Поэтому ваша задача – сбежать. Где бы вы ни находились, вам нужно вернуться в клетку (1,1). В рассматриваемом примере робот находится в клетке (2,1), как видно на рисунке ниже:

kids-ui-img1-width-100

Начало игры «Побег»

На языке Kidsprogramming программа побега может выглядеть так:

VAR X = 2
WHILE X > 1
  LEFT
  DEC X
END WHILE
EXIT

С первого взгляда это набор странных слов, но на самом деле здесь всё очень логично. Команда VAR X = 2 сообщает программе, что робот сейчас находится во второй колонке, X – это номер клетки по горизонтали. Для упрощения в этом примере координаты робота не определяются автоматически, поэтому мы задаём их вручную. Дальше начинается самое интересное – цикл WHILE. Он читается как «пока…». То есть строка WHILE X > 1 означает: «Пока X больше 1 – повторяй команды ниже». Робот проверяет условие, видит, что X действительно больше 1, и выполняет команду LEFT, делая шаг влево. После этого он оказывается в клетке 1,1, но значение в X всё ещё равно 2 – ведь мы его не меняли. Чтобы программа понимала, что робот уже продвинулся, мы добавляем команду DEC X, которая уменьшает X на единицу. Теперь X становится равным 1, и при следующей проверке условие X > 1 становится ложным. Действительно: 1 > 1 – ложь, 1 не больше 1, 1 равно 1!
Команда EXIT завершает программу:

kids-ui-img2-width-100

Конец игры «Побег»

В результате робот делает ровно один шаг – и оказывается там, где должен быть по заданию. Это решение подходит для ситуации, когда робот стоит именно в клетке 2,1, и мы вручную задаём его координаты. Хорошая же программа должна работать при любой позиции робота, и не просто выполнять команды, но и отслеживать его позицию.

Разберем также задание «Фрукты», в которой робот начинает свой путь в самой нижней левой клетке поля и должен добраться до двух фруктов, расположенных в клетках 5,4 и 4,5:

kids-ui-img3-width-100

Начало игры «Фрукты»

Задача кажется простой, и так оно и есть! Тут как перемещение черепашки в Logo: нужно дойти до нужных координат, взять фрукты и разложить их по коробкам A и B. Чтобы добраться до первого фрукта, робот поднимается на две клетки, затем смещается вправо три раза, поднимается ещё на одну клетку и движется вправо – так он оказывается в точке 5,4. Здесь он считывает фрукт командой READ A, которая читает объект и сразу помещает его значение в коробку A. После этого робот поднимается и смещается влево – теперь он в клетке 4,5, где лежит второй фрукт. Команда READ B отправляет его значение в коробку B, и программа завершается командой EXIT (рис. 4). Вся последовательность выглядит так:

UP
UP
RIGHT
RIGHT
RIGHT
RIGHT
UP
RIGHT
READ A
UP
LEFT
READ B
EXIT

kids-ui-img4-width-100

Конец игры «Фрукты»

В Kidsprogramming ребёнок видит, как инструкции оживают на экране, демонстрируя, что созданная им программа – это не абстрактная формула, а точный маршрут, по которому движется робот.

LEGO Mindstorms

Для тех, кто увлекается робототехникой, отлично подойдёт LEGO Mindstorms или его современные аналоги. Здесь программирование связано с реальными устройствами: ребёнок собирает робота из деталей LEGO, а затем пишет программу, которая заставляет его двигаться, избегать препятствий или выполнять задания.

kids-ui-img5-width-50

Пример учебного робота LEGO Mindstorms

kids-ui-img6-width-50

Запчасти для сборки робота LEGO Mindstorms

kids-ui-img7-width-50

Робот с датчиками для LEGO Mindstorms

Рассмотрим пример кода для робота в LEGO Mindstorms:

kids-ui-img8-width-100

Пример кода LEGO Mindstorms

Программа «01» начинается с зелёного треугольника – это просто кнопка «Старт», с которой робот начинает работу. Сразу после неё стоит жёлтая петля: она дает команду роботу повторять всё, что внутри, снова и снова, как команда WHILE в Kidsprogramming.

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

Следующий блок – математический. Робот делает определенные вычисления с показаниями расстояния или яркости, например, берёт число и возводит его в куб, то есть умножает само на себя три раза. В конце идет блок движения. Робот едет не просто так, а реагирует на то, что показывает датчик, проводя определенные вычисления, которые влияют на его движение. Чем ближе предмет – тем медленнее он движется.

Вся эта цепочка нужна для того, чтобы робот двигался аккуратно и плавно. Он постоянно смотрит на окружающий мир, пересчитывает данные и корректирует своё движение. Это пример того, как в LEGO Mindstorms можно сделать робота более «умным» – чтобы он не просто ехал вперёд, а реагировал на ситуацию вокруг.

Зачем детям программировать?

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

Программирование не является чем‑то загадочным или доступным лишь избранным. Это не заклинания из Хогвартса, а понятный и логичный способ объяснять устройствам, что им делать. И дети осваивают его удивительно быстро. Стоит лишь показать им, что за сложными словами скрываются простые принципы, – и они начинают видеть в коде не набор символов, а инструмент для творчества. Создание игр, управление роботами, решение задач – всё это превращается в увлекательный процесс, где ребёнок учится думать, пробовать, исправлять ошибки и радоваться результату.

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

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

* Наименования Windows, Lego, Mindstorms, Logo, Хогвартс являются собственностью их владельцев. Данная статья не претендует на владение этими наименованиями, их логотипами и картинками, и использует их исключительно в образовательных и иллюстративных целях.