Sorunuz çeşitli şekillerde ilginçtir, çünkü çeşitli konular için dikkatli ayrımlar gerektirir. Ama görüşün bana göre doğru. Cevabımı yanıltmaktan kaçınmak için bu cevabın çoğunu yazmadan önce referansınızı okumadım.
İlk olarak, Variables are symbolic names for memory
addresses
ifadeniz neredeyse doğrudur, ancak kavramı ve her zamanki uygulamasını karıştırır. Değişken aslında sadece değiştirilebilen bir değer içerebilen bir kaptır. Genellikle, bu kap bir bilgisayarda bir bellek alanı kabı olarak uygulanır ve karakteristik ve adres ve boyut olarak karakterize edilir, çünkü değişkenler az ya da çok bilgi içeren temsiller gerektiren bir nesne içerebilir.
Ancak, uygulama tekniklerinden bağımsız olarak, çoğunlukla dilbilimin anlambilimine ilişkin daha soyut bir bakış açısını ele alacağım.
Yani değişkenler soyut bir bakış açısından sadece kaplardır. Böyle bir konteynerin bir adı olması gerekmez. Bununla birlikte, diller genellikle bir tanımlayıcı ile ilişkilendirilerek adlandırılan değişkenlere sahiptir, bu nedenle değişkenin kullanımları tanımlayıcı tarafından ifade edilebilir. Bir değişken aslında çeşitli takma mekanizması aracılığıyla birkaç tanımlayıcıya sahip olabilir. Bir değişken ayrıca daha büyük bir değişkenin alt bölümü olabilir: bir örnek, dizi değişkenini ve hücrenin dizinini belirterek adlandırılabilen, ancak aynı zamanda diğer adlandırma yoluyla tanımlayıcılarla ilişkilendirilebilen bir dizi değişkeninin hücresidir.
Teknik olarak semantik olarak yüklenebilecek diğer kelimeleri çağırmaktan kaçınmak için kasıtlı olarak biraz tarafsız olan kelime kabını kullanıyorum . Aslında , genellikle bir bellek adresiyle karıştırılan, Wikipedia'da açıklanan referans kavramına yakındır . Kelime işaretçi kendisi genellikle bir bellek adresi olarak anlaşılmaktadır, ama uygunsuz olduğu gibi, en üst düzey dilleri dikkate ve (adresler kullanılabilir olsa da) size başvurmak tartışma yazısında muhtemelen uygunsuz zaman o anlamlı olduğunu düşünmüyorum belirli bir uygulamaya atıfta bulunur. Bununla birlikte, uygulama kavramlarına ve makine mimarisine çok daha yakın olması gereken C gibi bir dil için uygundur.
Aslında, uygulama düzeyindeki değişkenlere veya değerlere bakarsanız, "makine seviyesi işaretçileri" nin birkaç karmaşık dolaylı sistem sistemi olabilir, ancak bunlar kullanıcı tarafından görülemez (ve olmalıdır), böylece soyut bakış açısı Geliştirdiğim geçerli olabilir. Çoğu programlama dilinde, uygulama belirli bir dil için çok farklı olabileceğinden, kullanıcının uygulama hakkında endişelenmesi ve hatta bilmesi gerekmez. Bu, açık ikili kodlama ile neredeyse doğrudan ilişki içinde olan montaj dillerinin gelişmiş bir yerine geçen, makine mimarisine kasıtlı olarak yakın olan C gibi bazı diller için doğru olmayabilir, ancak çoğu yerde rahat kullanım için çok düşük bir düzeydir. durumlar.
Bir dil kullanıcısının bilmesi gereken ve bazen bundan daha az olması gereken, değerler ve ilişkili işlemler, içerilebilecekleri, isimlerle nasıl ilişkilendirilebileceği, adlandırma sisteminin nasıl çalıştığı, nasıl yeni olabilir tanımlanacak değer türleri vb.
Başka bir önemli kavram tanımlayıcılar ve isimlendirmedir. Bir varlığın (bir değerin) adlandırılması, bir tanımlayıcının bir değerle ilişkilendirilmesiyle yapılabilir (genellikle bir bildirimde). Ancak, diğer adlandırılmış değerlere işlemler uygulanarak da bir değer elde edilebilir. İsimler yeniden kullanılabilir ve kullanım bağlamına göre belirli bir tanımlayıcıyla neyin ilişkilendirildiğini belirlemek için kurallar (kapsam belirleme kuralları) vardır. Tam sayı gibi bazı alan adlarının değerlerini adlandırmak için litterals adı verilen özel adlar da vardır (ör.612) veya boole (ör. doğru ).
Değişmeyen bir değerin bir tanımlayıcı ile ilişkilendirilmesine genellikle sabit denir. Okuryazarlar bu anlamda sabitlerdir.
"Değer kapları" da değerler olarak kabul edilebilir ve bunların tanımlayıcı ile ilişkilendirilmesi, kullandığınız "naif" anlamda bir değişkendir. Yani bir değişkenin "kap sabiti" olduğunu söyleyebilirsiniz.
Şimdi, bir tanımlayıcının bir değerle (sabit bildirim) ilişkilendirilmesi veya bir değişkene bir değer atanması arasındaki, yani kapsayıcı sabiti olarak tanımlanan kapta değeri saklamanın arasındaki farkın ne olduğunu merak edebilirsiniz. Esasen bildirim, sözdizimsel bir varlık olan bir tanımlayıcıyı anlamsal bir varlık olan bir değerle ilişkilendiren bir gösterimi tanımlayan bir işlem olarak görülebilir. Atama, bir durumu değiştiren, yani bir kabın değerini değiştiren tamamen semantik bir işlemdir. Bir anlamda beyan, anlambilimsel varlıklar için bir adlandırma (sözdizimsel) mekanizması sağlamaktan başka anlamsal etkisi olmayan bir meta kavramdır.
Aslında ödevler, program yürütülürken dinamik olarak gerçekleşen anlamsal işlemlerdir, bildirimler daha sözdizimsel niteliktedir ve genellikle yürütme işleminden bağımsız olarak programın metninde yorumlanmalıdır. Bu nedenle statik kapsam belirleme (metinsel kapsam belirleme) genellikle tanımlayıcıların anlamını anlamanın doğal yoludur.
Tüm bunlardan sonra, bir işaretçi değerinin bir kapsayıcı için başka bir ad olduğunu söyleyebilirim ve bir işaretçi değişkeni bir kap değişkeni, yani başka bir kap içerebilen bir kap (sabit) (bazıları tarafından dayatılan içeren oyunda olası sınırlamalarla) tip sistemi).
Kod ile ilgili olarak, [pointers] might indicate the entry point
to a section of code and can be used to call that code
. Aslında bu tam olarak doğru değil. Kodun bir bölümü genellikle tek başına anlamsızdır (yüksek düzey veya uygulama açısından). Üst düzey bir bakış açısından, kod genellikle tanımlayıcılar içerir ve bu tanımlayıcıları bildirildikleri statik bağlamda yorumlamanız gerekir. Ancak aslında aynı statik bağlamın olası bir tekrarı vardır, esasen dinamik (çalışma zamanı) fenomeni olan özyineleme nedeniyle ve kod yalnızca statik bağlamın uygun bir dinamik örneğinde yürütülebilir. Bu biraz karmaşıktır, ancak sonuç, uygun kavramın, bir kod parçasını ve tanımlayıcıların yorumlanacağı bir ortamı ilişkilendiren bir kapaktır. Kapatma uygun semantik kavramdır, yani düzgün tanımlanabilir bir semantik değerdir. Sonra kapatma sabitleri, kapatma değişkenleri,
Bir işlev, genellikle bazı varlıklarını (sabitler ve değişkenler) tanımlamak veya başlatmak için bazı parametreler içeren bir kapatma işlemidir.
Bu mekanizmaların kullanımıyla ilgili birçok varyasyonu atlıyorum.
Kapaklar, zorunlu veya işlevsel dillerde OO yapılarını tanımlamak için kullanılabilir. Aslında, OO stili (muhtemelen adından önce) üzerinde erken çalışma bu şekilde yapıldı.
Hızlı bir şekilde gözden geçirdiğim referansta bulunduğunuz makale, yetkili bir kişi tarafından yazılmış ilginç bir makale gibi görünüyor, ancak çeşitli diller ve bunların temeldeki hesaplama modelleri ile önemli bir deneyiminiz yoksa muhtemelen kolay bir okuma değil.
Ancak unutmayın: Tutarlı bir görüşü koruduğu sürece, birçok şey seyircinin gözündedir. Bakış açıları farklı olabilir.
Bu sorunuza cevap veriyor mu?
Not: Bu uzun bir cevap. Bunun bir kısmını yetersiz bulursanız, lütfen hangisi olduğu konusunda açık olun. Teşekkür ederim.