OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 02:43

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




Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Суббота, 30 Июнь, 2007 16:46 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
При старте небольшого нового проекта появился повод "порефлексировать" :-)
На излюбленную нашу тему - наследования против композиици :-)

Мы тут часто выссказывали идею, что нужно избегать наследования реализации (строить по преимуществу гомогенные иерархии - абстрактный интерфейс->конкретная реализация), реализовывать расширяемость и повторное использование за счет разделения ответственности между многими мелкими классами и их комбинирования.

Сейчас попытался осмыслить, каким образом мне это (неосознанно) удавалось.
У меня сложился стиль реализации (не проектирования) "снизу вверх", от частей к общему.
Сначала проектирую общую архитектуру системы "сверху вниз" - общим планом, какие модули, как они делят ответственность, какие сервисы клиентам предоставляют. Но ОО-проектирование на этом этапе не выполняю.
Далее начинается этап реализации. И вот тут-то уже работаю "снизу вверх". На каждом этапе работы получается такой цикл: пытаюсь найти какую-либо отдельную подзадачу, вспомогательную для других, как можно более мелкую, но обязательно могущую стать повторно используемой. Для этой подзадачи проектирую компактный абстрактный ОО-интерфейс (сразу на Компонентном Паскале). Иногда сразу делаю базовую реализацию, иногда откладываю на потом. Так проделываю со всеми самыми мелкими задачами. Затем начинаю проделывать тоже же самое с задачами более высокого уровня, в их интерфейсах используя коммутацию с ранее разработанными мелкими типами.
И т.д. - до тех пор, пока не сформируется вся запланированная структура системы.

Чем этот подход, как мне кажется, выгодно отличается от принятого ОО-проектирования "сверху вниз"? На каждом этапе мы имеем микрозадачи - и микроинтерфейсы, которые являются практически неделимыми. Нет никакой необходимости (и соблазна) использовать наследование реализации, поскольку повторно используется некоторый конкретный тип целиком, а наследовать отдельные его процедуры не имеет смысла (настолько тип сильно-связанный).
При обычном же способе происходит с точностью до наоборот: сначала вырабатывается ОО-интерфейс для самых высокоуровневых задач, очень трудно отделить в нём главное от второстепенного (трудно даже заставить себя это проделать), все типы получаются жирными, перенасыщенными ответственностью, повторно перепроектировать не хочется - и тянутся длиннющие зависимости по реализации...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 30 Июнь, 2007 16:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Плюс - побочным эффектом от любого проекта являются хорошо продуманные повторно используемые компоненты.
А даже, пожалуй, наоборот: всё время работаем с упором на создание этих компонент, а конкретная система становится конкретным побочным эффектом :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Суббота, 30 Июнь, 2007 18:15 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Unix and Beyond: An Interview with Ken Thompson


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 01 Июль, 2007 02:35 
Аватара пользователя

Зарегистрирован: Воскресенье, 04 Декабрь, 2005 16:15
Сообщения: 15
Откуда: Украина, Мариуполь
PGR писал(а):


А Томпсон оказывается пессимист:
Цитата:
Computer: Вы прошли через Multics, Unix, Inferno и т.д. Какие-нибудь мысли о том куда движется компьютерная наука или куда она должна двигаться?
Thompson: Ну, я дал совет своему сыну, и мой совет ему – следующему поколению – начать заниматься биологией. Когда я был ребёнком, я интересовался электроникой. Я заинтересовался вычислительной техникой – не интересовался ею самой по себе потому, что она почти не существовала тогда – потому что она вызывает привыкание. Я думаю электроника имела такой цикл: она должна была делать всё – например, отрицательную обратную связь, и подобные вещи – несмотря на это, сейчас она всего лишь предмет широкого потребления и скука(рутина) овладела ею.
Компьютерная наука приближается к своему среднему возрасту. Она превращается в предмет широкого потребления. Люди не знают о цикле Карно, но всё ещё покупают холодильники. Это также происходит и в вычислительной технике. Кто знает о компиляторах? Они покупают компьютеры играть в игры и вести балансы своих чековых книжек. Так что мой совет моему ребёнку – к сожалению, я говорю это в компьютерном журнале – заниматься биологией, не классической биологией, а генной терапией и подобными вещами.
Я думаю что вычислительная техника – ограниченная область и она достигла своей вершины и далее будет спад. Я сожалею, что говорю такое, но я ощущаю именно это. Вы посмотрите на любой аспект компьютерной науки – чему сейчас учат, тезисы диссертации, публикации, возьмите любой показатель и сравните его с прошлым – и вы осознаете, что аспекты компьютерной науки становятся всё более (узко)специализированными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 01 Июль, 2007 09:03 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно. А движение компьютерной науки в сторону биологии и есть узкая специализация.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 01 Июль, 2007 10:51 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Нет, как я понял, Томпсон рекомендует не программировать для биологии, а: "Сынок, а ну ее на.., эту папину информатику. Становись биологом".
:-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 01 Июль, 2007 11:54 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
GUEST писал(а):
Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно.

