Peubah (ilmu komputer)

Dalam pemrograman komputer, **variabel** atau **peubah** adalah letak penyimpanan dan terkait nama simbolis yang berisi beberapa kuantitas yang diketahui atau tidak diketahui atau informasi, nilai. Nama variabel adalah cara biasa untuk referensi nilai yang disimpan, pemisahan nama dan konten ini memungkinkan nama yang akan digunakan secara terpisah dari informasi tepat yang diwakilinya. Nama variabel di kode sumber komputer adalah pengenal yang dapat terikat ke nilai selama waktu jalan (*[[:en:Runtime (program lifecycle phase)|runtime]]*), dan nilai yang dapat berubah selama program eksekusi.

Walaupun variabel dalam pemrograman komputer mempunyai kemiripan dengan variabel dalam matematika, mereka tetap mempunyai perbedaan yang mencolok. Sebagai contoh, variabel dalam matematika berbentuk abstrak, tidak mereferensikan suatu nilai apapun yang berada di suatu perangkat penyimpanan. Sedangkan variabel dalam pemrograman komputer juga bukanlah bagian dari suatu persamaan atau rumus. Variabel dalam pemrograman juga sering diberikan nama yang relatif panjang, yang mendeskripsikan kegunaan mereka, sedangkan dalam matematika, variabel sering dinamakan dengan satu atau dua huruf.

Nilai yang terikat kepada suatu variabel dapat direferensikan juga oleh variabel lainnya, sehingga nilai tersebut dapat diakses dari dua variabel atau lebih. Mengubah nilai dari salah satu variabel itu berarti mengubah nilai yang direferensikan oleh variabel lainnya.

## Tipe-tipe variabel bedasarkan masa hidupnya
Variabel dapat dibagi bedasarkan masa hidupnya. tipe-tipe variabel bedasarkan pembagian ini adalah *statis, stack dinamis, heap dinamis eksplisit, heap dinamis implisit.* Adapaun variabel statis, juga dikenal sebagai variabel global, adalah variabel yang nilainya selalu berada pada tempat yang sama dalam memori, mulai dari awal berjalannya program hingga berakhirnya program. Lalu variabel *stack* dinamis, juga dikenal sebagai variabel lokal, adalah variabel yang diletakkan pada memori *stack* saat *statement* pendeklarasian variabel dieksekusi. Masa hidup variabel ini adalah sepanjang berjalannya fungsi tempat variabel tersebut dideklerasikan.

Variabel *heap* dinamis eksplisit adalah variabel abstrak tanpa nama yang dialokasikan di dalam *heap* saat berjalannya program, sesuai dengan perintah yang telah dispesifikasikan oleh *programmer*. Contoh untuk jenis ini adalah objek dalam bahasa pemrograman Java, dan *dynamic object* dalam bahasa C++.  Terakhir, variabel *heap* dinamis implisit adalah variabel yang dialokasikan ke dalam *heap* hanya saat ia berisi suatu nilai. Variabel ini lebih fleksibel daripada variabel-variabel lainnya. Contohnya adalah beberapa variabel dalam JavaScript dan PHP.

## Ruang lingkup variabel (''variable scope)''

Ruang lingkup dari variabel menjelaskan di mana variabel tersebut dapat digunakan dalam kode. Sementara itu, masa hidup variabel menjelaskan kapan variabel tersebut mempunyai nilai saat berjalannya program. Walau begitu, ruang lingkup dari suatu variabel berhubungan dengan masa hidupnya. Ruang lingkup adalah sifat dari nama variabel tersebut, yang menjelaskan di mana saja nama tersebut valid untuk digunakan. Sedangkan masa hidup adalah sifat dari nilai di dalam memori yang terikat dengan variabel tersebut, terkhusus saat berjalannya program.

Dua hal ini berbeda dengan konteks, yang merupakan properti dari program itu sendiri. Konteks dari program berbeda-beda dalam kodenya dan juga dalam eksekusinya.

Ruang lingkup adalah bagian penting dalam resolusi nama suatu variabel. Ruang lingkup dari suatu variabel adalah bagian dari teks kode program di mana variabel itu dianggap "ada" dan memiliki nilai. Awal dari bagian itu biasanya mengawali masa hidup dari variabel dan akhir dari bagian itu mengakhiri masa hidupnya. Kebanyakan bahasa pemrograman mendefiniskan ruang lingkup tertentu untuk setiap variabel

Sedangkan, masa hidup dari variabel adalah sifat dari variabel tersebut yang menjelaskan kapan diangkatnya variabel tersebut dari dalam memori saat berjalannya program. Dalam bahasa pemrograman yang tidak mempunyai fitur pengumpulan sampah, variabel yang masa hidupnya melebihi ruang lingkupnya dapat menghasilkan kebocoran memori. Sebab memori yang dialokasikan tersebut tidak diangkat, sedangkan program sudah berada di luar ruang lingkup variabel yang mereferensikan memori tersebut. Alhasil, memori itu tidak akan bisa diangkat kecuali dengan berhentinya program.

Sehingga untuk mengoptimalkan kinerja memori, memori untuk suatu variabel harus diangkat saat variabel tersebut tidak lagi dibutuhkan, sebagaimana memori hanya boleh dialokasikan saat pertama kali variabel tersebut digunakan. Suatu variabel hanya dibutuhkan saat variabel tersebut berada dalam ruang lingkupnya. Oleh karena itu, kompilator biasanya akan memperingati *programmer* jika suatu variabel tidak diangkat dari memori di luar ruang lingkupnya.

Salah satu praktik yang baik dalam menggunakan variabel adalah dengan menyempitkan ruang lingkup variabel tersebut sebisa mungkin. Sehingga lebih kecil kemungkinan suatu bagian dari program berinteraksi dengan bagian yang lainnya diluar keinginan *programmer*, khususnya dengan memodifikasi variabel yang bukan berasal dari bagiannya. Teknik yang biasa digunakan untuk melakukan ini adalah dengan menggunakan gaya penamaan variabel yang berbeda untuk setiap bagian dalam program, atau dengan membuat variabel tersebut privat untuk membatasi ruang lingkupnya.

## Referensi