Motivazione per i linguaggi moderni implementare variabili globali variabili [chiuso]

-4

Il buon senso sembra essere che l'utilizzo di variabili globali è negativo, in particolare se vengono utilizzate come variabili reali (ad es. cambiare stato, ad esempio Perché lo stato globale è così malvagio? ).

Come viene allora, che praticamente qualsiasi linguaggio che ho usato finora li implementa comunque, specialmente i moderni linguaggi di quarta generazione (4GL) come python o perl?

Esistono linguaggi procedurali senza variabili globali. In caso contrario, sarebbe possibile crearne uno completamente senza il concetto di stato riscrivibile globale?

    
posta jf1 23.12.2015 - 23:36
fonte

2 risposte

2

La tua ipotesi che le variabili globali siano usate solo per lo stato non è corretta. In (probabilmente) le lingue più interpretate, ad esempio, gli spazi dei nomi sono usati per comunicare le interfacce. Poiché in molte di queste lingue le interfacce (enumerazioni, funzioni, classi) sono solo variabili, quindi senza variabili globali non ci saranno interfacce globali.

Inoltre, alcuni dei programmatori là fuori lavorano in ambienti vincolati come i sistemi embedded e le applicazioni real in tempo reale. In quegli ambienti in cui l'efficienza è soprattutto, si tende ad evitare pile profonde e cumuli pesanti. In quegli ambienti, la comunicazione su variabili globali è spesso l'opzione più efficiente.

Si noti che dal punto di vista teorico non può esserci un programma senza una sorta di variabili globali. Dopotutto, qualsiasi programma deve generare un output e il dispositivo di output è un handle globale. Lo stesso vale per tutte le altre interfacce di sistema come il tempo, le variabili di ambiente, ecc. Avere accesso a queste variabili solo attraverso getter e setter non le rende meno globali, solo meno visibili.

Un linguaggio di programmazione non dovrebbe infliggere una censura algoritmica. È uno strumento, ed è compito del programmatore usare questo strumento nel modo giusto.

    
risposta data 24.12.2015 - 16:45
fonte
3

Newspeak non ha variabili globali. E in effetti nessuno stato globale e / o statico . Inoltre, non ha uno spazio dei nomi globale (il progettista considera uno spazio dei nomi globale equivalente allo stato globale e / o statico).

    
risposta data 23.12.2015 - 23:51
fonte

Leggi altre domande sui tag