OberonCore https://forum.oberoncore.ru/ |
|
Компонентное программирование - разработка "снизу вверх https://forum.oberoncore.ru/viewtopic.php?f=6&t=544 |
Страница 1 из 2 |
Автор: | Илья Ермаков [ Суббота, 30 Июнь, 2007 16:46 ] |
Заголовок сообщения: | Компонентное программирование - разработка "снизу вверх |
При старте небольшого нового проекта появился повод "порефлексировать" На излюбленную нашу тему - наследования против композиици Мы тут часто выссказывали идею, что нужно избегать наследования реализации (строить по преимуществу гомогенные иерархии - абстрактный интерфейс->конкретная реализация), реализовывать расширяемость и повторное использование за счет разделения ответственности между многими мелкими классами и их комбинирования. Сейчас попытался осмыслить, каким образом мне это (неосознанно) удавалось. У меня сложился стиль реализации (не проектирования) "снизу вверх", от частей к общему. Сначала проектирую общую архитектуру системы "сверху вниз" - общим планом, какие модули, как они делят ответственность, какие сервисы клиентам предоставляют. Но ОО-проектирование на этом этапе не выполняю. Далее начинается этап реализации. И вот тут-то уже работаю "снизу вверх". На каждом этапе работы получается такой цикл: пытаюсь найти какую-либо отдельную подзадачу, вспомогательную для других, как можно более мелкую, но обязательно могущую стать повторно используемой. Для этой подзадачи проектирую компактный абстрактный ОО-интерфейс (сразу на Компонентном Паскале). Иногда сразу делаю базовую реализацию, иногда откладываю на потом. Так проделываю со всеми самыми мелкими задачами. Затем начинаю проделывать тоже же самое с задачами более высокого уровня, в их интерфейсах используя коммутацию с ранее разработанными мелкими типами. И т.д. - до тех пор, пока не сформируется вся запланированная структура системы. Чем этот подход, как мне кажется, выгодно отличается от принятого ОО-проектирования "сверху вниз"? На каждом этапе мы имеем микрозадачи - и микроинтерфейсы, которые являются практически неделимыми. Нет никакой необходимости (и соблазна) использовать наследование реализации, поскольку повторно используется некоторый конкретный тип целиком, а наследовать отдельные его процедуры не имеет смысла (настолько тип сильно-связанный). При обычном же способе происходит с точностью до наоборот: сначала вырабатывается ОО-интерфейс для самых высокоуровневых задач, очень трудно отделить в нём главное от второстепенного (трудно даже заставить себя это проделать), все типы получаются жирными, перенасыщенными ответственностью, повторно перепроектировать не хочется - и тянутся длиннющие зависимости по реализации... |
Автор: | Илья Ермаков [ Суббота, 30 Июнь, 2007 16:52 ] |
Заголовок сообщения: | |
Плюс - побочным эффектом от любого проекта являются хорошо продуманные повторно используемые компоненты. А даже, пожалуй, наоборот: всё время работаем с упором на создание этих компонент, а конкретная система становится конкретным побочным эффектом |
Автор: | PGR [ Суббота, 30 Июнь, 2007 18:15 ] |
Заголовок сообщения: | |
Unix and Beyond: An Interview with Ken Thompson |
Автор: | Кривохатько С.А. [ Воскресенье, 01 Июль, 2007 02:35 ] |
Заголовок сообщения: | |
PGR писал(а): А Томпсон оказывается пессимист: Цитата: Computer: Вы прошли через Multics, Unix, Inferno и т.д. Какие-нибудь мысли о том куда движется компьютерная наука или куда она должна двигаться?
Thompson: Ну, я дал совет своему сыну, и мой совет ему – следующему поколению – начать заниматься биологией. Когда я был ребёнком, я интересовался электроникой. Я заинтересовался вычислительной техникой – не интересовался ею самой по себе потому, что она почти не существовала тогда – потому что она вызывает привыкание. Я думаю электроника имела такой цикл: она должна была делать всё – например, отрицательную обратную связь, и подобные вещи – несмотря на это, сейчас она всего лишь предмет широкого потребления и скука(рутина) овладела ею. Компьютерная наука приближается к своему среднему возрасту. Она превращается в предмет широкого потребления. Люди не знают о цикле Карно, но всё ещё покупают холодильники. Это также происходит и в вычислительной технике. Кто знает о компиляторах? Они покупают компьютеры играть в игры и вести балансы своих чековых книжек. Так что мой совет моему ребёнку – к сожалению, я говорю это в компьютерном журнале – заниматься биологией, не классической биологией, а генной терапией и подобными вещами. Я думаю что вычислительная техника – ограниченная область и она достигла своей вершины и далее будет спад. Я сожалею, что говорю такое, но я ощущаю именно это. Вы посмотрите на любой аспект компьютерной науки – чему сейчас учат, тезисы диссертации, публикации, возьмите любой показатель и сравните его с прошлым – и вы осознаете, что аспекты компьютерной науки становятся всё более (узко)специализированными. |
Автор: | Сергей Оборотов [ Воскресенье, 01 Июль, 2007 09:03 ] |
Заголовок сообщения: | |
Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно. А движение компьютерной науки в сторону биологии и есть узкая специализация. |
Автор: | Илья Ермаков [ Воскресенье, 01 Июль, 2007 10:51 ] |
Заголовок сообщения: | |
Нет, как я понял, Томпсон рекомендует не программировать для биологии, а: "Сынок, а ну ее на.., эту папину информатику. Становись биологом". |
Автор: | PGR [ Воскресенье, 01 Июль, 2007 11:54 ] |
Заголовок сообщения: | |
GUEST писал(а): Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно. Думаю тут другое значение "addictive" Цитата: 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 ] |
Заголовок сообщения: | |
Илья Ермаков писал(а): Нет, как я понял, Томпсон рекомендует не программировать для биологии, а: "Сынок, а ну ее на.., эту папину информатику. Становись биологом". Это его личное дело. Я же сказал о тех аспектах, которые ему видятся узкоспециализированными.
|
Автор: | Кривохатько С.А. [ Воскресенье, 01 Июль, 2007 18:28 ] |
Заголовок сообщения: | |
PGR писал(а): GUEST писал(а): Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно. Думаю тут другое значение "addictive" Цитата: 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 ] |
Заголовок сообщения: | |
GUEST писал(а): Странная логика. Заинтересовался, поскольку привык. Тут что-нибудь одно.
"I got into" - я занялся, а не заинтересовался. Занялся, потому что вызывает привыкание. |
Автор: | Юра [ Пятница, 02 Ноябрь, 2007 05:39 ] |
Заголовок сообщения: | Re: |
Осмелюсь предположить, что все мы (программисты) заинтересовались или привыкли не к электронике, а к процессу создания систем (программ). И если в отдаленном будущем появятся технологии работы с биологическими системами, думаю это будет не меннее увлекательно. |
Автор: | Wlad [ Пятница, 02 Ноябрь, 2007 20:45 ] |
Заголовок сообщения: | Re: Re: |
Юра писал(а): И если в отдаленном будущем появятся технологии работы с биологическими системами, думаю это будет не меннее увлекательно. Представляете, каким был счастливым в своём творчестве герр Менгеле?! |
Автор: | Юра [ Суббота, 03 Ноябрь, 2007 07:25 ] |
Заголовок сообщения: | Re: Re: |
Владимир Лось писал(а): Представляете, каким был счастливым в своём творчестве герр Менгеле?! Я неточно выразился. И напрасно употребил слово "увлекательно". Вы очень точно указали на это. Спасибо. Конечно не имелось ввиду ничего подобного или даже схожего. Мне представлялась не лаборатория с пробирками, а составление некой программы гибридизации, на основе только естественных законов генетики, чтобы через несколько поколений у вида появился нужный признак. Но поскольку точные примеры несуществующих технологий сложно привести и, вместе с тем, нынешняя жизнь изобилует примерами противоположными, я, пожалуй, оставлю эти попытки. P.S. Работа с живыми организмами - очень сложная тема. И на сегодняшний день, я считаю, человечество совсем не готово к этому. Но ведь и в сфере ИТ есть хакеры, спамеры. А в медицине - множество примеров людей очень добрых и чутких, самопожертвующих ради здоровья пациентов (правда, большинство из них осталось в прошлом). Я веду к тому, что дело ведь не в инструменте, а в том, кто им пользуется. P.P.S. Это не по теме. Простите. |
Автор: | Сергей Оборотов [ Понедельник, 05 Ноябрь, 2007 22:14 ] |
Заголовок сообщения: | Re: Компонентное программирование - разработка "снизу вверх |
Могу предположить, что дело в применимости используемого инструмента для похожих ситуаций. О чем выше Илья уже писал. |
Автор: | Юра [ Понедельник, 12 Ноябрь, 2007 12:58 ] |
Заголовок сообщения: | Re: Компонентное программирование - разработка "снизу вверх |
По теме: совершенно неожиданно мне пришла на ум аналогия с написанием школьного сочинения или изложения. Вначале составляется общий план произведения, затем он уточняется, прорабатывается в деталях (разработка сверху-вниз). И только после - по плану - пишется текст, со старанием, как можно полнее раскрыть каждую подтему (этап реализации). |
Автор: | Valery Solovey [ Среда, 05 Март, 2008 19:43 ] |
Заголовок сообщения: | Re: Компонентное программирование - разработка "снизу вверх |
Илья Ермаков писал(а): Сначала проектирую общую архитектуру системы "сверху вниз" - общим планом, какие модули, как они делят ответственность, какие сервисы клиентам предоставляют. Но ОО-проектирование на этом этапе не выполняю. А как насчёт того, чтобы пойти ещё дальше? Я вот какую цитатку из интернета выковырял:Далее начинается этап реализации. И вот тут-то уже работаю "снизу вверх". Цитата: Реальный проект - это смесь нисходящего и восходящего подходов: То есть, "сверху вниз", "снизу вверх" и снова "сверху вниз".
∙ сначала сверху вниз для выяснения крупных строительных блоков; ∙ затем попытка движения снизу вверх, чтобы спроецировать понятия, оформившиеся ранее, на абстрактные структуры, допускающие адекватную реализацию; ∙ далее проверка соответствия, углубление нисходящей декомпозиции и обобщение понятий, выделенных восходящими приемами. |
Автор: | Wlad [ Четверг, 06 Март, 2008 00:01 ] |
Заголовок сообщения: | Re: Компонентное программирование - разработка "снизу вверх |
Коллеги! Ну нет никакого "сверху-вниз" или "снизу-вверх"! Вернее - нет НА УРОВНЕ ВСЕЙ ПРОЕКТИРУЕМОЙ СИСТЕМЫ! Даже на "соседних уровнях" и стратах разработка ВСЕГДА движется в разном направлении (в общем случае). Сам процесс разработки расширяет наше понимание проблемы. Мы получаем и уточняем новые знания, составляем из крупиц обобщения. Нельзя этот процесс регламентировать, "остадийничать" и "направить"! Все эти "придумки" - от лукавых управленцев, которым надо за соответствием "процессу", стадиям, стандартам скрывать свой уровень некомпетентности и ненужности в проектах! Никто не спорит, ДИСЦИПЛИНА нужна, знания о классификации и выявлении и обобщении знаний нужны. Но! Процесс применения этих знаний и дисциплин не есть процесс "организации" проекта (как в кадрово-стадийном, так и в разработческом смыслах)... |
Автор: | Valery Solovey [ Четверг, 06 Март, 2008 17:32 ] |
Заголовок сообщения: | Re: Компонентное программирование - разработка "снизу вверх |
Не уверен, что мы одинаково понимаем эти термины. Кстати, Фред Брукс говорит, что метод нисходящего проектирования официально введён Виртом. А его нельзя назвать управленцем. Или хотя бы человеком, который в присутствует для мебели. |
Автор: | Wlad [ Пятница, 07 Март, 2008 02:42 ] |
Заголовок сообщения: | Re: Компонентное программирование - разработка "снизу вверх |
Valery Solovey писал(а): Не уверен, что мы одинаково понимаем эти термины. Кстати, Фред Брукс говорит, что метод нисходящего проектирования официально введён Виртом. А его нельзя назвать управленцем. Или хотя бы человеком, который в присутствует для мебели. Поправьте меня, но единственным примером от мэтра по сему поводу была и остаётся описание нисходящего подхода в реализации задачи о расстановке ферзей... А вот если вы почитаете его же книгу о системе Оберон и о компиляторе этого языка (кстати, выйди в своё время эта книга в переводе на русском в массовый тираж - ОЙ бы КАК МНОГО ЧЕГО ПО-ДРУГОМУ ПОШЛО...) - там ну совсем не всё так адназначна... ...Всэ тэчЭ, всэ зминюется... |
Автор: | Евгений Темиргалеев [ Пятница, 07 Март, 2008 09:56 ] |
Заголовок сообщения: | Re: Компонентное программирование - разработка "снизу вверх |
Владимир Лось писал(а): Поправьте меня, но единственным примером от мэтра по сему поводу была и остаётся описание нисходящего подхода в реализации задачи о расстановке ферзей... Н. Вирт, Систематическое программирование. Введение. Издательство "Мир", М:1977, глава 15 писал(а): Если видеть в поэтапной декомпозиции и одновременном развитии и детализации программы постепенное продвижение в глубь, то такой метод при решении задач можно характеризовать как нисходящий (сверху вниз). И наоборот, возможен такой подход к решению задачи, когда программист сначала изучает имеющуюся в его распоряжении вычислительную машину и/или язык программирования, а затем собирает некоторые последовательности инструкций в элементарные процедуры или "кластеры действий", типичные для решаемой задачи. Элементарные процедуры затем используются на следующем уровне иерархии процедур. Такой метод (их глубины примитивных машинных команд к задаче, лежащей "на поверхности") называется восходящим (снизу вверх). На практике разработку программы никогда не удается провести строго в одном направлении (сверху вних или снизу вверх). Однако при конструировании новых алгоритмов нисходящий метод обычно доминирует. С другой стороны, при адаптации программы к несколько измененным требованиям предпочтение зачастую отдается восходящему методу.
|
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |