Fortran'ın Bilimsel Hesaplamadaki 70 Yıllık Direnci

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.

fortranin-bilimsel-hesaplamadaki-54

Devamı...

Erlang ve OTP: Telekomdan Dünyaya Altı Dokuzluk Dayanıklılık

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ı...

Crystal ile Statik Tipli Ruby Deneyimi: Hız, Güvenlik ve Zarif Sözdizimi

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ı...

Clojure ve Değişmez Veri Yapıları: Eşzamanlılığa Fonksiyonel Bir Çözüm

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ı...

Ada Neden Havacılık Yazılımlarında Hâlâ İrtifa Kaybetmiyor?

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.

ada-neden-havacilik-47

Devamı...

TSDB Mimarisi: Saniyede On Binlerce Sensör Verisini Ucuza Yazmak

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ı...

Siklomatik Karmaşıklık: Kodun Risk Haritasını Graf Teorisiyle Çıkarmak

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ı...

Siber Savaşın Sessiz Cephesi: APT Grupları Nasıl Çalışır?

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ı...

Piksel Piksel Teşhis: Medikal Görüntülerde Anlamsal Bölütleme

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 Programlamanın Hayalet Hatası: Data Race Anatomisi

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ı...

Kızılötesinden Isı Haritasına: HCI’da Göz Takibiyle Sezgisel Arayüzleri Ölçmek

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ı...

İlk Satır Koddan İtibaren Gizlilik: Privacy by Design Rehberi

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ı...

Framework Koşu Bandından İnmek: Yazılımcılarda Tükenmişlik

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ı...

Dijital Karıncalar İş Başında: Çok Ajanlı Sistemlerde Sürü Zekâsı

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ı...

D3.js ile Veriye Hayat Vermek: Dinamik Bağlama ve Görsel Hikâyeler

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.

d3js-ile-veriye-20

Devamı...

Veritabanında Trafik Sıkışıklığı: Deadlock ve İki Fazlı Kilitleme

veritabaninda-trafik-sikisikligi-24

Bir veritabanında yüzlerce işlemin aynı anda çalışması, kavşaktan birlikte geçmeye çalışan araçlara benzer. Her işlem hızla ilerlemek ister; fakat ortak verilere kontrolsüz erişim, kayıp güncelleme ve tutarsız okuma gibi sorunlar doğurur. Kilitler bu trafiği düzenlerken yanlış sırada alınmaları işlemleri birbirini sonsuza kadar bekleyen bir deadlock durumuna sokabilir.

Devamı...

Tek Kapı, Yüzlerce Servis: API Gateway ile Mikroservis Yönetimi

Bir e-ticaret sisteminde kullanıcı, sipariş, ödeme ve stok servislerinin farklı sunucularda çalıştığını düşünün. İstemcinin bütün bu adresleri bilmesi; güvenlik, sürüm yönetimi ve hata takibi açısından kısa sürede kabusa dönüşür. API Gateway modeli, yüzlerce servisin önüne tek bir giriş kapısı koyarak bu karmaşayı yönetilebilir hâle getirir. Kısacası mikroservis mahallesinin güvenlik görevlisi, trafik polisi ve danışma masası aynı noktada buluşur.

Devamı...

Stereo Vizyonla Derinlik Algısı: Piksellerden 3B Nokta Bulutuna

İnsanlar çevrelerini iki gözün sunduğu küçük açı farkı sayesinde üç boyutlu algılar. Stereo vizyon sistemleri de benzer bir numara yapar: Aynı sahneyi farklı konumlardaki iki kamerayla görüntüler, ortak pikselleri eşleştirir ve nesnelerin uzaklığını hesaplar. Böylece sıradan görüntüler; robotların, insansız araçların ve otonom makinelerin kullanabileceği geometrik bir çevre modeline dönüşür.

Devamı...

Oyun Dünyalarını Matematikle Kurmak: Prosedürel İçerik Üretimi

Bir oyun dünyasındaki her dağı, mağarayı ve ağacı elle yerleştirmek mümkün; fakat harita milyonlarca hücreden oluşuyorsa tasarım ekibi muhtemelen emekliliğini beklerken hâlâ çalı çiziyor olacaktır. Prosedürel İçerik Üretimi, yani PCG, bu işi matematiksel kurallar, tohumlar ve gürültü fonksiyonlarıyla işlemciye devreder. Böylece büyük dünyalar gerektiği anda üretilebilir, tekrar oluşturulabilir ve oyuncuya keşfedilecek benzersiz alanlar sunabilir.

Devamı...

OpenTelemetry ile Bir İsteğin Ağdaki Macerasını Uçtan Uca İzlemek

opentelemetry-ile-bir-71

Bir kullanıcı “Satın Al” düğmesine bastığında istek API ağ geçidine, kimlik servisine, sipariş uygulamasına, veri tabanına ve ödeme sağlayıcısına uğrayabilir. Geleneksel metin günlükleri bu duraklarda ayrı ayrı iz bırakır; ancak parçaları birleştirmek çoğu zaman dedektiflik işidir. OpenTelemetry ise isteğe ortak bir kimlik vererek yolculuğu tek bir zaman çizelgesinde görmemizi sağlar.

Devamı...