Il termine "contesto" nella programmazione? [chiuso]


161

Sto programmando da alcuni mesi e una parola usata frequentemente è "contesto" nelle classi. Come ServletContext(Java), Activity(Android), Service(Java, Android), NSManagedContext(Objective-C, iOS).

Guardando nei dizionari vedo che la parola significa: situazione, ambiente, circostanze ecc. Tuttavia, poiché non sono un madrelingua inglese, non capisco in cosa dovrei tradurlo direttamente. Ad esempio, se dovessi scrivere una classe che è stata nominata SomeClassContexto un metodo con un parametro di contesto, non capirei quando dovrei nominarlo contesto perché non lo capisco.

Ho cercato il contesto su Stack Overflow, ma nessuna domanda / risposta è stata in grado di aiutarmi.

Sarei molto felice se qualcuno potesse fornirmi la spiegazione.


6
Il contesto dice: l'area all'interno della quale agisce questo oggetto.
Blundell,

7
Il contesto è lo stato di un oggetto o di un sistema, in un determinato momento
Matt,

Risposte:


190

Diciamo che vai dal dentista per farti estrarre un dente.

Quando l'addetto alla reception ti chiede il tuo nome, queste sono le informazioni di cui hanno bisogno per iniziare l'appuntamento. In questo esempio, il tuo nome è informazioni contestuali . Quindi, nel contesto della visita dal dentista, è necessario fornire il proprio nome per ottenere il dente tirato.

Ora supponiamo che passi dalla banca.

Alla banca, chiedi di ritirare $ 100. Il cassiere deve stabilire la tua identità prima di darti denaro, quindi probabilmente dovrai mostrare loro una patente di guida o scorrere la tua carta bancomat e inserire il tuo codice PIN. In entrambi i casi, ciò che stai fornendo è il contesto . Il cassiere utilizza queste informazioni per spostare la transazione in avanti. Potrebbero quindi chiederti da quale account desideri prelevare. Quando rispondi, "Il mio conto di risparmio" , è ancora più contesto .

Più contesto fornisci, maggiore è la conoscenza che l'altra parte deve aiutare a gestire la tua richiesta. A volte il contesto è facoltativo (come digitare sempre più parole nella ricerca di Google per ottenere risultati migliori) ed a volte è necessario (come fornire il proprio codice PIN allo sportello automatico). Ad ogni modo, sono le informazioni che di solito aiutano a fare le cose.

Ora diciamo che prendi i tuoi $ 100 e compri un biglietto aereo per volare in un posto caldo mentre la tua bocca guarisce.

Arrivi in ​​una bella destinazione soleggiata, ma la tua borsa non ce la fa. Si è perso da qualche parte nel sistema aeroportuale. Quindi, porti il ​​tuo "biglietto di ritiro bagagli" (quell'adesivo con il codice a barre su di esso) all '"Ufficio bagagli smarriti". La prima cosa che la persona dietro la scrivania chiederà è quel biglietto con il numero del bagaglio su di esso. Questo è un esempio di alcuni contesti richiesti .

Ma poi il bagaglio ti chiede maggiori informazioni sulla tua borsa in modo che possano trovarla più facilmente. Chiedono: "Di che colore è? Di che dimensioni è? Ha le ruote? È duro o morbido? Anche se non hanno necessariamente bisogno di quelle informazioni, aiuta a restringere le cose se le fornisci. Riduce il area problematica. Rende la ricerca molto più veloce. Questo è un contesto opzionale .

Ecco la parte interessante: per un sacco di software e API, il contesto richiesto di solito finisce come parametri effettivi nella firma di un metodo, e il contesto opzionale va altrove, come una mappa chiave-valore flessibile che può contenere qualsiasi cosa (e può essere vuota ) o nella memoria locale thread dove è possibile accedervi se necessario.

Gli esempi sopra riportati sono tratti dalla vita reale, ma puoi facilmente mapparli su aree all'interno dell'informatica. Ad esempio, le intestazioni HTTP contengono informazioni contestuali. Ogni intestazione si riferisce alle informazioni sulla richiesta in corso. O quando si invia un ID transazione globale come parte di un processo di commit in due fasi , tale ID transazione è contesto. Aiuta il gestore delle transazioni a coordinare il lavoro perché contiene informazioni sull'attività complessiva a portata di mano.

Spero che aiuti.


22
@Brian: Dal tuo post e dalle altre risposte fornite qui penso che potrei iniziare a capirlo. Un oggetto che trasporta informazioni sullo stato di un evento, è un oggetto "Contesto"? Sarebbe corretto? Quindi un oggetto RequestContext trasporterà informazioni su una richiesta specifica, giusto? E quando arriva un'altra richiesta, le informazioni associate all'oggetto RequestContext cambieranno. È sbagliato dire che un oggetto-contesto è un po 'come un DTO (oggetto di trasferimento dati)? Tuttavia, un contesto trasporta informazioni su diverse "cose" correlate mentre DTO trasporta informazioni su un oggetto come una persona? Grazie
user772058,

9
L'hai inchiodato, è esattamente vero. Un RequestContext trasporterà effettivamente informazioni sulla richiesta in corso (ad esempio, le impostazioni internazionali del client). I contesti sono simili a DTO / VO ma di solito non sono così tipizzati. Ma hai capito bene il concetto.
Brian Kelly,

5
@Brian: Mi è venuta in mente un'altra domanda, quando parlo di menu contestuali, il significato del contesto, come ho appreso da questa risposta, non ha senso nella mia testa. Come ho capito ora il contesto è (breve) per portare lo stato su qualcosa. Quindi, cosa significa quando si usa la parola "contesto" in questo modo?
user772058,

9
Buona domanda. Il significato di "contesto" all'interno di "menu contestuale" è "le cose che vedrai nel menu dipendono da dove fai clic, quando fai clic e cos'altro accade nella tua applicazione". Quelle informazioni (dove / quando / cosa hai fatto clic) rappresentano il contesto e verrebbero inviate al codice della GUI in modo che possa decidere quali cose offrire nel menu.
Brian Kelly,

2
Quindi, i parametri del metodo sono contestuali. Ho sbagliato?
Può Aydoğan il

14

Il contesto può essere visto come un secchio per trasmettere informazioni. In genere viene utilizzato per passare cose non necessariamente legate direttamente a una chiamata di metodo, ma potrebbe comunque essere pertinente. Un modo per laici di descriverlo potrebbe essere "roba di cui potresti interessarti".

Ad esempio, se stavi scrivendo un servizio per aggiornare un valore in un db, probabilmente passeresti l'ID record e il nuovo valore.

Se si desidera interfacce generiche, è inoltre possibile definire un contesto da passare, in modo che il servizio possa eseguire una logica aziendale arbitraria. Quindi è possibile includere un'autenticazione utente, lo stato della sessione dell'utente, ecc ... nel contesto, poiché il servizio può eseguire una logica aggiuntiva in base a questi valori.


7
Un altro modo utile di pensarci è "informazioni su ciò che sta accadendo". O più accademicamente, si tratta di "meta informazioni". È una frase piuttosto accademica, ma è accurata. In questo contesto.
Brian Kelly,

4
è fondamentalmente lo stato in un determinato momento, non più complesso di così
Matt,

13

Questo è il 2015, molti anni dopo l'inizio di questa discussione.

Nondimeno, sto pubblicando questo messaggio per aiutare chiunque, come me, ha difficoltà a comprendere il "contesto"

Non pretendo assolutamente di aver usato il contesto nei programmi Java, quindi spetta a te scrivere il contesto in modalità hard coding Quindi ecco: -

"Concettualmente contesto" è lo stesso "come dimmi di più" Quando un client effettua una richiesta al server - per eseguire la richiesta il server dice "dammi qualche informazione in più in modo che io possa aiutarti". Pertanto, insieme alla richiesta, il cliente fornisce un insieme di dettagli. Il server seleziona e seleziona dal pacchetto tutte le informazioni necessarie per soddisfare la richiesta. Questo pacchetto è quello che viene chiamato "Contesto"

Per esempio

Il paziente va dal dottore e dice Treat_me ("Ho mal di testa") Doc Office fornisce al paziente un modulo da compilare. Modulo di compilazione del paziente. Il modulo viene utilizzato dal medico per eseguire la richiesta "treat_me".

Ecco come appare ora la richiesta:

treat_me ( "i have a headache", filled_form_num_23321 ) 

Ecco come filled_form_num_23321 appare:

D. Che cosa porta alla condizione? A. 10 pioli di
puro scotch cognome nite D. Nome del paziente? A. Joe Bigdrinker
Q.Age? 98

In questa transazione filled_form_num_23321è il "contesto".

Spero che questo aiuti a chiarire il concetto di "contesto".


7

penso sempre al contesto come uno stato particolare rilevante per l'oggetto o il costrutto con cui sto lavorando.

Ad esempio, quando si utilizza drawRect in una vista (in cui è necessario eseguire tutti i disegni per una vista), è sempre necessario inserire il CurrentGraphicsContext nel quale verranno emesse le dichiarazioni grafiche di base. Questo contesto contiene elementi come i limiti della vista, il colore del tratto, lo spessore del tratto per disegnare una linea, il colore di riempimento per riempire un tracciato chiuso, ecc. Questo contesto (come la maggior parte degli altri) è solo lo stato corrente in questo momento. quindi pensa al contesto grafico in questo caso solo come un insieme di stati come

il tratto si ispessisce è di 1,5 pixel il colore di riempimento è il nero i limiti della vista è (155, 200) il colore del tratto è rosso

Fondamentalmente è lo stato nel momento attuale ...


5

Per fare un esempio pratico. Supponiamo che tu abbia una determinata pagina web per recuperare / visualizzare alcune informazioni in base all'utente (che è connesso) e alla lingua del browser. La logica del recupero delle informazioni è indipendente dall'utente e dalla lingua. La tua pagina riceverà un utente e una lingua ... per la logica non importa se sono io o te o inglese o spagnolo.

Alcuni pseudo-codice:

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

        … do some logic based on the context
    }
}

Non è così difficile, ma ci vuole del tempo per capire il concetto


5

Il contesto si riferisce al contesto di esecuzione , ovvero i simboli raggiungibili da un determinato punto nel codice e il valore di tali simboli in quella particolare esecuzione.

Il contesto è un concetto importante perché:

  1. Le unità eseguibili (funzioni, procedure, istruzioni) possono produrre risultati diversi o comportarsi diversamente in contesti diversi.
  2. Più ampio o complesso è il contesto, più difficile è capire cosa fa un pezzo di codice (ecco perché si evitano le variabili globali).

Non è necessario scrivere classi di contesto o passare parametri di contesto . Qualsiasi parametro passato a una funzione / metodo diventa parte del contesto di esecuzione quando viene invocato.

Anche se non sei un madrelingua inglese, ti consiglio di leggere una copia di Code Complete per un'introduzione delicata ma approfondita a concetti come contesto , modularità , accoppiamento , coesione e così via.


Vedo che c'è una seconda edizione. Posso leggere trovarlo anche lì?
user772058,

Ho sfogliato la seconda edizione presso il negozio di libri e ho deciso di continuare con l'originale. Non ricordo perché.
Apalala,

2

Il contesto nel tuo caso è l'ambiente in cui l'applicazione è in esecuzione.

Fornisce informazioni / servizi / abilità di cui l'applicazione avrà bisogno per funzionare correttamente.

HTH


0

Troppo spesso l'autore assume che il lettore abbia una comprensione dettagliata del contesto in cui viene usata la parola "contesto".

Come definire il contesto nella seguente frase "Il runtime crea un contesto in cui è possibile memorizzare i possibili valori per l'iniezione. Questo contesto può essere modificato, ad esempio l'applicazione e il framework possono aggiungere elementi al contesto.

Sembrerebbe che l'autore stia usando il contesto per indicare una sorta di contenitore, forse un mucchio, che contiene il contesto di qualcosa. È diventato un brusio che sta assumendo molti significati e confondendo le cose. Sono gli elementi che sono il contesto e vengono archiviati in un contesto. Per ridurre la confusione del contesto in cui viene utilizzata la parola contesto, si potrebbe dire che "il runtime crea un contenitore per archiviare il contesto sotto forma di elementi". Meglio ancora "il runtime crea un contenitore per memorizzare lo stato sotto forma di elementi e questo contenitore con il suo stato è chiamato CONTESTO".


0

3 anni dopo, quindi forse un po 'in ritardo, ma forse questa discussione ti aiuterebbe. Illustra che la parola "contesto" ha un significato tecnico nella programmazione (non solo un semplice significato inglese).

Quali linguaggi di programmazione sono senza contesto?

Non sono sicuro se puoi usarlo come esempio e estrarre alcune informazioni da esso o no. Anche a me piacerebbe ascoltare una spiegazione agnostica della lingua del termine "contesto" di programmazione tecnica

Modifica: O almeno mostra che il termine "contesto" può essere applicato in un contesto tecnico, di programmazione (non è previsto un gioco di parole). Forse in più di un'applicazione concreta del termine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.