web-dev-qa-db-ja.com

プログラミングにおける「コンテキスト」という用語は?

私は数か月前からプログラミングをしており、頻繁に使用されるWordはクラスの「コンテキスト」です。 ServletContext(Java)、Activity(Android)、Service(Java、Android)、NSManagedContext(Objective-C、iOS)など。

辞書を見ると、Wordは状況、環境、状況などを意味することがわかります。しかし、私は英語を母国語としないため、直接翻訳すべきものがわかりません。たとえば、SomeClassContextという名前のクラス、またはコンテキストパラメーターを持つメソッドのいずれかを作成する場合、理解できないため、いつコンテキストに名前を付ける必要があるかわかりません。

Stack Overflowのコンテキストを検索しましたが、質問/回答が役に立ちませんでした。

誰かが私に説明を提供できたらとてもうれしいです。

149
user772058

歯を抜くために歯医者に行くとしましょう。

受付があなたの名前を尋ねるとき、それは彼らが予約を始めるために必要な情報です。この例では、名前はコンテキスト情報です。したがって、歯科医を訪問するコンテキストでは、歯を引っ張るために名前を入力する必要があります。

今、銀行に歩いて行くとしましょう。

銀行では、100ドルの引き出しを要求します。出納係はあなたにお金を与える前にあなたの身元を証明する必要があるので、おそらく彼らに運転免許証を見せるか、ATMカードをスワイプしてあなたのPIN番号を入力しなければなりません。再提供はコンテキストです。窓口係はこの情報を使用して取引を進め、その後、どの口座から引き出したいかを尋ねる場合があります。答えるとき、「私の普通預金口座」、それはより多くのコンテキストです。

コンテキストが多ければ多いほど、相手があなたのリクエストに対処するために必要な知識が増えます。コンテキストはオプションの場合(Google検索に単語をより多く入力してより良い結果を得るなど)場合によっては必須です(ATMでPIN番号を提供するなど)。いずれにしても、それは通常、物事を成し遂げるのに役立ちます。

さて、$ 100を購入し、飛行機のチケットを購入して、口が癒えている間に暖かくどこかへ飛ぶとします。

日当たりの良い素敵な目的地に到着しますが、バッグはそれを作りません。空港システムのどこかで失われています。そのため、「手荷物受け取りチケット」(バーコードが貼られたステッカー)を「ロストバゲージオフィス」に持って行きます。机の後ろにいる人が最初に尋ねるのは、荷物番号が記載されたチケットです。これは、必須のコンテキストの例です。

しかし、その後、荷物担当者は、より簡単に見つけられるように、バッグについてなどの詳細情報を求めます。 「色は?サイズは?車輪はありますか?ハードですか?必ずしもこれらの情報は必要ではありませんが、それはあなたがそれらを提供する場合に物事を絞り込むのに役立ちますそれは問題の領域を減らし、それは検索をはるかに高速にしますそれはオプションのコンテキストです。

興味深い部分は次のとおりです。多くのソフトウェアとAPIの場合、required contextは通常、メソッドシグネチャの実際のパラメーターになり、optional contextは、何かを含むことができる(空の場合もある)柔軟なキー値マップのように、または必要に応じてアクセスできるスレッドローカルストレージに移動します。

上記の例は実際のものですが、コンピューターサイエンス内の領域に簡単にマッピングできます。たとえば、HTTPヘッダーにはコンテキスト情報が含まれます。各ヘッダーは、情報aboutリクエストに関連しています。または、 2フェーズコミットプロセス の一部としてグローバルトランザクションIDを送信する場合、そのトランザクションIDはコンテキストです。情報aboutが手元のタスク全体であるため、トランザクションマネージャが作業を調整するのに役立ちます。

お役に立てば幸いです。

174
Brian Kelly

コンテキストは、情報を渡すためのバケットと見なすことができます。通常は、メソッド呼び出しに直接結び付けられているとは限らないものの、適切なものを渡すために使用されます。それを説明する素人の方法は「あなたが気にするかもしれないもの」かもしれません。

例えばdbの値を更新するサービスを作成している場合、おそらくレコードIDと新しい値を渡すでしょう。

汎用インターフェイスが必要な場合は、渡すコンテキストを定義して、サービスが任意のビジネスロジックを実行できるようにすることもできます。したがって、サービスはこれらの値に応じて追加のロジックを実行するため、ユーザー認証、ユーザーのセッション状態などをコンテキストに含めることができます。

14
Taylor

これは2015年です-このスレッドが開始されてから数年後。

それにもかかわらず、私はこのメッセージを投稿して、「コンテキスト」を理解するのに苦労している私のような誰かを助けます

Javaプログラムでコンテキストを使用したと主張することは決してありません-したがって、ハードコーディングでコンテキストを記述するのはあなた次第です。

