OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 20 Апрель, 2019 03:17

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 130 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 13:28 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Драконограф писал(а):
Сергей Прохоренко писал(а):
Драконограф в viewtopic.php?p=57550#p57550 писал(а):
...

Если Вы о том, что программная документация должна стать составной частью каждого программного проекта (с возможностью по гиперссылкам переходить к конкретным местам программы), то я с Вами совершенно согласен. :D
Именно! :) А Глаголев и Шалыто идут и дальше в русле намеченного при классификации здесь - предлагая увязывать и с исполнителем (аппаратурой), и с реальным объектом управления (если его нет - то есть виртуальный в виде перерабатываемых данных). Чтобы включить человека - просто фиксируем его деятельность как взаимодействующие процессы (по Шалыто они, видимо, должны входить в среду АО-модели). Также добавляем данные верификации - как-то assert-инварианты, ModelChecking-требования. Ну и логически завершающий шаг - зафиксировать в проекте обобщённое знание - как "внешнюю схему" для "нейтральной" программно-аппаратной модели с инструкциями человеку. Учитывая, что с этого начинается формализация задачи - и на этом основано решение (включая определение критериев верификации). Примерно так.


Хорошая мысль. :!:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ещё раз о целях и средствах :)
СообщениеДобавлено: Четверг, 13 Январь, 2011 14:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
Geniepro писал(а):
Валерий Лаптев писал(а):
Сколько раз, пися :) циклы на С/С++ попадал в ситуацию, что хочется поставить break или continue. Это для меня сигнал - надо поискать более простую организацию цикла - чтобы не было подобных переходов. И такая более простая схема всегда нахОдится...

Всё же это сильно от языка зависит. Ну вот такой код на С#:
Код:
foreach (SomeObject obj in objs)
{
    if (SomeCondition(obj))
    {
        SomeAction(obj);
        break;
    }
}
Вот как его упростить? И стоит ли?
Я в таких случаях не заморачиваюсь и с чистой совестью ставлю break.


Отказаться от foreach, как дефективной концепции.
Человек, придумывавший foreach, был убеждён, что все циклы обработки последовательностей пишутся в виде for-break - и с чистой совестью ввёл такую "широкоприменимую и удобную" конструкцию.
Если бы человек знал, что большинство таких циклов (например, линейный поиск) пишутся с конъюнкцией условий, то он бы понял, что конструкция foreach применима только для полного прохода "от начала до конца". Т.е. является очень узкоприменимой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 14:54 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Сергей Прохоренко писал(а):
Драконограф в viewtopic.php?p=57569#p57569 писал(а):
Сергей Прохоренко писал(а):
Если Вы о том, что программная документация должна стать составной частью каждого программного проекта (с возможностью по гиперссылкам переходить к конкретным местам программы), то я с Вами совершенно согласен. :D
Именно! :)
...

Хорошая мысль. :!:
И мне нравится :D Проиллюстрирую её уж окончательно. Проект должен иметь форму РДП-документа, где содержится всё перечисленное. Как это всё организовано для человека - зависит от формы - текстобазированной или граф-базированной ("графитной", на основе лист-силуэтов - т.е. в принципе информатизованных синт-диаграмм, которые мы с Вами обсуждали здесь). Моя мысль - что вторая является основной (в ней РДП-документ редактируется) - а первая образуется как "отчёт по запросу" (символ-сборка).
    Как выглядит графит-форма - см. в этом примере, а текстобазированная - см. исходные материалы для этой задачи (указаны в Дано; смотреть образы через позицию "Для просмотра"). Конечно, задачи разные, но суть схватить, наверное, несложно. Тем более в титул графит-документа специально включил типовые докэлементы, которые есть и в текстовом.
То, что в графит-форме нумерованные заголовки (номера в угловых скобках) - в другой форме заголовки к содержанию. По смыслу (над структурой лист-силуэта) разные элементы содержания, оформленные как графит-схемы, связаны ссылками по именам в текстах вершин (ведутся по правилам графит-языков); содержание, оформленное как текст жёстких полей, связывается как в обычном гипердоке, через наводимые сочинителем ссылки на номера заголовков/поставленные закладки.

Как я вижу предметную форму документа - качественно в общих чертах описал на этом листе в жёстком поле Титул.2.2 Введение в предмет. Специалист, возможно, сформирует иную структуру.

