Можно ли эффективно запрограммировать архитектуры снизу вверх в парадигмах сверху вниз?

cs.stackexchange https://cs.stackexchange.com/questions/2938

Вопрос

А Архитектура субъекта, Предлагается Родни Брукс в 1986 году, является «восходящим» подходом, в котором роботы разработаны с использованием простых иерархических моделей. Эти модели опираются и включают нижние модули, чтобы сформировать конечный продукт. Например, роботу может быть предоставлен модуль «поиск открытия», который подчиняется более абстрактному модулю «Найти дверь», который затем сам по себе подчиняется модулем «Выход на игровое поле».

Теперь, очевидно, в более «объектно-ориентированном» дизайне мы могли бы начать дизайн с «выхода из модуля игрового поля», но для аргументации предположим, что некоторые из более примитивных компонентов (как «функции») будут вероятно, повторно используется в других более высоких понятиях.

Понимание того, что внедрение этого робота на процедурном языке (или функциональном, в этом отношении) может быть самым простым, но контрпродуктивно пытаться представить робота на основе архитектуры, основанного на субцене, в парадигме программирования, ориентированной на объект, ориентированной на объектно-ориентированное? (Понимая также, что, возможно, трудно взвесить парадигму разработки программного обеспечения против робототехники), чтобы получить решение, существует ли какая -то форма «адаптера», которая может быть реализована для повышения эффективности использования того, что может быть двумя противоречивыми парадигмами?

Это было полезно?

Решение

Я хотел бы обобщить это в более распространенный сценарий. Я считаю, что это имеет смысл, поскольку детали архитектуры подъема, возможно, не являются основным аспектом в вопросе (и те же проблемы возникают и в нероботических областях).

В общей архитектуре программного обеспечения существует двунаправленный подход или многопарадигм, как в вопросе. Большая часть слоя операционной среды обычно записывается снизу вверх. Очень специфические биты кода записываются в драйвер очень специфические аппаратные элементы в системе. Затем они объединяются для формирования компонентов более высокого уровня. Я подозреваю, что мы могли бы легко описать это как подход по подходу, если мы просто опишем нашего робота как самой системой, и цели управления конкретными аспектами этой системы. Хотя я не уверен, что это импортно.

Из нисходящего большинство приложений написаны на языках более высокого уровня или описаны с точки зрения абстрактной машины. Это довольно далека от большинства библиотек, которые действительно будут выполнять работу.

В какой -то момент эти два слоя должны встретиться - на самом деле они встречаются во многих местах в различных сценариях. Это, где вы должны «адаптировать» слои, чтобы подходить для другого слоя. Термин «адаптер» здесь на 100% правильный. Действительно есть программный шаблон, называемый «адаптер», который используется для этой цели.

Помимо конкретных адаптеров, мы можем на самом деле рассмотреть весь инструмент для любого современного программирования. Сам компилятор, наряду с лайнером и виртуальной машиной выполнения, являются основным интерфейсом между двумя слоями. То есть язык высокого уровня написан в одном домене, а компилятор - это то, что позволяет ему работать в доменах нижнего уровня.

Если вы смотрите специально для эффективации парадигмы, учтите, что языки высокого уровня существуют для императивного программирования (C ++), функционального программирования (Haskell) и декларативного программирования (Prolog). Все эти парадигмы в конечном итоге работают на одних и тех же базовых библиотеках низкого уровня.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с cs.stackexchange
scroll top