Прежде чем продолжить цикл статей о плохом и хорошем коде для чайников, хотелось бы чуть более подробно остановиться на том, что из себя представляет ISBL.
Как уже было сказано ранее, ISBL – встроенный в платформу IS-Builder высокоуровневый интерпретируемый язык программирования, предназначенный главным образом для описания алгоритмов решения прикладных задач. Что это значит? В первую очередь то, что внутри системы DIRECTUM на ISBL можно сделать всё (ну или почти всё, поскольку существует такая вещь, как ограничения платформы) при наличии хотя бы небольшого опыта в программировании. Но и отсутствие такого опыта серьёзным препятствием для изучения ISBL не станет: у него несложный синтаксис и развитая документация. Опытных же разработчиков порадует встроенный редактор текста ISBL с развитым CodeInsight и отладчик с возможностью отслеживания длительности выполнения фрагментов кода.
Как всякий уважающий себя язык программирования, ISBL включает в себя поддержку констант, переменных, многомерных массивов, функций, циклов и операторов ветвления. Плюсом ко всему этому прилагается возможность использования COM-объектов, что позволяет программно работать, например, с документами MS Word и Excel, а в последние версии входит библиотека NPOComputer.DocumentProcessing.dll, которую можно применять для работы с документами Open Office и Libre Office.
С чего начинается знакомство с новым языком программирования? Разумеется, с его синтаксиса, без знания которого будет затруднительно написать даже классический вывод на экран строки "Hello, world!". И у ISBL, как уже упоминалось, синтаксис довольно прост.
Сам по себе факт наличия такого элемента, как комментарии, вряд ли нуждается в разъяснениях. Комментарии позволяют как раскрыть туманный смысл участка выполняемого кода, так и временно заблокировать его выполнение без удаления. ISBL поддерживает комментарии двух видов:
// Всё, что написано после '//' и до конца строки – однострочный комментарий.
/* Всё, что написано между символами '/*' и '*/',
считается комментарием, включая переносы строк. Кстати, символ '*/' в
строке выше считается окончанием комментария несмотря на кавычки,
то есть при желании можно закомментировать таким образом часть одной строки */
Для того, чтобы объявить и инициализировать переменную, в неё достаточно записать любое значение. При этом явно указывать тип данных в большинстве случаев не требуется, так как ISBL поддерживает динамическую типизацию. Это означает, что переменная будет иметь тип, определяемый присваиваемым значением. Указать тип переменной можно и явно (например, для корректной работы CodeInsight), но только если определяемый тип данных не является простым. Ниже перечислены основные типы данных, используемые в ISBL:
100500
146.95
4.2e-3
Строковый. Может содержать произвольное количество символов, заключённых в кавычки или апострофы:
‘Строка в апострофах’
“Ещё одна строка, теперь в кавычках”
“31.12”
“01.01.2018”
“31.12.2017 23:59:59”
Константой называется любое постоянное в рамках определённого участка кода значение. В ISBL константы делятся на явные (заданные разработчиком) и системные (зарезервированные имена со строго определёнными значениями). Системные константы – это NULL, nil, FALSE, SYSREQ_NAME и т.д.
Каждый раз, когда некоторое количество данных, объединённых каким-либо признаком, необходимо сохранить в одном месте, для этого можно и нужно использовать структуры данных. ISBL поддерживает следующие из них:
CreateArray() //Создаёт многомерный массив
ArrayOf() //Создаёт одномерный массив
ArrayDimCount() //Получает количество измерений массива
ArrayHighBound() //Получает верхнюю границу измерения массива
ArrayLowBound() //Получает нижнюю границу измерения массива
ArrayReDim() //Изменяет размерность массива
Подробнее об этих функциях и параметрах, которые они принимают на входе, можно прочесть в справке по ним в компоненте «Функции ISBL».
Данные любого типа бессмысленны, если ими нельзя манипулировать: читать, изменять, записывать, создавать и удалять. Для базовой работы с данными в ISBL поддерживаются следующие операторы:
Помимо этого, в ISBL поддерживаются операторы ветвления и цикла:
if <Condition>
<TrueOperationsBlock>
else
<FalseOperationsBlock>
endif
Цикл по значениям:
foreach <Element> in <ElementList>
<SomeOperations>
endforeach
Такой цикл можно экстренно прервать, используя ключевое слово exitfor.
while <Condition>
<SomeOperations>
endwhile
А также есть две конструкции для обработки исключений:
try
<SomeOperations>
except
<ExceptionOperations>
endexcept
и
try
<SomeOperations>
finally
<FinallyOperations>
endfinally
Подробнее обработка исключений с их помощью будет разобрана в следующей статье, а пока можно отметить, что разница между ними заключается в том, что вычисления блока except выполняются только при возникновении исключения в блоке try, а вычисления блока finally выполняются всегда, независимо от возникновения исключений в блоке try.
Классически, функция в программировании – это именованный блок кода, который может вызываться по своему имени из других частей кода несколько раз. В ISBL есть множество встроенных функций и возможность создания собственных в компоненте «Функции ISBL». Для большинства встроенных функций есть справка, просмотреть которую можно по нажатию Ctrl+F1 из редактора текстов ISBL, установив перед этим курсор на имя функции.
Значительным преимуществом ISBL является уже упомянутая выше возможность работы с COM-объектами. Это позволяет обратиться как к объекту, скажем, MS Word из текста вычислений на ISBL, так и к объекту DIRECTUM из текста каких-либо внешних вычислений. Соответственно, с точки зрения разработчика ISBL, все объекты можно поделить на два вида: внутренние, составляющие объектную модель IS-Builder, и внешние, например MS Excel. Каждый объект имеет свой собственный набор свойств и методов для работы с ним. Синтаксис обращения к методам и свойствам объектов в ISBL ничем не отличается от такового в других ЯП:
<ObjectName>.<PropertyName>[(<PropertyArguments>)]
<ObjectName>.<MethodName>[(<MethodArguments>)]
Внутренняя объектная модель IS-Builder позволяет работать с практически любыми элементами системы DIRECTUM: электронными документами и подписями, записями справочников, задачами, пользователями и даже элементами интерфейса. Подробный список доступных объектов содержится в справке по ссылке: https://club.directum.ru/webhelp/directum/5.5/index.html?om_obekty_directum.htm.
Для того, чтобы программисту на ISBL было немного легче и приятнее работать, в IS-Builder есть встроенный редактор текстов на ISBL. От обычного текстового редактора его отличает:
Процесс отладки и альфа-тестирования кода на ISBL был бы невыносим без возможности построчного выполнения кода с отслеживанием значений переменных. Такую возможность предоставляет отладчик ISBL – утилита STDbg.exe. Помимо непосредственно отладки он также позволяет анализировать производительность вычислений – на отдельной вкладке «Профилирование» разработчик может посмотреть, сколько времени выполняется любой фрагмент кода, и при получении неудовлетворительных результатов оптимизировать вычисления.
Всё вышесказанное представляет собой довольно сжатый обзор возможностей ISBL. Его имеющиеся преимущества, такие как низкий порог вхождения, хорошая документированность и широкие возможности модификации любых систем на базе IS-Builder, делают его практически идеальным инструментом сопровождения этих систем, доступным как «чайникам», так и их более продвинутым коллегам.
Язык ISBL
Авторизуйтесь, чтобы написать комментарий