Механизм формирования символ-сборки - см. в общих чертах в ОЯ-правиле СВ из этого пункта - видно что м.б. настроено много конфигураций сборки. Что в какое жёсткое поле включать - решает сочинитель - а также и в какие конфигурации сборки оно войдёт. Тем самым в проекте фиксируются все сведения о "предметке" (или описываемой задаче) - а выбираться могут только некоторые. В принципе как паспорт задачи должно получаться то, что описано в этом разделе. А как видно из описания Задачи 1.1.1, материал можно и сократить. Можно и как-то иначе описание строить.
    Алгоритм сборки выкладывает содержимое жёстких полей в порядке возрастания нумерации и вставляет управляющие конструкции лист-силуэтов в текстобазированный документ как элементы "текста как интерфейса" (ссылки, командеры и пр.), а также заголовки к тексту, таблицам и изображениям. Ну также выкладывает на лист сборки графику некоторым образом (очевидный вариант - основываясь на порядке следования в жёстких полях) - сочинитель потом может редактировать собранный документ независимо.
Предполагается, что формат символ-сборки - ББ-документ, соответственно используется ББ-редактор. Вероятно и вся РДП-среда пишется на КП - возможно, как РДП-подсистема ББ.

Для трансляции в исхтекст используются как раз языковые связи между графит-схемами. Естественно, транслироваться могут только схемы на определённых языках - для них д.б. доступно значение атрибута <exec> (нетранслируемые м.б. только <draft>). По связям через имена выбирается совокупность схем, топология и текст которых формируют исхтекст (программу с инвариантами и исключениями, *TL-требования в обычной или never-записи, систему Promela-процессов и т.д. - зависит от системы графит-языков).
    Предполагается, что сочинитель выбирает схему - а РДП-редактор по определению может выбрать все остальные схемы на всех языках, представляющие тот же исхтекст. Но для контроля должен задаваться вопрос типа "Вы хотите оттранслировать всё или только выбранную схему?"
Файл исхтекста грузится в ББ, или Spin, или ещё куда, там обрабатывается - и м.б. снова загружен в РДП-документ как входной, обновляя собой все представляющие схемы (опять же по именным связям).

Вот так примерно.


Последний раз редактировалось Владислав Жаринов Четверг, 13 Январь, 2011 16:11, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 15:55 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Как я это отразил в PureBuilder:
Цитата:
Проектная документация (относящаяся как к программе, так и к аппаратуре, объекту управления, человеку-оператору) должна быть составной частью каждого программного проекта - с возможностью по гиперссылкам переходить к конкретным местам программы и интернет-страницам. Проектная документация (ТЗ, спецификация, руководство пользователя и т.д.) в свернутом виде должна отображаться как пиктограммы документов, связанные линиями гиперссылок, в том числе, с пиктограммами модулей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 16:09 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Сергей Прохоренко писал(а):
Как я это отразил в PureBuilder:
Цитата:
Проектная документация (относящаяся как к программе, так и к аппаратуре, объекту управления, человеку-оператору) должна быть составной частью каждого программного проекта - с возможностью по гиперссылкам переходить к конкретным местам программы и интернет-страницам. Проектная документация (ТЗ, спецификация, руководство пользователя и т.д.) в свернутом виде должна отображаться как пиктограммы документов, связанные линиями гиперссылок, в том числе, с пиктограммами модулей.
Да, это можно сказать краткое и "качественное" (в смысле И.Грековой) определение. А чтобы понять идею в деталях - можно развёрнуть.
Тем не менее и отсюда видна такая вещь. У меня мысль - что документы разного назначения собираются из содержимого жёстких полей РДП-проекта как из кубиков. Некоторые поля ведь могут входить многократно. Это соответствует и концепции полного жизненного цикла решения - утилизировать в новых проектах удобнее - анализировать и обообщать/абстрагировать.
И каталогизация д.б. активная - как показано в этом сообщении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ещё раз о целях и средствах :)
СообщениеДобавлено: Четверг, 13 Январь, 2011 16:10 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 528
Откуда: Москва
Илья Ермаков писал(а):
Отказаться от foreach, как дефективной концепции.
Не угадал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 17:53 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 691
Откуда: Псков
Позвольте вопрос в познавательных целях.
foreach предполагает определённый повторяемый порядок перебора объектов?
Если нет неявно подразумеваемой упорядоченности, то смысл данной конструкции:
сделать некоторое действие с одним,первым попавшимся, объектом, удовлетворяющим некому условию.
Хотя объектов подходящих может быть больше.
Так?
Не в этом ли нехорошесть данной конструкции?
Неясно: условие гарантированно выполняется только у одного объекта из всех или нам действительно не важно с каким из подходящих будет выполнено действие.
------
Добавил позже для ясности.
Это я в контексте этого приведённого выше кода:

