Jump to page: 1 2
Thread overview
Sohbet: 9 Ocak 2022, Pazar, sabah 10:00 (Türkiye saati)
Jan 04, 2022
Ali Çehreli
Jan 05, 2022
Salih Dincer
Jan 06, 2022
Ali Çehreli
Jan 06, 2022
Ferhat Kurtulmuş
Jan 06, 2022
Ali Çehreli
Jan 07, 2022
Ferhat Kurtulmuş
Jan 08, 2022
Salih Dincer
Jan 09, 2022
Rohat
Jan 09, 2022
Ali Çehreli
Jan 09, 2022
Ali Çehreli
Jan 09, 2022
Salih Dincer
January 04, 2022
Her zaman olduğu gibi herkes davetli ve gündem boş. Her konuya açığız. :)

-----
Join Zoom Meeting
https://us04web.zoom.us/j/2248614462?pwd=VTl4OXNjVHNhUTJibms2NlVFS3lWZz09

Meeting ID: 224 861 4462
Passcode: 8eimSR
-----

Ali

January 05, 2022
On Tuesday, 4 January 2022 at 18:03:25 UTC, Ali Çehreli wrote:
> Her zaman olduğu gibi herkes davetli ve gündem boş. Her konuya açığız. :)
>
> -----
> Join Zoom Meeting
> https://us04web.zoom.us/j/2248614462?pwd=VTl4OXNjVHNhUTJibms2NlVFS3lWZz09
>
> Meeting ID: 224 861 4462
> Passcode: 8eimSR
> -----
>
> Ali
Belki konulardan biri D'nin C++'a göre zayıf kaldığı yönleri...

January 05, 2022
On 1/5/22 5:24 AM, Salih Dincer wrote:

> Belki konulardan biri D'nin C++'a göre zayıf kaldığı yönleri...

Bece D'nin C++'a göre zayıf kaldığı iki önemli yön var:

- C++'ın ISO standardı var

- C++'ın çok büyük ve çok yetenekli bir insan topluluğu var

Bir kaç tane olanak da var ama bence sözünü etmeye değmez çünkü aynı şeyler D'de de başka yollarla yapılıyor:

- C++ şablonlarının ... ile tanımlanmış olan parametrelerinde "bu işlemi hepsine uygula" diye bir olanak var. (Adını hatırlayamıyorum.) D'de açıkça 'foreach' veya 'static foreach' yazmak gerekiyor.

- C++'ta çokuzlular otomatik olarak değişkenler olarak açılıyorsar. (Bu olanak D'de de çok istenir.)

- C++'ta concepts var.

- vs.

C++11'den beri D ile arayı kapamaya devam ediyor. Modüller bile ancak C++20'de geldi. C++23'ün gelişimi de Covid yüzünden yavaş olduğundan onda da çok önemli bir olanak görmüyorum.

Ali


January 06, 2022
On Tuesday, 4 January 2022 at 18:03:25 UTC, Ali Çehreli wrote:
> Her zaman olduğu gibi herkes davetli ve gündem boş. Her konuya açığız. :)
>
> -----
> Join Zoom Meeting
> https://us04web.zoom.us/j/2248614462?pwd=VTl4OXNjVHNhUTJibms2NlVFS3lWZz09
>
> Meeting ID: 224 861 4462
> Passcode: 8eimSR
> -----
>
> Ali

Ali Hocam, tam o saatte apartman toplantısı var. Hep böyle aksilikler yüzünden katılamıyorum :). Aklıma gelen harika bir D özelliği ile ilgili bir sorum var:

C++'da dynamic_cast, static_cast ve reinterpret_cast gibi farklı cast'ler var ve bunlar D'de tek bir cast ile hallediliyor, çünkü D derleyicileri yeterince akıllı, hangi cast olduğunu anlıyorlar. Benim anlamsız sorum şu neden C++ bunları birleştiremiyor? Bu adamlar hiç mi D'den ders almıyor:P Evet soru galiba C++ ile ilgili oldu :)
January 06, 2022
On 1/6/22 11:09 AM, Ferhat Kurtulmuş wrote:

