ソフトウェアをエンジンにする理由は何ですか?[閉まっている]


39

記述子「エンジン」は、グラフィックエンジン、正規表現エンジン、AIエンジンなど、さまざまな場所に投げ込まれますが、実際にソフトウェアをエンジンにするものは何ですか?設計、入力/出力、目的、サイズ?


62
マーケティング部門。
-Oded

2
@Oded:「エンジン」という用語は、プログラマー自身がよく使用します。代替案を見つけてみてください。その理由がわかります。
-MaR

2
エンジンは、車輪を再発明したくない車輪を作るものです
Flexo

@Flexo、そう-ライブラリ?
ヴォラック

回答:


33

エンジンは、いわば「ボンネットの下」にあるものです。エンドユーザーには表示されないか、少なくともまれにしか表示されません。たとえば、グラフィックエンジンはすべてのレンダリング計算を実行しますが、それらの変更をモデル化する実際の環境に渡します。入力:数学。出力:きれいな色。また、エンジンには、より高レベルのインターフェイスとは非常に異なる作業変数がある場合があります。たとえば、前の例では、生の数値データを使用して、何かが影なのかテクスチャなのかを気にせずにグラフィックスを操作し、そのすべてがそのエンジンによって実行される方程式と行列演算に抽象化されます。エンジンは特定のシステムの「カーネル」であると考え、残りは「シェル」に似ています。

実世界のCS101を例にとると、エンジンは自動車のエンジンのようなものです。空気とガスの2つの入力が必要です。次に、それらをチャンバーに送り、電気を使用して世界最小のアーク溶接を生成します。その後、ものが爆発します。これにより、排気とピストンを駆動する圧力波の2つの出力が生成されます。残りは、さまざまな駆動シャフトなどによってホイールの動きに変換されます。したがって、エンジンはエンジンであり、車自体がシェルです。車のエンジンを別の目的に使用することもできます。たとえば、電気用の発電機を運転したり、穀物を粉砕するための工場を運転したりできます。エンジンにコーティングなどがある場合、エタノールやバイオディーゼルなどを処理するために異なる入力を使用できます。

要約すると、エンジンは通常、単独では見られないソフトウェアです。それはそのソフトウェアの原動力として機能しますが、通常、外部の世界との相互作用は非常にわずかです。複数のエンジンが連携して補完的な出力を生成したり、必要に応じてパイプライン化されたりします。エンジンは、審美的な意味でのユーザーエクスペリエンスに直接関連することは行いませんが、データフローを動機付け、アプリケーションのパフォーマンスを向上させるのに十分な応答性を提供することで、これらのエクスペリエンスをさらに向上させます。


9
ドライバーはエンジンを制御し、シェルをクラッシュさせるツールですか?
MikeJ-UK

私はあなたの答えから本当に好きで恩恵を受けましたが、このコード/ソフトウェアをライブラリまたはAPIまたはエンジンと呼ぶにはどうすればよいかについての質問だったと思いますか?これに説明を追加できれば完璧な答えになります
アリ

ライブラリとAPIは、エンジンとは異なるレベルで動作します。潜在的に無限のバリエーションと名前の海に分岐するよりも、手元の用語に焦点を合わせ続ける方が良いです。
ワールドエンジニア

6

エンジン定義

名詞/ ˈenjən / 
エンジン、複数

  1. 動力を運動に変換する可動部品を備えた機械

  2. 特定のプロセスのエージェントまたは手段であるもの

#1は、engineソフトウェアの意味で、何かを引き起こすという意味に相当します。3Dグラフィックエンジン。入力を受け取り、画面上の動きに変換します。正規表現エンジンは入力を受け取り、それらを別の出力に変換します。

#2は、変化のエンジンである文を使用するようなものです。このセマンティックは、ソフトウェアにも適用できます。

ソフトウェアenginesは、受動的に物事を行うフレームワークやライブラリ以上のものです。ソフトウェアエンジンは、入力に基づいて独自に動作します。受動的ではなく、通常、独自の意思でrun loop処理を行う独自のエンジンを備えています。


3