Думаю тут другое значение "addictive" :wink:
Цитата:
When I was a kid, I was interested in electronics. I got into computing--not being interested in it per se because it almost didn’t exist then--because it’s addictive.


P.S. По теме ветки только первая часть интервью, дальше можно не читать :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 01 Июль, 2007 12:27 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Илья Ермаков писал(а):
Нет, как я понял, Томпсон рекомендует не программировать для биологии, а: "Сынок, а ну ее на.., эту папину информатику. Становись биологом".
:-)
Это его личное дело. Я же сказал о тех аспектах, которые ему видятся узкоспециализированными.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Воскресенье, 01 Июль, 2007 18:28 
Аватара пользователя

Зарегистрирован: Воскресенье, 04 Декабрь, 2005 16:15
Сообщения: 15
Откуда: Украина, Мариуполь
PGR писал(а):
GUEST писал(а):
Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно.

Думаю тут другое значение "addictive" :wink:
Цитата:
When I was a kid, I was interested in electronics. I got into computing--not being interested in it per se because it almost didn’t exist then--because it’s addictive.


P.S. По теме ветки только первая часть интервью, дальше можно не читать :)


Ваш вариант в студию.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 02 Июль, 2007 07:14 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
GUEST писал(а):
Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно.

"I got into" - я занялся, а не заинтересовался. Занялся, потому что вызывает привыкание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 05:39 
Аватара пользователя

Зарегистрирован: Среда, 22 Август, 2007 04:30
Сообщения: 20
Откуда: Новокузнецк, Кемеровская область
Осмелюсь предположить, что все мы (программисты) заинтересовались или привыкли не к электронике, а к процессу создания систем (программ). И если в отдаленном будущем появятся технологии работы с биологическими системами, думаю это будет не меннее увлекательно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Пятница, 02 Ноябрь, 2007 20:45 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Юра писал(а):
И если в отдаленном будущем появятся технологии работы с биологическими системами, думаю это будет не меннее увлекательно.

Представляете, каким был счастливым в своём творчестве герр Менгеле?! :shock:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Re:
СообщениеДобавлено: Суббота, 03 Ноябрь, 2007 07:25 
Аватара пользователя

Зарегистрирован: Среда, 22 Август, 2007 04:30
Сообщения: 20
Откуда: Новокузнецк, Кемеровская область
Владимир Лось писал(а):
Представляете, каким был счастливым в своём творчестве герр Менгеле?! :shock:

Я неточно выразился. И напрасно употребил слово "увлекательно". Вы очень точно указали на это. Спасибо. Конечно не имелось ввиду ничего подобного или даже схожего. Мне представлялась не лаборатория с пробирками, а составление некой программы гибридизации, на основе только естественных законов генетики, чтобы через несколько поколений у вида появился нужный признак. Но поскольку точные примеры несуществующих технологий сложно привести и, вместе с тем, нынешняя жизнь изобилует примерами противоположными, я, пожалуй, оставлю эти попытки.

P.S. Работа с живыми организмами - очень сложная тема. И на сегодняшний день, я считаю, человечество совсем не готово к этому. Но ведь и в сфере ИТ есть хакеры, спамеры. А в медицине - множество примеров людей очень добрых и чутких, самопожертвующих ради здоровья пациентов (правда, большинство из них осталось в прошлом). Я веду к тому, что дело ведь не в инструменте, а в том, кто им пользуется.
P.P.S. Это не по теме. Простите.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 05 Ноябрь, 2007 22:14 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1030
Могу предположить, что дело в применимости используемого инструмента для похожих ситуаций. О чем выше Илья уже писал.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 12 Ноябрь, 2007 12:58 
Аватара пользователя

