Kod kapsamınız yüzde 100 olabilir; ancak bu, testlerinizin gerçekten hata yakaladığı anlamına gelmez. Belki testler yalnızca satırları çalıştırıyor, sonuçları ise yeterince sorgulamıyordur. Mutasyon analizi, kaynak kodda kontrollü ve küçük hatalar oluşturarak test takımına şu eğlenceli soruyu sorar: “Bunu da yakalayabilecek misin?”
Devamı...
Bir hastanın ateşi, öksürüğü ve laboratuvar sonuçları bilgisayara girildiğinde makine nasıl teşhis önerir? Tıbbi yapay zekânın ilk yanıtı oldukça insansıydı: Uzman doktorların kullandığı kuralları açıkça yazmak. Günümüzde görüntüleri milyonlarca parametreyle inceleyen derin öğrenme modellerine ulaşmış olsak da kural tabanlı uzman sistemler; açıklanabilirlikleri, denetlenebilirlikleri ve kritik kararları standartlaştırmaları sayesinde hâlâ önemini koruyor.

Devamı...

Akıllı bir kamera düşünün: Karşıdan gelen yayayı fark etmek için görüntüyü kilometrelerce uzaktaki buluta gönderip yanıt bekliyor. İnternet kısa süreliğine yavaşlarsa kamera da düşünme molasına çıkıyor! Uç bilişim, veriyi üretildiği cihazda veya yakındaki bir ağ düğümünde işleyerek bu bağımlılığı azaltır. Böylece daha hızlı kararlar, daha düşük bant genişliği tüketimi ve daha güçlü veri gizliliği elde edilir.
Devamı...

Bir özelliği cuma akşamına yetiştirmek için katmanları atlamak, testleri ertelemek veya iki servisi geçici bir bağımlılıkla bağlamak oldukça caziptir. Üstelik sistem çalıştığı sürece kimse alarm zillerini duymaz. Fakat geniş ölçekli projelerde bu tavizler birikir; birkaç ay sonra küçük bir değişiklik bile onlarca dosyaya dokunan, günlerce test edilen bir operasyona dönüşür. Teknik borç tam olarak bu görünmeyen yavaşlamadır.
Devamı...

Bir bilgisayar için konuşma, yalnızca zaman boyunca değişen sayılardan oluşur. İnsan kulağı ise bu değişimleri doğrusal biçimde algılamaz: düşük frekanslardaki küçük farklara oldukça duyarlıyken yüksek frekanslarda daha geniş aralıkları benzer kabul eder. Mel-Frequency Cepstral Coefficients (MFCC), ses sinyalini bu algısal özelliğe göre sıkıştırarak konuşma tanıma algoritmalarının kullanabileceği kompakt öznitelik vektörlerine dönüştürür.
Devamı...

Bir zamanlar her kod editörünün, desteklediği her programlama dili için ayrı bir eklenti geliştirmesi gerekiyordu. Kod tamamlama, hata tespiti ve sembol bulma gibi özellikler editör ile dil arasında tekrar tekrar yazılıyordu. Language Server Protocol, yani LSP, bu zahmetli ilişkiye standart bir iletişim katmanı ekleyerek modern editörlerin yüzlerce dili destekleyebilmesini sağladı.
Devamı...
Bir ekipte herkes çalışan kod yazabilir; asıl mesele, herkesin okuyabildiği ve güvenle değiştirebildiği kod yazmaktır. Girintilerden değişken adlarına, kullanılmayan importlardan olası bellek hatalarına kadar pek çok ayrıntıyı otomatik denetleyen linter araçları, kod incelemelerini küçük tartışmalardan kurtarıp mimari kararlara odaklar. Kısacası linter, yalnızca kodun trafik polisi değil, ekibin sessiz kalite koçudur.
Devamı...

Bir veritabanında yazdığımız değeri hemen ardından okuyabilmek doğal bir beklentidir. Ancak veri farklı sunuculara, bölgelere ve hatta kıtalara yayıldığında “hemen” kelimesi pahalılaşır. Dağıtık sistemler bu nedenle bazen bütün kopyaları anında eşitlemek yerine kısa süreli görüş ayrılıklarına izin verir. Nihai tutarlılık, sistem sakinleştiğinde tüm kopyaların aynı değerde buluşacağını garanti eden bu pragmatik yaklaşımın adıdır.
Devamı...
Bilgisayarınız müzik çalarken kod derliyor, bildirim gösteriyor ve onlarca tarayıcı sekmesini canlı tutuyor. İşlemci çekirdeği gerçekte aynı anda yalnızca sınırlı sayıda işi yürütür; işletim sistemi süreçleri hızla sıraya koyarak eşzamanlılık yanılsaması oluşturur. Bir süreçten diğerine geçiş ise ücretsiz değildir. Halk arasında “saniyelik duraklama” denilse de modern sistemlerde tek bir bağlam değişimi çoğunlukla nanosaniye veya mikrosaniye ölçeğindedir. Asıl sorun, bu küçük maliyetin saniyede binlerce kez tekrarlanmasıdır.

Devamı...