私の意見では、これまでの最も近い答えは、マーケティングのことだと言ったものでした。

この文脈での単語の使用がどこから来たのか考えてみましょう。

確かに車やジェットエンジンは、入力を受け取り、出力を生成するため、そのように呼ばれません。それなら、機能するだけでなく、人生の多くのものがエンジンになります。

私の意見では、偶然ではありませんが、牛が最も確実にエンジンではなく、技術的にも、健全な話し方でもないことは間違いありません。

エンジンはさまざまな種類のエネルギーを使用し、それを運動に変換します(つまり、特殊な種類のエネルギー)。

なぜソフトウェアで使用するのですか?最も現実的な推測は、単にクールに聞こえるからだと思います。一部のプログラマーを「アーキテクツ」と呼ぶのはなぜですか?同じ理由、あなたが私に尋ねる場合。

もう1つの理由は、プログラマが一般的にメタファーを使用してソフトウェアの一部を説明することを好み、そのため、彼らが把握しやすくなる可能性があることです(当然、そうではないことが多いため)

私の考えでは、アプリケーションドメインがメタファーでいっぱいになるような方法でメタファーを悪用するのは悪い習慣です。クライアントや、プログラミングを知らない、または気にしない人と話すときに役立つと思います。それ以外は、単純なフローチャートと図が役立っています。


1

エンジンは、何らかの入力受け取り、その入力を処理し、出力として何かを配信するものです。この定義により、CMSエンジンは、入力に基づいてその場でHTTP応答を生成する部分です。データベースエンジンは、クエリを受け取り、実行計画を作成して実行し、結果を返します。

技術的に言えば、でさえ一種のエンジンです。草を取り、処理し、牛乳を届けます。

エンジンという用語は機械工学でより多く使用されていることを忘れないでください。まったく同じことを行います。

エンジンの別の側面は、システムの中核です。たとえば、データベースエンジンはすべてのRDMSの中核です。ただし、そのエンジンに接続して、入力を受け取って結果を返すIDEは、エンジンとは見なされません。


5
「ミルクエンジン」の+1。ヨーグルトを食べていましたが、それを読んでいると、ほとんど窒息していました。;)
FrustratedWithFormsDesigner

5
定義により、すべての機能がエンジンになります。
back2dos

すべての関数がその入力の関数であるとは限りません。
マイケルバージ

同意しなければなりません。あなたの説明は少しぼやけてsounds意的に聞こえます。
ヤムマルコビッチ

1
プログラマーもエンジンです。入力時にコーヒーを受け取り、出力時にコードを生成します。
SF。

1

私見、エンジンは、サブシステム、モジュール、またはライブラリの単なる別の言葉です。IE-特定の目的のためにまとまって設計された1つ以上のコンポーネント。


2
downvoters:詳しく説明してください。エンジン(Quake Engineなど)がサブシステム、モジュール、またはライブラリであることは、明らかに偽りではありません。
ケプラ

3
通常、エンジンはサブシステムとして実装されますが、この用語は一般に「ボンネット内」のサブシステムにのみ使用されます。それらは同義語として使用されません。
-MaR

この質問の前提は、エンジンは単なるサブシステムではなく、特定のタイプのサブシステムであるということです。
ウィルシェパード

0

エンジンは基本的に何かを作成するために拡張できるソフトウェアです。

たとえば、ゲームでは、「何か」ゲームエンジンについて多くのことを聞きます。つまり、特定のソフトウェアが変更および拡張されて、完全にユニークなゲームが作成されました。


0

私の仕事では、この用語は「コードファイル内にXEngine.cs複数のクラスがあり、そのすべてに静的メソッドしか含まれていない形式の単一のコードファイル」を意味するようです。私はそれを見るたびに少し内側に投げます。VB6モジュールの場合もあります。

私は個人的にこの用語を使用しません。ほとんどの場合、あいまいで意味がありません(自動車やレーシングゲームをシミュレートするソフトウェアを書いているのでなければ)。それは昔の「マネージャー」クラスのようなものです-名前は「これは多くのことをします」以外に何も告げず、通常それはの重大な違反であることを意味しSOLIDます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.