Кіріспе

Компьютерлік бағдарламалау, компьютерлік бағдарламаның барлық жерінде қолжетімді айнымалы.

Компьютерлік бағдарламалауда, жаһандық айнымалы – бұл жаһандық көлемге ие айнымалы, яғни егер көлеңкеленбесе, ол бағдарламаның кез келген бөлігінен көрінеді (сонымен қатар қолжетімді). Барлық жаһандық айнымалылардың жиынтығы жаһандық орта немесе жаһандық күй деп аталады. Компиляцияланған тілдерде жаһандық айнымалылар әдетте статикалық айнымалылар болып табылады, олардың өмір сүру мерзімі бағдарламаның орындалу уақытының барлық кезеңін қамтиды. Ал интерпретацияланған тілдерде (командалық жол интерпретаторларын қоса алғанда) жаһандық айнымалылар әдетте жарияланғанда динамикалық түрде жадтан орын бөледі, себебі олар алдын ала белгілі болмайды. Кейбір тілдерде барлық айнымалылар жаһандық болып табылады немесе әдепкі бойынша жаһандық болып есептеледі, ал көптеген қазіргі заманғы тілдерде айнымалылардың көлемі шектеулі, әдетте лексикалық көлемге ие, бірақ жаһандық айнымалылар бағдарламаның жоғарғы деңгейінде айнымалыны жариялау арқылы қолжетімді болуы мүмкін. Дегенмен, басқа тілдерде жаһандық айнымалылар мүлдем жоқ; мұндай тілдер әдетте модульдік құрылымды немесе сыныптарға негізделген объектілі бағдарламалау тілдерінде сыныптық құрылымды қатаң сақтайды.

Қолдану

Глобалды айнымалылармен өзара әрекеттесу механизмдері жаһандық орта (сонымен қатар, жаһандық күйді қараңыз) механизмдері деп аталады. Жаһандық орта парадигмасы, барлық айнымалылар ортақ жадысыз жергілікті болатын және барлық өзара әрекеттесулер хабар алмасу арқылы жүзеге асырылатын жергілікті орта парадигмасына қарама-қарсы келеді. Глобалды айнымалылар, бір-біріне шақырушы/шақырылатын қатынасы жоқ, сондай-ақ бір уақытта жұмыс істейтін жіптер мен сигналдарды өңдеушілер сияқты код бөлімдері арасында ақпаратты беру үшін кеңінен қолданылады. Әрбір файл жасырын атау кеңістігін анықтайтын тілдер (С тілін қоса алғанда) жаһандық атау кеңістігі бар тілдердегі көптеген проблемаларды жояды, бірақ дұрыс капсулация болмаса, кейбір проблемалар сақталуы мүмкін. Тиісті құлыптама болмаған жағдайда (мысалы, mutex), глобалды айнымалыларды пайдаланатын код, қорғалған жадтағы тек оқуға арналған мәндер болмаса, жіптер үшін қауіпсіз болмайды.

Қоршаған ортаның айнымалылары

Қоршаған ортаның айнымалылары – кейбір операциялық жүйелер ұсынатын мүмкіндік. Операциялық жүйенің қабығында (Unix-те ksh, Linux-те bash, DOS-та COMMAND.COM және Windows-та CMD.EXE) олар айнымалының бір түрі болып табылады. Мысалы, Unix және оған ұқсас жүйелерде, `export` кілт сөзі қолданылғанда, қарапайым айнымалы орта айнымалысына айналады. Қабықтан басқа бағдарламалық код оларға API шақырулары арқылы қол жеткізеді, мысалы `getenv` және `setenv`. Олар орнатылған процеске ғана тән. Яғни, егер екі терминал терезесін (екі түрлі процесс қабықты іске қосып) ашсақ және бір терезеде орта айнымалысының мәнін өзгертсек, бұл өзгеріс екінші терезеде көрінбейді. Бала процесс құрылғанда, ол аталық процесстен барлық орта айнымалыларын және олардың мәндерін мұралайды. Әдетте, бағдарлама басқа бағдарламаны шақырғанда, ең алдымен `fork` арқылы бала процесс жасайды, содан кейін бала қажеттілікке қарай ортаны реттейді және соңында бала өзін шақырылатын бағдарламамен ауыстырады. Сондықтан бала процестер орта айнымалыларын өздерінің теңдестерімен байланыс құру үшін пайдалана алмайды, бұл қашықтықтан әрекет ету мәселесін болдырмайды.

Тек жаһандық және әдетті түрде жаһандық

Бірқатар құрылымдалмаған тілдер, мысалы (алғашқы нұсқалары) BASIC, COBOL және Fortran I (1956) тек жаһандық айнымалыларды қамтамасыз етеді. Fortran II (1958) жергілікті айнымалылары бар қосалқы бағдарламаларды және жаһандық айнымалыларға қол жеткізу үшін COMMON кілт сөзін енгізді. COMMON-ның FORTRAN-да қолданылуы FORTRAN 77-де де жалғасты, сондай-ақ PL/SQL сияқты кейінгі тілдерге әсер етті. Жаһандық айнымалылар үшін аталған COMMON топтары белгілі бір деңгейде құрылымдалған кеңестіктерге ұқсас. Forth, Lua, Perl және көптеген қабықшаларда айнымалылар әдепкі бойынша жаһандық болып табылады.

PHP-де

PHP-де жаһандық кілт сөз және жаһандық айнымалыларды пайдаланудың бірнеше ерекше тәсілдері бар. Функциялардың сыртында жарияланған айнымалылар файлдық ауқымға ие (көп жағдайда бұл ең кең ауқым). Дегенмен, олар функциялардың ішінде жаһандық кілт сөз арқылы импортталмаса қолжетімді емес (яғни, кілт сөз жаһандық айнымалыларға қол жеткізеді, оларды жарияламайды). Бірақ, кейбір алдын ала анықталған айнымалылар, суперглобалдықтар деп аталатындар, әрқашан қолжетімді. Олардың барлығы массивтер. Баламалы мақсаттағы $GLOBALS суперглобалдығы бар, ол функция ауқымынан тыс анықталған барлық айнымалыларды қамтиды. Оның элементтерін өзгерту бастапқы айнымалыларды өзгертеді, ал жаңа элементтер қосу жаңа айнымалыларды құрайды. $POST және $GET суперглобалдары веб-бағдарламалауда кеңінен қолданылады.

Басқа тілдер

Python және MATLAB-та жаһандық айнымалыны кез келген жерде `global` кілт сөзі арқылы жариялауға болады. Ruby-дегі жаһандық айнымалылар '$' таңбасымен белгіленеді. Көптеген алдын ала анықталған жаһандық айнымалылар бар, мысалы, `$$` – ағымдағы процесс ID.