Что такое logo и почему он до сих пор важен
Помните, как в детстве вы рисовали на бумаге, ведя карандашом по линейке? Переносите эту аналогию на экран компьютера, добавляете маленькую «черепашку» и командуете ей: «вперёд», «направо». Поздравляю — вы только что изобрели Logo Programming Language, язык, который десятилетиями учит детей думать как программисты.
Но что именно делает Logo таким особенным? И почему он до сих пор существует, когда есть Python, JavaScript и сотни других языков? Разберёмся.
Что такое logo
Logo — это диалект языка Lisp (один из старейших языков программирования, 1958 года), но созданный специально для обучения. Представьте себе: в 1967 году Сеймур Паперт и его коллеги из MIT решили, что дети должны не просто играть на компьютере, а программировать его — но без барьеров в виде сложного синтаксиса.
Главная фишка: интерактивность. Logo работает как интерпретатор (читает команды строка за строкой, сразу их выполняет), а не компилятор. Написал команду — увидел результат. Ошибся — получил понятное сообщение.
Пример из статьи:
forward 50
Черепашка двигается на 50 шагов. А если написать fowad (опечатка), Logo ответит:
I don't know how to fowad
(Слово «fowad» не является встроенной командой.)
Черепашья графика, или turtle graphics
Вот тут начинается магия. В центре Logo — виртуальная черепашка (turtle), которая ползает по экрану и оставляет за собой след. Команды простые:
FORWARD 100— двигайся вперёд на 100 шаговRIGHT 90— поверни направо на 90 градусовREPEAT 4 [...]— повтори 4 раза
Хотите нарисовать квадрат? Легко:
TO SQUARE
REPEAT 4 [FORWARD 50 RIGHT 90]
END
Поместили эту процедуру в другую:
TO FLOWER
REPEAT 36 [RIGHT 10 SQUARE]
END
И вот уже из квадратов получается цветок. Это и есть модульность — одна процедура использует другую как кирпичик.
Модульность: строй из маленьких блоков
Logo-программы — это коллекции маленьких процедур (процедура = функция = блок кода). Вы учите язык новым словам. Это как если бы вы учили ребёнка: сначала «мама», потом «мама, дай воду», потом «мама, я хочу воды».
TO SET-RANDOM-POSITION
FORWARD RANDOM 100
RIGHT RANDOM 360
END
Процедура SET-RANDOM-POSITION использует встроенные команды FORWARD и RIGHT, но добавляет к ним элемент случайности через RANDOM. Теперь это слово работает как любая другая команда Logo.
Гибкость типов данных
Большинство языков строго требуют: «скажи мне, что это — число или строка, целое или дробное». Logo относится к этому спокойнее. Числа — это тоже слова, но с ними можно делать арифметику.
PRINT 3 + 4
7
PRINT 3 / 4
.75
А вот что удивит опытных программистов:
PRINT WORD "apple "sauce
applesauce
WORD склеивает два слова. PRINT 12 + WORD "3 "4 даст 46 — Logo автоматически пытается сложить число и «слово, которое выглядит как число».
Это не баг, это философия: компьютер подстраивается под человека, а не наоборот.
Рекурсия без боли
Logo поддерживает рекурсию (процедура вызывает саму себя) — и делает это элегантно:
TO FACTORIAL :NUMBER
IF :NUMBER = 1 [OUTPUT 1]
OUTPUT :NUMBER * FACTORIAL :NUMBER - 1
END
FACTORIAL 5 вернёт 120 (5 × 4 × 3 × 2 × 1). Для сравнения, вот процедура переворота списка:
TO REVERSE :STUFF
IFELSE EQUAL? COUNT :STUFF 1 [OUTPUT FIRST :STUFF]
[OUTPUT SENTENCE REVERSE BUTFIRST :STUFF FIRST :STUFF]
END
Да, страшно выглядит. Но принцип простой: возьми первый элемент, положи его в конец, повтори для остатка.
Расширенные версии
Базовый Logo есть везде. Но существуют версии с дополнительными возможностями:
| Версия | Особенность |
|---|---|
| MicroWorlds Logo | Многозадачность (несколько процессов одновременно) |
| StarLogo | Массово параллельное исполнение (тысячи черепах) |
| Object Logo | Объектно-ориентированное программирование |
Например, в MicroWorlds можно запустить движение черепахи в фоне и тут же напечатать «HELLO» — они работают параллельно:
LAUNCH [REPEAT 9999 [FORWARD 1 RIGHT 1]]
PRINT "HELLO
ЧЕРЕПАШЬЯ ГРАФИКА: ОТ КОДА К РИСУНКУ
─────────────────────────────────────
Команда Действие Результат
──────── ───────── ─────────
FORWARD 50 → движение → ─────────────
┌─────────────┐
RIGHT 90 → поворот → │ ┌──┐ │
FORWARD 50 → движение → │ │🐢│ │
RIGHT 90 → поворот → │ └──┘ │
FORWARD 50 → движение → └─────────────┘
RIGHT 90 → поворот → Квадрат 50×50
FORWARD 50 → движение →
REPEAT 4 [FORWARD 50 RIGHT 90] = 1 квадрат за 4 команды
АРХИТЕКТУРА ПРОЦЕДУР В LOGO
───────────────────────────
┌─────────────────┐
│ GARDEN │ (самый верхний уровень)
│ REPEAT 25 [...] │
└────────┬────────┘
│ вызывает
▼
┌─────────────────┐
│ FLOWER │ (строит цветок)
│ REPEAT 36 [...] │
└────────┬────────┘
│ вызывает
▼
┌─────────────────┐
│ SQUARE │ (базовый кирпичик)
│ REPEAT 4 [...] │
└─────────────────┘
SQUARE → FLOWER → GARDEN
Процедуры строятся как кирпичики друг на друге
Кому подходит logo
- Детям 6–12 лет: простые команды, мгновенный визуальный результат
- Школам: бесплатные реализации (UCBLogo, MSWLogo), простая установка
- Преподавателям: можно объяснить циклы, рекурсию, функции через рисунки
- Взрослым новичкам: мягкий старт перед «серьёзными» языками
Logo не претендует на звание индустриального стандарта. Его задача — снять страх перед программированием.
Практический вывод
Logo — это не музейный экспонат. Это инструмент, который работает уже почти 60 лет по одной простой причине: он делает ровно то, для чего создан — учит думать алгоритмически.
Черепашка на экране — это метафора: ты даёшь команды, видишь результат, исправляешь ошибки, улучшаешь. Цикл обратной связи работает мгновенно. Никакого «напиши 500 строк, а потом запускай».
Если вы преподаёте программирование или хотите впервые понять, что это такое — попробуйте. Скачайте UCBLogo или MSWLogo, напишите FORWARD 100, нажмите Enter. Черепашка двинется.
Просто и честно.
Ссылки
- Logo Foundation — What Is Logo — первичный источник статьи
- UCBLogo — бесплатная реализация для Unix/Windows
- MSWLogo — версия для Windows
- Brian Harvey — Computer Science Logo Style — трёхтомник по Logo (MIT Press)
Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.