foreach (SomeObject obj in objs)
{
if (SomeCondition(obj))
{
SomeAction(obj);
break;
}
}


Последний раз редактировалось albobin Четверг, 13 Январь, 2011 20:13, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 18:53 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3039
Откуда: Астрахань
for EACH - именно полный перебор ВСЕХ объектов и с каждым чего-то типовое делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 20:19 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 691
Откуда: Псков
Валерий Лаптев писал(а):
for EACH - именно полный перебор ВСЕХ объектов и с каждым чего-то типовое делать.

2 Валерий Лаптев
Если Вы отвечали на мой вопрос, то ,прошу прощения за некоторую нечёткость в вопросе.
Вопрос был не про семантику foreach.
Исходное сообщение я поправил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 20:36 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
albobin писал(а):
Неясно: условие гарантированно выполняется только у одного объекта из всех или нам действительно не важно с каким из подходящих будет выполнено действие.
------
Добавил позже для ясности.
Это я в контексте этого приведённого выше кода:
Код:
foreach (SomeObject obj in objs)
{
    if (SomeCondition(obj))
    {
        SomeAction(obj);
        break;
    }
}
Условие может и не выполниться ни для одного из элементов коллекции objs. Ну нет, так нет.
Конкретно в том месте, которое я имел в виду, есть всего один объект, удовлетворяющий нужному условию.
В других случаях, где могут быть несколько подходящих объектов, соответсвенно и поиск элемента я сделаю с учётом того, имеет или нет значение, какой по счёту это объект в коллекции.

Переписывать в данном случае на while -- просто нагромоздить лишнего, выписывать в явном виде то, что упрятано в механику оператора foreach.
Ну да, в случае с foreach пришлось явно добавить break, но тут тупо символов меньше получается...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 20:50 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3039
Откуда: Астрахань
Но ведь условие явное, причем после него - выход. Это же просто поиск первого подходящего. Зачем перебирать ВСЕ элементы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 20:56 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 691
Откуда: Псков
2 Geniepro
Понятно.
Хорошо всегда явно указывать (хоть в комментах) на точную конечную семантику цикла, где есть условие применимости действия :
for all
for any
for first


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 20:57 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Валерий Лаптев писал(а):
Но ведь условие явное, причем после него - выход. Это же просто поиск первого подходящего. Зачем перебирать ВСЕ элементы?

Так ведь всё равно перебирать придётся, так почему бы не удобной заготовкой в виде foreach?

Не, ну конечно, было бы удобнее что-то типа:
Код:
SomeObject obj = objs.FindBy(SomeCondition);
if (obj != null)
    SomeAction(obj);
Сходу не вспомню, есть ли у той коллекции метод типа FindBy, завтра уточню. Если найду, то перепишу код ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 21:26 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
А почему не написать перебор явно? Я хочу видеть, какой механизм перебора, а не прятать это за "комфортом" итерационного механизма.
Хотя бы, чтобы стоимость представлять.

Все эти "удобства"... хрень на постном масле.

Удобства и абстракции надо создавать в конкретном проекте уровнем выше, нежели всякие обходы коллекций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 23:40 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Драконограф писал(а):
У меня мысль - что документы разного назначения собираются из содержимого жёстких полей РДП-проекта как из кубиков. Некоторые поля ведь могут входить многократно. Это соответствует и концепции полного жизненного цикла решения - утилизировать в новых проектах удобнее - анализировать и обообщать/абстрагировать.


А вот эта мысль неудачная - второе издание "литературного программирования". Механизация писательской деятельности обычно приводит к довольно уродливым результатам. Можно привести два примера: функция автоматического составления реферата по тексту в MS Word и автоматический перевод с одного естественного языка на другой.

Механизм, который Вы хотите, есть в MS Access. Он позволяет распечатать все поля всех таблиц, информацию об атрибутах полей, информацию о связях и т.п. За много (гораздо более 10) лет работы с MS Access я воспользовался этой функцией лишь однажды. Она извела мне полпачки бумаги, и я потом не знал, что со всем этим делать. Полезность распечатанных данных оказалась нулевая. Программист скорее поймет программу, работая с ней в интегрированной среде, чем читая ворох таблиц. А пользователю программы эти потроха не нужны и подавно. Переработать это сырье в мануал невозможно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Четверг, 13 Январь, 2011 23:59 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Илья Ермаков писал(а):
Все эти "удобства"... хрень на постном масле.


Я бы не был столь категоричен. :? Все эти параметры цикла, которые нужно объявлять (да еще достаточного размера) и исключать их использование вне цикла, индивидуальные операции над каждым элементом коллекции - это всё возможные источники ошибок. Кроме того, они расходуют время программиста на написание и загромождают код, затрудняя восприятие. Я до сих пор с удовольствием вспоминаю матричную арифметику в PL/I, которая позволяла без всего этого обходиться. Если бы параметр цикла достаточного размера автоматически объявлялся в заголовке цикла, а за пределами цикла был недоступен (как локальная переменная цикла), то такой FOR снял бы часть проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Пятница, 14 Январь, 2011 00:55 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9115
Откуда: Россия, Орёл
В реально интересных алгоритмах даже на тех же матрицах не достаточно логики "обойти всё"....
Хотя, конечно, многая рутинная обработка в такую логику вписывается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Пятница, 14 Январь, 2011 05:51 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Сергей Прохоренко писал(а):
Драконограф в viewtopic.php?p=57599#p57599 писал(а):
У меня мысль - что документы разного назначения собираются из содержимого жёстких полей РДП-проекта как из кубиков...
А вот эта мысль неудачная - второе издание "литературного программирования"...

Механизм, который Вы хотите, есть в MS Access. Он позволяет распечатать все поля всех таблиц, информацию об атрибутах полей, информацию о связях и т.п...
Программист скорее поймет программу, работая с ней в интегрированной среде, чем читая ворох таблиц...
Совершенно с Вами согласен - только я-то не это имел в виду. А именно, что сочинитель в самой среде работает с документом и там решает, какие выборки из него сделать - именно как раз не "всё распечатывать". И решает он это именно в процессе работы, а не чтения "распечатки всего" :) А сборка - это своего рода "препроцессинг", применяемый уже к документу (как совокупности вершин лист-силуэтов) - аналогично тому, как можно применять к отдельным графит-схемам, подвергнутым "областному делению" - см. в конце этого сообщения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Пятница, 14 Январь, 2011 13:36 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Нет, меня автоматическая сборка документа не прельщает. Другое дело, что хорошо бы иметь шаблоны документов. Иногда вместо гиперссылки хотелось бы иметь в документе что-то типа баннера на сайте, содержимое которого (например, программный код, или тестовые данные, или интерфейс) менялось бы динамически. MS Word такие вещи позволяет:

Вложение:
Вставка объекта.png
Вставка объекта.png [ 24.71 КБ | Просмотров: 6405 ]


Разработка текстового редактора как части PureBuilder мне кажется нежелательной. Лучше обеспечить поддержку документов в форматах популярных текстовых редакторов, прежде всего, MS Word.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение проекта PureBuilder
СообщениеДобавлено: Суббота, 15 Январь, 2011 09:38 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Сергей Прохоренко писал(а):
Нет, меня автоматическая сборка документа не прельщает. Другое дело, что хорошо бы иметь шаблоны документов. Иногда вместо гиперссылки хотелось бы иметь в документе что-то типа баннера на сайте, содержимое которого (например, программный код, или тестовые данные, или интерфейс) менялось бы динамически...
Разработка текстового редактора как части PureBuilder мне кажется нежелательной. Лучше обеспечить поддержку документов в форматах популярных текстовых редакторов, прежде всего, MS Word.
Ну нет так нет :) А шаблонами все, наверное, в той или иной степени пользуются (и я - в OpenOffice Writer). Только вот наполнение шаблона для меня связано именно с содержанием предметной области, которое все участники должны документировать - и структурированно (определяя структуру самостоятельно и оперативно, "потихоньку-полегоньку" - собственно, даже не полагая, что какая-то будет "окончательной" - новые знания и данные всегда могут её изменить).
В общем, я так понимаю, просто Вы видите назначение редактора только в поддержке программирования - как завершающих уровней информатической стадии в смысле этого определения. А всё, что "выходит на бумагу" в связи с рассматриваемой задачей и её контекстом в "предметке" до этого - пусть отражается где-то ещё... У меня просто более широкое понимание роли системы поддержки - близкое к Дмитрию_ВБ, скажем.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 130 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB