Haskell ile Saf Fonksiyonel Programlama: Doğruluk İçin Yan Etkisiz Tasarım

Bir programın doğru çalıştığından emin olmak çoğu zaman yalnızca test yazmakla bitmez. Değişkenlerin beklenmedik biçimde güncellenmesi, dosya işlemleri, ağ çağrıları ve zaman bağımlılığı gibi etkiler kodun davranışını zorlaştırır. Haskell, saf fonksiyonel programlama yaklaşımıyla bu karmaşıklığı azaltmayı hedefler: Fonksiyonlar mümkün olduğunca yalnızca girdilerine bağlı sonuç üretir; yan etkiler ise açıkça modellenir.

Devamı...

GAN’ler: Sahtekâr ile Dedektifin Yapay Zekâ Düellosu

Bir sanatçının sürekli yeni sahte tablolar yaptığını, karşısında ise bu tabloların gerçek olup olmadığını anlamaya çalışan keskin gözlü bir uzmanın bulunduğunu düşünün. Üretici Çekişmeli Ağlar (Generative Adversarial Networks, GAN), tam olarak bu rekabet fikrini makine öğrenmesine taşır. Bir ağ yeni veri üretirken, diğeri verinin gerçek mi yoksa üretilmiş mi olduğunu ayırt etmeye çalışır. Yarış ilerledikçe üretici daha ikna edici örnekler hazırlamayı, denetleyici ise daha zor kandırılmayı öğrenir.

ganler-sahtekar-ile-88

Devamı...

Elixir’de Let It Crash: Erlang VM ile Hataya Dayanıklı Sistemler

elixirde-let-it-40

Bir web sunucusunun, ödeme işleyicisinin veya mesajlaşma sisteminin hata alınca tamamen durması korkutucudur. Elixir ise bu korkuyu farklı bir tasarım yaklaşımıyla karşılar: Her hatayı tek tek engellemeye çalışmak yerine, hatalı küçük parçayı kontrollü biçimde öldürür ve güvenilir bir üst süreç aracılığıyla yeniden başlatır. Bu yaklaşımın adı let it crash felsefesidir. İlk bakışta cesur, hatta tehlikeli görünen bu fikir; Erlang VM’in süreç izolasyonu, denetim ağaçları ve hata yayılımı mekanizmaları sayesinde oldukça pratiktir.

Devamı...

CNN ve Görüntü İşleme: Piksellerden Anlama Yolculuğu

Bir fotoğrafı insan gözüyle tanımak birkaç saniye sürer; fakat bilgisayar için bu fotoğraf başlangıçta yalnızca devasa bir sayı tablosudur. Evrişimli Sinir Ağları ya da CNN’ler, bu sayıları anlamlı görsel örüntülere dönüştürmek için tasarlanmış derin öğrenme mimarileridir. Kedi kulağı, trafik levhası, tümör dokusu veya videodaki hareket gibi ayrıntıları; piksellerin birbirine komşu olma ilişkisini koruyarak öğrenirler.

Devamı...

Attention ve Transformerlar: Dil Modellerinin Bağlam Süper Gücü

Bir cümledeki her kelime eşit derecede önemli değildir: “Banka nehir kenarında yeni bir şube açtı” ifadesinde banka kelimesinin anlamını çözmek için “nehir kenarında” bölümü kritik ipucudur. Modern dil modelleri bu tür bağlantıları, dikkat (attention) mekanizması sayesinde yakalar. Transformer mimarisi ise bu mekanizmayı merkeze alarak sıralı işlem zorunluluğunu azaltmış, büyük ölçekli dil modellerinin önünü açmıştır.

Devamı...

Yapay Zeka Temelleri: Turing Testinden Derin Öğrenmeye Uzanan Yol

Yapay zeka (YZ), makinelerin yalnızca hesap yapmasını değil; algılamasını, öğrenmesini, karar vermesini ve kimi zaman yaratıcı görünen çıktılar üretmesini hedefleyen disiplinler arası bir alandır. Bugünkü üretken modeller bir anda ortaya çıkmadı: mantık, olasılık, bilişsel bilim, istatistik ve bilgisayar mühendisliğinin onlarca yıllık ortak birikimiyle şekillendi. Bu tarihi anlamak, güncel “akıllı” sistemlerin neden bazen etkileyici, bazen de şaşırtıcı biçimde hatalı davranabildiğini kavramanın en iyi yoludur.

Devamı...

Uzak API Akışından Dağıtık Mesaj Kuyruğuna: Kafka Benzeri Sistem Tasarımı

uzak-api-akisindan-71

Uzak bir API’den durmaksızın veri çekmek, ilk bakışta basit bir while döngüsü gibi görünür. Ancak ağ gecikmeleri, API kota sınırları, yinelenen kayıtlar, çöken düğümler ve tüketicilerin farklı hızları devreye girince bu iş küçük bir dağıtık sistem macerasına dönüşür. Amaç; veriyi kaybetmeden almak, sıralı şekilde saklamak, birden çok tüketiciye dağıtmak ve tek bir makinenin arızasında sistemi ayakta tutmaktır.

