erlang всятаки для многопроцессорных/многоядровых систем создан, тыбы ещё ассемблер привёл в пример. Это не тот класс задач.
я рассматриваю вопрос моделирования.
Есть плита есть чайник, плита передаёт тепло чайнику, чайник реагирует и нагревается, по достижению какого то уровня он начинает трещать, при достижении критичиской температуры он воспламеняется. На ооп всё понятно, есть экземпляр класса чайник. Каждый раз при повышении температуры, какая-то функция чайника сопоставляет температуру с критическими значениями и определяет что надо трещать или воспламенятся. То есть чайник отвечает сам за своё поведение, плита отдельно, чайник отдельно.
При процедурном подходе чайник представлен будет структурой с данными, в особом быдло варианте кучей переменных. Нагревание, треск и поджигание чайника будет производится процедурами из вне. Изменения характиристик чайника из вне менее логично чем самостоятельное изменения чайника как отдельного обьекта.
Да бог с ней с логикой, посмотрим на удобство.
плита вызывает функцию A нагрева чайника, функция A вызывает все остальные. b-треск C-возгорания
1) если чайников много, то между функциями a-b, a -c постоянно придётся таскать указатель на структуру со свойствами чайника
2) если появится второй тип чайников, которые не загараются а взрываются ( функция d)то придётся не только писать функцию d но и изменять функцию a чтобы она взависимости от типа чайника вызывала либо С либо D.. Либо менять поведение плиты, чтобы она для разного типа чайников вызывала разное a(нагрев который вызывает взрыв вместо возгорания), что уж со всем странно, с какого перепуга плита должна подстраиватся под чайник.
3) если будет сто типов чайников и каждый со свое реакцией, то функция A станет адово сложной, ибо вынуждена учитывать в себе поведение всех 1000 типов чайников при максимальном нагреве. Придётся выносить вызов возгорания/взрывания/ расплавления и тд в другую отдельную функцию. Я же должен как то разгрузить функцию A.
4) недайбог мне придётся менять теперь какой то чайник, у которого не две реакции треск и возгарание а 100 к примеру. Да Я охренею прыгать по кучи файлов изменяя функции и вызовы этих функций.
А теперь вопрос, НАХРЕНА ВЕСЬ ЭТОТ ГЕМОР НУЖЕН ?
Ведь в ооп мне достаточно создать один базовый класс чайника, и унаследовать от него хоть 100 хоть 1000 различных видов чайника, там где реакция будет отличаться я просто впишу нужную функцию реакции и всё.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме
Последний раз редактировалось DjDiablo, 19.07.2012 в 13:51.
|