OberonCore https://forum.oberoncore.ru/ |
|
Обсуждение проекта PureBuilder https://forum.oberoncore.ru/viewtopic.php?f=93&t=3133 |
Страница 5 из 7 |
Автор: | Сергей Прохоренко [ Четверг, 13 Январь, 2011 13:28 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Драконограф писал(а): Сергей Прохоренко писал(а): Драконограф в viewtopic.php?p=57550#p57550 писал(а): ... Если Вы о том, что программная документация должна стать составной частью каждого программного проекта (с возможностью по гиперссылкам переходить к конкретным местам программы), то я с Вами совершенно согласен. Хорошая мысль. |
Автор: | Илья Ермаков [ Четверг, 13 Январь, 2011 14:52 ] |
Заголовок сообщения: | Re: Ещё раз о целях и средствах :) |
Geniepro писал(а): Валерий Лаптев писал(а): Сколько раз, пися циклы на С/С++ попадал в ситуацию, что хочется поставить break или continue. Это для меня сигнал - надо поискать более простую организацию цикла - чтобы не было подобных переходов. И такая более простая схема всегда нахОдится... Всё же это сильно от языка зависит. Ну вот такой код на С#: Код: foreach (SomeObject obj in objs) Вот как его упростить? И стоит ли?{ if (SomeCondition(obj)) { SomeAction(obj); break; } } Я в таких случаях не заморачиваюсь и с чистой совестью ставлю break. Отказаться от foreach, как дефективной концепции. Человек, придумывавший foreach, был убеждён, что все циклы обработки последовательностей пишутся в виде for-break - и с чистой совестью ввёл такую "широкоприменимую и удобную" конструкцию. Если бы человек знал, что большинство таких циклов (например, линейный поиск) пишутся с конъюнкцией условий, то он бы понял, что конструкция foreach применима только для полного прохода "от начала до конца". Т.е. является очень узкоприменимой. |
Автор: | Владислав Жаринов [ Четверг, 13 Январь, 2011 14:54 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Сергей Прохоренко писал(а): Драконограф в viewtopic.php?p=57569#p57569 писал(а): Сергей Прохоренко писал(а): Если Вы о том, что программная документация должна стать составной частью каждого программного проекта (с возможностью по гиперссылкам переходить к конкретным местам программы), то я с Вами совершенно согласен. Именно! ... Хорошая мысль.
Как я вижу предметную форму документа - качественно в общих чертах описал на этом листе в жёстком поле Титул.2.2 Введение в предмет. Специалист, возможно, сформирует иную структуру. Механизм формирования символ-сборки - см. в общих чертах в ОЯ-правиле СВ из этого пункта - видно что м.б. настроено много конфигураций сборки. Что в какое жёсткое поле включать - решает сочинитель - а также и в какие конфигурации сборки оно войдёт. Тем самым в проекте фиксируются все сведения о "предметке" (или описываемой задаче) - а выбираться могут только некоторые. В принципе как паспорт задачи должно получаться то, что описано в этом разделе. А как видно из описания Задачи 1.1.1, материал можно и сократить. Можно и как-то иначе описание строить.
Для трансляции в исхтекст используются как раз языковые связи между графит-схемами. Естественно, транслироваться могут только схемы на определённых языках - для них д.б. доступно значение атрибута <exec> (нетранслируемые м.б. только <draft>). По связям через имена выбирается совокупность схем, топология и текст которых формируют исхтекст (программу с инвариантами и исключениями, *TL-требования в обычной или never-записи, систему Promela-процессов и т.д. - зависит от системы графит-языков).
Вот так примерно. |
Автор: | Сергей Прохоренко [ Четверг, 13 Январь, 2011 15:55 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Как я это отразил в PureBuilder: Цитата: Проектная документация (относящаяся как к программе, так и к аппаратуре, объекту управления, человеку-оператору) должна быть составной частью каждого программного проекта - с возможностью по гиперссылкам переходить к конкретным местам программы и интернет-страницам. Проектная документация (ТЗ, спецификация, руководство пользователя и т.д.) в свернутом виде должна отображаться как пиктограммы документов, связанные линиями гиперссылок, в том числе, с пиктограммами модулей.
|
Автор: | Владислав Жаринов [ Четверг, 13 Январь, 2011 16:09 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Сергей Прохоренко писал(а): Как я это отразил в PureBuilder: Да, это можно сказать краткое и "качественное" (в смысле И.Грековой) определение. А чтобы понять идею в деталях - можно развёрнуть.Цитата: Проектная документация (относящаяся как к программе, так и к аппаратуре, объекту управления, человеку-оператору) должна быть составной частью каждого программного проекта - с возможностью по гиперссылкам переходить к конкретным местам программы и интернет-страницам. Проектная документация (ТЗ, спецификация, руководство пользователя и т.д.) в свернутом виде должна отображаться как пиктограммы документов, связанные линиями гиперссылок, в том числе, с пиктограммами модулей. Тем не менее и отсюда видна такая вещь. У меня мысль - что документы разного назначения собираются из содержимого жёстких полей РДП-проекта как из кубиков. Некоторые поля ведь могут входить многократно. Это соответствует и концепции полного жизненного цикла решения - утилизировать в новых проектах удобнее - анализировать и обообщать/абстрагировать. И каталогизация д.б. активная - как показано в этом сообщении. |
Автор: | Peter Almazov [ Четверг, 13 Январь, 2011 16:10 ] |
Заголовок сообщения: | Re: Ещё раз о целях и средствах :) |
Илья Ермаков писал(а): Отказаться от foreach, как дефективной концепции. Не угадал.
|
Автор: | albobin [ Четверг, 13 Январь, 2011 17:53 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Позвольте вопрос в познавательных целях. foreach предполагает определённый повторяемый порядок перебора объектов? Если нет неявно подразумеваемой упорядоченности, то смысл данной конструкции: сделать некоторое действие с одним,первым попавшимся, объектом, удовлетворяющим некому условию. Хотя объектов подходящих может быть больше. Так? Не в этом ли нехорошесть данной конструкции? Неясно: условие гарантированно выполняется только у одного объекта из всех или нам действительно не важно с каким из подходящих будет выполнено действие. ------ Добавил позже для ясности. Это я в контексте этого приведённого выше кода: foreach (SomeObject obj in objs) { if (SomeCondition(obj)) { SomeAction(obj); break; } } |
Автор: | Валерий Лаптев [ Четверг, 13 Январь, 2011 18:53 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
for EACH - именно полный перебор ВСЕХ объектов и с каждым чего-то типовое делать. |
Автор: | albobin [ Четверг, 13 Январь, 2011 20:19 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Валерий Лаптев писал(а): for EACH - именно полный перебор ВСЕХ объектов и с каждым чего-то типовое делать. 2 Валерий Лаптев Если Вы отвечали на мой вопрос, то ,прошу прощения за некоторую нечёткость в вопросе. Вопрос был не про семантику foreach. Исходное сообщение я поправил. |
Автор: | Geniepro [ Четверг, 13 Январь, 2011 20:36 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
albobin писал(а): Неясно: условие гарантированно выполняется только у одного объекта из всех или нам действительно не важно с каким из подходящих будет выполнено действие. Условие может и не выполниться ни для одного из элементов коллекции objs. Ну нет, так нет.------ Добавил позже для ясности. Это я в контексте этого приведённого выше кода: Код: foreach (SomeObject obj in objs) { if (SomeCondition(obj)) { SomeAction(obj); break; } } Конкретно в том месте, которое я имел в виду, есть всего один объект, удовлетворяющий нужному условию. В других случаях, где могут быть несколько подходящих объектов, соответсвенно и поиск элемента я сделаю с учётом того, имеет или нет значение, какой по счёту это объект в коллекции. Переписывать в данном случае на while -- просто нагромоздить лишнего, выписывать в явном виде то, что упрятано в механику оператора foreach. Ну да, в случае с foreach пришлось явно добавить break, но тут тупо символов меньше получается... |
Автор: | Валерий Лаптев [ Четверг, 13 Январь, 2011 20:50 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Но ведь условие явное, причем после него - выход. Это же просто поиск первого подходящего. Зачем перебирать ВСЕ элементы? |
Автор: | albobin [ Четверг, 13 Январь, 2011 20:56 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
2 Geniepro Понятно. Хорошо всегда явно указывать (хоть в комментах) на точную конечную семантику цикла, где есть условие применимости действия : for all for any for first |
Автор: | Geniepro [ Четверг, 13 Январь, 2011 20:57 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Валерий Лаптев писал(а): Но ведь условие явное, причем после него - выход. Это же просто поиск первого подходящего. Зачем перебирать ВСЕ элементы? Так ведь всё равно перебирать придётся, так почему бы не удобной заготовкой в виде foreach? Не, ну конечно, было бы удобнее что-то типа: Код: SomeObject obj = objs.FindBy(SomeCondition); Сходу не вспомню, есть ли у той коллекции метод типа FindBy, завтра уточню. Если найду, то перепишу код ))
if (obj != null) SomeAction(obj); |
Автор: | Илья Ермаков [ Четверг, 13 Январь, 2011 21:26 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
А почему не написать перебор явно? Я хочу видеть, какой механизм перебора, а не прятать это за "комфортом" итерационного механизма. Хотя бы, чтобы стоимость представлять. Все эти "удобства"... хрень на постном масле. Удобства и абстракции надо создавать в конкретном проекте уровнем выше, нежели всякие обходы коллекций. |
Автор: | Сергей Прохоренко [ Четверг, 13 Январь, 2011 23:40 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Драконограф писал(а): У меня мысль - что документы разного назначения собираются из содержимого жёстких полей РДП-проекта как из кубиков. Некоторые поля ведь могут входить многократно. Это соответствует и концепции полного жизненного цикла решения - утилизировать в новых проектах удобнее - анализировать и обообщать/абстрагировать. А вот эта мысль неудачная - второе издание "литературного программирования". Механизация писательской деятельности обычно приводит к довольно уродливым результатам. Можно привести два примера: функция автоматического составления реферата по тексту в MS Word и автоматический перевод с одного естественного языка на другой. Механизм, который Вы хотите, есть в MS Access. Он позволяет распечатать все поля всех таблиц, информацию об атрибутах полей, информацию о связях и т.п. За много (гораздо более 10) лет работы с MS Access я воспользовался этой функцией лишь однажды. Она извела мне полпачки бумаги, и я потом не знал, что со всем этим делать. Полезность распечатанных данных оказалась нулевая. Программист скорее поймет программу, работая с ней в интегрированной среде, чем читая ворох таблиц. А пользователю программы эти потроха не нужны и подавно. Переработать это сырье в мануал невозможно. |
Автор: | Сергей Прохоренко [ Четверг, 13 Январь, 2011 23:59 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Илья Ермаков писал(а): Все эти "удобства"... хрень на постном масле. Я бы не был столь категоричен. Все эти параметры цикла, которые нужно объявлять (да еще достаточного размера) и исключать их использование вне цикла, индивидуальные операции над каждым элементом коллекции - это всё возможные источники ошибок. Кроме того, они расходуют время программиста на написание и загромождают код, затрудняя восприятие. Я до сих пор с удовольствием вспоминаю матричную арифметику в PL/I, которая позволяла без всего этого обходиться. Если бы параметр цикла достаточного размера автоматически объявлялся в заголовке цикла, а за пределами цикла был недоступен (как локальная переменная цикла), то такой FOR снял бы часть проблем. |
Автор: | Илья Ермаков [ Пятница, 14 Январь, 2011 00:55 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
В реально интересных алгоритмах даже на тех же матрицах не достаточно логики "обойти всё".... Хотя, конечно, многая рутинная обработка в такую логику вписывается. |
Автор: | Владислав Жаринов [ Пятница, 14 Январь, 2011 05:51 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Сергей Прохоренко писал(а): Драконограф в viewtopic.php?p=57599#p57599 писал(а): У меня мысль - что документы разного назначения собираются из содержимого жёстких полей РДП-проекта как из кубиков... А вот эта мысль неудачная - второе издание "литературного программирования"... Механизм, который Вы хотите, есть в MS Access. Он позволяет распечатать все поля всех таблиц, информацию об атрибутах полей, информацию о связях и т.п... Программист скорее поймет программу, работая с ней в интегрированной среде, чем читая ворох таблиц... |
Автор: | Сергей Прохоренко [ Пятница, 14 Январь, 2011 13:36 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Нет, меня автоматическая сборка документа не прельщает. Другое дело, что хорошо бы иметь шаблоны документов. Иногда вместо гиперссылки хотелось бы иметь в документе что-то типа баннера на сайте, содержимое которого (например, программный код, или тестовые данные, или интерфейс) менялось бы динамически. MS Word такие вещи позволяет: Вложение: Разработка текстового редактора как части PureBuilder мне кажется нежелательной. Лучше обеспечить поддержку документов в форматах популярных текстовых редакторов, прежде всего, MS Word. |
Автор: | Владислав Жаринов [ Суббота, 15 Январь, 2011 09:38 ] |
Заголовок сообщения: | Re: Обсуждение проекта PureBuilder |
Сергей Прохоренко писал(а): Нет, меня автоматическая сборка документа не прельщает. Другое дело, что хорошо бы иметь шаблоны документов. Иногда вместо гиперссылки хотелось бы иметь в документе что-то типа баннера на сайте, содержимое которого (например, программный код, или тестовые данные, или интерфейс) менялось бы динамически... Ну нет так нет А шаблонами все, наверное, в той или иной степени пользуются (и я - в OpenOffice Writer). Только вот наполнение шаблона для меня связано именно с содержанием предметной области, которое все участники должны документировать - и структурированно (определяя структуру самостоятельно и оперативно, "потихоньку-полегоньку" - собственно, даже не полагая, что какая-то будет "окончательной" - новые знания и данные всегда могут её изменить).Разработка текстового редактора как части PureBuilder мне кажется нежелательной. Лучше обеспечить поддержку документов в форматах популярных текстовых редакторов, прежде всего, MS Word. В общем, я так понимаю, просто Вы видите назначение редактора только в поддержке программирования - как завершающих уровней информатической стадии в смысле этого определения. А всё, что "выходит на бумагу" в связи с рассматриваемой задачей и её контекстом в "предметке" до этого - пусть отражается где-то ещё... У меня просто более широкое понимание роли системы поддержки - близкое к Дмитрию_ВБ, скажем. |
Страница 5 из 7 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |