El término "contexto" en la programación? [cerrado]

161

He estado programando durante algunos meses y una palabra de uso frecuente es "contexto" en las clases. Como ServletContext(Java), Activity(Android), Service(Java, Android), NSManagedContext(Objective-C, iOS).

Al mirar en los diccionarios, veo que la palabra significa: situación, entorno, circunstancias, etc. Sin embargo, debido a que no soy un hablante nativo de inglés, no entiendo a qué debo traducirlo directamente. Por ejemplo, si tuviera que escribir una clase que SomeClassContexttuviera nombre o un método que tuviera un parámetro de contexto, no entendería cuándo debería nombrarlo porque no lo entiendo.

He estado buscando contexto en Stack Overflow, pero ninguna pregunta / respuesta me pudo ayudar.

Estaría muy feliz si alguien me pudiera dar la explicación.

usuario772058
fuente
66
El contexto dice: el área dentro de la cual actúa este objeto.
Blundell
77
El contexto es el estado de un objeto o sistema, en un momento determinado
Matt

Respuestas:

190

Digamos que va al dentista para que le extraigan un diente.

Cuando la recepcionista le pregunta su nombre, esa es la información que necesitan para comenzar la cita. En este ejemplo, su nombre es información contextual . Por lo tanto, en el contexto de visitar al dentista, debe proporcionar su nombre para que le extraigan el diente.

Ahora digamos que caminas hacia el banco.

En el banco, solicita retirar $ 100. El cajero debe establecer su identidad antes de darle dinero, por lo que probablemente tendrá que mostrarle una licencia de conducir o deslizar su tarjeta de cajero automático e ingresar su número PIN. De cualquier manera, lo que estás proporcionando es contexto . El cajero utiliza esta información para mover la transacción hacia adelante. Luego pueden preguntarle de qué cuenta desea retirar. Cuando responde "Mi cuenta de ahorros" , eso es aún más contexto .

Cuanto más contexto brinde, más conocimiento tendrá la otra parte para ayudarlo a atender su solicitud. A veces, el contexto es opcional (como escribir más y más palabras en su búsqueda de Google para obtener mejores resultados) y, a veces, es obligatorio (como proporcionar su número PIN en el cajero automático). De cualquier manera, es información que generalmente ayuda a hacer las cosas.

Ahora supongamos que toma sus $ 100 y compra un boleto de avión para volar a un lugar cálido mientras su boca se cura.

Llegas a un destino agradable y soleado, pero tu bolso no llega. Se perdió en algún lugar del sistema aeroportuario. Por lo tanto, lleva su "boleto de reclamo de equipaje" (esa etiqueta con el código de barras) a la "oficina de equipaje perdido". Lo primero que pedirá la persona detrás del escritorio es ese boleto con su número de equipaje. Ese es un ejemplo de algún contexto requerido .

Pero luego, la persona encargada del equipaje le pide más información acerca de su bolso para que pueda encontrarlo más fácilmente. Preguntan: " ¿ De qué color es? ¿De qué tamaño es? ¿Tiene ruedas? ¿Es duro o blando? Si bien no necesitan necesariamente esos datos, ayuda a reducir las cosas si los proporciona. Reduce la área problemática. Hace que la búsqueda sea mucho más rápida. Ese es un contexto opcional .

Aquí está la parte interesante: para una gran cantidad de software y API, el contexto requerido generalmente termina como parámetros reales en la firma de un método, y el contexto opcional va a otro lugar, como un mapa flexible de valores clave que puede contener cualquier cosa (y puede estar vacío ) o en el almacenamiento local de subprocesos donde se puede acceder si es necesario.

Los ejemplos anteriores son de la vida real, pero puede asignarlos fácilmente a áreas dentro de la informática. Por ejemplo, los encabezados HTTP contienen información contextual. Cada encabezado se relaciona con información sobre la solicitud que se realiza. O cuando envía un ID de transacción global como parte de un proceso de confirmación de dos fases , ese ID de transacción es el contexto. Ayuda al administrador de transacciones a coordinar el trabajo porque es información sobre la tarea general en cuestión.

Espero que ayude.

Brian Kelly
fuente
22
@Brian: Por tu publicación y las otras respuestas dadas aquí, creo que puedo comenzar a entenderlo. Un objeto que lleva información de estado sobre un evento, ¿es un objeto "Contexto"? ¿Sería eso correcto? Entonces, un objeto RequestContext llevará información sobre una solicitud específica, ¿correcto? Y cuando llegue otra solicitud, la información adjunta al objeto RequestContext cambiará. ¿Es incorrecto decir que un objeto de contexto es un poco como un DTO (objeto de transferencia de datos)? Sin embargo, ¿un contexto lleva información sobre diferentes "cosas" relacionadas mientras que los DTO llevan información de un objeto como una persona? Gracias
user772058
9
Lo has clavado, eso es exactamente correcto. De hecho, un RequestContext llevará información sobre la solicitud en curso (por ejemplo, la configuración regional del cliente). Los contextos son similares a DTO / VO, pero generalmente no están tan fuertemente tipados. Pero tienes el concepto bien.
Brian Kelly
55
@Brian: Me vino a la mente una pregunta más, cuando hablamos de menús contextuales, el significado del contexto como aprendí de esta respuesta no tiene sentido en mi cabeza. Según tengo entendido ahora, el contexto es (corto) para llevar el estado de algo. Entonces, ¿qué significa cuando se usa la palabra "contexto" de esta manera?
user772058
9
Buena pregunta. El significado de "contexto" dentro de "menú contextual" es, "lo que verá en el menú depende de dónde haga clic, cuándo hizo clic y qué más está sucediendo en su aplicación". Esas piezas de información (dónde / cuándo / qué hizo clic) representan el contexto y se enviarían al código GUI para que pueda decidir qué cosas ofrecer en el menú.
Brian Kelly
2
Entonces, los parámetros del método son contexto. ¿Me equivoco?
¿Puede Aydogan el
14

El contexto puede verse como un cubo para pasar información. Por lo general, se usa para pasar cosas que no están necesariamente vinculadas directamente a una llamada a un método, pero aún podrían ser pertinentes. Una forma laica de describirlo podría ser "cosas que pueden interesarle".

Por ejemplo, si estuviera escribiendo un servicio para actualizar un valor en una base de datos, probablemente pasaría la identificación del registro y el nuevo valor.

Si desea interfaces genéricas, también puede definir un contexto para pasar, de modo que el servicio pueda realizar una lógica comercial arbitraria. Por lo tanto, puede incluir una autenticación de usuario, el estado de sesión del usuario, etc. en el contexto, ya que el servicio puede realizar una lógica adicional que depende de estos valores.

Taylor
fuente
77
Otra forma útil de pensarlo es "información sobre lo que está sucediendo". O más académicamente, es "metainformación". Esa es una frase bastante académica, pero es precisa. En este contexto.
Brian Kelly
44
es básicamente el estado en un punto en el tiempo, no más complejo que eso
Matt
13

Esto es 2015, mayo años después de que comenzara este hilo.

No obstante, estoy publicando este mensaje para ayudar a cualquier persona como yo que tenga dificultades para entender el "contexto"

De ninguna manera afirmo haber usado Context en programas Java, por lo que depende de usted escribir Context en codificación rígida. Así que aquí va:

"Contexto conceptual" es lo mismo "que decirme más" Cuando un cliente realiza una solicitud al servidor, para llevar a cabo la solicitud, el servidor dice "dame más información para que pueda ayudarte". Por lo tanto, junto con la solicitud, el cliente proporciona un paquete de detalles. El servidor selecciona y elige del paquete todas las informaciones necesarias para atender la solicitud. Este paquete es lo que se llama "contexto"

P.ej

El paciente acude al médico y dice treat_me ("Me duele la cabeza") El consultorio médico le da al paciente un formulario para completar. El paciente llena el formulario. El médico utiliza el formulario para llevar a cabo la solicitud "treat_me".

Así es como se ve la solicitud ahora:

treat_me ( "i have a headache", filled_form_num_23321 ) 

Así es como se filled_form_num_23321 ve:

P. ¿Qué condujo a la condición? A. 10 clavijas de whisky escocés de última noche
P. ¿Nombre del paciente? A. Joe Bigdrinker
P. ¿Edad? 98

En esta transacción filled_form_num_23321es el "contexto".

Espero que esto ayude a aclarar el concepto de "Contexto".

RAM
fuente
7

Siempre pienso en el contexto como un estado particular relevante para el objeto o construcción con el que estoy trabajando.

Por ejemplo, cuando está usando drawRect en una vista (donde todo el dibujo se debe hacer para una vista) siempre debe obtener el CurrentGraphicsContext en el que emitirá sus declaraciones gráficas principales. Este contexto contiene cosas como los límites de la vista, el color del trazo, el grosor del trazo para dibujar una línea, el color de relleno para rellenar una ruta cerrada, etc. Este contexto (como la mayoría de los demás) es solo el estado actual en este momento. Piense en el contexto gráfico en este caso como un conjunto de estados como

el grosor del trazo es de 1.5 píxeles, el color de relleno es el límite de visión negro es (155, 200) el color del trazo es rojo

Básicamente es el estado en el momento actual ...

Mate
fuente
5

Para dar un ejemplo práctico. Supongamos que tiene una determinada página web para buscar / procesar cierta información basada en el usuario (que ha iniciado sesión) y el idioma del navegador. La lógica de buscar la información es independiente del usuario y el idioma. Su página recibirá un usuario y un idioma ... por la lógica, no importa si soy yo o usted o inglés o español.

Algunos pseudocódigo:

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

        … do some logic based on the context
    }
}

No es tan difícil, pero lleva algún tiempo entender el concepto

lukin
fuente
5

El contexto se refiere al contexto de ejecución , que son los símbolos accesibles desde un punto dado en el código, y el valor de esos símbolos en esa ejecución particular.

El contexto es un concepto importante porque:

  1. Las unidades ejecutables (funciones, procedimientos, instrucciones) pueden producir resultados diferentes o comportarse de manera diferente en contextos diferentes.
  2. Cuanto más grande o más complejo es el contexto, más difícil es entender lo que hace un fragmento de código (es por eso que se rechazan las variables globales).

No tiene que escribir clases de contexto ni pasar parámetros de contexto . Cualquier parámetro pasado a una función / método se convierte en parte del contexto de ejecución cuando se invoca.

Aunque no es un hablante de inglés, le recomiendo que lea una copia de Code Complete para una introducción suave pero exhaustiva de conceptos como contexto , modularidad , acoplamiento , cohesión , etc.

Apalala
fuente
Veo que hay una segunda edición. ¿Puedo leer encontrarlo allí también?
user772058
Hojeé la segunda edición en la librería y decidí seguir con el original. No recuerdo por qué.
Apalala
2

El contexto en su caso es el entorno donde se ejecuta su aplicación.

Proporciona información / servicios / habilidades que su aplicación necesitará para funcionar correctamente.

HTH

usuario6656519
fuente
0

Con demasiada frecuencia, el autor supone que el lector tiene una comprensión detallada del contexto en el que se usa la palabra "contexto".

Cómo definir el contexto en la siguiente oración "El tiempo de ejecución crea un contexto en el que se pueden almacenar los posibles valores para inyección. Este contexto se puede modificar, por ejemplo, la aplicación y el marco pueden agregar elementos al contexto.

Parece que el autor está usando el contexto para referirse a algún tipo de contenedor, quizás un montón, que contiene el contexto de algo. Se ha convertido en palabra de moda que está adquiriendo muchos significados y cosas confusas. ¿Son los elementos el contexto y se almacenan en un contexto? Para reducir la confusión del contexto de que la palabra contexto se está utilizando, se podría decir que "el tiempo de ejecución crea un contenedor para almacenar el contexto en forma de elementos". Mejor aún, "el tiempo de ejecución crea un contenedor para almacenar el estado en forma de elementos y este contenedor con su estado se llama CONTEXTO".

Juan
fuente
0

3 años después, así que tal vez un poco tarde, pero tal vez este hilo te ayudaría. Ilustra que la palabra "contexto" tiene un significado técnico en la programación (no solo un significado simple en inglés).

¿Qué lenguajes de programación están libres de contexto?

No estoy seguro de si puede usarlo como ejemplo y extraer información de él o no. A mí también me encantaría escuchar una explicación agnóstica del lenguaje del término de programación técnica "contexto"

Editar: O al menos muestra que el término "contexto" se puede aplicar en un contexto técnico y de programación (sin intención). Posiblemente en más de una aplicación concreta del término.

Jake
fuente