¿Qué significa variable global?
Una variable global es una construcción del lenguaje de programación, un tipo de variable que se declara fuera de cualquier función y es accesible a todas las funciones del programa.
Un grupo de variables globales se denomina estado global o entorno global porque, cuando se combinan, definen diversos aspectos de un programa o del entorno cuando el programa se ejecuta.
Una variable global suele declararse por encima de todas las funciones y se mantiene al mínimo, ya que todas las funciones pueden manipularlas durante el tiempo de ejecución del programa, lo que la mayoría de los programadores consideran peligroso porque pueden modificarse accidentalmente, dando lugar a errores.
Definición de variable global
Las variables globales, como su nombre indica, son variables accesibles globalmente, o en todas partes del programa. Una vez declaradas, permanecen en memoria durante todo el tiempo de ejecución del programa. Esto significa que pueden ser modificadas por cualquier función en cualquier momento y pueden afectar al programa en su conjunto.
Durante los primeros años de los ordenadores, cuando la memoria era muy limitada, se consideraron una mala práctica porque ocupaban un valioso espacio en la memoria y era muy fácil que el programador perdiera la pista de sus valores, sobre todo en programas largos, lo que provocaba fallos que pueden ser muy difíciles de localizar.
El código fuente se entiende mejor cuando el alcance de sus elementos individuales es limitado, por lo que, debido a su no localización, es difícil seguir la pista de dónde se han modificado o por qué se han modificado.
Incluso con este estigma, las variables globales son valiosas en funciones que no comparten una relación de «llamante y llamado», como los manejadores de señales y los hilos concurrentes. Con la excepción de las variables globales declaradas como valores de sólo lectura en memoria protegida, los códigos deben desplegar una encapsulación adecuada para ser considerados «seguros para hilos».
Las primeras versiones de lenguajes no estructurados como BASIC, COBOL y Fortran sólo utilizaban variables globales. Sin embargo, lenguajes como Lua, Forth y Perl utilizan variables globales por defecto, al igual que la mayoría de los scripts de shell.