KonuAnlatım.com

Kuantum Projelerinde Git ve GitHub

Kuantum Hesaplama · Bölüm 6Kuantum HesaplamaDers

Kuantum hesaplama öğrenirken yazdığın her devre ve simülasyon betiği zamanla büyür; bu derste bu büyümeyi düzen içinde tutmayı sağlayan iki aracı tanıyacaksın: sürüm kontrolü için Git, iş birliği platformu olarak GitHub. Geçmişi kaydetmeyi, yanlış değişikliği güvenle geri almayı ve Qiskit gibi açık kaynak kuantum projelerine katkı vermeyi öğreneceksin. Serinin tamamı için Kuantum Hesaplama dersleri sayfasına bakabilirsin; çalışma ortamını henüz kurmadıysan Jupyter ile Çalışma Ortamı dersinden başlamanı öneririz.

Sürüm Kontrolü Nedir, Kuantum Projesine Ne Katar?

Sürüm kontrolü, dosyalarının her anlamlı değişikliğini fotoğraf gibi saklayan sistemdir: ne değişti, ne zaman ve neden. Bir kuantum projesi buna her şeyden çok muhtaçtır, çünkü sürekli deneme yapılır: kapı açılarını değiştirir, devreye yeni bir kapı ekler, ölçüm sayısını (shot) büyütürsün. Bir hafta sonra en temiz histogramı hangi devrenin verdiğini hatırlamak istediğinde klasör kopyaları arasında kaybolursun; Git'te ise geçmiş tek komutla karşına gelir.

Somutlaştıralım: bell.py adlı dosyada H kapısı ve CNOT ile Bell durumu |Φ⁺⟩ = (|00⟩ + |11⟩)/√2 devresini kurmuş olalım. Genliklerin kareleri toplamı 1/2 + 1/2 = 1 olduğundan durum normaldir; ölçtüğünde iki sonucu da eşit olasılıkla görürsün. Şimdi CNOT'tan önceki H kapısını başka bir kapıyla değiştirip sonucun nasıl bozulduğunu incelemek istiyorsun. Git'te ana dosyaya dokunmadan dallanırsın: deneyi yeni bir dalda yazarsın; eski sürüm her zaman geri çağrılabilir. Deney başarısızsa dalı silersin, başarılıysa ana dala birleştirirsin.

Git ile GitHub Arasındaki Fark Nedir?

En sık karıştırılan nokta budur: Git bir programdır; bilgisayarına kurarsın, internet olmadan da çalışır, geçmişi proje klasöründeki gizli bir dizinde tutar. GitHub ise bu depoları internette barındıran bir platformdur ve üstüne depo paylaşımı, değişiklik önerisi (pull request), hata takibi (issue), otomatik test gibi hizmetler ekler. Kamera ile kütüphane benzetmesi yerindedir: Git geçmişi çeken kameradır; GitHub kayıtları paylaşıp üstlerinde tartışma yürüttüğün kütüphanedir.

  • Git: yerel, komut satırından çalışan, ücretsiz ve açık kaynak bir sürüm kontrol sistemidir.
  • GitHub: Git depolarını barındıran web hizmetidir; benzerleri GitLab ve Bitbucket'tır.
  • GitHub'ı verimli kullanmak Git bilgisini gerektirir; ikisi birbirinin yerine geçmez.

Kuantum dünyasında bu doğrudan kapına gelir: Qiskit, Cirq ve PennyLane gibi başlıca kuantum yazılım kütüphaneleri GitHub üzerinde geliştirilir. Bir hata bildirmek, dokümantasyonu düzeltmek ya da yeni bir kapı önermek — hepsi bu akıştan geçer.

Baştan Sona Küçük Bir Çalışma Akışı

Diyelim ki Python temellerini (Kuantum Hesaplama için Python Temelleri) tamamladın ve NumPy ile Bilimsel Hesaplama dersindeki gibi durum vektörü simülasyonu yapan küçük bir projen var. Uçtan uca akış şöyle işler:

  1. Depoyu bilgisayarına indir: git clone https://github.com/kullanici/bell-deneyi.git — sıfırdan başlıyorsan klasörde git init yazarsın.
  2. Deney için dal aç: git switch -c bell-durumu. Böylece main dalı kararlı kalır, deneylerin yeni dala gider.
  3. Kodunu yaz ve çalıştır: bell.py içinde H kapısı ve CNOT ile Bell durumunu üret; ölçüm olasılıklarını beklentiyle karşılaştır.
  4. Değişikliği kaydet: git status ile ne değiştiğini gör; sonra git add bell.py ve git commit -m "Bell durumu devresi eklendi". Mesaj, neyi ve neden değiştirdiğini söylesin.
  5. Paylaş: git push ile dalını GitHub'a gönder; internette görünmenin yolu budur.
  6. Pull request aç: dalını main ile birleştirmeye öner; inceleme, otomatik testler ve onaydan sonra birleştirilir.