Зарегистрирован: Среда, 22 Август, 2007 04:30
Сообщения: 20
Откуда: Новокузнецк, Кемеровская область
По теме: совершенно неожиданно мне пришла на ум аналогия с написанием школьного сочинения или изложения. Вначале составляется общий план произведения, затем он уточняется, прорабатывается в деталях (разработка сверху-вниз). И только после - по плану - пишется текст, со старанием, как можно полнее раскрыть каждую подтему (этап реализации).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 05 Март, 2008 19:43 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Илья Ермаков писал(а):
Сначала проектирую общую архитектуру системы "сверху вниз" - общим планом, какие модули, как они делят ответственность, какие сервисы клиентам предоставляют. Но ОО-проектирование на этом этапе не выполняю.
Далее начинается этап реализации. И вот тут-то уже работаю "снизу вверх".
А как насчёт того, чтобы пойти ещё дальше? Я вот какую цитатку из интернета выковырял:
Цитата:
Реальный проект - это смесь нисходящего и восходящего подходов:
∙ сначала сверху вниз для выяснения крупных строительных блоков;
∙ затем попытка движения снизу вверх, чтобы спроецировать понятия, оформившиеся ранее, на абстрактные структуры, допускающие адекватную реализацию;
∙ далее проверка соответствия, углубление нисходящей декомпозиции и обобщение понятий, выделенных восходящими приемами.
То есть, "сверху вниз", "снизу вверх" и снова "сверху вниз".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Март, 2008 00:01 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Коллеги!
Ну нет никакого "сверху-вниз" или "снизу-вверх"!
Вернее - нет НА УРОВНЕ ВСЕЙ ПРОЕКТИРУЕМОЙ СИСТЕМЫ!
Даже на "соседних уровнях" и стратах разработка ВСЕГДА движется в разном направлении (в общем случае).
Сам процесс разработки расширяет наше понимание проблемы. Мы получаем и уточняем новые знания, составляем из крупиц обобщения. Нельзя этот процесс регламентировать, "остадийничать" и "направить"! Все эти "придумки" - от лукавых управленцев, которым надо за соответствием "процессу", стадиям, стандартам скрывать свой уровень некомпетентности и ненужности в проектах!
Никто не спорит, ДИСЦИПЛИНА нужна, знания о классификации и выявлении и обобщении знаний нужны. Но! Процесс применения этих знаний и дисциплин не есть процесс "организации" проекта (как в кадрово-стадийном, так и в разработческом смыслах)...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 06 Март, 2008 17:32 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Не уверен, что мы одинаково понимаем эти термины.

Кстати, Фред Брукс говорит, что метод нисходящего проектирования официально введён Виртом. А его нельзя назвать управленцем. Или хотя бы человеком, который в присутствует для мебели.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 07 Март, 2008 02:42 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Valery Solovey писал(а):
Не уверен, что мы одинаково понимаем эти термины.
Кстати, Фред Брукс говорит, что метод нисходящего проектирования официально введён Виртом. А его нельзя назвать управленцем. Или хотя бы человеком, который в присутствует для мебели.

Поправьте меня, но единственным примером от мэтра по сему поводу была и остаётся описание нисходящего подхода в реализации задачи о расстановке ферзей...
А вот если вы почитаете его же книгу о системе Оберон и о компиляторе этого языка (кстати, выйди в своё время эта книга в переводе на русском в массовый тираж - ОЙ бы КАК МНОГО ЧЕГО ПО-ДРУГОМУ ПОШЛО...) - там ну совсем не всё так адназначна...
...Всэ тэчЭ, всэ зминюется...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 07 Март, 2008 09:56 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Владимир Лось писал(а):
Поправьте меня, но единственным примером от мэтра по сему поводу была и остаётся описание нисходящего подхода в реализации задачи о расстановке ферзей...

Н. Вирт, Систематическое программирование. Введение. Издательство "Мир", М:1977, глава 15 писал(а):
Если видеть в поэтапной декомпозиции и одновременном развитии и детализации программы постепенное продвижение в глубь, то такой метод при решении задач можно характеризовать как нисходящий (сверху вниз). И наоборот, возможен такой подход к решению задачи, когда программист сначала изучает имеющуюся в его распоряжении вычислительную машину и/или язык программирования, а затем собирает некоторые последовательности инструкций в элементарные процедуры или "кластеры действий", типичные для решаемой задачи. Элементарные процедуры затем используются на следующем уровне иерархии процедур. Такой метод (их глубины примитивных машинных команд к задаче, лежащей "на поверхности") называется восходящим (снизу вверх). На практике разработку программы никогда не удается провести строго в одном направлении (сверху вних или снизу вверх). Однако при конструировании новых алгоритмов нисходящий метод обычно доминирует. С другой стороны, при адаптации программы к несколько измененным требованиям предпочтение зачастую отдается восходящему методу.


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

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


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

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


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

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