Что такое logo и почему он до сих пор важен

12.09.2026 · 5 мин

Помните, как в детстве вы рисовали на бумаге, ведя карандашом по линейке? Переносите эту аналогию на экран компьютера, добавляете маленькую «черепашку» и командуете ей: «вперёд», «направо». Поздравляю — вы только что изобрели 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), которая ползает по экрану и оставляет за собой след. Команды простые:

Хотите нарисовать квадрат? Легко:

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
Процедуры строятся как кирпичики друг на друге
Простая процедура SQUARE становится основой для FLOWER, а FLOWER — для GARDEN

Кому подходит logo

Logo не претендует на звание индустриального стандарта. Его задача — снять страх перед программированием.

Практический вывод

Logo — это не музейный экспонат. Это инструмент, который работает уже почти 60 лет по одной простой причине: он делает ровно то, для чего создан — учит думать алгоритмически.

Черепашка на экране — это метафора: ты даёшь команды, видишь результат, исправляешь ошибки, улучшаешь. Цикл обратной связи работает мгновенно. Никакого «напиши 500 строк, а потом запускай».

Если вы преподаёте программирование или хотите впервые понять, что это такое — попробуйте. Скачайте UCBLogo или MSWLogo, напишите FORWARD 100, нажмите Enter. Черепашка двинется.

Просто и честно.

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.