Bir sınıfın ihtiyaç duyduğu araçları kendi içinde üretmesi ilk bakışta pratik görünebilir. Ancak proje büyüdüğünde bu yaklaşım, sınıfları birbirine görünmez halatlarla bağlar. Bağımlılık Enjeksiyonu (Dependency Injection veya DI), bu halatları keserek nesnelerin ihtiyaçlarını dışarıdan almasını sağlar. Sonuç; daha modüler, değiştirilebilir ve test edilebilir bir yazılım mimarisidir.
Devamı...
ReLU yıllarca yapay sinir ağlarının çalışkan kahramanı oldu: basit, hızlı ve çoğu zaman yeterince başarılı. Ancak negatif değerleri tamamen silmesi ve türevinin bazı bölgelerde sıfıra düşmesi, araştırmacıları daha yumuşak alternatiflere yöneltti. Swish ve Mish bu arayışın öne çıkan sonuçlarıdır. Üstel fonksiyon içermelerine rağmen modern işlemcilerde vektörleştirme, çekirdek birleştirme ve yaklaşık hesaplama sayesinde oldukça verimli uygulanabilirler.
Devamı...
Bir müşterinin ekmek ve peynir alırken sepete zeytin de eklemesi tesadüf mü, yoksa tekrar eden bir alışveriş davranışı mı? Apriori algoritması, binlerce işlem kaydının arkasına saklanan bu tür ilişkileri keşfetmek için kullanılan frekans tabanlı bir yöntemdir. Market sepeti analiziyle özdeşleşse de öneri sistemlerinden web kullanım analizine kadar pek çok alanda karşımıza çıkar.
Devamı...
Bir metinde en çok geçen kelime, her zaman en önemli kelime değildir. Örneğin “ve”, “bir” veya “için” yüzlerce belgede sıkça görülebilir; ancak bu kelimeler bize belgenin konusu hakkında pek ipucu vermez. TF-IDF, bir kelimenin belge içindeki sıklığı ile bütün veri kümesindeki nadirliği arasında denge kurarak ayırt edici kelimeleri öne çıkarır.

Devamı...

Bir sıcaklık sensörünün 22,1 °C gösterirken aniden 47 °C’ye çıkıp sonraki ölçümde normale döndüğünü düşünün. Ortam bir saniyede tropik adaya dönüşmediğine göre karşımızda büyük olasılıkla elektriksel parazit, haberleşme hatası veya ölçüm gürültüsü vardır. Bu sıçramaları azaltmanın iki popüler yolu hareketli ortalama ve Kalman filtresidir.
Devamı...

Bir veri setine yeni özellik eklemek ilk bakışta modele daha fazla bilgi vermek demektir. Yaş ve gelir faydalıysa meslek, şehir ve alışveriş geçmişi de faydalı olmaz mı? Ne yazık ki özellik sayısı büyüdükçe veri uzayı akıl almaz bir hızla genişler. Örnekler birbirinden uzaklaşır, benzerlik ölçümleri anlamını kaybeder ve model, kalabalık görünen bir veri setinde adeta tek başına kalır. İşte bu olaya boyut laneti denir.
Devamı...
Bir arkadaş grubundaki insanları önce en çok benzeyen ikililerden başlayarak bir araya getirdiğinizi düşünün. Sonra bu küçük grupları daha büyük topluluklarla birleştirin. İşlem tamamlandığında elinizde kimin kime, hangi benzerlik seviyesinde bağlandığını gösteren bir soy ağacı olur. Hiyerarşik kümeleme tam olarak bunu yapar; dendrogram ise ortaya çıkan ilişkilerin görsel haritasıdır.
Devamı...

Bir satıcının belirli şehirlerin tümünü tam bir kez ziyaret edip başladığı şehre dönmesi gerekiyor. Üstelik toplam yol mümkün olduğunca kısa olmalı! Gezgin Satıcı Problemi, yani TSP, tanımı basit fakat çözümü hesaplama açısından oldukça zorlu bir optimizasyon problemidir. Held-Karp algoritması ise gereksiz rota tekrarlarını ortadan kaldırarak faktöriyel aramayı dinamik programlama ve bit maskeleri yardımıyla daha yönetilebilir bir üstel çözüme dönüştürür.
Devamı...

1990’ların oyun motorlarında her işlemci döngüsü değerliydi. Bir vektörü normalize etmek için gereken $1/\sqrt{x}$ hesabı bile performansı ciddi biçimde etkileyebiliyordu. Fast Inverse Square Root algoritması, kayan noktalı sayının bitlerini bir tamsayı gibi yorumlayıp yaklaşık sonucu şaşırtıcı derecede hızlı üretmesiyle ünlendi. Üstelik bunu yalnızca matematikle değil, sayıların bellekteki temsilini yaratıcı biçimde manipüle ederek yapıyordu.
Devamı...
Klasik mantık dünyasında bir önerme ya doğrudur ya da yanlıştır; başka seçenek yoktur. Gerçek hayat ise bu kadar keskin davranmaz. Bir odanın 24 °C olması kimine göre sıcak, kimine göre ılık olabilir. Bulanık mantık, sıcak-soğuk veya hızlı-yavaş gibi dereceli kavramları matematiksel üyelik değerleriyle temsil ederek bilgisayarlara bu belirsizliği yönetme becerisi kazandırır.
Devamı...
Bir yazılım projesi düşünün: Başlangıçta yalnızca kullanıcıların görev oluşturacağı küçük bir uygulamadır. Sonra bildirimler, raporlar, yapay zekâ, karanlık tema ve hatta akıllı saat desteği istenir. Ekip çalıştığı hâlde bitiş çizgisi sürekli uzaklaşır. İşte bu durum, proje yönetiminin meşhur canavarı kapsam kaymasıdır.

Devamı...