Thread overview
D bellek guvenligi
Oct 27
Erdem
October 27

Daha onceki sorularimdan birinde Ali Abi su baginti paylasmisti.

https://dlang.org/blog/2022/10/08/dip1000-memory-safety-in-a-modern-systems-programming-language-part-2/

Birakin part2'i o gun bugundur part1'e bakiyorum hala bitiremedim.

Acaba aramizdan biri( ehem ehem kimseyi ima etmiyorum ehem ehem ---> Ali Abi <---)
part1'in ustunden gecebilir mi bir soyleside?

Ya rust'a bakinca https://youtu.be/WQbg6ZMQJvQ?t=876, su abi ne guzel anlatmis 14:44-20.00 suresince bir genelleme ile. Ownership, shared borrowing, mutable borrowing hem tasmalari, hem dangling pointerlari her seyi anlatiyor.

D'de dokumani anlamak uzun surunce, bulabildigim en anlasilir kaynak ulu reis Walter'in 2017 yilindaki su videosu oldu: https://www.youtube.com/watch?v=Tubj4CRkoac&t=1432s. Walter Bright usual suspect slide'inda gosterdigi maddelerin ustunden teker teker gidiyor konusma boyunca.

Iste buffer overflow'u soyle cozduk casting'i boyle cozduk, scope keyword'u,return ref, o , bu , su derken benim kafam allak bullak oluyor. Cok fazla keyword icat edilmis gibi geliyor her bir senaryo icin. Daha bunun out, inout filan'i da var ustelik.

Teker teker her senaryonun ustunden gitmektense Rust gibi genellemeler D'dede yapibilirmi anlasilabilirlik icin.

Acaba bir bulusma yapip bu keywordlerin ve kullanimlarinin ustunden gecebilirmiyiz
yukardaki ilk linkin 1. bolumunu takip ederek?

Erdemdem

October 27

On Thursday, 27 October 2022 at 06:57:52 UTC, Erdem wrote:

>

Daha onceki sorularimdan birinde Ali Abi su baginti paylasmisti.

https://dlang.org/blog/2022/10/08/dip1000-memory-safety-in-a-modern-systems-programming-language-part-2/

Birakin part2'i o gun bugundur part1'e bakiyorum hala bitiremedim.

Acaba aramizdan biri( ehem ehem kimseyi ima etmiyorum ehem ehem ---> Ali Abi <---)
part1'in ustunden gecebilir mi bir soyleside?

Ya rust'a bakinca https://youtu.be/WQbg6ZMQJvQ?t=876, su abi ne guzel anlatmis 14:44-20.00 suresince bir genelleme ile. Ownership, shared borrowing, mutable borrowing hem tasmalari, hem dangling pointerlari her seyi anlatiyor.

D'de dokumani anlamak uzun surunce, bulabildigim en anlasilir kaynak ulu reis Walter'in 2017 yilindaki su videosu oldu: https://www.youtube.com/watch?v=Tubj4CRkoac&t=1432s. Walter Bright usual suspect slide'inda gosterdigi maddelerin ustunden teker teker gidiyor konusma boyunca.

Iste buffer overflow'u soyle cozduk casting'i boyle cozduk, scope keyword'u,return ref, o , bu , su derken benim kafam allak bullak oluyor. Cok fazla keyword icat edilmis gibi geliyor her bir senaryo icin. Daha bunun out, inout filan'i da var ustelik.

Teker teker her senaryonun ustunden gitmektense Rust gibi genellemeler D'dede yapibilirmi anlasilabilirlik icin.

Acaba bir bulusma yapip bu keywordlerin ve kullanimlarinin ustunden gecebilirmiyiz
yukardaki ilk linkin 1. bolumunu takip ederek?

Erdemdem

Aslında örnekler çok basit. Hemen 2 başlık açıp part1/2 diye, sırayla üzerinden geçeriz. Örneğin 2'nin 2'si gayet güzel bir örnek:

interface Talkative
{
    @safe const(char)[] saySomething() scope;
}

class Duck : Talkative
{
    char[8] favoriteWord;
    @safe const(char)[] saySomething() scope
    {
        import std.random : dice;

        //return favoriteWord[].dup;/*
        return
        [
            "quack!",
            "Quack!!",
            "QUAAACK!!!"
        ][dice(2,2,1)];//*/
    }
}
import std.stdio;
void main()
{
	with(new Duck)
	{
		favoriteWord = "BABADEDE".dup;
		saySomething.writeln;
	}
}

Bu hafta bayram, hafta sonu Ali hocam (?) müsaitse, burada konuştuklarımızın ve anlamadıklarımızın ekstradan üzerinden geçeriz. Önce biraz tüketelim çevrimiçi görüştüğümüz sırada mühürleriz.

Başarılar...

October 27
On 10/27/22 06:58, Salih Dincer wrote:

> Örneğin 2'nin 2'si gayet güzel bir örnek:

Ama bellek güvenliği ile ilgisini anlayamıyorum. Herhalde o sunumu tekrar izlemem gerekiyor.

Ali

October 27
On 10/26/22 23:57, Erdem wrote:

> Cok fazla keyword icat edilmis gibi geliyor

Katılıyorum. Bu konuların anlaşılmasının olanaksız olduğunu Walter'ın da bulunduğu bir ortamda söylemiştim. DIP 1000'a ek olarak hazırlanmakta olan @live'ı da kasdetmiştim. Yanıtı şunlar gibiydi (evet, çeviriyorum):

<çeviri>
- Evet, zorlaştıracak ama bunların kullanımı seçime bağlı.

- DIP 1000, stack'teki nesneleri gösteren göstergeleri denetim altına alıyor. Hayır, çok karşılaşılan bir sorun değil ama D'nin bellek güvenliği olduğunu söyleyebilmek için böyle bir olanak şart.

- @live, DIP 1000'ın üzerine kurulu ve şu üç sorunu çözüyor: free'den sonra kullanıma devam etmek, çifte free, unutulan free.

- free ile ilgili olanlar gerçekten karşılaşılan sorunlardır. Evet, @live'ı kullanmak da zor olacak. Neyse ki Rust, zorluğuna rağmen böyle bir olanağın kullanılabileceğini gösterdi.

Bellek güvenliği açısından en iyi olanak çöp toplayıcıdır. Yeni kullanıcılar için kolay adımlar:

1) @safe'i gözardı edin
2) @live'ı gözardı edin
3) Çöp toplayıcıyı kullanın

@safe, dip1000, ve @live, güvensizlik içermesi istenmeyen profesyonel programlar içindir.
</çeviri>

Ali