Thread overview
Sınıflar ve Yıkıcıları
Sep 25, 2022
Salih Dincer
Sep 25, 2022
Ali Çehreli
Sep 25, 2022
Salih Dincer
Sep 25, 2022
Ali Çehreli
Sep 28, 2022
Salih Dincer
September 25, 2022

Merhaba,

Şurada Ali hocanın konu hakkında tespitleri ve bir de güzel bir tartışma durmakta:

https://forum.dlang.org/post/svctobgjpxebjcfvmqfr@forum.dlang.org

Biraz eskimiş (19 Mayıs) ama üzerinde devam edebiliriz...

Saygılar...

September 25, 2022
On 9/25/22 00:59, Salih Dincer wrote:
> Merhaba,
>
> Şurada Ali hocanın konu hakkında tespitleri  ve bir de güzel bir
> tartışma durmakta:
>
> https://forum.dlang.org/post/svctobgjpxebjcfvmqfr@forum.dlang.org
>
> Biraz eskimiş (19 Mayıs)

Bence hâlâ tam anlaşılamamış bile. :) (En kötüsü, öyle bir konu konuşulduğunu hatırlamıyordum bile. Tekrar okuyunca hatırladım tabii ama aklımdan uçup gitmiş. :/)

> ama üzerinde devam edebiliriz...

Bütün yıkıcılar (destructor) şu kurallara uymalı:

1) Her yıkıcı @nogc olmalı çünkü her yıkıcı ihtimalle bir çöp toplama işlemi sırasında işletiliyordur.

2) Yıkıcıların işletilme garantileri olmadığından temizlik işlemlerini onlara bırakmak yerine kendimiz açıkça halletmeliyiz.

İkinci madde RAII yöntemini dışlamaz:

void foo() {
  auto b = BağlantıKapatıcı(birBağlantı);
  // ...

  // b'nin yıkıcısı burada işletilir (hata atılmış bile olsa)
}

Hatta, böyle türlerin yıkıcıları aslında dinamik belleği kullanabilirler bile. Tehlikeli olan, böyle türleri dinamik nesne üyesi yapmamaktır. (class'lar normalde dinamik olarak kullanıldıklarından bunu onlara da uygulayabiliriz: Dinamik bellek kullanan hiçbir üyenin temizliği sınıfın yıkıcısına bırakılmamalıdır.

Evet, yukarıdaki kurallar yetiyor galiba. Yıkıcıları @nogc yaparsak, temizlik işlemi sırasında bellek ayırmak isteyen türler derlenemez. Böylece, temizlik işlemini yıkıcının işlemesinden önce kendimiz doğru zamanda halletmek zorunda kalırız.

Bu kurallar RAII yapılarında esnetilebilir ve belki onu belirtmek için RAII yapılarının isimlerini RAII diye bitirmek uygundur:

void foo() {
  auto b = BağlantıKapatıcıRAII(birBağlantı);
  // ...
}

Ali


September 25, 2022
On Sunday, 25 September 2022 at 13:25:12 UTC, Ali Çehreli wrote:
>
> Bence hâlâ tam anlaşılamamış bile. :) (En kötüsü, öyle bir konu konuşulduğunu hatırlamıyordum bile. Tekrar okuyunca hatırladım tabii ama aklımdan uçup gitmiş. :/)
>
> [...]
> 
> Evet, yukarıdaki kurallar yetiyor galiba. Yıkıcıları @nogc yaparsak, temizlik işlemi sırasında bellek ayırmak isteyen türler derlenemez. Böylece, temizlik işlemini yıkıcının işlemesinden önce kendimiz doğru zamanda halletmek zorunda kalırız.
>
> Bu kurallar RAII yapılarında esnetilebilir ve belki onu belirtmek için RAII yapılarının isimlerini RAII diye bitirmek uygundur:
>
> void foo() {
>   auto b = BağlantıKapatıcıRAII(birBağlantı);
>   // ...
> }
>
> Ali

Hocam RAII terimini sevmediğinizi, bu ne uyduruk terimmiş dediğinizi hatırlar gibiyim. Açıkcası, anlamı ve getirdiklerinden zihnimde çok az bir şey kalmış! İşlemcilerdeki CISC, RISC mimarileri gibi fiyakalı bir görünümü olduğunu itiraf etmeliyim. Bilgilerimi güncelledikten sonra katılım sağlayacağım. Çünkü bir süredir Fatih Terim'in belgeselini izlemek ile meşgulüm...

Bu arada(!) Off-topic ile renk katmak isterim! Belgeselin başında Terim der ki:

> Bu projeyi neden kabul ettim? İnsanların yaptıkları çok çabuk unutuluyor. Hatta bazen siz bile hatırlayamıyorsunuz. Hatırlatıldığı zaman "Aa, ben bunları mı yaptım?" diyorsunuz. Bu zaman yolculuğunda ben de bakayım neler yapmışım...

Bizi dinleyen, okuyan başka arkadaşlarımız var mı? Konuya katkı sağlamak ister misiniz?

Siz ne düşünüyorsunuz?

Teşekkürler...
September 25, 2022
On 9/25/22 12:00, Salih Dincer wrote:

> Hocam RAII terimini sevmediğinizi, bu ne uyduruk terimmiş dediğinizi
> hatırlar gibiyim.

"Her kaynak, ona sahip olan sınıfın yıkıcısı tarafından geri verilmelidir" anlamına gelir ama Türkçe çevirisi "kaynak ayırmak ilklemektir" olan "resource acquisition is initialization"dır. Bence, insanlar başkalarının kafasını karıştırarak kendileri de farkında olmadan akıllı görünmek istemişler.

Not: Go'nun sattığı "errors are values" deyimi de bence aynı nedene dayanır. Onun ne anlama geldiğini sonunda anladığı için mutlu olup blog yazanlar var. Halbuki son derece anlamsız bir sözdür çünkü error'lar hiçbir zaman zaten value'dan başka bir şey olmamışlardır. Eğer başka bir şey demek istemişlerse neden asıl demek istediklerini dememişler diye sormak gerek.

> Açıkcası, anlamı ve getirdiklerinden zihnimde çok az
> bir şey kalmış!

Adı yanlış konmuş ama RAII çok mantıklı ve çok kullanılan bir yöntemdir.

Ali


September 26, 2022

On Sunday, 25 September 2022 at 19:00:50 UTC, Salih Dincer wrote:

>

Bizi dinleyen, okuyan başka arkadaşlarımız var mı? Konuya katkı sağlamak ister misiniz?

Siz ne düşünüyorsunuz?

Teşekkürler...

Merhaba Salih Hocam ve Ali Hocam.

İktisat bölümü dördüncü sınıfı okuyor olduğumdan dolayı bu sene 18 Ağustos 'taki KPSS Lisans 'a girdim. Çok şükür KPSS sürecim bitti. Bazı kamu kurumlarına da önceki KPSS Önlisans puanımla başvurdum. Başvuru yaptığım yerlerden de umudum var.

Ben aşağıdaki satırları kendimle ilgili açıklama yapmak için yazdım. Sizi kendime göre çok ileri seviyelerde görüyorum. Düşüncelerimi yazabilecek kadar bilgiye yetişemiyorum. ancak bu yazdıklarım sizin motivasyonunuzu kırmasın. Çünkü sizin ne kadar kaliteli işler yaptığınızı forumda İngilizce dilindeki açtığınız konu başlıkları ve yazdığınız cevapları, -yazılımla ilgili gereken seviyeye gelemesem de- okudum.

Benim bu konuda bir bilgim yoktur. Çünkü kendimi o kadar ilerletemedim ve Ali hocamızın kitabını okumayalı da bayağı zaman geçti. Bir de Dlang 'ın kendi sayfasında

>

"Bu programlama dili kime uygun değildir?" başlıklı yazıda da yazılımda kendini hala başlangıç seviyseinde görenlerin Javascript ve Python 'da yazılım yazabilme konularında en az orta seviyeye gelmiş olmalarını öneriyorlardı.

freecodecamp.org 'dan html öğrenmeye başladım. Öğrenmeye ara sıra devam ediyorum. Bu ayın içinde elma toplamaya da başlama ihtimalim var. Bu sebeple ciddi bir çalışma içine girmedim. Şimdilik bilgisayarla çalışsam da olur olmasa da olur diyorum.

September 28, 2022
On Monday, 26 September 2022 at 08:35:44 UTC, İsmail Emre ARIKAN wrote:
> Düşüncelerimi yazabilecek kadar bilgiye yetişemiyorum. ancak bu yazdıklarım sizin ***motivasyonunuzu kırmasın***.

Asıl senin kırılmasın ve Rabbim şevkini arttırsın. Örneğin VueJS'e bak. HTML öğrenme demiyorum ama paralel olarak bu ikisi ve bir dili uygulama yapacak kadar öğren derim. Bu dil mutlaka D olsun demiyorum, örneğin Java.

Başarılar...