В своем первом посте я хочу рассказать об одном из самых редких и старых языков программирования - Clarion. Я знаком со всей линейкой этих замечательных языков начиная с 2.1 далее 5.0, 6.0, 6.3, 8 и до 9.1 по текущий момент. Буду постепенно рассказывать общие детали данной технологии, мало кому может оказаться полезным, но крайне мало инфы об этой технологии в современном Интернете, поэтому хочу чтобы осталась память о данной технологии на просторах Сети.
Мое первое "соприкосновение" произошло примерно 15-16 лет, когда я, по воле случая, познакомился с программистом на работе у родителей. Это был бородатый дядька по имени Евгений Иванович. Меня сразу-же завлекли его беседы про Базы данных, операторы, переменные, функции...
Clarion 2.1
По своей сути, на начальном этапе своего развития (версии 1.х, 2.х) это СУБД которая на основе описания структуры базы данных и их связей генерирует базовые классы отображения и манипуляции данных в этих таблицах. По факту с точки зрения юзера это были просто типичные для тех времен синие, зеленые, красные псевдо-окна. Про сам юзабилити интерфейсов тех времен говорить не приходилось, пользователь, у которого началось кровотечение из глаз считался обыденностью.
В версии 2.x были довольно большие ограничения в использовании системных ресурсов, кажется, 512кбайт памяти и специфичные проблемы того времени, связанные с внимательным подходом в определении типов переменных, потому что приходилось экономить буквально каждый байт.
Стоит отметить, что на дворе был MS-DOS, Norton Commander и только недавно начался Windows 95. Тогда "в ходу" были консольные DOS программы с псевдо-окнами и псевдо графикой, одной из таких систем являлась актуальная на тот момент версия Clarion 2.1.
Примечательной особенностью технологии является то, что уже в версии 2.1 там был графический интерфейс для проектировки окон, который позволял размещать поля на экране, задавать источники данных для этих полей, делать так называемый lookup (подтянуть связанные данные из таблицы по ID).
Первая программа на Clarion
Моя первая программа называлась "Домашняя бухгалтерия". Эту программу Евгений Иванович по сути написал сам, просто обучая меня в процессе разработки языку программирования Clarion на доступном в моем возрасте примере из моей окружающей жизни, попутно систематизируя финансовую жизнь молодого человека, то есть меня. Нет особого смысла описывать функционал типичной бухгалтерии, это были счета, приходы, расходы, простейшая аналитика по оборотам и базовые справочники. По итогу я занял первое место в школе и дошел до областного этапа, на который не прошел по причине своего молодого возраста. Далее я ушел в учебу и надолго забыл про Clarion, и вернулся уже к версии 5.х
Формат базы данных
Помимо поддержки популярных на тот момент форматов данных, таких как DBF и прочие старые форматы, Clarion любезно предлагал использовать свою встроенную БД. Именно используя данный формат эта технология раскрывалась в полной мере.
БД Clarion представляет из себя файлы, для каждой таблицы свой файл, с расширением tbl_name.dat, рядом с которым лежат файлы ключей, tbl_name.k01, tbl_name.k02 ... tbl_name.kNN
Активно обновляемые таблицы со временем теряли фрагментацию и начинали тормозить. Через какое-то время с ними становилось невозможно работать и чем более нагруженная была таблица тем быстрее она выходила из строя. Для "ускорения" существовала специальная процедура, мы ее называли "перестройка ключей" наверное это название было связано с недавно произошедшей в стране перестройке, возможно сейчас современники ее бы назвали "обнуление ключей", или "присоединение старых ключей, которые кому-то когда-то давно отдали", но тем не менее после перестройки ключе БД начинала летать.
Данный формат позволял хранить довольно приличные объемы, но у баз более 100 мб ключи перестраивались минут 5-10, если БД весила несколько ГБ то ключи строить приходилось уже часы. Но возможностей данного движка вполне хватало чтобы удовлетворять потребности малого и среднего бизнеса на многие годы вперед.
Добавление полей в таблицу
Изменение структуры БД отдельная головная боль требовала полной остановки всей системы, перекомпиляции всех модулей системы, потом болезненной конвертации данных из старой структуры в новую и потом ее запуск.
Итог
В общем и целом я довольно мало знаю про Clarion 2.x т.к. консольные программы довольно быстро вышли из обихода прогресс взял свое. В последующих статьях я подробнее расскажу как строятся приложения на современном Clarion, какова архитектура, в чем преимущества данной технологии.