Co sprawia, że ​​oprogramowanie jest silnikiem? [Zamknięte]

39

Deskryptor „Engine” jest często używany: silnik graficzny, silnik RegEx, silnik AI itp., Ale co tak naprawdę czyni oprogramowanie silnikiem? Projekt, wejście / wyjście, cel, rozmiar?

Spacebob
źródło
62
Dział marketingu.
Oded
2
@Oded: termin „silnik” jest powszechnie używany przez samych programistów. Spróbuj znaleźć alternatywy, a zobaczysz dlaczego.
MAR
2
silnik jest tym, co sprawia, że ​​koła nie chcę wymyślać na nowo skrętu
Flexo
@Flexo, więc - biblioteka?
Vorac,

Odpowiedzi:

33

Można powiedzieć, że silnik byłby „pod maską”. Nie jest, a przynajmniej bardzo rzadko jest widoczny dla użytkownika końcowego. Na przykład silnik graficzny steruje wszystkimi obliczeniami renderowania, ale przekazuje te zmiany do rzeczywistego środowiska, które ma być modelowane. Dane wejściowe: matematyka. Wyjście: ładne kolory. Silnik może również mieć bardzo różne zmienne robocze niż interfejs wyższego poziomu. Na przykład w poprzednim przykładzie używa surowych danych liczbowych do manipulowania grafiką, nie martwiąc się o to, czy coś jest cieniem czy teksturą, a wszystko to jest abstrakcyjne w równaniach i operacjach macierzowych wykonywanych przez ten silnik. Pomyśl o silniku jako o „jądrze” danego systemu, podczas gdy reszta byłaby bardziej jak „powłoka”.

Aby użyć prawdziwego świata, analogii CS101, silnik jest jak silnik samochodu. Zajmuje dwa wejścia, powietrze i gaz. Następnie przekazuje je do komory, w której elektryczność jest wykorzystywana do generowania najmniejszego na świecie spawania łukowego. Materiał następnie eksploduje. Daje to dwa wyjścia, wydech i falę ciśnieniową, która napędza tłok. Reszta jest przenoszona na ruch kół przez różne wały napędowe i tym podobne. Więc silnik jest silnikiem, a sam samochód jest skorupą. Możesz użyć silnika samochodowego do innego celu, na przykład prowadzić generator prądu lub młyn do mielenia ziarna. Możesz użyć różnych danych wejściowych, jeśli silnik ma powłoki i takie, aby poradzić sobie z etanolem lub biodieslem.

Podsumowując, Engine to oprogramowanie, które zwykle nie jest izolowane. Działa jako siła napędowa tego oprogramowania, ale zazwyczaj bardzo mało lub wcale nie wchodzi w interakcje ze światem zewnętrznym. Kilka silników może współpracować ze sobą w celu uzyskania komplementarnych mocy wyjściowych lub może być łączonych w rurociąg w razie potrzeby. Silnik nie robi rzeczy związanych z wrażeniami użytkownika w sensie estetycznym, ale napędza te wrażenia, motywując przepływ danych i wystarczająco szybko reagując, aby umożliwić dobrą wydajność aplikacji.

Inżynier świata
źródło
9
Czy sterownik jest narzędziem, które kontroluje silnik i powoduje awarię powłoki?
MikeJ-UK,
naprawdę lubię i czerpię korzyści z twojej odpowiedzi, ale myślę, że pytanie dotyczyło raczej tego, jak teraz ten fragment kodu / oprogramowania powinien być nazywany biblioteką, interfejsem API lub silnikiem? jeśli możesz dodać również wyjaśnienie, będzie to idealna odpowiedź
Ali,
Biblioteki i interfejsy API działają na innym poziomie niż silnik. Lepiej jest skoncentrować się na tym, co jest pod ręką, niż rozejść się w potencjalnie nieskończonym morzu odmian i nazw.
Inżynier świata
6

Definicja silnika jest

rzeczownik / ˈenjən / 
silniki, liczba mnoga

  1. Maszyna z ruchomymi częściami, która zamienia energię w ruch

  2. Rzecz, która jest agentem lub instrumentem określonego procesu

# 1 jest semantycznym odpowiednikiem enginew sensie programowym, że powoduje, że coś się dzieje. Silnik grafiki 3D, pobiera dane wejściowe i konwertuje je na ruch na ekranie. Silnik regex pobiera dane wejściowe i konwertuje je na inne dane wyjściowe.

# 2 jest jak użycie zdania jako silnika zmian . Ten semantyczny można również zastosować do oprogramowania.

Oprogramowanie enginesto coś więcej niż frameworki i biblioteki, które pasywnie działają. Silniki oprogramowania działają samodzielnie na podstawie danych wejściowych, nie są pasywne i zwykle mają własne run loopprzetwarzanie.


źródło
3

Moim zdaniem najbliższą odpowiedzią była ta, która powiedziała, że ​​jest to kwestia marketingowa.

