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?
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?
Odpowiedzi:
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.
Definicja silnika jest
rzeczownik / ˈenjən /
silniki, liczba mnoga
Maszyna z ruchomymi częściami, która zamienia energię w ruch
Rzecz, która jest agentem lub instrumentem określonego procesu
# 1 jest semantycznym odpowiednikiem engine
w 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 engines
to 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 loop
przetwarzanie.
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ę.
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.
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.
W mojej pracy termin ten wydaje się oznaczać „Pojedynczy plik kodu w formacie XEngine.cs
z 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
.