Анекдот:
- Сынок, а ну подойти сюда, от тебя несет просветлением. Ты что, опять ломал стереотипы и абстрагировался от суеты?
- Нет, это пацаны ломали, а я рядом копался в обыденности.
Что же, настало время копаться в обыденности…
Снова та же картинка рабочего стола «Корпус»:
Дерево в правой части начинается (как мы уже понимаем) с контактной площадки («Корпус») и в изрядной степени состоит из контактных площадок (18 штук на этом рабочем столе).
Я называю контактные площадки столами, исходя из простого бытового понимания: стол – это то, на что можно что-то поставить. Кроме термина «стол» я часто использую термин «верстак» — для обозначения стола, на который поставлены инструменты. Аналогия тоже бытовая – поставили на стол (или прикрутили) инструменты (тиски, паяльник, …), получили верстак для выполнения определенной работы. Например, верстак программиста – это стол, на котором стоит монитор, мышь, клавиатура и кружка с (кофе, пивом, коньяком, нужное подчеркнуть), или другой, но похожий набор инструментов, который каждый программист расширяет и настраивает под себя.
Рабочий стол «Корпус» собран из 18 столов (как я уже сказал) и 36 инструментов:
- Столы: «Корпус», «Верстак корпуса», «Список текстов», «Открыть» и т.д.
- Инструмент – это всегда лист в дереве. Инструменты, которые видны на картинке: «Панель цветная», «Простая рамка». Инструменты делятся на два вида: просто инструменты и инструменты рисования. Об инструментах поговорим позже.
Два стола здесь особые – это столы «Список» и «Прокрутка», я называю их «Узлами», они явно выделяются своим видом в левой части.
Узел – это верстак (то есть стол с инструментами) взятый из репозитория. Его нельзя редактировать на месте, его можно поставить целиком и настроить. Устройство узла не видно в редакторе рабочего стола, увидеть его (и изменить) можно в редакторе узлов.
Семантика узлов «Список» и «Прокрутка» достаточно очевидно вытекает из их названий. «Список» — показывает список строк в окне, «Прокрутка» управляет полосами прокрутки. В работающей программе это выглядит так:
Здесь строк мало, все они влезают в окно, поэтому полосы прокрутки спрятаны.
Или так, если увеличить число строк (появляется вертикальная полоса прокрутки):
Узлы:
- Настраиваются для взаимодействия (явно или неявно)
- Взаимодействуют друг с другом (забегая вперед: взаимодействуют посредством некоторого «протокола»)
- Независимы друг от друга (нет статических связей, разрабатываются независимо, изменяются независимо). Единственная зависимость: используют один и тот же «протокол»
Поясню независимость узлов на примерах:
- Если узла «Прокрутка» не будет, «Список» будет работать (но не будет прокручиваться полосами прокрутки)
- Узлу «Прокрутка» не важно, стоит ли «Список» или что-то еще, например, «Дерево» или «Текстовый редактор». Если есть узел, «умеющий» взаимодействовать с узлом «Прокрутка» (то есть отрабатывающий протокол взаимодействия), то полосы прокрутки будут правильно расставлены и будут правильно работать.
Вот теперь я могу перечислить иерархию компонент Вира:
- Рабочий стол
- Узел (используется при сборке рабочих столов и других узлов)
- Инструмент (используется при сборке узлов и рабочих столов)
- Словарная статья (используется при сборке инструментов)
и
0. Сервисы. Ставлю последним, потому что про них я еще не упоминал. Сервисы — это служебные узлы, обслуживающие программу целиком и часто имеющие серверную часть, например: обновление программы, статистика использования, логирование, отправка сообщения об ошибке программы разработчику и т.д.
В этой заметке я ввел много новых понятий: Стол, Инструмент, Узел, Сервис. Дальше буду подробнее рассказывать об этих «штуках» и о том, как они взаимодействуют.
Немного о Лексиконе
Если вспомнить классификацию форм программирования в Лексиконе Ершова (синтезирующее, сборочное, конкретизирующее), то
- Разработка статей и инструментов – это синтезирующее программирование
- Разработка узлов, рабочих столов, сервисов и программ целиком – сборочное программирование с элементами конкретизирующего
Конкретизирующее программирование в чистом виде, это, например, построение конечного автомата по его описанию или парсера по грамматике. В Вире конкретизирующее программирование может применятся для построения инструмента или узла (статическая конкретизация), или для настройки инструмента или узла во время работы (динамическая конкретизация).
Ершов описывал «плоскую» модель форм, в его описании все три формы программирования стоят на одном уровне. На мой взгляд, ведущим является сборочное программирование, а область действия синтезирующего и конкретизирующего – разработка компонент.
Постоянная ссылка
Алексей, немного в сторону от вопросов непосредственно о Вире, Вы описываете некое приложение для анализа текстов. Можно узнать чуть подробнее, для чего предназначено само это приложение? Кем и как оно может использоваться?
Постоянная ссылка
Анализатор делается в рамках вот этого проекта: http://synergetic-lab.ru/lexxa.htm
Изначально приложение делалось для сбора статистики используемых слогов и слов в книгах для детей. Обучение выстроено так, что в начале ребенок обучается на простых и часто используемых слогах (словах), а далее на менее используемых и более сложных. Как выяснилось у наших педагогов/лингвистов такой статистикинет, пришлось сделать инструмент для сбора.
По ходу работы и общения со специалистами выяснилось, что потребность в таком инструменте есть, а аналогов для русского языка нет.
Например, одно из направлений развития — это программа, определяющая сложность текста. Для английского языка такой инструмент давно есть, более того, он обязательно используется при подготовке, например, инструкций.
В январе будет доклад об Анализаторе на конференции: http://conference-spbu.ru/conference/35/note/
Возможно, что он будет оформлен после этого, как коммерческий продукт.
Постоянная ссылка
Понятно, спасибо!
А я в Яндексе набрал «Что такое корпус текстов», там тоже всякие интересные ссылки вылезли, типа таких:
http://ruscorpora.ru/
https://habrahabr.ru/post/152799/
Но возможно это немного о другом (тут речь обо всем языке, а не о конкретных книгах)
Постоянная ссылка
Не успели мы заговорить о словах и лингвистике, Гугл подкачался
https://geektimes.ru/post/282976/