Bir web sayfasının görüntü işlemek, fizik simülasyonu çalıştırmak veya milyonlarca veri noktasını analiz etmek için kullanılması geçmişte pek gerçekçi değildi. JavaScript motorları çok hızlandı; ancak C, C++ ve Rust gibi sistem dilleriyle geliştirilen ağır algoritmalar söz konusu olduğunda tarayıcıların yeni bir oyuncuya ihtiyacı vardı: WebAssembly, kısa adıyla WASM. Bu teknoloji, tarayıcıyı yalnızca belge gösteren bir uygulamadan yüksek performanslı bir çalışma platformuna dönüştürüyor.
Devamı...
OCaml’de bir değişkenin veya fonksiyonun tipini çoğu zaman yazmayız; buna rağmen derleyici hatalı kullanımları daha program çalışmadan yakalar. Bu durum sihir gibi görünse de arkasında sistematik bir mekanizma vardır: tip çıkarımı. Derleyici aslında tipimizi rastgele tahmin etmez; ifadelerden kısıtlar üretir, bu kısıtları çözer ve mümkün olan en genel tipi bulur.

Devamı...
Nim, ilk bakışta Python’ın derlenmiş ve spor salonuna yazılmış kuzeni gibi görünür: girintili, temiz bir sözdizimi sunar; ancak kodu doğrudan yorumlamak yerine çoğunlukla C’ye çevirip yerel makine koduna derler. Peki “Python rahatlığı, C hızı” sloganı gerçeği mi anlatıyor, yoksa pazarlama departmanının kahvesi biraz fazla mı sertti?
Devamı...
Bir Lisp programına ilk kez bakanların ortak tepkisi genellikle şudur: “Bu kadar parantez gerçekten gerekli mi?” Bir süre sonra parantezlerin süs değil, dilin temel fikrinin görünür hâli olduğu anlaşılır. Lisp ailesinde programlar, dilin sıradan veri yapılarıyla temsil edilir. Kısacası kod ile veri aynı kıyafeti giyer; buna homoiconicity denir.
Devamı...

Bir ekrandaki parlak metal, saydam cam veya yumuşak gölge yalnızca estetik bir hile değildir. Işın izleme, ışığın gerçek dünyadaki davranışını matematiksel bir modele dönüştürerek her pikselin rengini hesaplar. İşin eğlenceli tarafı şudur: Algoritma, doğadaki sayısız fotonu ileri doğru takip etmek yerine kameradan sahneye ters yönde ışın göndererek yalnızca görüntüye katkı sağlayan yolları araştırır.
Devamı...
1957 yılında IBM tarafından geliştirilen Fortran, yazılım dünyasının dinozorlarından biri gibi görünebilir. Ancak bu dinozor müzede sergilenmiyor; iklim modellerinden kuantum fiziğine, akışkanlar dinamiğinden uzay araştırmalarına kadar sayısız alanda hesaplama yapmayı sürdürüyor. Üstelik bunu, kendisinden onlarca yıl genç dillere meydan okuyarak gerçekleştiriyor.

Devamı...
Bir yazılım sisteminin yıllarca çalışması kulağa bilim kurgu gibi gelebilir. Erlang dünyasında ise sunucuyu yeniden başlatmadan kod güncellemek, çöken süreçleri otomatik olarak ayağa kaldırmak ve milyonlarca eşzamanlı bağlantıyı yönetmek tasarımın doğal parçalarıdır. Ericsson laboratuvarlarında telekom sistemleri için doğan Erlang, bugün mesajlaşmadan fintek altyapılarına kadar uzanan yolculuğunda hâlâ yüksek erişilebilirliğin en güçlü araçlarından biridir.
Devamı...
Ruby’nin okunabilir sözdizimini seviyor, ancak derleme zamanında tip güvenliği ve yerel kod performansı da istiyorsanız Crystal oldukça ilgi çekici bir seçenek. Crystal, Ruby’den güçlü biçimde esinlenen sözdizimini statik tip sistemi, tip çıkarımı ve LLVM tabanlı derleyiciyle birleştirir. Sonuç, geliştiriciye dinamik bir dil kullanıyormuş hissi veren fakat birçok hatayı program çalışmadan önce yakalayan modern bir programlama dilidir.
Devamı...
Birden fazla iş parçacığının aynı veriyi değiştirmeye çalıştığı programlar, kısa sürede kilitler, yarış durumları ve gizemli hatalarla dolu bir labirente dönüşebilir. Clojure bu soruna alışılmışın dışında yaklaşır: Veriyi korumak için her yere kilit koymak yerine, verinin büyük bölümünü değiştirilemez hâle getirir. Böylece “Bu değeri kim değiştirdi?” sorusu büyük ölçüde ortadan kalkar ve eşzamanlı programlama daha öngörülebilir olur.
Devamı...
Programlama dilleri dünyasında moda hızla değişir; ancak uçuş kontrol bilgisayarı geliştirirken “Bu yıl hangi dil popüler?” diye sorulmaz. Asıl sorular, yazılımın öngörülebilir olup olmadığı ve bir hatanın daha çalıştırılmadan yakalanıp yakalanamayacağıdır. 1980’lerde ABD Savunma Bakanlığının ihtiyaçları doğrultusunda geliştirilen Ada, tam da bu nedenle havacılık, savunma ve demiryolu gibi hata toleransı düşük alanlarda hâlâ güçlü biçimde tercih ediliyor.

Devamı...
Bir fabrikanın sensörleri her saniye sıcaklık, basınç ve titreşim ölçümleri gönderiyorsa ortaya küçük görünen fakat hiç durmayan bir veri seli çıkar. Zaman Serisi Veritabanları (TSDB), bu seli klasik ilişkisel veritabanlarından farklı olarak satır satır düzenlemek yerine zaman odaklı, sıralı ve toplu biçimde işleyerek yüksek yazma hızına daha düşük disk maliyetiyle ulaşır.
Devamı...
Bir fonksiyon çalışıyor olabilir; peki onu güvenle değiştirebilir misiniz? İç içe koşullar, döngüler ve farklı çıkış yolları çoğaldıkça kod, küçük bir değişikliğin beklenmedik sonuçlar doğurabileceği bir labirente dönüşür. Siklomatik karmaşıklık, bu labirentteki bağımsız yolları sayarak kodun test edilme, anlaşılma ve bakım riskini sayısal biçimde görünür kılar.
Devamı...
Bir siber saldırının mutlaka ekranda beliren kırmızı uyarılarla veya aniden duran sunucularla başlaması gerekmez. Gelişmiş Sürekli Tehditler, yani APT’ler, dijital dünyanın sabırlı casuslarıdır. Ulus devletlerle ilişkilendirilebilen bu aktörler; stratejik bilgi toplamak, kritik altyapılara erişmek veya gelecekte kullanılabilecek kalıcı bir pozisyon elde etmek için hedef ağlarda aylarca, hatta yıllarca saklanabilir.
Devamı...
Bir röntgen görüntüsünde hastalık bulunduğunu söylemek değerlidir; fakat doktorun asıl sorusu çoğu zaman “Tam olarak nerede ve ne kadar büyük?” olur. Anlamsal bölütleme, görüntüdeki her piksele bir sınıf etiketi atayarak bu soruyu yanıtlar. Böylece tümör, organ, lezyon veya sağlıklı doku sınırları adeta dijital bir boya fırçasıyla işaretlenir.
Devamı...
Paralel programlama, bir işi birden fazla çalışana paylaştırmak gibidir: Doğru koordinasyonla işler hızlanır, koordinasyon yoksa herkes aynı dosyanın üzerine kahve döker. Veri yarışı (data race), birden fazla iş parçacığının aynı bellek konumuna eş zamanlı erişmesi, erişimlerden en az birinin yazma olması ve aralarında uygun bir senkronizasyon bulunmaması durumudur. Sonuç; bazen çalışan, bazen bozulan ve hata ayıklayıcı açılınca mucizevi biçimde düzelen programlardır.
Devamı...
Bir kullanıcı arayüzündeki parlak “Satın Al” düğmesine bakmıyorsa sorun kullanıcıda mı, tasarımcıda mı? İnsan-Bilgisayar Etkileşimi (HCI) araştırmalarında göz takibi, bu tartışmayı tahminlerden çıkarıp ölçülebilir verilere dönüştürür. Kızılötesi tabanlı cihazlar, kullanıcının ekranda nereye ve ne kadar süre baktığını belirleyerek dikkat dağılımını ısı haritaları üzerinde görünür hâle getirir.
Devamı...
Bir uygulama geliştirirken kullanıcıdan “Lazım olur” düşüncesiyle veri istemek, çekmeceye yıllarca kullanılmayan kablolar doldurmaya benzer. Aradaki önemli fark şudur: Kabloların sızdırılma, kötüye kullanılma veya bir insanın özel hayatını ihlal etme ihtimali yoktur. Privacy by Design, gizliliği sonradan eklenen bir onay kutusu değil; gereksinim analizinden veritabanına kadar bütün sistemi biçimlendiren temel bir tasarım ilkesi olarak ele alır.
Devamı...
Yeni bir JavaScript kütüphanesini öğrenirken sosyal medyada onun yerine geçen üç araçla karşılaşmak, yazılım dünyasının pek de komik olmayan şakasıdır. Buna yetişmesi gereken sprintler, gece gelen üretim alarmları ve sürekli değişen gereksinimler eklendiğinde geliştirici yalnızca kod değil, yoğun bir zihinsel yük de taşır. Uzun süre yönetilemeyen bu yük; tükenmişlik, motivasyon kaybı ve işlevsellikte belirgin düşüşle sonuçlanabilir.
Devamı...
Bir karıncanın tek başına trafik rotası hesaplamasını veya karmaşık bir lojistik ağını yönetmesini beklemeyiz. Ancak binlerce karınca, merkezi bir yönetici olmadan yiyeceğe giden kısa yolları keşfedebilir. Sürü zekâsı, doğadaki bu şaşırtıcı kolektif davranışı ufak ve otonom yazılım ajanlarına taşır. Her ajan yalnızca basit kurallara uyar; ortaya çıkan sistem ise tek bir ajanın kapasitesini aşan problemleri çözebilir.
Devamı...
Bir veri tablosuna baktığınızda yalnızca satırlar ve sütunlar görebilirsiniz; D3.js ise aynı veride hareket eden çubuklar, renk değiştiren noktalar ve kullanıcıyla konuşan hikâyeler görür. Açılımı Data-Driven Documents olan D3.js, hazır grafikler sunmaktan çok daha temel bir fikir üzerine kuruludur: Veriyi HTML, SVG ve CSS gibi web standartlarına bağlamak. Böylece görselleştirme, ekrana çizilip unutulan bir resim değil; veriye tepki veren canlı bir arayüz hâline gelir.

Devamı...