アイヌアはクウェンヤで聖なる者たち(Holy Ones)の意である。「Ainu」はクウェンヤの「aina」（聖なる）から発生した単語である。この言葉は元々はヴァラリン（ヴァラール語）でのアヤヌーズ（Ayanûz）から由来している。唯一神エル・イルーヴァタールが最初に創造した種族であり、彼らはイルーヴァタールが、エア（宇宙）を含めた、他の全てのものを創造される以前からエルと共にあった。イルーヴァタールの思いから生まれた者たちだが、幾人かは兄弟関係として創られた。例えばマンウェとメルコールがそうである。また、アイヌアはイルーヴァタールの思いから生じたが故に、イルーヴァタールの心のどの部分から生まれ出でたかによって、彼らの資質や理解できる範囲は、異なったり限られたりする。例外が全アイヌア中最大の力を持つメルコールで、彼は他のアイヌア（ヴァラ）の資質をも部分的に持ち合わせていた。唯一神の示した主題に沿ってアイヌアたちが奏でた音楽が、創世の音楽、即ちアイヌリンダレである。
アイヌア（Ainur、単数形：アイヌ、Ainu）は、J・R・R・トールキンの小説『指輪物語』、『シルマリルの物語』に登場する想像上の種族。
C++におけるグローバル変数の例を示す。#include <iostream>int global = 3; // これはグローバル変数。void ChangeGlobal() {  global = 5; // 関数でグローバル変数を変更。}int main() {  std::cout << global << std::endl; // もう一つの関数でグローバル変数を参照。  ChangeGlobal();  std::cout << global << std::endl;  return 0;}変数globalはグローバルスコープを持ち、全ての関数から直接アクセスすることができる。この出力結果は、以下のようになる。35グローバル変数を使用すると、ソフトウェアのソースコードを理解することが困難になる。グローバル変数の値はプログラムのどこからでも参照・変更できるため、グローバル変数がどのように使用されているか、またグローバル変数の値（すなわち状態）がどのように変化するかを理解するためには、プログラム全体を把握しなければならないからである。以下にグローバル変数により難解になる例を示す。int x, y, z; // グローバル変数宣言void FunctionA() { x = 2; }void FunctionB() { y = x * 10; }void FunctionC() { z = (x + y) / 2; }int main() {  FunctionA(); // グローバル変数xを書き換える  FunctionB(); // グローバル変数xを元にグローバル変数yを書き換える  FunctionC(); // グローバル変数x, yを元にグローバル変数zを書き換える  return 0;}上記をローカル変数を用いて書きなおした例を示す。int FunctionA() { return 2; }int FunctionB(int x) { return x * 10; }int FunctionC(int x, int y) { return (x + y) / 2; }int main() {  int x = FunctionA(); // ローカル変数xを書き換える  int y = FunctionB(x); // ローカル変数xを元にローカル変数yを書き換える  int z = FunctionC(x, y); // ローカル変数x, yを元にローカル変数zを書き換える  return 0;}ローカル変数を用いた例ではどの変数が、どの関数呼び出しに作用し、どの関数呼び出しの結果を保持しているかは一目瞭然である。また、いずれの関数も状態を持たず独立しているため、入出力が明確であり、モジュールとしての再利用性も高い。対して、グローバル変数を使用した例では、関数の宣言部（インターフェイス）および呼び出し側だけを見てどの関数がどの変数に影響を与えるかを判断することはできず、入出力が不明瞭であり、モジュールとしての再利用も困難である。また、ローカル変数を用いた例では関数の呼び出し順序を入れ替えることは引数と戻り値だけ意識すれば良く容易であるのに対して、グローバル変数を用いた例ではグローバル変数の作用を全て把握する必要があるため困難である。特にこの困難度合いは、グローバル変数の数とグローバル変数を操作する可能性のある関数の数に比例する。（DLLのような）多くのシステムは他のモジュールにあるグローバル変数の参照を直接サポートしないため、グローバル変数が多用されているコードを分割して再利用ライブラリにすることは非常に困難である。また、グローバル変数が他のローカルまたはオブジェクトスコープ変数として代用するには危険な名前を作るために起こる名前問題を導いてしまうことがある。グローバル変数と同じ名前のローカル変数は、一般にそのローカル変数のスコープにおいてグローバル変数を隠匿する。そのため、さらにコードの理解を困難にする。グローバル変数への値の書き込みは理解と予測を難しくする副作用を生み出す。グローバル変数の利用はユニットテストを目的とするコード分割をより難しくする。それゆえ、それらは直接にコードの質の低下を助長する。C言語およびC++の規格では、グローバル変数はプログラム開始処理以前に初期化されることが規定されているが、各々の初期化順序は規定されていない。したがって、グローバル変数の初期化順序に依存するようなコードを書いてしまうと、期待と異なる動作を引き起こすことにつながる。同様にC++の静的メンバー変数も、初期化順序は規定されていない。JavaやC#のような後発のオブジェクト指向言語はグローバル変数を持たないが、クラスの静的フィールド（クラス変数）がグローバル変数に相当する。静的フィールドは一度だけ呼び出される静的イニシャライザまたは静的コンストラクタにより初期化処理を制御することができるが、グローバル変数と同じく非局在的な性質を内包しているため、多用するとコード品質の低下を招く。特に、再代入可能な静的フィールドを外部に公開することは避けるべきとされている。