Прежде чем продолжить цикл статей о плохом и хорошем коде для чайников, хотелось бы чуть более подробно остановиться на том, что из себя представляет 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
Авторизуйтесь, чтобы написать комментарий