Кіріспе
Компьютерлік бағдарламалау, компьютерлік бағдарламаның барлық жерінде қолжетімді айнымалы.
Компьютерлік бағдарламалауда, жаһандық айнымалы – бұл жаһандық көлемге ие айнымалы, яғни егер көлеңкеленбесе, ол бағдарламаның кез келген бөлігінен көрінеді (сонымен қатар қолжетімді). Барлық жаһандық айнымалылардың жиынтығы жаһандық орта немесе жаһандық күй деп аталады. Компиляцияланған тілдерде жаһандық айнымалылар әдетте статикалық айнымалылар болып табылады, олардың өмір сүру мерзімі бағдарламаның орындалу уақытының барлық кезеңін қамтиды. Ал интерпретацияланған тілдерде (командалық жол интерпретаторларын қоса алғанда) жаһандық айнымалылар әдетте жарияланғанда динамикалық түрде жадтан орын бөледі, себебі олар алдын ала белгілі болмайды. Кейбір тілдерде барлық айнымалылар жаһандық болып табылады немесе әдепкі бойынша жаһандық болып есептеледі, ал көптеген қазіргі заманғы тілдерде айнымалылардың көлемі шектеулі, әдетте лексикалық көлемге ие, бірақ жаһандық айнымалылар бағдарламаның жоғарғы деңгейінде айнымалыны жариялау арқылы қолжетімді болуы мүмкін. Дегенмен, басқа тілдерде жаһандық айнымалылар мүлдем жоқ; мұндай тілдер әдетте модульдік құрылымды немесе сыныптарға негізделген объектілі бағдарламалау тілдерінде сыныптық құрылымды қатаң сақтайды.
Қолдану
Глобалды айнымалылармен өзара әрекеттесу механизмдері жаһандық орта (сонымен қатар, жаһандық күйді қараңыз) механизмдері деп аталады. Жаһандық орта парадигмасы, барлық айнымалылар ортақ жадысыз жергілікті болатын және барлық өзара әрекеттесулер хабар алмасу арқылы жүзеге асырылатын жергілікті орта парадигмасына қарама-қарсы келеді. Глобалды айнымалылар, бір-біріне шақырушы/шақырылатын қатынасы жоқ, сондай-ақ бір уақытта жұмыс істейтін жіптер мен сигналдарды өңдеушілер сияқты код бөлімдері арасында ақпаратты беру үшін кеңінен қолданылады. Әрбір файл жасырын атау кеңістігін анықтайтын тілдер (С тілін қоса алғанда) жаһандық атау кеңістігі бар тілдердегі көптеген проблемаларды жояды, бірақ дұрыс капсулация болмаса, кейбір проблемалар сақталуы мүмкін. Тиісті құлыптама болмаған жағдайда (мысалы, mutex), глобалды айнымалыларды пайдаланатын код, қорғалған жадтағы тек оқуға арналған мәндер болмаса, жіптер үшін қауіпсіз болмайды.
Қоршаған ортаның айнымалылары
Қоршаған ортаның айнымалылары – кейбір операциялық жүйелер ұсынатын мүмкіндік. Операциялық жүйенің қабығында (Unix-те ksh, Linux-те bash, DOS-та COMMAND.COM және Windows-та CMD.EXE) олар айнымалының бір түрі болып табылады. Мысалы, Unix және оған ұқсас жүйелерде, `export` кілт сөзі қолданылғанда, қарапайым айнымалы орта айнымалысына айналады. Қабықтан басқа бағдарламалық код оларға API шақырулары арқылы қол жеткізеді, мысалы `getenv` және `setenv`. Олар орнатылған процеске ғана тән. Яғни, егер екі терминал терезесін (екі түрлі процесс қабықты іске қосып) ашсақ және бір терезеде орта айнымалысының мәнін өзгертсек, бұл өзгеріс екінші терезеде көрінбейді. Бала процесс құрылғанда, ол аталық процесстен барлық орта айнымалыларын және олардың мәндерін мұралайды. Әдетте, бағдарлама басқа бағдарламаны шақырғанда, ең алдымен `fork` арқылы бала процесс жасайды, содан кейін бала қажеттілікке қарай ортаны реттейді және соңында бала өзін шақырылатын бағдарламамен ауыстырады. Сондықтан бала процестер орта айнымалыларын өздерінің теңдестерімен байланыс құру үшін пайдалана алмайды, бұл қашықтықтан әрекет ету мәселесін болдырмайды.
getenv and setenv
They are local to the process in which they were set. That means if we open two terminal windows (Two different processes running shell) and change value of environment variable in one window, that change will not be seen by other window. When a child process is created, it inherits all the environment variables and their values from the parent process. Usually, when a program calls another program, it first creates a child process by forking, then the child adjusts the environment as needed and lastly the child replaces itself with the program to be called. Child processes therefore cannot use environment variables to communicate with their peers, avoiding the action at a distance problem.
Тек жаһандық және әдетті түрде жаһандық
Бірқатар құрылымдалмаған тілдер, мысалы (алғашқы нұсқалары) BASIC, COBOL және Fortran I (1956) тек жаһандық айнымалыларды қамтамасыз етеді. Fortran II (1958) жергілікті айнымалылары бар қосалқы бағдарламаларды және жаһандық айнымалыларға қол жеткізу үшін COMMON кілт сөзін енгізді. COMMON-ның FORTRAN-да қолданылуы FORTRAN 77-де де жалғасты, сондай-ақ PL/SQL сияқты кейінгі тілдерге әсер етті. Жаһандық айнымалылар үшін аталған COMMON топтары белгілі бір деңгейде құрылымдалған кеңестіктерге ұқсас. Forth, Lua, Perl және көптеген қабықшаларда айнымалылар әдепкі бойынша жаһандық болып табылады.
PHP-де
PHP-де жаһандық кілт сөз және жаһандық айнымалыларды пайдаланудың бірнеше ерекше тәсілдері бар. Функциялардың сыртында жарияланған айнымалылар файлдық ауқымға ие (көп жағдайда бұл ең кең ауқым). Дегенмен, олар функциялардың ішінде жаһандық кілт сөз арқылы импортталмаса қолжетімді емес (яғни, кілт сөз жаһандық айнымалыларға қол жеткізеді, оларды жарияламайды). Бірақ, кейбір алдын ала анықталған айнымалылар, суперглобалдықтар деп аталатындар, әрқашан қолжетімді. Олардың барлығы массивтер. Баламалы мақсаттағы $GLOBALS суперглобалдығы бар, ол функция ауқымынан тыс анықталған барлық айнымалыларды қамтиды. Оның элементтерін өзгерту бастапқы айнымалыларды өзгертеді, ал жаңа элементтер қосу жаңа айнымалыларды құрайды. $POST және $GET суперглобалдары веб-бағдарламалауда кеңінен қолданылады.
defined out of function scope. Changes to its elements change the original variables, and additions create new variables. The superglobals $ POST and $ GET are widely used in web programming.
Басқа тілдер
Python және MATLAB-та жаһандық айнымалыны кез келген жерде `global` кілт сөзі арқылы жариялауға болады. Ruby-дегі жаһандық айнымалылар '$' таңбасымен белгіленеді. Көптеген алдын ала анықталған жаһандық айнымалылар бар, мысалы, `$$` – ағымдағы процесс ID.