Перевести страницу

Создание приложений для науки и производства ещё не было таким простым

История языка Ci

Язык Ci был задуман в первой половине 90-х годов 20-го века как замена языку Basic в приложениях, которые используют профессиональные радио-инженеры. Язык Basic в это время получил незаслуженную распространенность, в основном благодаря тому, что его активно насаждал тогдашний глава компании Microsoft, Билл Гейтс. Basic - примитивный непроцедурный язык, который не имеет необходимых возможностей для решения сложных задач. Программы длиной в несколько десятков строк на нём написать относительно легко, но сотни строк - это уже сложная задача. И программы на нём крайне сложно потом модифицировать под меняющиеся требования.

На самом деле, Basic, появившийся в 60-е годы 20-го века, и не предназначался для какого-либо профессионального использования. Если бы не Билл Гейтс, он был бы давно похоронен и забыт, что и необходимо с ним сделать. Для создания автоматизированных программ контроля было решено его не использовать, чтобы не породить на будущее проблемы радио-инженерам, которые эти программы разрабатывали. Но в то время других известных простых алгоритмических языков еще не было, либо они не были известны. Поэтому был создан язык с упрощенными семантикой и синтаксисом, максимально простой в изучении, но при этом эффективный. При создании языка использовались идеи Андрея Акопянца по расширению инструментальных средств языка и подключению языкового процессора к любому приложению. Семантика и синтаксис были почти заимствованы из идей Анатолия Кушниренко и Геннадия Лебедева, которые в то время занимались созданием учебного языка ЛОГО. Это было сделано сознательно, с целью дальнейшего упрощения перехода выпускников школ от ЛОГО к Ci.

Первоначально язык назывался "Интерфейсер" с подачи А.Акопянца. Это был простой рекурсивный текстовый интерпретатор, без возможности создания функций с передачей параметров, но с контролем типов данных, используемых при вызовах операций. Инструмент получился эффективный, он был включен в программное обеспечение промышленной автоматизированной системы контроля и диагностики (АСКД) аппаратуры связи и использовался в ней для создания тест-программ. Его эксплуатация показала правильность выбранного направления, и была начата разработка компилируемого варианта, работающего по принципу шитого кода. Но в связи с экономической ситуацией первой половины 90-х работы были заморожены.

Лишь в 2007-м году, при создании АСКД электронной аппаратуры компилятор и исполняющая система были доработаны, и включены в состав управляющего ПО этой АСКД. Язык получил возможность создания функций с передачей параметров и возврата значения и многие другие удобные средства, которые было невозможно реализовать в интерпретаторе. Язык также получил новое название Ci, что означает C-interface (код функций, реализующих операции языка, а также компилятор и исполняющая системы написаны на чистом Си, без ООП). При этом синтаксис его практически не изменился, семантика осталась такой же простой, какой была у интерпретатора. Далее были проведены несущественные доработки исполняющей системы и библиотек для использования в АСКД трёх версий. В этом варианте язык Ci использовался для создания радио-инженерами тест-программ электронных устройств, тестируемых с помощью АСКД. Для этой АСКД были созданы не менее 200 тест-программ со средней длиной около 2000 строк каждая. Средства языка Ci в этом варианте не допускали возможность расширения языка с помощью динамически загружаемых библиотек. Компилятор с исполняющей системой и библиотекой функций подшивались к приложению статически, создавая монолитную среду компиляции и отладки. В последней версии была сделана возможность отключения компилятора при сборке приложения для выпуска "инженерной" и "пользовательской" версий продукта. Отладочные средства этого варианта были ограничены операцией trace, которая включала и выключала трассировку выполнения алгоритма в консоль.

В 2011 году по личной инициативе автора язык Ci был существенно переработан. Новый вариант позволяет добавлять к языку модули расширения в виде динамически загружаемых библиотек. Чтобы при этом сохранить возможность использования языка Ci на различных платформах, он был привязан к мультиплатформенному фреймворку Qt. Также в язык были добавлены средства для расширенной отладки, разработан интерактивный отладчик, существенно улучшены внутренняя структура и внешние таблицы. Доступные разработчику прикладного ПО средства изменились настолько, что перечень их возможностей стал в разы больше перечня возможностей предыдущего варианта.


В ПО MAX15 используется последний вариант языка Ci, дополненный средствами для приёма и передачи данных через сигналы системы MAX15, с разнесенными по разным динамическим библиотекам компилятором, исполняющей системой и интерактивным отладчиком. Язык впервые сделан полностью переносимым между различными платформами, его работа проверена в Windows 32 бита, Linux 32 бита и Linux 64 бита. Проблем с переносом в другие ОС быть не должно.

Существуют планы по дальнейшему улучшению языка Ci и добавлению новых возможностей - объявления структурных переменных, динамической загрузки оверлеев и т.д. Однако в нынешнем варианте язык Ci может успешно использоваться для создания сложных структурированных алгоритмов. При этом не требуется навыков профессионального программирования, достаточно школьного образования по курсу информатики, в котором качественно преподавалось использование языка ЛОГО.