El término "Contexto" en la programación?


He estado programando desde hace algunos meses y una palabra frecuentemente usada 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, ambiente, 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 se llamara SomeClassContext, o un método que si tuviera un parámetro de contexto, no entendería cuándo debería nombrarlo contexto porque no lo entiendo.

He estado buscando contexto en Stack Overflow, pero ninguna pregunta/respuesta fue capaz de ayudarme.

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

Author: Bill the Lizard, 2011-05-27

11 answers

Digamos que vas al dentista para que te extraigan un diente.

Cuando la recepcionista le pide su nombre, esa es la información que necesita para comenzar la cita. En este ejemplo, su nombre es información contextual. Así que en el contexto de visitar al dentista, debe proporcionar su nombre para que le saquen el diente.

Ahora digamos que caminas hacia el banco.

En el banco, usted pide retirar $100. Cajero necesita establecer su identidad antes de darle dinero, por lo que probablemente tendrá que mostrarles una licencia de conducir o deslizar su tarjeta de cajero automático e ingresar su número PIN. De cualquier manera, lo que está proporcionando es contexto. El cajero utiliza esta información para hacer avanzar la transacción. A continuación, pueden preguntarle de qué cuenta desea retirar. Cuando respondes, "Mi cuenta de ahorros", eso es incluso más contexto .

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

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

Llegas a un buen destino soleado, pero tu bolso no lo hace. Es perdido en algún lugar del sistema aeroportuario. Por lo tanto, lleve su "boleto de reclamo de equipaje" (esa etiqueta con el código de barras) a la "oficina de Equipaje perdido". La primera cosa que la persona detrás del mostrador pedirá es que el billete con su número de equipaje en él. Ese es un ejemplo de algún contexto requerido.

Pero luego la persona que lleva el equipaje le pide más información sobre su maleta para que pueda encontrarla más fácilmente. Ellos preguntan, " ¿De qué color es? ¿Qué tamaño es? Haciéndolo tienen ruedas? Es duro o blando? Si bien no necesariamente necesitan esas piezas de información, ayuda a reducir las cosas si usted las proporciona. Reduce el área problemática. Hace que la búsqueda sea mucho más rápida. Eso es 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 una firma de método, y contexto opcional va a otro lugar, como un mapa de clave-valor flexible que puede contener cualquier cosa (y puede estar vacío) o en un almacenamiento local de subprocesos donde se puede acceder si es necesario.

Los ejemplos anteriores son de la vida real, pero puede mapearlos fácilmente a áreas dentro de la informática. Por ejemplo, los encabezados HTTP contienen información contextual. Cada encabezado se refiere a la información sobre la solicitud que se realiza. O cuando está enviando un ID de transacción global como parte de un proceso de confirmación de dos fases , ese ID de transacción es contexto. Ayuda a la transaction manager coordina el trabajo porque es información sobre la tarea general en cuestión.

Espero que eso ayude.

 162
Author: Brian Kelly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-27 01:01:17

El contexto puede ser visto como un cubo para pasar información. Normalmente se usa para pasar cosas que no necesariamente están vinculadas directamente a una llamada a un método, pero aún así podrían ser pertinentes. Una forma profana de describirlo podría ser "cosas que te pueden importar".

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

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

 14
Author: Taylor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-26 21:15:11

Estamos en 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 problemas para entender el "Contexto"

De ninguna manera afirmo haber usado Contexto en programas Java, por lo que depende completamente de usted escribir Contexto en codificación dura Así que aquí va: -

"Conceptualmente contexto" es lo mismo" que dime más " Cuando un cliente realiza una solicitud al servidor - con el fin de llevar a cabo la solicitud servidor dice "dame más información para que pueda ayudarte". Así, junto con la solicitud, el cliente proporciona un paquete de detalles. El el servidor selecciona y elige del paquete toda la información requerida para servir la solicitud. Este paquete es lo que se llama "Contexto"

Por ejemplo

El paciente va al doc y dice treat_me ("Tengo dolor de cabeza") Doc la oficina le da al paciente un formulario para llenar. El paciente llena el formulario. Forma es utilizado por el médico para llevar a cabo el " treat_me" solicitud.

Así es como se ve ahora la solicitud :

treat_me ( "i have a headache", filled_form_num_23321 ) 

Así es como se ve filled_form_num_23321:

P. ¿Qué llevó a la condición ? A. 10 pegs of neat Scotch last nite
P. ¿Nombre del paciente ? A. Joe Bigdrinker
P. ¿Edad ? 98

En esta transacción filled_form_num_23321 es el "contexto".

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

 8
Author: Ram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-20 16:16:48

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

Por ejemplo, cuando está utilizando drawRect en una vista (donde todo el dibujo se debe hacer para una vista) siempre debe obtener el currentGraphicsContext en el que emitirá sus instrucciones core graphics. 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 un trazado cerrado, etc. este contexto (como la mayoría de los demás) es solo el estado actual en este momento. así que 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 negro límites de visión es (155, 200) el color del trazo es rojo

Es básicamente el estado en el momento actual ...

 7
Author: Matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-26 21:57:11

Context se refiere al contexto execution, 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 en 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 qué parte del código lo hace (es por eso que las variables globales son rechazadas).

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

Aunque no seas angloparlante, te recomiendo que revises una copia de Code Complete para una introducción suave pero completa a conceptos como context, modularidad, acoplamiento , cohesión, y así sucesivamente.

 5
Author: Apalala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-17 17:00:22

Para dar un ejemplo práctico. Digamos que tiene una determinada página web para obtener / renderizar alguna información basada en el usuario (que está conectado) y el idioma del navegador. La lógica de obtener la información es independiente del usuario y del idioma. Su página recibirá un usuario y un idioma ... para la lógica no importa si soy yo o tú o inglés o español.

Algún pseudo có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 se necesita algún tiempo para entender la concepto

 4
Author: lukin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-26 21:49:24

Un servicio de nomenclatura asocia nombres con objetos. Una asociación entre un nombre y un objeto se llama un enlace, y un conjunto de tales enlaces se llama un contexto. Un nombre en un contexto puede vincularse a otro contexto que utilice las mismas convenciones de nomenclatura; el contexto enlazado se denomina subcontexto. Por ejemplo, en un sistema de archivos, un directorio (como /temp) es un contexto que contiene enlaces entre nombres de archivos y objetos que el sistema puede usar para manipular los archivos (a menudo llamado archivo manejar). Si un directorio contiene un enlace para otro directorio (por ejemplo, /temp/javax), el subdirectorio es un subcontexto.

 2
Author: Alexandru Podgoreanu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-28 22:35:34

El contexto en su caso es el entorno donde se está ejecutando su aplicación.

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

HTH

 1
Author: user6656519,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-30 03:12:42

Con demasiada frecuencia el autor asume que el lector tiene una comprensión detallada del contexto en el que se está usando la palabra "contexto".

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

Parecería que el autor está usando contexto para significar algún tipo de contenedor, tal vez un montón, que contiene contexto de algo. Se ha convertido en una palabra de moda que está tomando muchos significados y cosas confusas. Son los elementos que son el contexto y están siendo almacenados en un contexto. Para reducir la confusión del contexto 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 el CONTEXTO."

 0
Author: john,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-14 21:06:32

3 años más tarde, 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 programación (no solo un significado simple en inglés).

¿Qué lenguajes de programación son libres de contexto?

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

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

 0
Author: Jake,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:50

No veo la relevancia de explicar la palabra contexto en el contexto de la programación.

Para entender el contexto en un contexto primero hay que entender el contexto. Es recursivo.

El contexto es una palabra abstracta y las palabras abstractas son difíciles de entender para algunas personas. Ser capaz de pensar de manera abstracta es un regalo. No estoy diciendo que no lo tengas, pero hay diferentes niveles de abstracción y supongo que la palabra contexto es de un nivel más alto de abstracción que lo que se puede agarrar fácilmente.

No se de donde eres, pero estoy seguro de que hay una palabra para contexto en tu idioma nativo también y probablemente no entiendes esa palabra tampoco.

He usado contexto en el contexto de la programación y podría darte un ejemplo, pero realmente creo que necesitas entender la palabra contexto primero.

 -2
Author: Erik B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-26 22:32:48