Referans Tipler Hakkında

Merhaba, referans tiplerle alakalı biraz kafam karıştı. Bu konuyu en iyi anlayabileceğim bir kaynak öneriniz var mı? ( not : Yazbel kaynaklarına daha bakmadım )

Hangi dil?

1 Beğeni

Ben az çok mantığını kavradım sanırım, python’da görüyoruz c#'da görüyoruz.
Değer tipler mantıksal ifadeler ve enum stack bölgesinde tutulurken, diziler vb liste tipleri heap bölgesinde adres mantığıyla ilerlemekte.
Iyi de kafan nerde karıştı öyleyse? diye soracak olan olursa; Hocanın derste şöyle bir açıklaması oldu ;
String sizce bir referans tip midir? Değer tip midir? “String aslında bir referans tiptir fakat değer tip gibi çalışır” demesi her şeyi … etti :slight_smile: Olay bu.
Yani hocam python’da olur c# da
Stringlerde birer dizi tipi eleman olduğu için dedi sanırım

Python’da bütün nesneler heap’da tutuluyor. @aib’in güzel bir yazısı vardı forumda Python’da referans ve değer tiplerle alakalı, bulayım (Değer ve referans tiplerle ilgili).

Python’da referans ve değer tipi kavramlarından çok mutable-unmutable kavramları önemli bence, teknik açıdan hepsi referans tipi çünkü. Ama nasıl davranacaklarını mutable mı yoksa unmutable mı oldukları belirliyor.

2 Beğeni

Ah, tesekkurler @EkremDincel. Ilk 3 hizli aramamda bulamamistim, baya vakit kurtardi. :purple_heart:

Orijinal soruya gelince,

“Referans” ve “deger” tipler, seylerin ne olduklarini degil, nasil davrandiklarini belirttikleri icin kafa karistiriyorlar. Linklenen cevapta da belirttigim gibi, cogu zaman “referans tipi” olarak tanimlanan bir seyi baska bir acidan “referans tutan deger tipi” olarak belirlemek de gayet mumkun oluyor.

Bunun yaninda baska bir problem daha var ki, o da referans ve deger tipi ayriminin C# gibi kimi diller icin buyuk bir ayrim olmasi. Bu diller “value type”, “reference type” gibi tanimlari standartlarinda barindirmakla beraber o dil icin dogru olan “class/struct ile yapilir”, “stack’te/heap’te tutulur” gibi ozelliklerle besliyorlar.

Mesela C’de “referans tipi” (veya “referans tutan deger tipi”) sayilabilecek pointer’larin misal integer’lardan hic bir farki yok. (Hatta bir suru standart-oncesi ve hatali C kodu, pointer’larla ayni boyuttaki integer turlerini degisimli kullanir.) Stack’te de, heap’te de durabilip, stack’te de duran, heap’te de duran degerlere refere edebiliyorlar. Hatta stack’i veya heap’i olmayan C implementasyonlari da var. Zaten bu kelimeler standartta gecmiyor bile.

C++'ta dogrudan “reference” adi verilen meta-/pseudo-turler var. Her seye refere edebildikleri gibi kendilerinin hic bir yerde tutulduklarini zannetmiyorum. (const olduklarinda islemci yongasindaki sabitlere bile refere edebiliyorlar.)

Buradaki sorun acik mi artik? Davranis olarak deger semantigine sahip bir tip, implementasyon detayi geregi referans tipi olarak tanitilmis.

2 Beğeni

Önemli değil, forumun arama kısmına “Referans tip @aib” yazmıştım.

Ekrem hocam çok teşekkür ederim çok sagolun :slightly_smiling_face: :slightly_smiling_face:

Çok çok teşekkür ederim hocam şimdi çok daha iyi anladım :slight_smile: Gün içinde çalışmıştım detaylıca bir kaç yerdende iyice oturdu. Birde konuyla alakasızda, niye hep “implementasyon” terimini kullanır hocalar ? “entegre etmek, dahil etmek” gibi kelimeler varken :grinning:

Aslında entegre etmek, dahil etmek kelimeleri yerine uygulamak veya gerçekleştirmek sanki daha çok uyuyormuş gibi.

The implementation of new parking fees means everyone has to put more money in the parking meters.

Yeni park ücretlerinin uygulanması herkesin park sayaçlarına daha fazla para yatırması gerektiği anlamına gelir.

2 Beğeni

Terim anlamlı olduğu için daha uygun oluyor diye düşünüyorum. Hem “CPython entegresi” veya “CPython dahil edilmesi” gibi bir şey kulağa hoş gelmiyor ama “CPython implementasyonu” normal geliyor bence, en azından ne demek istediğimiz daha iyi anlaşılıyor.

2 Beğeni

Cunku terim olan implementasyonun entegrasyon yani dahil etme, iceri gommeyle hic bir alakasi yok.


Bu arada tavsiye ettiginiz 4 alternatif de fiil.

1 Beğeni

@aib hoca Spesifik kelimesini çok kullanıyor. Ben de onun anlamını bilmiyorum :blush:

1 Beğeni

specific: açık, kesin, ayırıcı, özel, belirli.

Örnekler:

  • Mavi diyebileceğimiz bir çok renk var, spesifik olarak (özel olarak, özellikle, belirli olarak) hangi maviden bahsediyorsun?

  • #FFFFFF, spesifik (belirli) bir renktir.

  • 31 Mayıs 2020, saat 02:22 spesifik (belirli) bir zamandır.

special: özel, eşsiz veya sıra dışı bir nitelikle ayırt edilebilen.

Örnekler:

  • O, özel bir öğrencidir.

  • Beyaz, benim için özel bir renktir.

  • Bugün, bizim için özel bir gün.

3 Beğeni