Devamı...

Sonlu Durum Makineleriyle Sıfırdan Regex Motoru Yazmak

sonlu-durum-makineleriyle-48

Düzenli ifadeler ilk bakışta sihirli karakter dizileri gibi görünür: a*b, [0-9]+ ya da ^mail@alan\.com$. Ancak perde arkasında oldukça matematiksel ve anlaşılır bir fikir vardır: sonlu durum makineleri. Küçük bir regex motoru yazmak, hem regex desenlerinin nasıl yorumlandığını hem de derleyicilerin temel prensiplerini öğrenmenin eğlenceli bir yoludur. Bu yazıda hedefimiz, tam özellikli bir PCRE canavarı üretmek değil; karakterler, birleştirme, \vert alternatifi ve * tekrarı için çalışan bir çekirdek tasarlamaktır.

Devamı...

Mikrodenetleyicide RTOS Mantığıyla Görev Zamanlayıcı ve Öncelikli Kesme Yöneticisi

mikrodenetleyicide-rtos-mantigiyla-17

Bir mikrodenetleyicide aynı anda ekran güncellemek, sensör okumak, haberleşme paketi göndermek ve motor kontrol etmek isterseniz, delay() çağrılarıyla dolu bir program kısa sürede kontrolden çıkar. Gerçek zamanlı işletim sistemi (RTOS) prensipleri, bu karmaşayı görevleri bölerek, zamanlayarak ve kritik olaylara doğru önceliği vererek yönetir. Bu yazıda tam teşekküllü bir RTOS yazmak yerine, onun temel fikirlerini taşıyan küçük bir görev zamanlayıcı ve öncelikli kesme yöneticisi tasarlayacağız.

Devamı...

Klasik Bilgisayarda Kuantum Simülatörü: Süperpozisyondan Shor Algoritmasına

Kuantum bilgisayarlar, bilgiyi yalnızca 0 veya 1 olarak değil, bu durumların olasılıksal birleşimi olarak işler. Peki bu tuhaf dünyayı evimizdeki klasik bilgisayarda deneyebilir miyiz? Evet: Bir kuantum simülatörü, kuantum donanımının fiziksel hız avantajını vermez; ancak kübitlerin durumlarını matematiksel olarak takip ederek süperpozisyon, girişim ve dolanıklığı görünür hâle getirir. Hedefimiz küçük devreleri simüle etmek ve Shor algoritmasının periyot bulma fikrini anlamaktır.

Devamı...

İzolasyon Seviyeleriyle 2PL ve Kilitlenme Tespiti: İşlem Yöneticisi Modeli

Bir veritabanı işlem yöneticisi, aynı anda gelen yüzlerce isteğin veriyi birbirinin ayağına basmadan değiştirmesini sağlar. Bu yöneticinin temel görevi, işlemlere doğru izolasyon garantisini vermek, kilitleri düzenlemek ve iki işlem birbirini sonsuza dek beklediğinde alarmı çalmaktır. Bu yazıda, farklı izolasyon seviyelerini destekleyen; iki fazlı kilitleme (2PL) kullanan ve kilitlenmeleri tespit eden bir model kuracağız.

Devamı...

IoT Sensör Sürüsünden Dijital İkize: Anomali Alarm Simülasyonu

Bir fabrikanın, seranın ya da akıllı binanın yüzlerce sensörle konuştuğunu düşünün: sıcaklıklar yükseliyor, titreşimler dalgalanıyor, nem değerleri fısıldıyor. Bu verinin içinden gerçekten tehlikeli olanı seçmek, samanlıkta iğne aramaktan biraz daha zor; çünkü bazen iğne de hareket ediyor. Bu projede sahte IoT verileri üreten, fiziksel ortamın dijital ikizini güncelleyen ve olağandışı durumlarda alarm veren küçük ama genişletilebilir bir siber-fiziksel sistem simülasyonu kuracağız.

Devamı...

İleri Besleme ve Hata Hesaplama: Bir Sinir Ağının Tahmin Yolculuğu

ileri-besleme-ve-11

Bir sinir ağını, ham veriyi alıp anlamlı bir tahmine dönüştüren katmanlı bir üretim hattı gibi düşünebiliriz. İleri besleme (feedforward), verinin girişten çıkışa doğru tek yönlü akışıdır; hata hesaplama ise hattın sonunda üretilen sonucun ne kadar başarılı olduğunu söyler. Bu iki adım, eğitimin temel döngüsünü oluşturur: tahmin et, gerçeğe bak, farkı ölç ve sonraki turda daha iyi ol.

Devamı...

Ham Soketlerle Özel TCP El Sıkışması ve Pencere Yönetimi

ham-soketlerle-ozel-93

