Etiket: #teknoloji

  • Kod Kartı: Liste Üreteciyle Tek Satırda Filtre

    Kod Kartı: Liste Üreteciyle Tek Satırda Filtre

    Bir listeden şarta uyan elemanları seçip yeni bir liste yapmak için dört satır yazıyorduk: boş liste, for, if, append. Liste üreteci (list comprehension) aynı işi tek satırda yapıyor.

    İtiraf edeyim, Python öğrenirken bana en zor gelen konulardan biri buydu. İlk gördüğümde satırın nereden başlayıp nerede bittiğini çözemiyordum. Aşağıdaki okuma yöntemini öğrenince her şey yerine oturdu.

    Kod

    notlar = [70, 85, 40, 90, 45]
    # Dört satırlık hali
    gecenler = []
    for n in notlar:
    if n >= 50:
    gecenler.append(n)
    # Tek satırlık hali
    gecenler = [n for n in notlar if n >= 50]
    print(gecenler) # [70, 85, 90]

    Bu satır nasıl okunur?

    [n for n in notlar if n >= 50] satırını soldan sağa şöyle oku: “Listeye n‘yi koy, notlar içindeki her n için, eğer n 50 veya üstüyse.” Yani dört satırlık kodun parçaları aynı, sadece yerleri değişmiş: listeye eklenecek şey en başa, for ortaya, if sona geliyor. Köşeli parantezler de “sonuç bir liste” demek.

    Filtrelemenin yanında dönüştürme

    Baştaki kısımda sadece n yazmak zorunda değilsin; her elemanı değiştirebilirsin:

    print([n + 5 for n in notlar])
    # [75, 90, 45, 95, 50] herkese 5 puan
    print([n + 5 for n in notlar if n < 50])
    # [45, 50] sadece kalanlara 5 puan, sadece onları listele
    isimler = ["ayşe", "mert", "zeynep"]
    print([i.capitalize() for i in isimler])
    # ['Ayşe', 'Mert', 'Zeynep']

    _ ne demek?

    Matrix yağmuru yazısındaki şu satırı hatırla:

    damlalar = [random.randint(-yukseklik, 0) for _ in range(genislik)]

    Burada döngü değişkenini hiç kullanmıyoruz; sadece genislik kadar rastgele sayı üretmek istiyoruz. Python’da kullanılmayan değişkene genelde _ adı verilir. Bu, okuyana “bu değere ihtiyacım yok, sadece tekrar sayısı önemli” der.

    Dikkat

    Liste üreteci kısa ve okunaklı olduğunda güzel. Ama içine çok şey sıkıştırırsan okunmaz hale gelir:

    # Okuması zor
    [n * 2 if n > 60 else n for n in notlar if n % 5 == 0 and n != 45]

    Bir satırı okumak için birkaç kez durman gerekiyorsa dört satırlık for döngüsüne geri dön. Kodu kısa yazmak değil, anlaşılır yazmak amaç.

    Listeleri Python Dersi 7’de, for ve if‘i Python Dersi 5 ve 6’da anlattım.

  • Açık Kaynak Nedir?

    Açık Kaynak Nedir?

    Python derslerinde kullandığımız Python’un kendisi, telefonların çoğunda çalışan Android’in temelindeki Linux, Firefox tarayıcısı… Hepsinin ortak bir özelliği var: Kodlarını herkes okuyabilir. Bunlara açık kaynak yazılım deniyor.

    Kısa tanım

    Açık kaynak, bir yazılımın kaynak kodunun herkese açık olması ve bir lisansla insanlara bu kodu kullanma, inceleme, değiştirme ve paylaşma izni verilmesi demek. Kaynak kod, bir programın insanların okuyabildiği, programlama diliyle yazılmış hali.

    Karşıtı kapalı kaynak (ya da mülk) yazılım: Programı kullanırsın ama kodunu göremez, değiştiremezsin.

    Bir benzetme: yemek tarifi

    Bir restoranda harika bir yemek yedin. Kapalı kaynak, o yemeği sadece restoranda yiyebilmek gibi: Tadına bakarsın ama tarifi sır. Açık kaynak ise tarifin kapıya asılması gibi: İstersen evde yaparsın, tuzunu azaltırsın, kendi versiyonunu arkadaşına verirsin. Biri tarifte bir hata bulursa herkes düzeltmesinden faydalanır.

    Kendin dene: Python’un içine bak

    Python açık kaynak olduğu için, kullandığın hazır fonksiyonların kodunu bilgisayarından okuyabilirsin. Mesela medyanı (ortanca değeri) hesaplayan fonksiyonun içine bakalım:

    import inspect
    import statistics
    print(inspect.getsource(statistics.median))

    Çıktının son kısmı şöyle:

        data = sorted(data)
        n = len(data)
        if n == 0:
            raise StatisticsError("no median for empty data")
        if n % 2 == 1:
            return data[n // 2]
        else:
            i = n // 2
            return (data[i - 1] + data[i]) / 2

    Tanıdık geldi mi? sorted ve len Python Dersi 7’den, if/else Python Dersi 5’ten. Python’u yazan geliştiriciler de bizim derslerde öğrendiğimiz araçlarla kod yazıyor. Açık kaynağın en güzel tarafı bu: “Bu nasıl çalışıyor?” diye merak ettiğinde cevabı kendin okuyabiliyorsun.

    Açık kaynak bedava mı demek?

    Çoğu zaman evet ama asıl mesele bu değil. Açık kaynak dünyasında sık kullanılan bir söz var: “Bedava bira gibi değil, özgür konuşma gibi özgür.” Yani önemli olan fiyat değil, kodla ne yapabileceğin. Ücretsiz olup kodu kapalı olan birçok uygulama var; bunlar açık kaynak değil.

    Açık kaynak kod kullanan şirketler de para kazanabilir: destek hizmeti satarak, bulutta barındırarak ya da açık kaynak bir projenin üstüne kendi ürününü kurarak.

    Lisanslar: “Şu şartlarla kullanabilirsin”

    Kodun herkese görünür olması tek başına yetmez; neye izin verildiğini lisans belirler. En sık karşılaşacağın üç lisans:

    LisansKısaca
    MITÇok serbest. Kodu istediğin gibi kullan, sadece lisans metnini ve telif notunu koru.
    Apache 2.0MIT’e benzer serbestlik, ek olarak patent haklarıyla ilgili maddeler içerir.
    GPLKodu değiştirip dağıtırsan, senin sürümün de aynı şekilde açık kaynak olmak zorunda.

    GitHub’da bir projenin lisansını görmek için depodaki LICENSE dosyasına bakman yeterli. Lisansı olmayan bir kod, herkese açık görünse bile hukuken açık kaynak sayılmaz; sahibi izin vermedikçe kullanım hakları belirsiz kalır.

    Neden önemli?

    • Öğrenmek için: Gerçek projelerin kodunu okumak, ders kitabından sonra gelen en iyi okul.
    • Güven için: Kod herkese açık olduğu için başkaları da inceleyip hataları ve güvenlik açıklarını bulabiliyor.
    • Hız için: Herkes tekerleği yeniden icat etmiyor. Veri biliminde kullandığımız pandas, NumPy, scikit-learn gibi kütüphanelerin hepsi açık kaynak.
    • Kariyer için: Açık kaynak bir projeye yaptığın katkılar herkese açık bir portfolyo gibi çalışır.

    Nasıl katkı verilir?

    Açık kaynak projeye katkı vermek için usta bir yazılımcı olman gerekmiyor. Başlamak için birkaç kolay yol:

    • Kullandığın bir projede hata bulursan, projenin GitHub sayfasında “issue” açarak bildir.
    • Belgelerdeki yazım hatalarını düzelt ya da eksik bir örneği ekle.
    • Belgelerin Türkçe çevirisine yardım et.
    • GitHub’da “good first issue” etiketli işlere bak; bunlar yeni başlayanlar için ayrılmış küçük görevler.

    Bir cümlede

    Açık kaynak, bir yazılımın tarifini herkese açmak demek: Herkes okuyabilir, değiştirebilir, paylaşabilir; kuralları da lisans belirler.

  • Algoritma Nedir? Günlük Hayattan Örneklerle

    Algoritma Nedir? Günlük Hayattan Örneklerle

    “Algoritma” kelimesini sosyal medya haberlerinden duymuşsundur: “Instagram algoritması değişti”, “algoritma bunu öne çıkarıyor”. Kulağa gizemli geliyor ama aslında her gün kullandığın bir şey: bir işi yapmak için sırası belli, açık adımlar.

    Kısa tanım

    Algoritma, bir problemi çözmek ya da bir işi tamamlamak için izlenen, sırası belli ve sonunda biten adımlar dizisidir. Bilgisayar programları algoritmaların bir programlama diliyle yazılmış hâlidir.

    Bir yemek tarifi gibi

    Bir çay demleme tarifini düşün:

    1. Çaydanlığa su koy ve kaynat.
    2. Demliğe iki tatlı kaşığı çay koy.
    3. Kaynayan suyu demliğe dök.
    4. Demliği çaydanlığın üstüne koy, 10-15 dakika demlenmeye bırak.

    Bu bir algoritma. Adımların sırası önemli (suyu kaynatmadan demliğe dökemezsin), her adım açık ve sonunda bitiyor. Bilgisayar için yazılan bir algoritmanın tek farkı, adımların çok daha kesin olması gerektiği: “biraz çay koy” bir insana yeter, bilgisayara yetmez.

    İyi bir algoritmanın özellikleri

    • Açık: Her adım tek bir şekilde anlaşılır.
    • Sıralı: Hangi adımın önce geldiği bellidir.
    • Sonlu: Bir noktada biter; sonsuza kadar dönmez.
    • Doğru: Her olası girdi için istenen sonucu verir.
    • Verimli: İşi gereksiz adımlarla uzatmaz.

    Python’da küçük bir algoritma: en yüksek not

    Bir listedeki en yüksek notu bulmak için adımları önce Türkçe yazalım:

    1. İlk notu “şimdiye kadarki en yüksek” kabul et.
    2. Geri kalan her notu tek tek kontrol et.
    3. Daha büyük bir not görürsen “en yüksek”i onunla değiştir.
    4. Liste bitince elindeki “en yüksek” cevaptır.

    Aynı adımlar Python’da:

    notlar = [70, 85, 40, 90, 65]
    en_yuksek = notlar[0] # 1. adım
    for n in notlar: # 2. adım
    if n > en_yuksek: # 3. adım
    en_yuksek = n
    print(en_yuksek) # 4. adım: 90

    Python’da bu iş için hazır bir fonksiyon var: max(notlar). Ama hazır fonksiyonun arkasında da tam olarak bu adımları izleyen bir algoritma çalışıyor. Buradaki for ve if‘i Python Dersi 5 ve 6’da anlattım.

    Aynı iş, farklı algoritmalar: sayı tahmin oyunu

    Bir arkadaşın 1 ile 100 arasında bir sayı tuttu. Her tahmininde sana sadece “daha büyük” ya da “daha küçük” diyor. Nasıl tahmin edersin?

    Birinci yol: sırayla dene. 1 mi? 2 mi? 3 mü? Sayı 73’se 73 tahmin yaparsın. Buna doğrusal arama deniyor.

    İkinci yol: her seferinde ikiye böl. Önce 50 de. “Daha büyük” derse 51 ile 100 arasının ortasını (75) söyle. “Daha küçük” derse 51 ile 74’ün ortasını söyle. Her tahmin, kalan aralığı yarıya indiriyor. Buna ikili arama (binary search) deniyor.

    Bu iki yöntem Python’da yazılıp tahminler sayıldığında sonuç şöyle:

    AralıkTutulan sayıSırayla denemeİkiye bölme
    1 – 1007373 tahmin6 tahmin
    1 – 1.000.000999.999999.999 tahmin19 tahmin

    Aralık 10.000 kat büyüdü, ikili aramanın tahmin sayısı 6’dan sadece 19’a çıktı. Bir milyonluk aralıkta bile 20 tahmin her zaman yetiyor. Algoritma seçimi işte bu yüzden önemli: ikisi de doğru cevabı buluyor, ama biri saniyede, diğeri saatlerce sonra.

    Tek bir şartı var: ikili arama ancak sıralı bir listede çalışır. Telefon rehberinde bir ismi bulurken ortadan açıp “daha ileride mi, geride mi?” diye bakman da aynı fikir; rehber alfabetik olduğu için işe yarıyor.

    Günlük hayattaki algoritmalar

    • Harita uygulamaları iki nokta arasındaki en kısa ya da en hızlı yolu bir algoritmayla hesaplıyor.
    • Sosyal medya akışı hangi gönderiyi önce göstereceğine bir sıralama algoritmasıyla karar veriyor. “Algoritma değişti” denince kast edilen bu sıralama kuralları.
    • Öneri sistemleri (Netflix, Spotify, YouTube), geçmişte izlediklerine ya da dinlediklerine bakarak sana ne önereceğini seçiyor.
    • Arama motorları milyonlarca sayfa arasından aramana en uygun olanları sıralıyor.

    Bir cümlede

    Algoritma, bir işi yapmanın sırası belli, açık adımlarıdır; aynı bilgisayarda bir işin saniyeler mi saatler mi süreceğini çoğu zaman seçilen algoritma belirler.

  • Kod Kartı: enumerate: Sayaç Tutmayı Bırak

    Kod Kartı: enumerate: Sayaç Tutmayı Bırak

    Bir listeyi döngüyle gezerken elemanların sıra numarasına da ihtiyaç duyuyorsan, ayrı bir sayaç değişkeni tutmana gerek yok. enumerate her elemanı numarasıyla birlikte verir.

    Kod

    urunler = ["Kalem", "Defter", "Silgi"]
    for sira, urun in enumerate(urunler, start=1):
    print(f"{sira}. {urun}")
    # 1. Kalem
    # 2. Defter
    # 3. Silgi

    Bu satır nasıl çalışıyor?

    enumerate(urunler) listedeki her elemanı bir sıra numarasıyla eşleştirir: (0, "Kalem"), (1, "Defter"), (2, "Silgi"). for sira, urun in ... yazınca bu çiftler, takas kod kartında gördüğümüz paket açma mantığıyla iki değişkene dağıtılır.

    Python saymaya 0’dan başlar. start=1 yazarak numaraların 1’den başlamasını sağladık; ekrana yazdırılacak listeler için genelde bunu istersin.

    enumerate olmadan aynı iş şöyle yapılır:

    sira = 0
    for urun in urunler:
    sira += 1
    print(f"{sira}. {urun}")

    Çalışır, ama sayacı artırmayı unutmak ya da yanlış yerde artırmak çok kolay. enumerate bu sorumluluğu senden alıyor.

    Bir örnek daha: hangi sıradaki eleman?

    Numara, bir elemanın listede nerede olduğunu söylemek istediğinde de işe yarar:

    notlar = [70, 85, 40, 90]
    for sira, puan in enumerate(notlar, start=1):
    if puan < 50:
    print(f"{sira}. öğrenci kaldı ({puan})")
    # 3. öğrenci kaldı (40)

    Buradaki if‘i Python Dersi 5’te gördük; for döngüsünü ise Python Dersi 6’da ayrıntılı işleyeceğiz.

    Dikkat

    for satırında iki değişken yazmayı unutursan hata almazsın ama çıktı beklemediğin gibi olur:

    for eleman in enumerate(urunler):
    print(eleman)
    # (0, 'Kalem')
    # (1, 'Defter')
    # (2, 'Silgi')

    eleman her seferinde numara ve değerden oluşan bir demet (tuple). Numarayı ve değeri ayrı ayrı kullanmak istiyorsan for sira, urun in ... şeklinde iki isim ver.

  • Attention Is All You Need: ChatGPT’nin Arkasındaki Makale, Sade Dille

    Attention Is All You Need: ChatGPT’nin Arkasındaki Makale, Sade Dille

    ChatGPT’deki “GPT” kısaltmasının son harfi bir makaleden geliyor. GPT, Generative Pre-trained Transformer demek; o “Transformer” da Haziran 2017’de yayımlanan bir makalenin icadı. Makalenin adı iddialı: Attention Is All You Need, yani “İhtiyacın Olan Tek Şey Dikkat”.

    Makaleyi o sırada Google’da çalışan sekiz araştırmacı yazdı ve NeurIPS (o zamanki adıyla NIPS) konferansında sundu. Bugün yapay zekâ tarihinin en çok atıf alan makalelerinden biri. Bu yazıda makalenin ne dediğini formüllere boğmadan, günlük hayattan örneklerle ve birkaç satırlık Python koduyla anlatıyorum. Makine öğrenmesi bilmene gerek yok.

    Makaleden önce: kelimeleri tek tek okuyan modeller

    2017’den önce çeviri ve metin işleyen modellerin çoğu RNN (tekrarlayan sinir ağı) denen bir yapı kullanıyordu. RNN bir cümleyi senin bir kitabı okuduğun gibi okur: soldan sağa, kelime kelime. Her yeni kelimede o ana kadar okuduğunu kısa bir özet hâlinde aklında tutar ve yola devam eder.

    Bunun iki sorunu vardı:

    • Uzun cümlede başı unutmak. Bir telefonda kulağı oyunu düşün. Mesaj kişiden kişiye geçtikçe bozulur. RNN’de de cümlenin başındaki bilgi, sona gelene kadar birçok adımdan geçip silikleşir.
    • Yavaş eğitim. 10. kelimeyi işlemek için 9. kelimenin bitmesini beklemek zorundasın. Bu yüzden işi birçok ekran kartına (GPU) bölüp aynı anda yaptırmak zordu. Model büyüdükçe eğitim haftalar sürüyordu.

    Araştırmacılar bu sorunu hafifletmek için RNN’lere zaten “attention” (dikkat) denen bir eklenti takıyordu. Makalenin cesur fikri şuydu: RNN’i tamamen çıkar, sadece dikkat mekanizması kalsın. Başlığın “ihtiyacın olan tek şey” kısmı buradan geliyor.

    Attention (dikkat) ne demek?

    Şu cümleye bak:

    Kedi sütü içti çünkü o acıkmıştı.

    “O” kim? Sen hiç düşünmeden “kedi” dersin. Ama “Kedi sütü içmedi çünkü o bozulmuştu” deseydim, “o” artık süt olurdu. Bir kelimenin anlamı, cümledeki diğer kelimelere bakarak çıkıyor.

    Dikkat mekanizması tam olarak bunu yapıyor: cümledeki her kelime, diğer tüm kelimelere bakıp “anlamımı çıkarmak için hangisine ne kadar dikkat etmeliyim?” diye soruyor. Sonuç her kelime için bir yüzde listesi oluyor.

    Günlük hayattan bir benzetme: kalabalık bir toplantıda biri adını söylediğinde kulağın o tarafa döner. Herkesi aynı anda duyuyorsun ama hepsine eşit dikkat etmiyorsun. RNN sırayla tek tek dinliyordu; dikkat mekanizması herkesi aynı anda duyup kime kulak vereceğini seçiyor.

    Küçük bir Python gösterimi

    Bir bilgisayar kelimeleri anlamaz, sayıları anlar. Bu yüzden her kelime bir sayı listesine (vektöre) çevrilir. Birbirine anlamca yakın kelimelerin vektörleri de birbirine benzer. Aşağıdaki sayıları ben elle seçtim; gerçek bir model bunları milyonlarca cümleden kendisi öğreniyor.

    import numpy as np
    # Her kelimeyi 3 sayıyla temsil ediyoruz (gerçek modellerde yüzlerce sayı olur).
    # Sayıları elle seçtik: "kedi" ile "o" birbirine benzesin diye.
    kelimeler = ["kedi", "sütü", "içti", "çünkü", "o", "acıkmıştı"]
    vektorler = np.array([
    [2.7, 0.3, 0.0], # kedi
    [0.3, 2.4, 0.3], # sütü
    [0.6, 0.9, 2.7], # içti
    [0.0, 0.3, 0.6], # çünkü
    [2.4, 0.6, 0.3], # o
    [1.5, 0.3, 1.8], # acıkmıştı
    ])
    def softmax(x):
    # Puanları toplamı 1 olan yüzdelere çevirir
    e = np.exp(x - x.max())
    return e / e.sum()
    # "o" kelimesi diğer kelimelere ne kadar dikkat ediyor?
    soru = vektorler[kelimeler.index("o")]
    puanlar = vektorler @ soru # benzerlik puanı: iki vektörün çarpımı
    agirliklar = softmax(puanlar / np.sqrt(3)) # makaledeki gibi boyutun köküne bölüyoruz
    for kelime, a in sorted(zip(kelimeler, agirliklar), key=lambda t: -t[1]):
    print(f"{kelime:<10} {a:.0%}")

    Çıktı:

    kedi 45%
    o 34%
    acıkmıştı 12%
    içti 5%
    sütü 3%
    çünkü 1%

    “o” kelimesi dikkatinin en büyük payını “kedi”ye veriyor. Makaledeki formülün özü bu üç adım: benzerliği hesapla, boyutun köküne böl, softmax ile yüzdeye çevir. Gerçek modelde her kelime için üç ayrı vektör (soru, anahtar, değer; makalede query, key, value) kullanılıyor ve bu işlem paralel olarak birkaç kez yapılıyor. Makale buna multi-head attention (çok başlı dikkat) diyor: cümleye aynı anda farklı gözlüklerle bakmak gibi. Her başlık kelimeler arasındaki farklı türden bir ilişkiyi yakalayabiliyor.

    Makale ne getirdi?

    Transformer: sırayla değil, hepsi birden

    Makalenin önerdiği mimarinin adı Transformer. İki parçadan oluşuyor:

    • Kodlayıcı (encoder): Girdi cümlesini okuyup anlamını sayılara döküyor.
    • Çözücü (decoder): Bu anlamdan yola çıkarak çıktıyı, örneğin çeviriyi, kelime kelime üretiyor.

    Asıl fark şu: Transformer cümledeki tüm kelimelere aynı anda bakıyor. 10. kelime 9. kelimeyi beklemiyor. Bu da eğitimin GPU’lara bölünüp çok daha hızlı yapılmasını sağlıyor.

    Peki kelimeler aynı anda okunuyorsa model sırayı nereden biliyor? “Kedi köpeği kovaladı” ile “Köpek kediyi kovaladı” aynı şey değil. Makale buna her kelimeye bir konum bilgisi (positional encoding) ekleyerek çözüm buluyor: kelimenin vektörüne “ben cümlenin 3. kelimesiyim” diyen bir işaret ekleniyor.

    Sonuçlar

    Makale modeli İngilizceden Almancaya ve İngilizceden Fransızcaya çeviri üzerinde denedi ve o dönemin en iyi sonuçlarını geçti. Çeviri kalitesini ölçen BLEU puanında İngilizce-Almanca için 28,4, İngilizce-Fransızca için 41,8 aldı. Daha da çarpıcı olanı maliyetti: büyük model sekiz GPU üzerinde 3,5 günde eğitildi. Bu, kendinden önceki en iyi modellerin harcadığı hesaplama gücünün küçük bir kısmıydı.

    Sonrası: BERT, GPT ve ChatGPT

    Makale bir çeviri modeli önerdi ama asıl etkisi sonradan görüldü. Araştırmacılar Transformer’ın iki parçasını ayırıp ayrı ayrı kullandı:

    • BERT (2018, Google): Sadece kodlayıcı kısmı kullanıyor. Metni anlamakta iyi; arama motorlarında, metin sınıflandırmada kullanıldı.
    • GPT serisi (2018’den itibaren, OpenAI): Sadece çözücü kısmı kullanıyor. Bir sonraki kelimeyi tahmin ederek metin üretmekte iyi. ChatGPT bu serinin üzerine kuruldu.

    Bugün kullandığın büyük dil modellerinin neredeyse hepsi bu makaledeki fikrin bir varyasyonu. Bu yüzden makale 2026 itibarıyla 250 binden fazla atıf almış durumda.

    Bir makale başlığındaki Beatles

    Makalenin başlığı bilerek seçilmiş bir göndermeyle geliyor: Beatles’ın “All You Need Is Love” şarkısı. Bilimsel makaleler genelde “Şu Yöntemle Şu Problemin Verimli Çözümü” gibi uzun ve kuru başlıklar taşır. Bu başlık ise kısa, akılda kalıcı ve iddialı. Bugün yapay zekâ dünyasında “X Is All You Need” kalıbıyla yazılmış sayısız makale var; başlığın kendisi bir mim’e dönüştü.

    Mimarinin adının hikâyesi de benzer şekilde basit: Wikipedia’daki anlatıma göre yazarlardan Jakob Uszkoreit “Transformer” kelimesini sadece kulağa hoş geldiği için seçmiş. Bir de bilinmeyen bir ayrıntı: makalede sekiz yazarın katkısı eşit sayılıyor ve isimlerin sırası rastgele belirlenmiş.

    Benim yorumum

    Bu makaleyi ilk kez bir eğitimde duymuştum. O zaman beni en çok şaşırtan şey şuydu: Google’da çalışan bir grup araştırmacı bir makale yayımlıyor ve bu makale bir süre sonra dünyayı değiştiriyor. Bir şirketin geliştirdiği fikri herkesin okuyabileceği şekilde paylaşması ve başkalarının o fikrin üzerine bambaşka ürünler kurması bana çok etkileyici gelmişti.

    Bu yazı için araştırma yaparken başlığın bir Beatles şarkısına gönderme olduğunu öğrenmek de hoşuma gitti; dünyayı değiştiren bir çalışmanın arkasında biraz da oyunbazlık varmış.

    Dürüst olmak gerekirse, bu makaleyi ilk gördüğümde aklımdan geçen cümle şuydu: “Ben de bir gün böyle bir çalışma yapmak istiyorum.” Bu yazıyı yazmak da o yolda attığım küçük bir adım.

    Makalenin kendisini okumak istersen ücretsiz: arXiv: 1706.03762. Formüllerden korkma; giriş ve sonuç bölümleri bu yazıyı okuduktan sonra rahat anlaşılıyor.

  • Haftanın Teknoloji Özeti: 5 Gelişme (1. hafta)

    Haftanın Teknoloji Özeti: 5 Gelişme (1. hafta)

    Bu yeni bir seri: her pazar, geçen haftanın teknoloji gündeminden beş gelişmeyi seçip sade bir dille anlatıyorum. Her haberin sonunda “Neden önemli?” kısmı ve kaynağı var. İlk sayıda 14-21 Ekim arasını kapsıyorum.

    1. Popüler bir WordPress eklentisine kötü amaçlı kod sokuldu

    WordPress’in en çok kullanılan SEO eklentilerinden Rank Math’in ücretli sürümü Rank Math PRO, bir tedarik zinciri saldırısına uğradı. 15 Ekim akşamından 16 Ekim sabahına kadar (UTC) resmi siteden indirilen ya da güncelleme olarak gelen 3.0.123 sürümünde, siteye gizli bir arka kapı (backdoor) açan kod vardı. Sorun 3.0.124 sürümüyle giderildi.

    Şirketin uyarısına göre o saatlerde bu sürümü kurup etkinleştiren siteler, sonradan güncellense bile ele geçirilmiş sayılmalı. Bildirim yalnızca PRO sürümü kapsıyor; WordPress.org’daki ücretsiz Rank Math eklentisi bildirimde geçmiyor.

    Neden önemli? “Tedarik zinciri saldırısı”, saldırganın doğrudan sana değil, güvendiğin bir yazılımın kaynağına sızması demek. Sen her şeyi doğru yapsan bile resmi güncelleme zararlı olabiliyor. WordPress siten varsa eklentilerini düzenli yedekle ve güvenlik bildirimlerini takip et.

    Kaynak: The Hacker News, SecurityWeek

    2. Japonya Mars’ın uydusundan toprak getirmek için yola çıktı

    Japonya Uzay Ajansı JAXA, MMX (Martian Moons eXploration) görevini 20 Ekim’de Tanegashima Uzay Merkezi’nden H3 roketiyle fırlattı. Uzay aracı Ağustos 2027’de Mars’a varacak, Mars’ın uydusu Phobos’a inip yaklaşık 10 gram toprak örneği toplayacak ve 2031’de Dünya’ya getirecek. Görevde NASA’nın bir ölçüm cihazı ve Almanya ile Fransa’nın birlikte geliştirdiği Idefix adlı küçük bir gezgin robot da var.

    Neden önemli? Phobos ile Deimos’un nasıl oluştuğu hâlâ tartışmalı: yakalanmış asteroitler mi, yoksa Mars’tan kopan parçalar mı? Getirilecek örnek bu soruya doğrudan cevap verebilir. 10 gram az görünebilir, ama laboratuvarda tek bir tozdan bile çok şey öğrenilebiliyor.

    Kaynak: Sky & Telescope, ESA

    3. Google yeni amiral gemisi modeli Gemini 4 Argon’u yayımladı

    Google, kod yazma, matematik ve bilim problemleri ile çok adımlı yapay zekâ ajanları için tasarlanan Gemini 4 Argon’u geliştiricilere açtı. Model Gemini API ve Google AI Studio üzerinden kullanılabiliyor. Metin, görsel, video, ses ve PDF okuyabiliyor ve tek seferde yaklaşık 1 milyon token’lık bir bağlamı işleyebiliyor. Bu kabaca birkaç kitap uzunluğunda bir metin demek.

    Neden önemli? Büyük dil modelleri yarışı hızla sürüyor ve her yeni model “daha uzun metni aynı anda okumak” ve “kendi başına çok adımlı iş yapmak” yönünde ilerliyor. Bu modellerin hepsinin temelindeki fikri bugün yayımladığım Attention Is All You Need yazısında anlattım.

    Kaynak: Google AI for Developers: Gemini 4 Argon

    4. ABD’de sekiz eyalet OpenAI’a dava açtı

    15 Ekim’de aralarında Arizona, Idaho, Kansas ve Montana’nın da bulunduğu en az sekiz ABD eyaleti, ChatGPT’nin çocuklara zarar verdiği ve yetişkinleri yanılttığı gerekçesiyle OpenAI’a dava açtı. Davalarda ürünün tehlikeli sağlık tavsiyeleri verdiği ve şirketin güvenlik testleri konusunda kamuoyunu yanılttığı iddia ediliyor. OpenAI ise ChatGPT’ye çocuk güvenliği önlemleri eklediğini, bunları geliştirmeye devam edeceğini ve 18 yaş altı kullanıcılar için ebeveyn izni istediğini söylüyor.

    Neden önemli? Yapay zekâ araçları artık sadece teknoloji haberlerinde değil, mahkemelerde de gündemde. Bu davaların sonucu, sohbet botlarının çocuklara ve hassas konulara nasıl yaklaşacağına dair kuralları şekillendirebilir. Davalar henüz yeni; iddialar mahkemede kanıtlanmadı.

    Kaynak: AP haberi (WLOX), Bloomberg Law

    5. Amazon Almanya’ya 2027’de 16 milyar avrodan fazla yatırım yapacak

    Amazon, 20 Ekim’de Berlin’deki Invest in Germany Summit’te 2027 yılı için Almanya’da 16 milyar avronun üzerinde yatırım yapacağını duyurdu. Yatırımın bir kısmı bulut ve yapay zekâ altyapısına, örneğin AWS’nin Frankfurt’taki veri merkezlerini büyütmeye ayrılıyor.

    Neden önemli? Yapay zekâ modellerini çalıştırmak devasa veri merkezleri ve enerji gerektiriyor. Büyük şirketlerin bu altyapıyı nereye kurduğu, o ülkede hangi işlerin ve becerilerin aranacağını da etkiliyor. Aynı hafta yapay zekâ yatırımlarının maliyetine dair piyasa endişeleri de konuşuldu; yani bu yatırım yarışının sonucunu henüz kimse bilmiyor.

    Kaynak: Amazon basın bülteni (Almanca), The Next Web

    Haftaya

    Kaçırdığım bir gelişme varsa yorumlara yaz, gelecek haftanın listesine bakarım.

  • Ada Lovelace Günü: Teknolojinin İlk Satırlarındaki Kadın

    Ada Lovelace Günü: Teknolojinin İlk Satırlarındaki Kadın

    4–6 dakika

    Bugün 13 Ekim, Ekim ayının ikinci salısı. Bu gün dünyanın birçok yerinde Ada Lovelace Günü olarak anılıyor: bilim, teknoloji, mühendislik ve matematikte iz bırakan kadınları görünür kılma günü.

    Bu yazıda sana çoğu zaman “ilk bilgisayar programcısı” olarak anılan Ada Lovelace’ı, onun izinden giden üç kadını ve bu hikâyenin bugün teknolojiye adım atan sana ne söylediğini anlatıyorum.

    Ada Lovelace kimdi?

    Ada Lovelace, 10 Aralık 1815’te Londra’da Augusta Ada Byron adıyla doğdu. Babası şair Lord Byron’dı. Ada şiirle değil, matematikle büyüdü: matematik ve bilim eğitimini özel hocalardan aldı. Hocalarından biri, döneminin en tanınmış bilim insanlarından Mary Somerville’di.

    Ada’nın hayatını değiştiren tanışmayı da yine bir kadın sağladı. 5 Haziran 1833’te, henüz 17 yaşındayken, Somerville aracılığıyla matematikçi Charles Babbage ile tanıştı. Babbage o sırada hesap yapan makineler tasarlıyordu ve Ada bu makinelere tutuldu.

    Ada Lovelace 27 Kasım 1852’de, 36 yaşında hayatını kaybetti. Kısa hayatına sığdırdığı birkaç sayfa ise bilgisayar tarihinin en çok anılan metinlerinden biri oldu.

    Henüz yapılmamış bir makine için program

    Babbage’ın en iddialı tasarımı Analitik Makine’ydi: mekanik, her türlü hesabı yapabilecek şekilde düşünülmüş genel amaçlı bir bilgisayar. Makine hiçbir zaman tamamlanamadı. Ama Ada onun ne yapabileceğini kağıt üzerinde, herkesten daha açık gördü.

    Babbage 1840’ta İtalya’nın Torino kentinde makinesini anlatan bir konuşma yaptı. İtalyan mühendis Luigi Menabrea bu konuşmayı Fransızca bir makaleye dönüştürdü. Ada’dan makaleyi İngilizceye çevirmesi istendi. O ise yalnızca çevirmekle kalmadı: dokuz ay boyunca çalıştı ve metne A’dan G’ye kadar harflendirdiği yedi not ekledi. Notlar, çevirinin yaklaşık üç katı uzunluğundaydı ve Eylül 1843’te yalnızca baş harfleriyle, “AAL” imzasıyla yayımlandı.

    Not G: Adım adım bir algoritma

    Notların sonuncusu olan Not G, makinenin Bernoulli sayıları adı verilen bir sayı dizisini nasıl hesaplayacağını adım adım anlatıyordu. Bu yöntem bugün sıkça “ilk yayımlanmış bilgisayar programı” olarak anılıyor.

    Bir not düşeyim: Babbage’ın da daha önce yazdığı ama yayımlamadığı programlar vardı. Makine yapılmadığı için Ada’nın programı da hiç çalıştırılamadı. Ama Ada’yı özel kılan tek şey bu algoritma değil.

    Makinenin hesaptan fazlasını yapabileceğini gördü

    Analitik Makine hesap yapmak için tasarlanmıştı. Ada ise bir adım öteye geçti: makinenin sayılardan başka şeyler üzerinde de çalışabileceğini yazdı. Örneğin müzikteki seslerin arasındaki ilişkiler sembollerle ifade edilebilirse, makinenin karmaşık müzik parçaları bestleyebileceğini öngördü.

    Bugün bilgisayarların müzik ürettiği, resim çizdiği, metin yazdığı bir dünyada yaşıyoruz. Ada bunu, makine daha kağıt üzerindeyken hayal etti. Kendi yaklaşımına “şiirsel bilim” (poetical science) diyordu: hayal gücü ile matematiğin bir arada çalışması.

    Ada Lovelace Günü nedir?

    Ada Lovelace Günü 2009’da İngiltere’de Suw Charman-Anderson tarafından başlatıldı ve her yıl Ekim ayının ikinci salısı anılıyor. Amacı, kadınların bilim, teknoloji, mühendislik ve matematikteki katkılarını görünür kılmak.

    Bence günün en güçlü yanı şu: teknolojiye yeni adım atan bir kızın ya da kadının, kendinden önce bu yoldan geçmiş isimleri görmesini sağlıyor. Gördüğün şey, olabileceğini düşündüğün şeyi değiştiriyor.

    Ada’nın izinden giden üç kadın

    Ada’nın hikâyesi bir başlangıçtı. Bilgisayar tarihinin dönüm noktalarının birçoğunda kadınların imzası var. İşte üç tanesi:

    Grace Hopper: Bilgisayarla insan diline yakın bir dilde konuşmak

    Grace Hopper, bilgisayara insan diline yakın komutlarla program yazılabileceğini savundu. Ekibiyle birlikte ilk derleyicilerden biri olan A-0’ı geliştirdi. Derleyici, insanın yazdığı kodu makinenin anlayacağı dile çeviren programdır. Hopper’ın anlattığına göre başta bu fikre kimse inanmadı. Onun tasarım anlayışı, iş dünyası için geliştirilen COBOL dilinin temelini oluşturdu. Hopper ABD Donanması’nda amiral rütbesine kadar yükseldi.

    Küçük bir düzeltme: Bilgisayardaki hataya “bug” denmesini Hopper icat etmedi; bu kelime ondan önce de kullanılıyordu. Ama 1947’de ekibinin bir rölenin içinde sıkışmış bir güve bulması ve bunu kayıt defterine yapıştırması, terimin bilgisayar dünyasında yayılmasına katkı sağladı.

    Katherine Johnson: Bilgisayarın hesabını kontrol eden kadın

    Katherine Johnson, NASA’da ve ondan önceki kurum NACA’da 1953’ten 1986’ya kadar uzay araçlarının yörüngelerini hesapladı. NASA, astronot John Glenn’in Dünya etrafındaki yörüngesini ilk kez elektronik bilgisayarlarla hesapladığında, sonuçları doğrulaması için Johnson’a başvurdu. Glenn, uçmayı kabul etmeden önce özellikle onun da hesaplara bakmasını istemişti. Johnson’ın hikâyesi 2016 yapımı Hidden Figures (Gizli Sayılar) filminde anlatılıyor.

    Margaret Hamilton: Aya giden yazılım

    Margaret Hamilton, MIT’de Apollo programının uçuş yazılımını geliştiren ekibi yönetti. Ekibinin yazdığı yazılım, hataları fark edip sistemi toparlayabilecek şekilde tasarlanmıştı. “Yazılım mühendisliği” terimini ilk kullananlardan biri de oydu. Bu terimi, yazılımı donanımdan ve diğer mühendislik dallarından ayırmak için kullandığını anlatıyor. Hamilton 2016’da ABD Başkanlık Özgürlük Madalyası’nı aldı.

    Bu hikâye bugün sana ne söylüyor?

    Bu dört kadının ortak bir yanı var: hepsi henüz tam olarak var olmayan bir şey üzerinde çalıştı. Ada, yapılmamış bir makine için program yazdı. Hopper, kimsenin inanmadığı bir fikri savundu. Hamilton, henüz adı bile konmamış bir alanın adını koydu. Johnson, makinenin hesabına güvenin henüz oluşmadığı bir dönemde o güveni sağlayan kişi oldu.

    Buradan çıkardığım ders şu: Bir alanda kendine benzeyen çok kişi görmemen, o alana ait olmadığın anlamına gelmez. Bazen yolu sen açarsın, arkandan gelenler de seni görür.

    Bilgisayar mühendisliğine Ada Lovelace sayesinde başlamadım. Ama bu yolda ilerlememin, düştüğüm anlarda yeniden kalkmamın sebeplerinden biri o oldu. Notlarını yalnızca baş harfleriyle imzalayan bir kadının bugün bilgisayar tarihinin en çok anılan isimlerinden biri olması, bana her seferinde devam etmemi hatırlatıyor.

    Bugün ne yapabilirsin?

    • Bir hikâye paylaş. Sana ilham veren bir kadın bilim insanının ya da mühendisin hikâyesini #AdaLovelaceDay etiketiyle paylaş.
    • İlk satırını yaz. Ada’nın yaptığı şey özünde bir makineye adım adım ne yapacağını anlatmaktı. Sen de bugün başlayabilirsin: Python Dersi 1: Python Nedir, Ne İşe Yarar?
    • Birine cesaret ver. Çevrende teknolojiye ilgi duyan bir kız ya da kadın varsa, ona bu yazıyı gönder ve neden başarabileceğini düşündüğünü söyle.

    Ada’nın notları “AAL” imzasıyla yayımlanmıştı. Bugün senin adının tamamıyla yazacağın satırları merak ediyorum.

    Kaynaklar