November 30

Merhaba,

Az önce Microsoft Copilot ile ve tek kuruş para vermeden hayatımın en iyi kod yazma deneyimini yaşadım. Zamanla daha başarılı oldukları kesin! Hatta insani duygularıma yenik düşüp şöyle bir teşekkürde bulundum:

>

Teşekkürler, bu verimli bir çalışma oldu. Aynı benim gibi düşündün ve birçok başarılı kodlar (yaklaşık 100 satır) ürettin. Hepsini denedim ve çalışıyor. Seni başarılı buluyorum...

Cevabını ve deneyimin içeriğine şuradan erilebilirsiniz. Sonuca ise birkaç optimizasyon (v2) ile aşağıdaki kodu derleyerek erişebilirsiniz:

import std;

enum Yetki
{
    Ziyaretçi,
    Editör,
    Admin
}

// Geliştirmeye açık hata atan sınıf
class HataAA(K) : Throwable
{
    K key;

    this(string msg, K key)
    {
        super(msg);
        this.key = key;
    }
}

// Daha da gelişmiş if_has fonksiyonu v1.2
auto if_has(A, K)(A array, K key)
{
    if (auto result = key in array)
    {
        return result;

    } else {

        throw new HataAA!K("Hata: 404", key);
    }
}

// Daha gelişmiş contains fonksiyonu v1.1
void contains(E, V, F)(E element, V value, F func)
{
    auto öncekiYetki = *element;
    if (öncekiYetki != value)
    {
        writeln("Yetkiyi değiştirmek ister misiniz? (E/H)");
        string cevap = "e";//readln().strip();
        if (cevap.toUpper == "E")
        {
            öncekiYetki.writeln(" yetkisi değiştirilecek...");
            *element = value;
            func(*element).writeln; // Callback fonksiyonunu yazdır

        } else {

            writeln("Yetki değişikliği yapılmadı.");
        }

    } else {

        writeln("Yetki zaten eşleşiyor.");
    }
}

void main()
{
    auto kullanıcı = [ "Ali"   : Yetki.Admin,
                       "Ayşe"  : Yetki.Editör,
                       "Mehmet": Yetki.Ziyaretçi
    ];
    writeln("Kullanıcıların Yetkileri:");
    repeat("=", 25).join.writeln;

    foreach (isim, yetki; kullanıcı)
    {
        isim.writeln(" kullanıcısının yetkisi: ", yetki);
    }
	repeat("=", 25).join.writeln;

    // Yetkiyi yazdıran callback fonksiyonu
    auto printYetki = (Yetki y) => y.format!"Yeni Yetki: %s";

    try {
        // Ayşe kullanıcısının yetkisini al ve contains fonksiyonuyla kontrol et
        auto user = if_has(kullanıcı, "Ayşe");
        user.contains(Yetki.Ziyaretçi, printYetki);

    } catch (HataAA!string e) e.hataYaz();

    try {
        auto user = if_has(kullanıcı, "Ayşem");
        user.contains(Yetki.Ziyaretçi, printYetki);

    } catch (HataAA!string e) e.hataYaz();
}

void hataYaz(T)(T e)
{
    e.msg.write;
    e.key.writefln!" çünkü kullanıcı (%s) bulunamadı!";
}

Bu güzel örnek yapay zeka kullanılarak üretildi. Yönlendirmelerimin çoğunu (neredeyse %99) doğru tahmin etti. Böyle bir başarıyı beklemiyordum! Ya benim geçmiş tecrübelerimi kayıt ettiğinden benim gibi düşündü ya da gerçekten 1 sene öncesine göre çok geliştirildiği söylenebilir. Ayrıca claude.io'nun kod yazmada daha da başarılı olduğunu düşünüyorum ama henüz denemedim.

SDB@79