Linux’un TCP yığını çoğu uygulama için harika bir güvenlik ağıdır: bağlantıyı kurar, paketleri yeniden iletir ve pencereyi otomatik ayarlar. Fakat paket düzeyinde deney yapmak, özel bir protokol laboratuvarı kurmak veya TCP’nin iç işleyişini gerçekten anlamak istiyorsanız ham soketler ilginç bir kapı açar. Buradaki önemli düzeltme şudur: SOCK_RAW, ağ kartını ve çekirdeği tamamen atlamaz; paketi yine Linux üzerinden gönderir. Ancak çekirdeğin sizin adınıza TCP durum makinesi yönetmesini atlayıp TCP başlığını kendiniz üretmenizi sağlar.

Devamı...

Ham Ses Dalgalarına Çentik Filtre, Yankı ve Faz Kaydırma Uygulamak

Ham bir ses kaydı, zaman içinde ölçülmüş örneklerden oluşan bir dizidir: $x[n]$. Bu diziyi yalnızca dinlemek yerine matematiksel olarak dönüştürmek; örneğin elektrik şebekesi uğultusunu temizlemek, mekânsal yankı eklemek veya stereo algısını değiştirmek mümkündür. Çentik filtre, yankı ve faz kaydırma; sinyal işlemenin frekans, zaman ve faz eksenlerinde nasıl çalıştığını gösteren üç güçlü efekttir.

ham-ses-dalgalarina-36

Devamı...

Gradyan İnişi: Kayıp Vadisinde Minimumu Bulma Sanatı

Makine öğrenmesinde model eğitmek, çoğu zaman sisli ve çok boyutlu bir vadide en alçak noktayı aramaya benzer. Bu vadinin yüksekliği kayıp fonksiyonu ile ölçülür: Modelin tahminleri hedeflerden ne kadar uzaksa rakım o kadar artar. Gradyan inişi (Gradient Descent), hangi yöne yürünürse kaybın en hızlı azalacağını hesaplayıp modeli adım adım daha iyi parametrelere taşıyan temel optimizasyon algoritmasıdır.

gradyan-inisi-kayip-93

Devamı...

Geri Yayılım: Hatalardan Öğrenmenin Zincir Kuralı İspatı

Bir sinir ağı ilk çalıştığında genellikle pek parlak değildir: kediyi köpek, 7’yi 1, hatta kahveyi çorba sanabilir. Onu zamanla iyileştiren mekanizma geri yayılımdır (backpropagation). Bu algoritma, ağın ürettiği hatayı çıkış katmanından girişe doğru dağıtır; her ağırlığın hataya ne kadar katkı yaptığını zincir kuralıyla hesaplar ve ağırlıkları doğru yönde günceller.

Devamı...

Diskiniz İçin Yapay Zekâlı Kütüphaneci: Yerel Anlamsal Arama Motoru

diskiniz-icin-yapay-55

Klasik dosya arama araçları dosya adına ve tam anahtar kelime eşleşmesine bağımlıdır. Oysa toplantı notları diye aradığınızda adı 2025-03-14_musteri_gorusmesi.docx olan belgeyi bulmak istersiniz. Bu projede sabit diskteki dosyaları tarayan, metinlerini çıkaran, içeriklerinden otomatik etiket üreten ve internet bağlantısı olmadan anlamsal arama yapan yerel bir masaüstü arama motoru tasarlayacağız. Hedefimiz, diskinizi yalnızca dosyaların durduğu bir depo olmaktan çıkarıp bağlamı anlayan kişisel bir bilgi tabanına dönüştürmek.

Devamı...

Derin Öğrenme: Katman Katman Özellik Keşfi

Derin öğrenme, yapay zekânın veriye “hangi özelliğe bakması gerektiğini” tek tek öğretmek yerine bunu katmanlar aracılığıyla öğrenmesini sağlayan yaklaşımdır. Temel fikir basittir: Geleneksel sinir ağlarına çok sayıda gizli katman eklenir; böylece model, ham ve yüksek boyutlu verilerden giderek daha soyut temsiller çıkarabilir. Bir görüntüde önce kenarları, sonra şekilleri, en sonunda da “bu bir kedi” fikrini yakalaması tam olarak bu katmanlı maceradır.

Devamı...

Çember Modülasyonu ile Sonsuz Piyano Melodileri: Müzikal Markov Zinciri

Rastgele nota seçmek kolaydır; kulağa müzik gibi gelmesini sağlamak ise bambaşka bir problemdir. Bu projede Markov zincirini, tonal müzikteki akor ilişkileriyle birleştirerek sürekli yeni piyano melodileri üreteceğiz. Sistem, yalnızca bir sonraki notayı değil, bulunduğu tonal merkezi ve bu merkezin çember üzerindeki komşularını da dikkate alacak. Sonuç: zar atan bir robot değil, küçük ama şaşırtıcı derecede terbiyeli bir besteci.

Devamı...