Oct 05, 2010 21:13
Несколько раз за текущую неделю видел, как самые разные люди плохо понимают про суть моделирования данных в порядке создания схемы (частной онтологии) для какой-то предметной области. Темплейты (ассоциирующиеся с табличками, а их роли ассоциирующиеся с набором атрибутов какого-то класса) не вызывают почему-то ассоциации с "просто программированием", в котором люди пытаются максимально отрефакториться и поднять уровень языка, на котором они пишут.
После машинных кодов (триплеты) люди переходят к ассемблеру (язык части второй -- с символическими именами уже, а не абракадаброй UID), но затем хочется использовать язык высокого уровня, который отличается в том числе и тем, что уровень абстрации в нем повышается путем использования задаваемых программистом процедур (темплейтов).
Шаблоны (в смысле части 7) -- это нормальный язык программирования. Ожидается, что в порядке описания окружающего мира (онтологическое моделирование, моделирование данных) будет написано много миллионов шаблонов для разных предметных областей. Эй, это программирование чистой воды.
Когда человек программирует, то он меньше всего мыслит в терминах "выбора из табличек" или "выбора из списков" и прочих подобных радостей "предписанных шаблонов". Системы, которые не позволяют иметь промежуточное неконсистентное состояние программы, а только "заполнять шаблоны" (типа tile-языков), пригодны только для детской учебной работы. Они очень удобны для написания программ, в которых число объектов не превышает пары сотен. Если объектов пара сотен тысяч (а RDL ближе именно к такой системе), то очень хочется иметь возможность непосредственного указания имени такого объекта (возможно, с автокомплитом), а не выкликивания этого объекта в каком-нибудь дереве. И система должна вести себя толерантно к написанию идентификаторов -- если идентификатор недописан или написан с ошибкой, то ругаться. Как только дописан -- ошибка сама снимается. Спеллчек ненавязчиво подчеркивает ошибочное слово, но не мешает писать. Причем писать в терминах не только того, что только что написано, но и в терминах планируемого к написанию! Так, я могу определять А(B,C) через использование D, на ходу сообразив, что D я еще нигде не определил -- и после завершения работы над А переходить к описанию D.
Если мне нужно что-то вставить, я должен поместить туда курсор и нажать Ins (или Enter, если вставлять нужно "строчку" -- а хоть и в дереве!). Сегодня наблюдал дивную картину, как в открытых пяти окошках люди пробовали контекстные меню в разных местах этих окошек, пытались найти там операцию типа вставки -- и после пятой неудачной попытки сказали "это возможно, только нужно вспомнить, как".
Конечно, в ходе программирования нельзя ожидать, что редактироваться будет ровно один шаблон, число ролей шаблона будет задано в момент начала редактирования, а на экране выведены все те типы, которые мы хотим указать для шаблона -- чтобы мы могли их драг-н-дропнуть куда-то для установления связи. Редактор должен это всё терпеть, он должен быть экзокортексом, поддерживающим представление недодуманной системы.
Редактор в .15926 -- это IDE такое же, как для Python или Java, только язык программирования другой. И само программирование идет так же -- больно, трудно, с "заглушками" на месте будущих подробных кусков кода, отладкой, рефакторингом и прочими прелестями. Ни один из сегодняшних инструментов этого нормально не поддерживает. Нигде я не могу писать идентификаторы, используя автокомплит (как в IDE) -- везде я должен что-то драгать-дропать или выбирать из необъятной длины списка (или даже необъятной глубины дерева). Это напоминает мне "промышленный Scratch".
Мне кажется, что должны быть более удобные режимы. Конечно, речь идет не о тексте, а о графе. Но и программы представляют собой графы (абстрактные синтаксические деревья) -- и ничего, разные браузеры помогают работать с разными их представлениями, и всем удобно. Сравнивать IDE десятилетней давности и сегодняшние IDE для той же Java просто нельзя.
Очень хочется профессиональной среды программирования, даже если речь идет об онтологическом языке. Термин "моделирование данных" никого не должен сбивать. Interactive Development Environment (IDE) не говорит, это интерактивная среда для процедурного языка, объектного языка, или декларативного языка. Топор должен быть острым, а не детским. Инструмент должен быть рабочим, а не "tiles для тупых и ограниченных детей".