Что делает часть программного обеспечения движком? [закрыто]

39

Дескриптор «Engine» часто используется: графический движок, движок RegEx, AI-движок и т. Д. Но что на самом деле делает программный продукт движком? Дизайн, ввод / вывод, цель, размер?

Spacebob
источник
62
Отдел маркетинга.
Одд
2
@Oded: термин «движок» обычно используется самими программистами. Попробуйте найти альтернативы, и вы поймете, почему.
MaR
2
двигатель - это то, что заставляет колеса, которые я не хочу заново изобретать, поворачивать
Flexo
@Flexo, так что - библиотека?
Vorac

Ответы:

33

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

В реальном мире, по аналогии с CS101, двигатель похож на автомобильный двигатель. Требуется два входа, воздух и газ. Затем он передает их в камеру, после чего электричество используется для производства наименьшего в мире использования дуговой сварки. Материал тогда взрывается. Это производит два выхода, выхлоп и волну давления, которая приводит в движение поршень. Остальное передается в движение колеса различными приводными валами и тому подобным. Таким образом, двигатель - это двигатель, а сам автомобиль - оболочка. Вы можете использовать автомобильный двигатель для другой цели, например, для управления генератором электричества или мельницей для измельчения зерна. Вы можете использовать разные входные данные, если у двигателя есть покрытия и тому подобное для обработки таких вещей, как этанол или биодизель.

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

Мировой инженер
источник
9
Таким образом, драйвер - это инструмент, который управляет двигателем и разбивает оболочку?
MikeJ-UK
Мне очень понравился ваш ответ, но я думаю, что вопрос был больше в том, как теперь этот кусок кода / программного обеспечения называть библиотекой, API или движком? если вы можете добавить объяснение этому, это будет идеальный ответ
Али
Библиотеки и API работают на другом уровне, чем Engine. Лучше держать его сосредоточенным на терминах под рукой, чем расходиться в потенциально бесконечном море вариаций и названий.
Мировой инженер
6

Определение двигателя является

существительное / ˈenjən / 
двигателей, множественное число

  1. Машина с движущимися частями, которая преобразует энергию в движение

  2. Вещь, которая является агентом или инструментом определенного процесса

# 1 - это семантический эквивалент engineв том смысле, что он заставляет что-то происходить. 3D Graphics Engine, принимает входные данные и преобразует их в движение на экране. Движок регулярных выражений принимает входные данные и преобразует их в другой выход.

# 2 похоже на использование предложения как двигателя изменений . Эта семантика может быть применена и к программному обеспечению.

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


источник
3

На мой взгляд, самым близким ответом был тот, который сказал, что это маркетинговая вещь.

Давайте попробуем подумать, откуда появилось слово в этом контексте.

Конечно, автомобильные или реактивные двигатели не называются так, потому что они принимают и производят некоторую продукцию. Если бы это было так, то не только функции, но и многие вещи в жизни были бы двигателями.

Не случайно, на мой взгляд, корова, безусловно, не является двигателем, если говорить технически, и ни в коем случае не в здравом уме.

Двигатели используют различные виды энергии и превращают ее в движение (т.е. специализированный тип энергии).

Почему мы используем это в программном обеспечении? Я бы сказал, что самое реалистичное предположение, потому что это звучит просто круто. Почему мы называем некоторых программистов «Архитекторами»? По той же причине, если вы спросите меня.

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

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

Ям Маркович
источник
1

Движок - это все, что требует некоторого ввода, обрабатывает этот ввод и доставляет что-то в качестве вывода . По этому определению механизм CMS - это часть, которая генерирует HTTP-ответ на лету на основе входных данных. Ядро базы данных - это то, что принимает запрос, составляет план выполнения, выполняет его и возвращает результат.

Технически говоря, даже корова является своего рода двигателем. Он берет траву, обрабатывает ее и доставляет молоко.

Не забывайте, что термин «двигатель» больше используется в машиностроении, и он делает то же самое.

Другой аспект двигателя - это ядро ​​системы. Например, ядро ​​базы данных является ядром любой RDMS. Однако IDE для подключения к этому механизму, принимая входные данные и возвращая результат, не считается механизмом.

Саид Нямати
источник
5
+1 за «молочный двигатель», я ела йогурт и чуть не подавилась, когда прочитала это. ;)
FrustratedWithFormsDesigner
5
Ваше определение сделало бы каждую функцию двигателем.
back2dos
Не каждая функция является функцией своих входов.
Майкл Бердж
Я должен согласиться. Ваше объяснение звучит немного размыто и произвольно.
Ям Маркович
1
Программист тоже движок. Он принимает кофе на входе и производит код на выходе.
SF.
1

ИМХО, движок - это просто другое слово для подсистемы, модуля или библиотеки. IE - один или несколько компонентов, сплоченно спроектированных для определенной цели.

Хит Лилли
источник
2
downvoters: пожалуйста, уточните. То, что механизм (например, Quake Engine) является подсистемой, модулем или библиотекой, явно не является ложным.
Keppla
3
Хотя двигатель обычно реализован в виде подсистемы, этот термин обычно используется только для подсистем «под капотом». Они не используются как синонимы.
MaR
Предпосылка этого вопроса состоит в том, что движок - это не просто подсистема, это особый тип подсистемы.
Уилл Шеппард
0

Движок - это в основном программное обеспечение, которое может быть расширено для создания чего-либо.

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

jzm
источник
0

В моей работе этот термин, по-видимому, означает «один файл кода в формате XEngine.csс несколькими классами внутри этого файла кода, каждый из которых содержит только статические методы». Я бросаю немного внутрь каждый раз, когда смотрю на это; может также быть модулем VB6.

Лично я бы не использовал этот термин, он неоднозначен и бессмыслен (если, я полагаю, вы в большинстве случаев не пишете программное обеспечение, имитирующее автомобиль или гоночную игру); это похоже на старые классы «Менеджера» прошлого - название не говорит вам ничего, кроме «Это делает много вещей», и обычно это означает, что это грубое нарушение SOLID.

Уэйн Молина
источник