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 писал(а): Валерий Лаптев писал(а): Сколько раз, пися ![]() Всё же это сильно от языка зависит. Ну вот такой код на С#: Код: 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 |
Илья Ермаков писал(а): Все эти "удобства"... хрень на постном масле. Я бы не был столь категоричен. ![]() |
Автор: | Илья Ермаков [ Пятница, 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 |
Сергей Прохоренко писал(а): Нет, меня автоматическая сборка документа не прельщает. Другое дело, что хорошо бы иметь шаблоны документов. Иногда вместо гиперссылки хотелось бы иметь в документе что-то типа баннера на сайте, содержимое которого (например, программный код, или тестовые данные, или интерфейс) менялось бы динамически... Ну нет так нет Разработка текстового редактора как части PureBuilder мне кажется нежелательной. Лучше обеспечить поддержку документов в форматах популярных текстовых редакторов, прежде всего, MS Word. ![]() В общем, я так понимаю, просто Вы видите назначение редактора только в поддержке программирования - как завершающих уровней информатической стадии в смысле этого определения. А всё, что "выходит на бумагу" в связи с рассматриваемой задачей и её контекстом в "предметке" до этого - пусть отражается где-то ещё... У меня просто более широкое понимание роли системы поддержки - близкое к Дмитрию_ВБ, скажем. |
Страница 5 из 7 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |