el problema que tienen las variables globales es que no tienes control sobre ellas... se pueden modificar en cualquier parte del programa sin que tú puedas controlarlo.
Si eso ya llega a ser caótico imagínate si le un entorno multi-hilo, entonces ya el cacao que se va a montar es para borrar el programa completo y empezar de nuevo.
Usar parámetros en vez de variables globales tiene varias ventajas:
- Controlas en todo momento quién tiene acceso a las variables
- Es más sencillo implementar entornos multitarea.
- Las funciones son reutilizables (si tu haces una función que sume dos matrices y éstas son globales, ¿qué pasa si quieres hacer D=A+B+C? te toca reemplazar las variables globales con sumo cuidado, mientras que si son argumentos basta con ir haciendo llamadas a la función)
- El código es más seguro y fácil de mantener
- Las variables globales tienen el problema de que pueden colisionar (tener el mismo nombre) con otras variables globales/locales... en tal caso el programa usará una de las dos y seguramente no sea la que tú esperas.
Creo que queda claro que las variables globales no son una buena opción.
Un saludo.