Bu akışın asıl gücü geri dönüşte ortaya çıkar: git log geçmişi listeler, iki sürümün farkını gösterir, bozulan denemeyi eski bir kayda döndürürsün. Kaydet düğmesinden farkı budur: kaydetmek dosyanın son hâlini yazar, commit anlamlı bir aşamayı kalıcılaştırıp sürümler arasında gezinmene izin verir.

Kuantum Projesine Özgü Pratikler ve Sık Yapılan Hatalar

İyi bir depoda her zaman bir .gitignore dosyası vardır: depoya girmemesi gerekenlerin listesi. Python tarafında sanal ortam (venv/), derleme artıkları (__pycache__/), Jupyter'in ara klasörü (.ipynb_checkpoints/) ve büyük simülasyon çıktı dosyaları buraya yazılır. Prensip basittir: kodu ve onu yeniden üreten her şeyi sakla; yeniden üretebildiğin çıktıları saklama. Ölçüm sonuçlarını Matplotlib ile Grafik Çizimi dersindeki tarzda grafiklere döküyorsan depoya grafiğin kendisini değil, onu üreten betiği koyarsın. Rastgele örnekleme içeren simülasyonlarda tohum (seed) değerini parametre dosyasında tutmak, deneyinin birebir tekrarlanabilir olmasını sağlar.

  • "Commit yaptım, GitHub'a yüklendi" yanılgısı: commit yalnızca yereldir; internette görünmesi için push ayrıca gerekir.
  • Anlamsız mesajlar: "düzenleme", "fix", "son" gibi mesajlar, geçmişte arama yaptığında hiçbir şey anlatmaz.
  • Hep main'de çalışmak: dal kullanmamak, kırık deneyleri kararlı kodla iç içe geçirmek demektir.
  • Not defteri çıktılarını commit etmek: hücre çıktıları ve görseller depoyu şişirir; çıktıları temizleyerek kaydetmek iyi bir alışkanlıktır.
  • Zorla itme (force push): ortak dallara force push yapmak başkalarının çalışmasını kaybedebilir; yalnızca kendi deney dallarında kullan.
  • Git'i yalnızca yedek sanmak: yedek yalnızca bir yan etkisidir; asıl değer geri dönebilmek, dallanmak ve birlikte çalışmaktır.

Bu dersle Hazırlık ve Araçlar ünitesinin araç ayağını tamamladın: ortamını kurdun, Python'ı ve sayısal araçları tanıdın, işini sürüm kontrolüne bağladın. Sıra kuantum hesaplamanın matematiğinde: bir sonraki ünitede durum vektörlerinin dilini Vektörler ve Matrisler dersleriyle kuracak, kapıların üniteryenliğini orada gerekçelendireceğiz. Serinin giriş dersi Kuantum Hesaplama 101'i henüz okumadıysan şimdi tam zamanı; tüm ders alanları için içindekiler sayfasına, bilgisayar temelleri için Yazılım (Bilgisayar) ders alanına bakabilirsin.

Sık Sorulan Sorular

Git ile GitHub arasındaki fark nedir?

Git, bilgisayarında çalışan ve geçmişi yerel olarak saklayan bir sürüm kontrol programıdır; GitHub ise bu depoları internette barındıran ve pull request, issue gibi iş birliği araçları ekleyen bir platformdur. Git internet olmadan da çalışır; GitHub çevrimiçi bir hizmettir.

Kuantum projesinde hangi dosyalar depoya eklenmez?

Sanal ortam (venv/), derleme artıkları (__pycache__/), Jupyter ara klasörü (.ipynb_checkpoints/) ve büyük simülasyon çıktıları depoya girmez; bunlar .gitignore dosyasına yazılır. Kural şudur: yeniden üretebildiğin çıktıları değil, kodu ve onu üreten her şeyi sakla.

Commit nedir, ne sıklıkla yapılmalı?

Commit, seçtiğin dosyaların o anki hâlini açıklayıcı bir mesajla kalıcılaştırdığın kayıttır. Her anlamlı aşamada — yeni bir devre, düzeltilmiş bir test, güncellenmiş parametreler — ayrı bir commit almak, geçmişte aradığın sürümü bulmayı kolaylaştırır.

Pull request ne işe yarar?

Pull request, bir daldaki çalışmanı ana dala birleştirme önerisi olarak sunmanı sağlar: değişiklikler satır satır incelenebilir, tartışılabilir, otomatik testlerden geçirilebilir ve onaylanınca birleştirilir. Açık kaynak kuantum projelerine katkının standart yoludur.

Kaynaklar ve İleri Okuma

Pro Git — Git'in resmî kitabı — Git'in temellerini ve günlük akışını ücretsiz, resmî ve çevrimiçi bir kitapta anlatır.

Git Documentation — Her Git komutunun ayrıntılı açıklamasını veren resmî dokümantasyon.

GitHub Docs — Depo oluşturma, pull request ve ekip içi akışların adım adım resmî kılavuzu.

Git — Wikipedia — Sürüm kontrolünün tarihçesi ve Git'in mimarisine genel bakış.

Qiskit GitHub deposu — Önde gelen açık kaynak kuantum kütüphanelerinden birinin gerçek geliştirme akışı: issue'lar, pull request'ler, katkı rehberi.

Dersler

Tümü →