> Ali Hocam, tam o saatte apartman toplantısı var.

Ne alakası var programcılıkla? :p

> Hep böyle aksilikler
> yüzünden katılamıyorum :).

Saat konusunu daha önce de sormuştum: 11:00 yapalım mı? Bu seferlik mi, bundan sonraki bütün sohbetler için mi?

> C++'da dynamic_cast, static_cast ve reinterpret_cast gibi farklı
> cast'ler var ve bunlar D'de tek bir cast ile hallediliyor, çünkü D
> derleyicileri yeterince akıllı, hangi cast olduğunu anlıyorlar. Benim
> anlamsız sorum şu neden C++ bunları birleştiremiyor?

Hiç aklıma gelmemişti. dynamic_cast konusunda D'nin avantajı, sınıfların referans türleri olmaları olabilir. Öyle olunca alt türden üst türe dönüşüm istediğimizi yapabiliyor (olmadığında null döndürmek dahil).

Bunların farklı olmalarının bir nedeni, programcının ne istediğini tam açıklıyor olması olabilir. Ek olarak, C++'ın gizli masraflardan kaçınması da olabilir. Örneğin, dynamic_cast'in "acaba bu dönüşüm geçerli mi" diye çalışma zamanında bakması gerekiyor. Ayrı bir cast işleci sunduklarında programcının bunu bilerek istemesini düşünmüş olabilirler.

> Bu adamlar hiç mi
> D'den ders almıyor:P

Olasılıkla duygusal davranıyorum ama C++'çıların D'yi yok varsaymaları hep aklımda. C++11'den beri eklenen hemen hemen bütün olanaklar D de zaten var olduğu halde belgelerinde "bu olanak D'de de başarıyla denenmiştir" diye tek bir referans yoktur.

Bunun bildiğim tek istisnası, Eric Niebler'ın aralıkları tanıttığı CppCon 2015 konuşmasındaki D referansıdır. Tam şurada:

  https://www.youtube.com/watch?v=mFUXNMfaciE&t=120s

Helal olsun! Ama evet, duygusal davranıyorum. :)

Ali


January 07, 2022
On Thursday, 6 January 2022 at 21:26:04 UTC, Ali Çehreli wrote:
> On 1/6/22 11:09 AM, Ferhat Kurtulmuş wrote:

> Bunun bildiğim tek istisnası, Eric Niebler'ın aralıkları tanıttığı CppCon 2015 konuşmasındaki D referansıdır. Tam şurada:
>
>   https://www.youtube.com/watch?v=mFUXNMfaciE&t=120s
>

C++ da aralıkları benimseyebilir. İmplementasyonu kolay. for döngüsü için arkada front, popFront gibi range primitive'lerini peşisıra çalıştıracak birşeyler dile dahil edilerek başlanabilir. Sorun şu ki C++ standartları oldukça muhafazakar ve daha fazla insanı bunun yararlılığına inandırılması zorunluluğu var. D topluluğu göreceli olarak küçük ve güzel fikirlerin uygulamaya geçmesi daha hızlı oluyor olmalı.

Pazar günkü sohbete yetişmeye çalışacağım ama zor görünüyor, çünkü toplantı eve uzak bir yerde.

Ferhat

January 08, 2022

On Friday, 7 January 2022 at 07:58:57 UTC, Ferhat Kurtulmuş wrote:

>

Pazar günkü sohbete yetişmeye çalışacağım ama zor görünüyor, çünkü toplantı eve uzak bir yerde.

Bence tam şarjlı akıllı telefonuz ve 1 GB/saat kadar internet kotanız varsa katılabilirsiniz...

Bahane yok hocam :)

January 09, 2022
On Tuesday, 4 January 2022 at 18:03:25 UTC, Ali Çehreli wrote:
> Her zaman olduğu gibi herkes davetli ve gündem boş. Her konuya açığız. :)
>
> -----
> Join Zoom Meeting
> https://us04web.zoom.us/j/2248614462?pwd=VTl4OXNjVHNhUTJibms2NlVFS3lWZz09
>
> Meeting ID: 224 861 4462
> Passcode: 8eimSR
> -----
>
> Ali

