Jupyter ile Çalışma Ortamı
Bu derste kuantum hesaplama deneylerini kendi bilgisayarında çalıştırabileceğin ortamı kuruyoruz: Jupyter. Kurulumu, hücre ve kernel kavramlarını, tek kübitlik bir Hadamard deneyini hücre hücre kurmayı ve defterle çalışırken yapılan tipik hataları sıfırdan işleyeceğiz. Serinin tamamına Kuantum Hesaplama dersleri sayfasından ulaşabilirsin; Python tarafındaki temeller Kuantum Hesaplama için Python Temelleri dersinde kurulmuştu.
Jupyter Nedir, Kuantum Çalışmalarında Neden Tercih Edilir?
Jupyter, tarayıcıdan kullanılan etkileşimli bir defter (notebook) ortamıdır: kodu küçük parçalar hâlinde, yani hücrelerde yazarsın, çalıştırırsın, sonucu kodun hemen altında görürsün. Araya Markdown notları koyup "burada ne yaptım?" diye not düşebilirsin. Kuantum hesaplama buna uygundur: durumu tanımla, kapıyı uygula, genliklere bak, gerekirse değiştirip yeniden çalıştır. Her adım ayrı bir deneydir; betik dosyasında her deneme için dosya baştan koşar, defterde yalnızca değiştirdiğin hücreyi tekrar çalıştırırsın. İki yaklaşımı karşılaştıralım:
- Defter (.ipynb): keşif, deney ve öğretim içindir; kodu, sonucu, grafiği ve notu tek dosyada saklar.
- Betik (.py): tekrarlanabilir ve otomatik işler içindir; test etmek, paketlemek ve toplu çalıştırmak kolaydır.
İyi alışkanlık ikisini birlikte kullanmaktır: fikri defterde keşfet, olgunlaşan kodu betiğe taşı. Seriye henüz başlamadıysan, bu ortam kurulduktan sonra Kuantum Hesaplama 101 dersine dönmek en verimli yoldur.
Kurulum ve İki Anahtar Kavram: Hücre ve Kernel
Kurulum tek satırlık iş: pip install notebook klasik Jupyter Notebook'u, pip install jupyterlab JupyterLab'i kurar. İkisi de aynı çekirdeği ve aynı .ipynb biçimini kullanır; fark arayüzdür — JupyterLab'de dosya ağacı, sekmeler ve yan paneller vardır, klasik Notebook daha yalındır. Sonrasında terminale jupyter lab ya da jupyter notebook yazınca tarayıcıda dosya gezgini açılır ve yeni defter oluşturursun. Defteri açınca öğrenmen gereken iki kavram var:
- Hücre: defterin birimi. Kod hücresi Python çalıştırır; Markdown hücresi başlık ve not taşır. Shift+Enter hücreyi çalıştırıp bir sonrakine geçer.
- Kernel: defterin arkasındaki canlı Python süreci. Değişkenler kernel belleğinde yaşar; hücreler o belleğe dokunur. Kernel'i yeniden başlatırsan kod yerinde kalır ama tüm değişkenler kaybolur.
İşini hızlandıran birkaç kısayol: komut modunda (Esc) A üstte, B altta hücre ekler, M Markdown'a çevirir, DD siler; Tab kod tamamlar. Bir fonksiyonun adının sonuna ? koyup çalıştırmak (np.abs?) yardım sayfasını açar; %whos tanımlı değişkenleri listeler, %%timeit hücrenin süresini ölçer.
Hücre Hücre Küçük Bir Kuantum Deneyi: Hadamard
Ortamı somutlaştıralım. Amaç: |0⟩ durumuna Hadamard kapısını uygulayıp (1/√2)(|0⟩ + |1⟩) süperpozisyonunu üretmek ve olasılıkların yarı–yarıya çıktığını görmek. Dört hücrelik akış:
- Kurulum: ilk hücreye import numpy as np yaz ve çalıştır; import'i başta bir kez yapmak yeterlidir.
- Durum: psi = np.array([1.0, 0.0]) ile |0⟩'ı tanımla; ilk bileşen |0⟩'ın, ikinci |1⟩'in genliğidir.
- Kapı: H = (1/np.sqrt(2)) * np.array([[1, 1], [1, -1]]) ile Hadamard'ı yaz. 1/√2 unutulursa olasılık toplamı 2 olur ve durum geçersizleşir.
- Uygula ve ölç: psi = H @ psi ile güncelle, np.abs(psi)**2 ile olasılıkları al. Çıktı [0.5, 0.5] olmalı.
İşi elle izleyelim: H·|0⟩ = (1/√2)·[1·1 + 1·0, 1·1 + (−1)·0] = (1/√2)·[1, 1], yani ψ = (1/√2)(|0⟩ + |1⟩) — literatürdeki |+⟩ durumu. Normalizasyon tutar: |1/√2|² + |1/√2|² = 1/2 + 1/2 = 1, yani ⟨ψ|ψ⟩ = 1. Ek sağlama: np.allclose(H @ H, np.eye(2)) True döner; Hadamard üniteryen ve kendi tersidir, iki kez uygulamak durumu eski hâline getirir. Bu kalıp sonraki tüm derslerde aynıdır: durum tanımla, kapıyı uygula, olasılıkları kontrol et, sağlama yap. Vektör ve matris düşüncesini sıradaki ünitede Vektörler ve Matris Çarpımı derslerinde kuracağız; NumPy tarafını hatırlamak için NumPy ile Bilimsel Hesaplama dersine dönebilirsin.
Sık Yapılan Hatalar ve İyi Alışkanlıklar
Defterle çalışmanın en büyük tuzağı hücrelerin düşündüğün sırada çalışmamış olmasıdır. Hücrelerin yanındaki numaralar ([7], [8], [12]...) en son koşma sırasını gösterir; izlemezsen bir hücre, başka bir hücrede tanımlanıp sonra değiştirilmiş eski bir değişkene dayanabilir ve defteri baştan koşturduğunda o sonuç bir daha üretilmez. Bu, "aynı kod dün farklı çalışıyordu" şikâyetinin birinci sebebidir. İlaç: Kernel → Restart & Run All; defter her seferinde aynı sonucu veriyorsa tekrarlanabilirdir.
- Değişken gölgeleme: psi'yi önce durum vektörü, on satır sonra bambaşka bir şey olarak kullanmak klasik hatadır; state0, ket_plus gibi benzersiz isimler seç.
- Çıktıları şişirmek: .ipynb çıktıları da saklar; büyük çıktı dosyayı şişirir ve sürüm kontrolünde farkları okunmaz yapar.
- Defteri kütüphane sanmak: defter deney raporudur; olgunlaşan fonksiyonları ayrı bir .py dosyasına taşıyıp import et.
- Kernel'i açık unutmak: sekme kapansa da kernel çalışmaya devam edebilir; Kernel → Shut Down ile kapat.
Ölçüm sonuçlarını sayı listesi olarak değil grafikle izlemek isteyeceksin; histogram çizmeyi Matplotlib ile Grafik Çizimi dersinde anlatıyoruz. Defterlerini sürüm kontrolüne almak — "dün neyi değiştirdim?" sorusuna güvenilir cevap — içinse Kuantum Projelerinde Git ve GitHub dersi sıradaki adımdır.
Bu Dersten Akılda Kalanlar
- Jupyter, hücre hücre çalışan etkileşimli defter ortamıdır; keşif için idealdir, otomatik işler için betik daha uygundur.
- İki anahtar kavram: hücre (kod ya da Markdown) ve kernel (değişkenlerin yaşadığı canlı Python süreci).
- Şüphede Restart & Run All yap; tekrarlanamayan defter bitmemiş defterdir. Hadamard kalıbı her derste aynıdır: H = (1/√2)·[[1, 1], [1, −1]], H|0⟩ = (1/√2)(|0⟩ + |1⟩), H·H = I.
Sık Sorulan Sorular
Jupyter Notebook nedir, ne işe yarar?
Jupyter, kodu hücrelere bölüp her hücreyi ayrı ayrı çalıştırmanı sağlayan, tarayıcıda çalışan etkileşimli bir geliştirme ortamıdır; kod, sonuç ve not tek bir .ipynb dosyasında saklanır. Kuantum devrelerini adım adım denemek gibi keşif işleri için idealdir.
Jupyter Notebook ile JupyterLab arasındaki fark nedir?
İkisi de aynı çekirdeği (kernel) ve aynı .ipynb biçimini kullanır; fark arayüzdür. JupyterLab, dosya ağacı, sekmeler ve yan panelleri olan daha gelişmiş bir masa üstüdür; klasik Notebook tek sayfalık yalın bir arayüzdür. Birinde açtığın defteri ötekinde sorunsuz açarsın.
Jupyter'de hücreleri karışık sırada çalıştırmak sorun yaratır mı?
Yaratır; defterin en yaygın hatası budur. Değişkenler kernel belleğinde yaşadığı için, farklı sırada koşan hücreler birbirine eski değerlerle bağlanabilir. Çözüm: hücre numaralarını takip et, şüphede Kernel → Restart & Run All ile defteri baştan koştur.
Kuantum hesaplama öğrenirken defter mi, normal Python dosyası mı kullanmalıyım?
Öğrenirken defter; her adımı ayrı çalıştırıp sonucu hemen görür, araya notunu yazarsın. Algoritma olgunlaşınca tekrarlanabilirlik ve otomasyon için kodu .py dosyalarına taşı. İkisini birlikte kullanmak en verimli yoldur.
Kaynaklar ve İleri Okuma
Jupyter Project — resmî site — kurulum seçenekleri ve Jupyter ekosisteminin genel görünümü.
Jupyter resmî dokümantasyonu — Notebook ve JupyterLab kullanımının ayrıntılı ve güncel kılavuzu.
Project Jupyter — Wikipedia (İngilizce) — projenin tarihçesi ve bilimsel hesaplamadaki yeri hakkında genel bakış.
IBM Quantum Learning — Jupyter defterleri üzerinden kuantum hesaplama öğreten resmî ders materyali.