記述子「エンジン」は、グラフィックエンジン、RegExエンジン、AIエンジンなど、さまざまな場所で使用されていますが、実際にソフトウェアの一部をエンジンにしているものは何ですか。設計、入力/出力、目的、サイズ?
エンジンは、いわば「ボンネットの下」にあるものです。エンドユーザーには表示されないか、少なくともごくまれに表示されます。たとえば、グラフィックスエンジンはすべてのレンダリング計算を実行しますが、それらの変更をモデル化する実際の環境に渡します。入力:数学。出力:きれいな色。エンジンは、より高レベルのインターフェースとは非常に異なる作業変数を持つ場合もあります。たとえば、前の例では、生の数値データを使用して、何かが影かテクスチャかを気にせずにグラフィックスを操作しています。これらはすべて、そのエンジンによって実行される方程式と行列演算に抽象化されています。エンジンは特定のシステムの「カーネル」であり、残りは「シェル」のようなものと考えてください。
現実の世界、CS101に例えると、エンジンは自動車のエンジンのようなものです。空気とガスの2つの入力を受け取ります。次に、それらをチャンバーに送り、そこで電気を使用して、世界で最小のアーク溶接を生成します。その後、ものは爆発します。これにより、排気とピストンを駆動する圧力波の2つの出力が生成されます。残りは様々なドライブシャフトなどによりホイール運動に変換されます。つまり、エンジンはエンジンであり、車自体はシェルです。自動車のエンジンを別の目的で使用することもできます。たとえば、電気用の発電機を運転したり、粉砕機で穀物を粉砕したりします。エンジンにエタノールやバイオディーゼルのようなものを処理するためのコーティングなどがある場合は、さまざまな入力を使用できます。
要約すると、エンジンは通常、単独では見つからないソフトウェアです。これは、そのソフトウェアの原動力として機能しますが、通常、外部の世界とは少しでも相互作用します。複数のエンジンが連携して補完的な出力を生成したり、必要に応じて一緒にパイプライン化したりできます。エンジンは、美的感覚でユーザーエクスペリエンスに直接関係することはしませんが、データフローを動機付けし、優れたアプリケーションパフォーマンスを可能にするのに十分な応答性を提供することで、これらのエクスペリエンスを推進します。
エンジンの定義 は
名詞/ ˈenjən /
エンジン、複数
動力を運動に変換する可動部品を備えた機械
特定のプロセスのエージェントまたは手段であるもの
#1は、何かが発生するというソフトウェアの意味でのengine
と同じ意味です。 3Dグラフィックエンジンは、入力を受け取り、それを画面上のモーションに変換します。正規表現エンジンは入力を受け取り、それらを別の出力に変換します。
#2は、変更のエンジンという文を使用するようなものです。このセマンティクスはソフトウェアにも適用できます。
ソフトウェアengines
は、物事を受動的に行うフレームワークやライブラリ以上のものです。ソフトウェアエンジンは入力に基づいて独自に動作し、受動的ではなく、通常は独自のrun loop
自分の意志で処理を行います。
私の意見では、これまでのところ最も近い答えは、マーケティングの問題だと言った答えです。
この文脈での御言葉の使用がどこから来たのか考えてみましょう。
確かに、自動車やジェットエンジンは、入力を受け取って出力を生成するため、そのように呼ばれていません。それがそれなら、機能だけでなく、人生の多くはエンジンです。
私の意見では、偶然ではありませんが、牛がエンジンではないこと、技術的に言えないこと、そして正気な言い方ではないことは間違いありません。
エンジンはさまざまなタイプのエネルギーを使用して、それを運動に変えます(つまり、特殊なタイプのエネルギー)。
なぜそれをソフトウェアで使用するのですか?最も現実的な推測は、単にクールに聞こえるためだと思います。一部のプログラマーを「アーキテクト」と呼ぶのはなぜですか?同じ理由で、私に尋ねれば。
別の理由としては、プログラマーは一般的にメタファーを使用してソフトウェアの一部を記述することを好むため、理解しやすくなります(当然のことながら、多くの場合そうではありません)。
私の直感は、アプリケーションドメインがメタファーでいっぱいになるような方法でメタファーを悪用することは悪い習慣だということです。クライアントや、プログラミングについて知らない、または気にしない人と話すときに役立つと思います。それ以外は、簡単なフローチャートと図が役に立ちます。
エンジンは何か何らかの入力を受け取り、その入力を処理し、出力として何かを配信するです。この定義では、CMSエンジンは、入力に基づいてオンザフライでHTTP応答を生成する部分です。データベースエンジンは、クエリを受け取り、実行プランを作成して実行し、結果を返します。
技術的に言えば、cowも一種のエンジンです。それは草を取り、それを処理し、牛乳を届けます。
エンジンという用語は機械工学でより多く使用されていることを忘れないでください。
エンジンのもう1つの側面は、システムの中核です。たとえば、データベースエンジンはすべてのRDMSの中核です。ただし、そのエンジンに接続するIDEは、入力を受け取って結果を返す一方で、エンジンとは見なされません。
私見、エンジンはサブシステム、モジュール、またはライブラリの単なる別の単語です。 I.E. -特定の目的のために一貫して設計された1つ以上のコンポーネント。
エンジンは基本的に、何かを作成するために拡張できるソフトウェアです。
たとえば、ゲームでは、「何か」のゲームエンジンについてよく耳にします。これは、特定のソフトウェアが完全にユニークなゲームを作成するために変更および拡張されたことを意味します。
私の仕事では、この用語は「XEngine.cs
形式の単一のコードファイルで、そのコードファイル内に複数のクラスがあり、そのすべてに静的メソッドしか含まれていない」という意味があるようです。私はそれを見るたびに少し内側を投げます。 VB6モジュールの場合もあります。
私は個人的にこの用語を使用しませんが、ほとんどの場合、あいまいで意味がありません(ただし、自動車やレーシングゲームをシミュレートするソフトウェアを記述している場合を除きます)。それは昔の「マネージャー」クラスのようなものです。名前は「これは多くのことを行います」以外には何も伝えません。通常、これはSOLID
の重大な違反であることを意味します。