Zastanówmy się, skąd wzięło się użycie tego słowa w tym kontekście.

Z pewnością silniki samochodowe lub odrzutowe nie są nazywane w ten sposób, ponieważ pobierają dane wejściowe i wytwarzają pewną moc wyjściową. Gdyby tak było, to nie tylko działałyby, ale wiele rzeczy w życiu byłoby silnikami.

Moim zdaniem nie przez przypadek krowa zdecydowanie nie jest silnikiem, technicznie rzecz biorąc i żadnym zdrowym sposobem mówienia.

Silniki wykorzystują różne rodzaje energii i zamieniają ją w ruch (tj. Specjalistyczny rodzaj energii).

Dlaczego używamy go w oprogramowaniu? Powiedziałbym, że najbardziej realistycznym przypuszczeniem jest to, że po prostu brzmi fajnie. Dlaczego nazywamy niektórych programistów „architektami”? Z tego samego powodu, jeśli mnie pytasz.

Innym powodem może być to, że programiści zazwyczaj lubią używać metafor do opisywania części swojego oprogramowania, dzięki czemu łatwiej jest je uchwycić (bo oczywiście nie są).

Mam przeczucie, że niewłaściwą praktyką jest nadużywanie metafor w taki sposób, że domena aplikacji jest pełna. Myślę, że może się przydać podczas rozmowy z klientami lub osobami, które nie znają programowania lub go nie obchodzą. Poza tym proste wykresy i diagramy wykonują dla mnie pracę.

Yam Marcovic
źródło
1

Silnik to wszystko, co wymaga trochę danych wejściowych, przetwarza je i dostarcza coś jako dane wyjściowe . Według tej definicji silnik CMS jest częścią, która generuje odpowiedź HTTP w locie na podstawie danych wejściowych. Mechanizm bazy danych jest tym, co bierze zapytanie, rysuje plan wykonania, wykonuje go i zwraca wynik.

Z technicznego punktu widzenia nawet krowa jest rodzajem silnika. Bierze trawę, przetwarza ją i dostarcza mleko.

Nie zapominaj, że termin silnik jest częściej używany w inżynierii mechanicznej i robi dokładnie to samo.

Kolejnym aspektem silnika jest bycie rdzeniem systemu. Na przykład silnik bazy danych jest rdzeniem każdego RDMS. Jednak IDE łączące się z tym silnikiem, przy pobieraniu danych wejściowych i zwracaniu wyniku, nie jest uważane za silnik.

Saeed Neamati
źródło
5
+1 za „silnik mleczny”, jadłem jogurt i prawie go zakrztusiłem, kiedy to przeczytałem. ;)
FrustratedWithFormsDesigner
5
Twoja definicja sprawi, że każda funkcja stanie się silnikiem.
back2dos
Nie każda funkcja jest funkcją jej wejść.
Michael Burge
Muszę się zgodzić. Twoje wyjaśnienie brzmi trochę rozmazane i arbitralne.
Yam Marcovic,
1
Programista jest również silnikiem. Pobiera kawę na wejściu i generuje kod na wyjściu.
SF.
1

IMHO, silnik to kolejne słowo określające podsystem, moduł lub bibliotekę. IE - jeden lub więcej elementów spójnie zaprojektowanych do określonego celu.

Heath Lilley
źródło
2
downvoters: proszę opracować. To, że silnik (np. Silnik Quake) jest podsystemem, modułem lub biblioteką, nie jest oczywiście fałszem.
keppla,
3
Podczas gdy silnik jest zwykle wdrażany jako podsystem, termin ten jest powszechnie używany tylko w przypadku podsystemów „pod maską”. Nie są używane jako synonimy.
MAR
Założeniem tego pytania jest to, że silnik to nie tylko podsystem, to szczególny typ podsystemu.
Will Sheppard,
0

Silnik to w zasadzie oprogramowanie, które można rozszerzyć, aby coś stworzyć.

Na przykład w grach usłyszysz dużo o silniku gry „coś”. Oznacza to, że określone oprogramowanie zostało zmodyfikowane i rozszerzone, aby stworzyć całkowicie unikalną grę.

jzm
źródło
0

W mojej pracy termin ten wydaje się oznaczać „Pojedynczy plik kodu w formacie XEngine.csz wieloma klasami w tym pliku kodu, z których wszystkie zawierają wyłącznie metody statyczne”. Wrzucam trochę do środka za każdym razem, gdy na to patrzę; równie dobrze może być modułem VB6.

Ja osobiście nie użyłbym tego terminu, jest on dwuznaczny i bez znaczenia (chyba, że, jak sądzę, piszesz oprogramowanie symulujące samochód lub grę wyścigową) w większości przypadków; to jak dawne klasy „Manager” z przeszłości - nazwa mówi tylko „To robi wiele rzeczy” i zwykle oznacza to poważne naruszenie SOLID.

Wayne Molina
źródło