Selamlar bir 7 dk dir bekliyorumda meeting e katılmayı.
"The host has another meeting in progress." diyor.

Rohat.
January 08, 2022
Teknik bir arıza nedeniyle 10:25'te başlayabildik.

Ali


January 09, 2022
Bu buluşmada aşağıdaki kodları karaladık:

/*
  DDili Sohbeti, 9 Ocak 2022
 */
/+
import std.format;
import std.stdio;

void main() {
    // in
    auto aa = [ 1 : "bir" ];
    assert(1 in aa);
    assert(2 !in aa);
    assert(!(3 in aa));

    // 2 in
    int body;
    foo(51);

    int bölünen = 41;
    int kalan;
    int bölüm = böl(bölünen, kalan);

    writefln!"%s'in sonucu: %s, %s"(bölünen, kalan, bölüm);
}

// eski: in => const scope
//
// yeni      : in => const
//
// yeni + -preview=in :
// in : const scope
// rvlaue'lar referans olarak geciyor

int böl(in int sayı, ref int kalan) {
    kalan = sayı % 2;
    return sayı / 2;
}







double foo(int i)
in (i < 100, format!"%s olmaz"(i))
in (i % 2, "tek olsun")
out (sonuc; sonuc < 0, "hata")
   {
       return -5.0;
}

version (none) {
double foo(int i)
in {
    assert(i < 100, format!"%s olmaz"(i));
    assert(i % 2, "tek olsun");
}
out (sonuc) {
    assert(sonuc < 0, "hata");
}
do {
    return -5.0 + 10;
}

} // version (none)
+/







/+
import std.stdio;

struct Alt {
    int i;

    this(ref const(typeof(this)) that) {
        writeln(__PRETTY_FUNCTION__);
        this.i = that.i;
    }
}

struct Sayı {
    this(ref const(typeof(this)) that) {
        writeln(__PRETTY_FUNCTION__);
    }
}

struct S {
    Alt i;
    Sayı[] sayılar;

    this(ref const(S) o) {
        writeln(__PRETTY_FUNCTION__);
        this.i = o.i;
        this.sayılar = o.sayılar.dup;
    }
}

int foo(S s, out Alt alt) {
    alt.i = 42;

    return s.i.i * 10;
}

void main() {
    auto s = S(Alt(4), [ Sayı(), Sayı() ]);

    Alt alt;
    writeln(foo(s, alt));
    assert(alt.i == 42);

    auto alt2 = Alt(7);
    writeln(foo(S(Alt(100)), alt2));
    assert(alt2.i == 42);

    zar();
}

pure @nogc nothrow
int zar() {
    debug(zar) writefln!"hello %s"("world");
    // writefln!"hello %s"("world");
    return 0;
}
+/








/+
struct S {
    int[] dizi;

    auto yarisi() inout {
        return dizi[0..$/2];
    }
}

void main() {
    pragma(msg, typeof((immutable(S)()).yarisi()));

    int[] a;
    const(int)[] b;
    immutable(int)[] c;
    pragma(msg, typeof(foo(c, c)));
}

auto foo(inout int[] dizi, inout int[] dizi2) {
    return dizi;
}


// Space ship <=>
+/








import std.stdio;
import std.random;

ref int seç(return ref int soldaki, return ref int sağdaki) {
    return uniform(0, 2) ? soldaki : sağdaki;    // ← derleme HATASI
}

ref int foo() {
    int a;
    int b;

    return seç(a, b);    // ← HATA: geçersiz referans döndürülüyor
}

void main() {
    // int a;
    // int b;
    // seç(a, b) = 42000;
    // writefln!"a %,s   b %,s"(a, b);

    foo() = 42;          // ← HATA: yasal olmayan adrese yazılıyor
}

« First   ‹ Prev
1 2