Що робить програмне забезпечення двигуном? [зачинено]


39

Дескриптор "Двигун" багато кидається: графічний двигун, RegEx двигун, AI двигун тощо, але що насправді робить програмне забезпечення двигуном? Дизайн, вхід / вихід, призначення, розмір?


62
Відділ маркетингу.
Oded

2
@Oded: термін "двигун" зазвичай використовується самими програмістами. Спробуйте знайти альтернативи, і ви зрозумієте, чому.
MaR

2
Двигун - це те, що змушує колеса, я не хочу переробляти поворот
Flexo

@Flexo, значить - бібліотека?
Vorac

Відповіді:


33

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

Для використання в реальному світі, за аналогією CS101, двигун подібно до автомобільного двигуна. Він займає два входи, повітря і газ. Потім він передає їх у камеру, де електроенергія використовується для отримання найменшого в світі дугового зварювання. Потім речі вибухають. Це створює два виходи, вихлоп і хвиля тиску, що приводить в рух поршень. Решта передається в рух колесом різними приводними валами тощо. Тож Двигун - це двигун, а сама машина - оболонка. Ви можете використовувати автомобільний двигун з іншою метою, скажімо, керуючи генератором для електрики або млином для подрібнення зерна. Ви можете використовувати різні вхідні матеріали, якщо Двигун має покриття і таке для обробки речей, як етанол або біодизель.

Підсумовуючи це, Двигун - це програмне забезпечення, яке зазвичай не зустрічається в ізоляції. Він діє як рушійна сила для цього програмного забезпечення, але, як правило, дуже мало взаємодіє із зовнішнім світом. Кілька двигунів можуть працювати разом для отримання безкоштовних виходів або можуть бути прокладені трубопроводами разом. Двигун не робить речей, пов’язаних із досвідом користувача в естетичному сенсі, але все-таки керує цим досвідом, мотивуючи потік даних та бути достатньо чуйним, щоб забезпечити хороші показники роботи програми.


9
Отже, драйвер - це інструмент, який керує двигуном і розбиває оболонку?
MikeJ-UK

Мені дуже сподобався і прихилився до вашої відповіді, але я думаю, питання було більше про те, як зараз цей фрагмент коду / програмного забезпечення повинен називатися бібліотекою чи API чи двигуном? якщо ви можете додати пояснення для цього, це буде ідеальною відповіддю
Алі

Бібліотеки та API працюють на іншому рівні, ніж двигун. Краще тримати його зосередженим на цьому терміні, ніж розходитись у потенційно нескінченному морі варіацій та назв.
Світовий інженер

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
Програміст теж двигун. Він приймає каву на вході і виробляє код на виході.
СФ.

1

IMHO, двигун - це ще одне слово для підсистеми, модуля чи бібліотеки. IE - один або кілька компонентів, згуртованих для конкретних цілей.


2
downvoters: уточнюйте, будь ласка. Те, що двигун (наприклад, Quake Engine) є підсистемою, модулем або бібліотекою, очевидно, неправдиво.
кеппла

3
Хоча двигун реалізується зазвичай як підсистема, термін зазвичай використовується лише для підсистем "під капотом". Вони не використовуються як синоніми.
MaR

Передумова цього питання полягає в тому, що двигун - це не лише підсистема, це особливий тип підсистеми.
Буде Шеппард

0

Двигун - це в основному програмне забезпечення, яке можна розширити, щоб щось створити.

Наприклад, в іграх ви багато чого почуєте про ігровий движок "щось". Це означає, що певне програмне забезпечення було модифіковане та розширене для створення абсолютно унікальної гри.


0

На моїй роботі термін, схоже, означає «Один файл коду у форматі XEngine.csз декількома класами всередині цього кодового файлу, який не містить нічого, крім статичних методів». Я кидаю трохи всередину щоразу, коли я дивлюся на це; може бути модулем VB6.

Я особисто не використовував би цей термін, це неоднозначно і безглуздо (якщо, напевно, ви в більшості випадків не пишете програмне забезпечення, яке імітує автомобіль чи, можливо, гоночну гру); це як у старих класах "Менеджер", колись - це ім'я не означає нічого, крім "Це робить багато чого", і зазвичай це означає, що це грубе порушення SOLID.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.