Учебный алгоритмический язык

Общие сведения

Учебный алгоритмический язык (часто неофициально именуемый «языком Ершова») — это специализированный искусственный язык программирования, разработанный в СССР в 1980-е годы исключительно для образовательных целей. Главной задачей данного языка было обучение школьников базовым концепциям алгоритмизации и информатики в рамках так называемого «безмашинного курса».

Поскольку в период создания языка вычислительная техника в средних школах практически отсутствовала, язык создавался как инструмент для написания и анализа алгоритмов исключительно на бумаге (в учебниках и тетрадях). Разработчики приняли решение отказаться от использования реальных индустриальных языков программирования (таких как BASIC или Паскаль) в пользу полностью русскоязычного синтаксиса, чтобы исключить барьер в виде необходимости изучения английского алфавита и иностранных зарезервированных слов.

История создания и развитие

Инициатором создания учебного алгоритмического языка и внедрения курса информатики в школьную программу выступил советский ученый, академик А. П. Ершов, который в 1980-е годы активно занимался вопросами компьютерной лингвистики и образовательными инициативами. Впоследствии язык был несколько доработан и интегрирован в школьные пособия другими авторами, в частности А. Г. Кушниренко и Г. В. Лебедевым.

Изначально программы на этом языке не предполагали машинного исполнения. Однако в 1985 году на механико-математическом факультете МГУ был разработан компилятор, получивший название «Е-практикум» (названный в честь академика Ершова). Этот программный комплекс позволил запускать учебный код на немногочисленных школьных компьютерах того времени (таких как советские ПЭВМ «Корвет» и японские компьютеры MSX стандарта Yamaha).

В 1990 году на базе языка была разработана программная среда «КуМир» (аббревиатура от «Комплект Учебных МИРов»), которая продолжила использоваться для обучения. Спустя десятилетия, на фоне политики импортозамещения в Российской Федерации, в 2018 году была выпущена обновленная версия среды программирования «КуМир 2.0». В настоящее время алгоритмический язык продолжает применяться в образовательных учреждениях и официально включен в задания Единого государственного экзамена (ЕГЭ) по информатике.

Парадигмы и методология

С алгоритмической точки зрения язык базируется на парадигме структурного процедурного программирования. Архитектурно он представляет собой гибрид, сформированный под сильным влиянием двух исторических языков программирования:

  • Алгол — классический язык, широко использовавшийся в советских высших учебных заведениях в 1970-е годы. От него алгоритмический язык унаследовал строгую блочную структуру и систему базовых типов данных.
  • Лого — язык, разработанный в США для обучения детей через управление виртуальными объектами. От него была заимствована концепция «исполнителей».

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

Типы данных и переменные

Система типов данных в учебном алгоритмическом языке полностью русифицирована и опирается на стандарты языка Алгол. Переменные объявляются с использованием сокращений русских слов:

  • цел
    — целочисленный тип данных (соответствует Integer).
  • вещ
    — вещественный тип данных (числа с плавающей точкой, соответствует Real).
  • лог
    — логический тип данных (соответствует Boolean).
  • сим
    — символьный тип данных (соответствует Char).

Для работы с массивами введена концепция «табличных величин». Массив объявляется с добавлением ключевого слова

таб

(таблица). Например, конструкция

цел таб

описывает массив целых чисел. Идентификаторы (имена переменных) также традиционно задавались буквами русского или латинского алфавита (например,

цел А, В, С

).

Синтаксис и структура программы

Оператор присваивания в алгоритмическом языке заимствован из Алгола и Паскаля и записывается как

:=

.

Структура программы стилизована под классическую школьную задачу по физике или математике и состоит из следующих строго регламентированных блоков:

  • алг
    — объявление названия алгоритма (аналог заголовка программы).
  • дано
    — секция, описывающая исходные условия или входящие данные, при которых алгоритм применим (не несет строгого вычислительного смысла и выступает скорее как структурированный комментарий).
  • надо
    — цель алгоритма, описание того, что должно быть получено в результате (также выступает как метаданные).
  • нач
    — начало исполняемого блока кода (аналог оператора begin).
  • кон
    — конец исполняемого блока кода (аналог оператора end).

Управляющие циклические конструкции также снабжены русскоязычными операторными скобками:

  • нц
    — начало цикла.
  • кц
    — конец цикла.

Классический цикл со счетчиком (for) формулируется фразой:

для i от 1 до N

. Операции ввода и вывода данных осуществляются с помощью интуитивно понятных команд

ввод

и

вывод

. Поддерживается использование локальных и общих (глобальных) переменных.

Пример программного кода

Классический пример реализации алгоритма вычисления суммы квадратов чисел от 1 до N на учебном алгоритмическом языке (секции "дано" и "надо" в практическом коде могут быть опущены):

алг сумма квадратов
нач
  цел N, i, S
  ввод N
  S := 0
  нц для i от 1 до N
    S := S + i * i
  кц
  вывод S
кон

В данном алгоритме описываются переменные, запрашивается пользовательский ввод предельного числа N, инициализируется счетчик суммы, после чего в блоке от

нц

до

кц

циклически накапливается сумма квадратов, которая затем выводится на экран.

Критика и недостатки

Учебный алгоритмический язык регулярно подвергается сокрушительной критике со стороны профессионального программистского сообщества и преподавателей высших учебных заведений. Основным и фундаментальным недостатком языка является его сугубо искусственная, изолированная природа: язык никогда не имел и не имеет практического значения в реальной индустрии разработки программного обеспечения.

К основным аргументам критиков относятся:

  • Синтаксическая архаичность: синтаксис языка опирается на устаревшие концепции 1960-х годов и не отражает современные парадигмы программирования.
  • Изоляция от мировых стандартов: школьники, изучившие русифицированный псевдокод, сталкиваются с необходимостью полного переобучения (перехода на реальные языки, такие как Паскаль, C или Python) при поступлении в технические вузы, где алгоритмический язык считается непригодным для серьезного изучения информатики.
  • Педагогические ограничения методологии: упор на визуальное обучение (рисование линий виртуальным роботом) рассчитан исключительно на детей с визуальным типом восприятия. Учащиеся с вербально-логическим или кинестетическим типом восприятия испытывают существенные трудности при попытке усвоить логику программирования через абстрактное вычерчивание узоров, тогда как работа с классическим текстовым кодом могла бы оказаться для них более интуитивной.

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

См. также

Фортран Haskell

Смотреть видео