Önce kelime anlamına bakalım;
Scope: kapsam, alan, faaliyet alanı
Şimdi biraz değerlendirelim. Kapsam dediğimiz kavram nasıl belirtilir diye düşünelim. Elimizde bir tarla var bu tarlanın kapsadığı alan bir scope olabilir mi? Bence olur.
Peki elimizde alınacaklar listesi var diyelim. Eşiniz/anneniz/kendiniz hazırladınız. Markete gideceksiniz alış-veriş listemiz var. Bu bir scope mudur? Bence evet.
Peki programlamada elimizde bir liste mi var? Ya da bir tarla mı var? Cevap hemen hemen evet. Hafıza anlamında bakarsak bir tarlamız, yapılacak işlemler anlamında bakarsanız, işlem listemiz var. Biraz daha programlamaya yoralım. Programı yazıyoruz programın başından sonuna kadar bütün kodları aslında bizim scopumuz oluyor ve programlama anlamında dışarıdan bir kaynak kullanmayacaksak en geniş scope oluyor. Yani bir programın başından sonuna kadar olan kısım. İsmi ne oluyor o zaman uygulama-alanı (application-scope) mantıklı. Buradan anlamamız gereken nedir? Scope dediğimiz kavramın bir başlangıcı ve bir sonu var. Programlama temel olarak zaman boyutuyla değerlendirilebilecek bir kavram. Tamam hafıza üzerinde bir yer işgal ediyor, yer olarak da değerlendirilebilir ama kodun akışı olarak zaman daha mantıklı. O halde bir başlangıcı ve bir bitişi olan kavramların hepsi bir scope olabilir, doğru mudur? Hemen hemen diyebiliriz. Örnek verelim, mesela bir fonksiyon bir noktada başlar, bir noktada biter. O zaman fonksiyonun içi fonksiyonun scopudur diyebilir miyiz? Bence deriz. O zaman bir if bloğunun geçerli olduğu kısma koşulun scopu diyebiliriz. Aslında programlama, yani C tabanlı dillerden bakarsak {} işaretlerinin arası direk scope oluyor. Hiçbir zorunluluk olmadan kafanıza göre bu scopu başlatıp bitirebilirsiniz.
Peki bizi nasıl etkiliyor? Bir scope içinde tanımladığınız bir değişken scope dışında kullanılamaz. Asıl etkileyen nokta bu oluyor. İki scope arasında bir bilgi aktarmak isterseniz daha geniş bir scope'a çıkmanız lazım. Mesela iki fonksyon arasında bilgi aktarmak için global değişken tanımlamak gibi.
Sanıyorum bu kadarlık bir tanım yeterli olur. :) Sanki yazsam daha yazacağım.