「概念的にコンテキスト」は、「詳細を教えてください」と同じです。クライアントがサーバーにリクエストを行うと、サーバーはリクエストを実行するために「もっと情報を提供してください」と言います。したがって、要求とともに、クライアントは詳細のバンドルを提供します。サーバーは、リクエストを処理するために必要なすべての情報をバンドルから選択して選択します。このバンドルは「コンテキスト」と呼ばれるものです

例えば。

患者はdocに行き、treat_me( "I have a headache")と言います。Docofficeは患者に記入するフォームを提供します。患者がフォームに記入します。このフォームは、医師が「treat_me」リクエストを実行するために使用します。

リクエストは次のようになります。

treat_me ( "i have a headache", filled_form_num_23321 ) 

filled_form_num_23321ルックス:

Q.何が条件につながりますか? A. 10ペグのきちんとしたスコッチラストナイト
Q。患者名? A.ジョー・ビッグドリンカー
Q.Age? 98

このトランザクションではfilled_form_num_23321は「コンテキスト」です。

これが「コンテキスト」の概念の明確化に役立つことを願っています。

11
Ram

私は常にコンテキストを、作業中のオブジェクトまたは構造に関連する特定の状態と考えています。

たとえば、ビューでdrawRectを使用している場合(ビューに対してすべての描画を行う必要がある場合)、コアグラフィックスステートメントを発行するcurrentGraphicsContextを常に取得する必要があります。このコンテキストには、ビューの境界、ストロークの色、線を描画するためのストロークの太さ、閉じたパスを塗りつぶすための塗りつぶしの色などが含まれます。したがって、この場合のグラフィックスコンテキストは、次のような状態のセットとして考えてください。

ストロークの太さは1.5ピクセルです塗りつぶしの色はビューの黒い境界は(155、200)ストロークの色は赤です

基本的には現時点での状態...

7
Matt

Contextは、executionコンテキストを指します。これは、コード内の特定のポイント、およびその特定の実行におけるこれらのシンボルの値。

コンテキストは重要な概念です:

  1. 実行可能ユニット(関数、プロシージャ、命令)は、異なる結果を生成するか、異なるコンテキストで異なる動作をする場合があります。
  2. コンテキストが大きくなるほど、または複雑になるほど、コードの一部が何をするのかを理解するのが難しくなります(そのため、グローバル変数は避けられます)。

contextクラスを記述したり、contextパラメーターを渡す必要はありません。関数/メソッドに渡されるパラメーターは、呼び出されると実行コンテキストの一部になります。

英語を話せない人でも、 Code Complete のコピーを読んで、contextモジュラリティカップリングcohesionなど。

5
Apalala

実用的な例を挙げます。ユーザー(ログオンしている)とブラウザの言語に基づいて情報を取得/レンダリングする特定のWebページがあるとします。情報を取得するロジックは、ユーザーと言語に依存しません。あなたのページには、ユーザーと言語が表示されます...ロジックは、それが私なのかあなたなのか、英語なのかスペイン語なのかは関係ありません。

いくつかの擬似コード:

class FooPage
{
    void handleRequest(RequestContext context)
    {
        User user = context.getUser();
        Locale locale = context.getLocale();

        … do some logic based on the context
    }
}

それほど難しくはありませんが、概念を理解するには時間がかかります

4
lukin

あなたの場合のコンテキストは、アプリケーションが実行されている環境です。

適切に実行するためにアプリケーションが必要とする情報/サービス/能力を提供します。

HTH

1
user6656519

多くの場合、著者は、読者がWordの「コンテキスト」が使用されているコンテキストを詳細に理解していると想定しています。

次の文でコンテキストをどのように定義しますか?「?.

著者は、コンテキストを使用して、何かのコンテキストを保持する何らかのコンテナ、おそらくヒープを意味しているように思われます。多くの意味を持ち、混乱を招く話題の言葉になっています。コンテキストであり、コンテキストに格納されているのは要素ですか。 Wordコンテキストが使用されているというコンテキストの混乱を減らすために、「ランタイムは、要素の形式でコンテキストを保存するコンテナを作成する」と言うことができます。さらに良いのは、「ランタイムは状態を要素の形式で保存するコンテナを作成し、その状態を含むこのコンテナはCONTEXTと呼ばれます。」

0
john

3年後なので少し遅れるかもしれませんが、このスレッドが役立つかもしれません。これは、「コンテキスト」という言葉がプログラミングにおいて技術的な意味を持つことを示しています(単なる英語の意味ではありません)。

コンテキストフリーなプログラミング言語は何ですか?

例として使用して、そこから情報を引き出すことができるかどうかはわかりません。私も、技術的なプログラミング用語「コンテキスト」の言語にとらわれない説明を聞きたいです。

編集:または、少なくとも「コンテキスト」という用語は、技術的なプログラミングコンテキストに適用できることを示しています(パンニングは意図されていません)。おそらく、この用語の複数の具体的な適用において。

0
Jake