Variable global

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 2 de mayo de 2018; las comprobaciones requieren 4 ediciones .

Una variable global en programación  es una variable cuyo alcance es el programa completo, a menos que sea anulada . Los mecanismos de interacción con variables globales se denominan mecanismos de acceso al entorno o estado global ( global environment , global state ) .  Las variables globales se pueden usar para la interacción entre procedimientos y funciones como una alternativa para pasar argumentos y devolver valores [1] .

El uso de variables globales tiene desventajas: una variable global se puede cambiar en cualquier punto del programa (si no está en la memoria protegida o declarada como una variable de solo lectura ), lo que puede afectar el funcionamiento de otras partes del programa. el programa [2] . Por esta razón, las variables globales tienen un potencial ilimitado para crear dependencias mutuas, lo que conduce a la complejidad del programa. Sin embargo, en algunos casos es útil utilizar variables globales. Por ejemplo, se pueden usar para evitar tener que pasar variables de uso frecuente a través de múltiples funciones. Las variables globales también dificultan la integración de módulos porque el código escrito anteriormente puede contener variables globales con los mismos nombres que en el módulo integrable.

Las variables globales se usan ampliamente para pasar datos entre secciones de código que no participan en las relaciones de llamadas, como hilos paralelos de ejecución o controladores de señales . Sin un bloqueo adecuado (por ejemplo, con un mutex ), el código que usa variables globales no será seguro para subprocesos , excepto las variables de solo lectura en un área protegida de la memoria . Con un aumento en el número de variables y, en consecuencia, bloqueos , aumenta la probabilidad de bloqueos mutuos .

Ejemplo en C :

en un ; /* Declarar una variable entera global "a" */ flotante b = 6 ; /* Declarar una variable global de punto flotante "b" y asignarle el valor "6" */ int principal ( vacío ) { a = 12 _ /* Asignando a la variable "a" el valor "12" */ devuelve a + b ; }

Notas

  1. Kernighan y Ritchie El lenguaje de programación C - págs. 44, 87.
  2. William Wulf y Mary Shaw, "Variable global considerada dañina", ACM SIGPLAN Notices, volumen 8, número 2, febrero de 1973, págs. 28-34.

Enlaces