Учебный алгоритмический язык
Общие сведения
Учебный алгоритмический язык (часто неофициально именуемый «языком Ершова») — это специализированный искусственный язык программирования, разработанный в СССР в 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) при поступлении в технические вузы, где алгоритмический язык считается непригодным для серьезного изучения информатики.
- Педагогические ограничения методологии: упор на визуальное обучение (рисование линий виртуальным роботом) рассчитан исключительно на детей с визуальным типом восприятия. Учащиеся с вербально-логическим или кинестетическим типом восприятия испытывают существенные трудности при попытке усвоить логику программирования через абстрактное вычерчивание узоров, тогда как работа с классическим текстовым кодом могла бы оказаться для них более интуитивной.
Несмотря на это, искусственная поддержка языка сохраняется за счет его интеграции в государственные образовательные стандарты и экзаменационные системы.