Главная страница проекта ИНФОРМАТИКА-21

Наука Школе

Главная страничка занятий в Байтике-4

«ИНФОРМАТИКА-21»: ИННОВАЦИИ ОТ 5-КЛАССНИКОВ ДО БЕСПИЛОТНИКОВ И АЭС

Ткачев Федор Васильевич (info21@inr.ac.ru)
Институт ядерных исследований РАН (ИЯИ РАН), Москва

Доклад для XXVI Международной конференции «Применение новых технологий в образовании»,
Москва, г.о. Троицк, 2
4-25 июня 2015 г.

презентация (pdf)

Аннотация
Проект «Информатика-21» (http://informatika-21.su/) вырос из научной критики избыточной сложности инструментария программистского мейнстрима, которая создаёт искусственную асимметрию информации, приводит к ухудшающему отбору и служит источником сверхприбылей. Первоначально нацеленный на систему образования, проект успешно транслирует инновации в сегменты промышленности с особо высокими требованиями на надёжность программного обеспечения.

После перерыва из-за крайне неблагоприятной ситуации, созданной разгромом РАН, начиная с 2013 года, доклад продолжает традицию отчетов [2]-[8] проекта «Информатика-21» [1].

В этом докладе остановимся на некоторых плохо понимаемых публикой обстоятельствах, связанных с технологической стороной предложений проекта. Такие «трудности перевода» -- следствие мифологии, обильно присутствующей в сознании мейнстрима. С такой мифологией нелегко иметь дело, так как её поддерживает мнение «всех», мнение «профессионалов», ссылки на «промышленную практику» и т.д. и т.п. (Ср. явление спонтанной намагниченности, когда атомам магнитного материала оказывается энергетически выгодно выстроиться в любом, но одинаковом направлении; перемагничивание такого материала в любом другом направлении требует затрат энергии -- т.наз. явление магнитного гистерезиса.)

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

Напомним, что проект ставит целью пропаганду идеи единой рациональной системы вводных курсов информатики и алгоритмики, охватывающих учащихся от 5-х классов средней школы (возраст дифференциации полей лобных долей коры головного мозга, ответственных за планирование действий; способность планирования -- главная для мало-мальски серьёзного программирования) до университетских курсов проектирования компиляторов и программной архитектуры (3-4й годы обучения).

Важно подчеркнуть, что идеология такой системы подчёркивает уникальные возможности для развития интеллекта, которые предоставляет в средней школе алгоритмика (=программирование, очищенное от всего случайного), идеально стыкуясь с классическим взглядом на качественное среднее образование [9].

Такая единая система -- как изначально предполагал проект и как с избытком доказала более чем 10-летняя практика -- возможна на технологической платформе Оберона/Компонентного Паскаля, наследника по прямой линии заслуженного Паскаля. Оберон (=Паскаль-86) создан в результате существенной шлифовки первоначального Паскаля (=Паскаль-70) и «космической» Модулы-2 (=Паскаль-80). К сожалению, калейдоскоп названий этих языков, составляющих на самом деле преемственный ряд нарастающего совершенства, есть результат чисто академического невнимания к вопросам маркетинга со стороны их гениального автора, Тьюринговского лауреата Никлауса Вирта. Этот калейдоскоп названий до сих пор дезориентирует менее компетентные сегменты сферы IT, препятствует знакомству с Обероном и пониманию этого проекта и позволяет IT-индустрии несистемно «драть» из него отдельные технологические идеи и «продавать» их программистскому мейнстриму после переупаковки в «фигурные скобочки» (Java, C#, Go, см. откровенные комментарии в [10]).

Название Компонентный Паскаль (1997) -- это попытка учеников легендарного маэстро восстановить «связь времён». Это один из самых популярных диалектов Оберона, на котором написана уникальная по отношению мощность/размер, а также по качеству архитектуры система программирования Блэкбокс, положенная в основу проекта [1] (она бесплатна, открыта и работает под MS Windows и linux+wine). Её со-дизайнер, Клеменс Шиперски -- автор мирового бестселлера по технологиям программирования [11], сразу после публикации получивший ответственную должность в Microsoft. Одно это может служить самой серьёзной рекомендацией системе Блэкбокс.

Оберон существует в виде мало отличающихся диалектов -- отличия заведомо несущественны для, скажем, ЕГЭ. (Раз уж речь зашла: отсутствие упоминания Оберона в материалах ЕГЭ по информатике не есть свидетельство добросовестности маленькой «команды», контролирующей ЕГЭ. Чтобы понять такое отношение, достаточно заметить, что система Блэкбокс -- это, фигурально выражаясь, технологический смертный приговор для КуМира, при всём уважении к методическим заслугам авторов последнего.)

Нужно ясно понимать, что рассматривать Оберон/Компонентный Паскаль как «ещё один» язык программирования -- это примерно такая же ошибка, как рассматривать десятичную систему счисления с нулём как «ещё одну» числовую систему среди невообразимого множества самых заковыристых непозиционных систем счисления, исторически возникавших у разных народов [12]. Любой вменяемый учитель математики понимает, что разумней сначала выучить арифметику с позиционной десятичной системой, чем мучиться, изучая деление чисел, скажем, с римской нотацией. А после того, как правила арифметики освоены, можно изучать любые исторические системы счисления. Точно так же заведомо проще освоить основы алгоритмики на практически идеальном Обероне, а потом отдельно разбираться с дефектами синтаксиса любого «традиционного/промышленного» языка (обычный принцип отделения мух от котлет). Оберон действительно практически идеален: за ним стоит полвека уникального непрерывного опыта проектирования языков и компиляторов, увенчанного премией имени Тьюринга.

Ещё одно принципиальное свойство Оберона, которое ставит в тупик мейнстримных энтузиастов новых языков программирования -- это отсутствие того, что называют «интересными фичами». Всё, что есть в языке -- это набор элементарных типов (с безупречной статической типизацией), базовые средства структурирования данных (массивы и записи), минимальный набор фундаментальных структур управления (с полной поддержкой методов доказательного программирования Хоора-Дейкстры) -- плюс ещё небольшой, но тщательно отобранный полный набор базовых средств для безграничного и безболезненного расширения программ: «герметичные» модули (обеспечивающие безопасную независимую разработку частей программы) и два элементарных и фундаментальных средства, обеспечивающих объектно-ориентированное программирование -- наследование (от единственного предка) и полиморфизм. Любые «интересные фичи» (вроде множественного наследования) трактуются как производные от элементарных: чем сложнее «фича», тем больше вариантов она допускает -- и тем менее универсальны эти варианты. С другой стороны, в силу минималистичности языка, компилятор Оберона генерирует машинный код такого качества, что «догнать» его компилятор MS Visual C++ смог только после включения всех опций оптимизации [13]. Это означает, что реализация таких «фич» прямо на Обероне по эффективности будет не хуже того, что произведёт приличный компилятор соответствующего языка.

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

Здесь мы подходим к проблеме, с которой стартовал проект «Информатика-21» -- проблеме прикладного программирования, то есть программирования, нацеленного не на производство софта на продажу внешним пользователям, но являющегося частью решения нетривиальной прикладной задачи «для себя». Это физик, делающий сложный расчёт для своих иссследований, или инженер, создающий систему управления для беспилотника или для атомной электростанции, и т.п. Майкрософт, идя по стопам проекта «Информатика-21» (история отражена на сайте проекта [1]) оценили в 2004-м году число таких «непрофессиональных» программистов как превышающее число «профессионалов» в четыре раза. Для таких «непрофессионалов» критичны прозрачность, надёжность и отсутствие «граблей» в инструментарии: такому программисту гораздо труднее переложить на клиента стоимость борьбы с негодными инструментами, потому что клиентом зачастую является он сам.

В такой ситуации преимущества Оберона становятся бесспорными. Этому уже есть целый ряд замечательных примеров. Они интересны тем, что доказывают старый тезис Никлауса Вирта: требования к языку программирования, возникающие при обучении программированию, с одной стороны -- и в ответственной профессиональной работе, с другой, -- это на самом деле одни и те же требования: требования ясности, надёжности, устойчивости к опечаткам и банальным просмотрам по невнимательности, ортогональность «фич», облегчающая полный интеллектуальный контроль программиста за происходящим в её/его программе, и т.п. Даже такое милое учебное требование для самых младших программистов как возможность использования ключевых слов на родном языке [6], как показывает опыт, положительно работает для программистов самых серьёзных, свободно владеющих английским языком (вроде автора этого доклада).

В качестве первого примера можно указать серию (с 2004 года) физических проектов автора доклада, из которых последний -- устранение аномалии в лучшем на данный момент в мире измерении массы нейтрино (см. обзор [14]).

Во-вторых, это переход на Оберон во встроенных системах управления беспилотных летательных аппаратов (БПЛА) в команде главного конструктора Н.В.Чистякова [15]. Переход стал возможен благодаря приходу в команду А.Ширяева, прошедшего на физфаке МГУ через курс «Введение в современное программирование», с которого начался проект «Информатика-21» [2]. С точки зрения обучения программированию интересно здесь то, что удалось полностью исключить обращение к ассемблеру благодаря встроенным в Оберон средствам побитовой работы (тип SET). Здесь важно понимать, что в Обероне, в отличие от С, это достигается без малейших жертв (без нарушения строгой статической типизации и т.п.). Подробнее см. на сайте [15].

В-третьих, это переход на Оберон с комбинации С++ /CORBA, являющейся одним из «промышленных стандартов», в программном обеспечении т.наз. «чёрного ящика» первого реактора на Ростовской атомной электростанции [16]. При этом удалось полностью избавиться от ошибок в старой версии, которые не удавалось окончательно идентифицировать в течение ряда лет, а получившийся софт показал очень высокое качество.

Первое, что интересно в этом «атомном» проекте -- это эффектное опровержение «мейнстримного» предрассудка о критической важности библиотек: в данном случае (как и в физических проектах [14]) оказалось выгодней переписать нужный для проекта набор средств на Обероне, чем бороться с огромными непрозрачными и ненадёжными библиотеками.

Второе интересное обстоятельство -- это признание лидера проекта Д.В.Дагаева в публичном докладе (см. ссылку на видео на сайте [16]), что на изучение Оберона он был сподвигнут материалами проекта «Информатика-21» [1].

В заключение заметим следующее. Читая в [12] описания заковыристых систем счисления, придуманных разными народами в истории человечества, трудно поверить, что люди вообще могли до такого додуматься, не говоря про то, чтобы жить с этим, вместо простой и понятной позиционной десятичной системы. Через пару столетий люди точно так же будут изумляться, что мейнстримом мог считаться такой позор человеческого интеллекта, каким является С++, и что, более того, фанаты этого позора заправляли государственными экзаменами через тридцать лет после того, как Никлаус Вирт получил своего Тьюринга.

Литература

[1] Проект «Информатика-21» (через любой поисковик). URL: http://informatika-21.su/

[2] F.V.Tkachov. Programming Education: a Russian Perspective. Contribution to the Joint Modular Languages Conference (JMLC'2003, Klagenfurt, Austria, August 2003). Published in: Modular Programming Languages. Lecture Notes in Computer Science 2789, Springer-Verlag, 2003, pp.69-77. Русский перевод: http://informatika-21.su/texts/2003-08-JMLC/ru.htm

[3] Министерство образования Республики Беларусь. Язык объектно-технологического программирования Компонентный Паскаль в среде программирования BlackBox. Программа факультативных занятий. Авторы: А.Б.Кондратович и П.А.Шекель.  http://www.adu.by/modules.php?name=News&file=article&sid=770

[4] О.А. Леденева, Ф.В.Ткачев. Компонентный Паскаль и среда Блэкбокс на уроках информатики для 5-классников. Доклад на XIX международной конференции «Применение новых технологий в образовании»; Троицк, Моск. обл., 26-27 июня 2008 г. http://informatika-21.su/events/bytic-xix-2008.htm;

cм. также поурочные отчеты http://informatika-21.su/troitsklicej/vtorojetap.htm

[5] Л.Г.Куркина, Ф.В.Ткачев. Календарно-тематическое планирование кружка «Информатика» для 5-х классов

(печатный вид http://informatika-21.su/troitsklicej/tretijetapplan.pdf 66K;

документ Блэкбокса http://informatika-21.su/troitsklicej/tretijetapplan.odc 10K).

[6] Л.Г. Куркина, Ф.В.Ткачев, И.А.Цвелая. Русифицированные мини-исполнители во вводных курсах программирования. Доклад на XX международной конференции «Применение новых технологий в образовании»; Троицк, Моск. обл., 27-28 июня 2009 г. http://informatika-21.su/events/bytic-xx-2009.htm

[7] Ф.В.Ткачев, И.А.Цвелая. Опыт экспериментальных курсов алгоритмики на платформе Блэкбокс (Компонентный Паскаль). Доклад на XXII международной конференции «Применение новых технологий в образовании»; Троицк, Моск. обл., 29-30 июня 2011 г. http://informatika-21.su/events/bytic-xxii-2011.htm

[8] Ф.В.Ткачев, И.А.Цвелая. Некоторые итоги экспериментальных курсов алгоритмики на платформе Блэкбокс (Компонентный Паскаль). Доклад на XXIII международной конференции «Применение новых технологий в образовании»; Троицк, Моск. обл., 27-28 июня 2012 г. http://informatika-21.su/texts/bytic-xxiii-2012.htm

[9] Ф.В.Ткачев. Математика + Алгоритмика + Языки. http://informatika-21.su/MIL/

[10] Go и Оберон. Откровенные высказывания. http://informatika-21.su/go.htm

[11] Clemens Szyperski. Component Software. 2nd ed. Addison-Wesley, 2002.

[12] Карл Меннингер. История цифр. Центрполиграф, 2013.

[13] Fyodor Tkachov. Talk at Oberon Day @ CERN, 2004, slide #8, http://www.inr.ac.ru/~blackbox/Oberon.Day/talks/ftkachov/ftkachov.htm

[14] Fyodor Tkachov. Talk at ACAT’2013, Beijing, http://indico.ihep.ac.cn/event/2813/session/3/contribution/38/material/slides/2.pdf

[15] Оберон в БПЛА http://informatika-21.su/oberonBPLA.htm

[16] Оберон на Ростовской АЭС http://informatika-21.su/oberonRostovAES.htm

 

Главная страница проекта ИНФОРМАТИКА-21

Наука Школе