Ders 14 / 15
Bayatlama ve Doküman Denetimi
On ikinci sürümde 56 iddianın 56'sı bayattır ve 39'u sessizdir; sessizlik oranı 0,6964'tür ve sessiz olanı bulmak, doküman denetiminin iddia başına ödediği okuma bedeliyle ölçülür.
İçindekiler
Önceki iki ders iki savunma kurdu ve ikisi de eksik kaldı. İnceleme, ad ve kavram yüzeyindeki iddiaları göremiyor; üretim, ad ve akış yüzeyindeki iddiaları üretemiyor. Her iki savunmadan da geriye, yanlış olduğunu hiçbir biçimde duyurmayan bir artık kalıyor.
Bu ders o artığı sayar. Kursun merkez sorusu burada tam olarak sorulur: bir dokümanın iddialarından kaçı zamanla yanlışlaşır, ve yanlışlaşanların kaçı bunu kendiliğinden söyler? İkinci sayı birincisinden daha önemlidir, çünkü kendini söyleyen yanlış bir sorun değil, bir bildirimdir. Kendini söylemeyen yanlış ise ancak biri onu aramaya çıktığında bulunur — ve bu arama işinin adı doküman denetimidir.
Bayatlamanın İki Türü
Ortak kurgunun ayrımı basittir ve kurs boyunca değişmez. Elli altı iddianın 17’si çalıştırılabilir bir örneğe gömülüdür. Gömülü bir iddia bayatladığında örnek çalışmaz: kopyalayan okur bir hata görür, sürekli tümleştirme hattı örneği çalıştırıyorsa hattın kendisi kırılır. Bu iddia ses çıkarır.
Kalan 39 iddia düz cümledir. Bir alanın türü, bir adımın sırası, bir şeyin adı, bir kararın gerekçesi — hepsi metnin içinde durur ve yanlışlaştıklarında hiçbir şey olmaz. Sayfa yine açılır, hattan yine geçer, arama yine bulur. Bu sessiz bayatlamadır ve kursun ölçüsünün merkezindedir.
Ayrımın işletim sonucu şudur: bir dokümanın sağlığı hakkında elinizde iki tür kanıt vardır ve biri ölçülebilir, öbürü ölçülemez. Kırılan örnek sayılabilir. Sessizce yanlış olan cümle sayılamaz — sayılabilseydi zaten düzeltilirdi. Sessiz bayatlamanın tanımı, kendini saydırmamasıdır. Ölçüm bunu ancak kurgu bir kâhinle yapabilir: hangi iddianın hangi sürümde bayatladığını biz yazdığımız için biliriz.
Doküman Denetimi Ne Yapar
Doküman denetimi, iddiaları tek tek kaynağıyla karşılaştırma işidir. Bir kişi metni okur, her cümlenin hâlâ doğru olup olmadığını kaynağa bakarak doğrular ve yanlış olanı işaretler. Bu işin bedeli okunan iddia sayısıyla ölçülür; kazancı ise bulunan sessiz bayat sayısıdır.
Denetimin kapsamı bir seçimdir. Dokümanın tamamı okunabilir ya da yalnız bir türü. Kapsam seçimi doğrudan bir verim sorusudur: okunan her iddia başına kaç sessiz bayat bulunuyor? Ses çıkaran iddialar bu hesabın dışındadır — onlar kapsam ne olursa olsun bulunur, çünkü kendilerini bildirmişlerdir.
Denetimin çıktısı bir listedir, düzeltme değildir. Kurgu, bulunan bayatın düzeltilip düzeltilmediğini ölçmez; ölçtüğü tek şey bulunup bulunmadığıdır. Bulunmayan bir bayat iddiayı düzeltmenin yolu yoktur.
# ornek denetim ciktisi , calistirilmamistir referans / olcum_gonder [bayat] kaynak alanı zorunludur -> tanımda varsayılan değer var [bayat] döndürür: kayıt numarası (tam sayı) -> tanımda metin döndürüyor [doğru] birim alanı zorunludur öğretici / ilk ölçüm [bayat] önce oturum açılır, sonra ölçüm gönderilir -> sıra değişmiş
Listenin biçimi önemsizdir; önemli olan her satırın bir iddia olmasıdır. Doküman denetimi sayfa saymaz, paragraf saymaz, iddia sayar. Ölçünün birimi budur.
Ölçümün Varsayımları
- DI21 — Elli altı iddia, dört tür ve dört yüzey ortak kurgudan alınır. Kâhin kurgunun kendisidir; hangi iddianın hangi sürümde bayatladığı bilinir.
- DI22 — Yüzey sıklıkları değişmez: imza iki sürümde bir, akış üçte bir, ad beşte bir, kavram on ikide bir. Bir iddia, bağlandığı yüzey bu sürüme kadar en az bir kez değiştiyse bayattır.
- DI23 — Elli altı iddianın on yedisi örneğe gömülüdür; gömülü bayat ses çıkarır, gömülü olmayan bayat sessizdir. Gömülülük yüzeyle birlikte belirlenir ve kavram yüzeyinde hiç gömülü iddia yoktur.
- DI24 — Doküman denetimi, kapsamına giren her iddiayı okur ve kâhinle karşılaştırır; okuduğu bayatı kaçırmaz. Bu iyimser bir varsayımdır ve denetimin bulabileceğinin üst sınırını verir.
- DI25 — Ses çıkaran bayat, denetim kapsamı ne olursa olsun bulunur; örnek zaten çalışmamaktadır. Denetimin kapsamı yalnız sessiz bayatın bulunmasını belirler.
- DI26 — Denetimin bedeli okunan iddia sayısıdır. Verim, okunan iddia başına bulunan sessiz bayat oranıdır ve hiçbir iddia okunmadığında tanımsızdır.
- DI27 — Denetim iki sürümde ayrı ayrı çalıştırılır: üçüncü sürümde ve on ikinci sürümde. İkisi arasındaki fark, denetim hedefinin sürüme göre değiştiğini gösterir.
- DI28 — Kümenin çözünürlüğü elli altı iddiada 1/56’dır; bundan küçük bir fark bu kurguyla savunulamaz.
Ölçüm
"""Bayatlama ve dokuman denetimi: sessiz olani bulmanin bedeli. Bolum 1 - alti surumde dort turun dogru/bayat/sessiz uclusu. Bolum 2 - denetim kapsamlari: incelenen iddia basina bulunan sessiz bayat. """ TURLER = { "öğretici": {"akis": 9, "imza": 3, "ad": 2, "kavram": 1}, "nasıl yapılır": {"akis": 6, "imza": 5, "ad": 2, "kavram": 1}, "açıklama": {"akis": 1, "imza": 1, "ad": 1, "kavram": 9}, "referans": {"akis": 0, "imza": 13, "ad": 2, "kavram": 0}, } SIKLIK = {"imza": 2, "akis": 3, "ad": 5, "kavram": 12} ORNEKLI = {"öğretici": 0.60, "nasıl yapılır": 0.70, "açıklama": 0.10, "referans": 0.00} SURUMLER = (0, 1, 2, 3, 6, 12) def iddialar(): liste, no = [], 0 for tur, dagilim in TURLER.items(): hedef = 0 for yuzey, adet in dagilim.items(): for _ in range(adet): no += 1 hedef += ORNEKLI[tur] gomulu = hedef >= 1 and yuzey != "kavram" if gomulu: hedef -= 1 liste.append({"no": no, "tur": tur, "yuzey": yuzey, "gomulu": gomulu}) return liste def bayat_mi(iddia, surum): return surum // SIKLIK[iddia["yuzey"]] >= 1 def olc(liste, surum, tur=None): grup = [i for i in liste if tur is None or i["tur"] == tur] bayat = [i for i in grup if bayat_mi(i, surum)] sessiz = [i for i in bayat if not i["gomulu"]] return len(grup), len(grup) - len(bayat), len(bayat), len(sessiz) def denetim(liste, surum, kapsam): """Kapsam: elle okunan turler. Gomulu bayat kapsam disinda da bulunur.""" okunan = [i for i in liste if i["tur"] in kapsam] bayat = [i for i in liste if bayat_mi(i, surum)] bulunan = [i for i in bayat if i["gomulu"] or i in okunan] sessiz_bulunan = [i for i in bulunan if not i["gomulu"]] kacan = [i for i in bayat if not i["gomulu"] and i not in okunan] return len(okunan), len(bulunan), len(sessiz_bulunan), len(kacan) L = iddialar() print(f"iddia {len(L)}, tür {len(TURLER)}, örneğe gömülü " f"{sum(1 for i in L if i['gomulu'])}") print("yüzey dağılımı: " + ", ".join( f"{y} {sum(1 for i in L if i['yuzey'] == y)}" for y in SIKLIK)) print() print(f"{'sürüm':>6s}" + "".join(f" {t:>18s}" for t in TURLER)) print(f"{'':6s}" + "".join(f" {'doğru/bayat/sessiz':>18s}" for _ in TURLER)) for s in SURUMLER: satir = f"{s:6d}" for tur in TURLER: _, dogru, bayat, sessiz = olc(L, s, tur) satir += f" {f'{dogru}/{bayat}/{sessiz}':>18s}" print(satir) print() for s in (3, 12): _, _, bayat, sessiz = olc(L, s) print(f"{s}. sürümde bayat {bayat}/{len(L)}, sessiz {sessiz} " f"({sessiz / bayat:.4f})") KAPSAMLAR = [("denetim yok", ()), ("yalnız referans", ("referans",)), ("yalnız açıklama", ("açıklama",)), ("yalnız öğretici", ("öğretici",)), ("yalnız nasıl yapılır", ("nasıl yapılır",)), ("dört tür", tuple(TURLER))] for s in (3, 12): print(f"\nsürüm {s}") print(f"{'denetim kapsamı':>21s} {'okunan':>7s} {'bulunan bayat':>14s} " f"{'bulunan sessiz':>15s} {'kaçan sessiz':>13s} {'verim':>7s}") for ad, kapsam in KAPSAMLAR: okunan, bulunan, sessiz_b, kacan = denetim(L, s, kapsam) verim = f"{sessiz_b / okunan:.4f}" if okunan else "—" print(f"{ad:>21s} {okunan:7d} {bulunan:14d} {sessiz_b:15d} " f"{kacan:13d} {verim:>7s}")
iddia 56, tür 4, örneğe gömülü 17
yüzey dağılımı: imza 22, akis 16, ad 7, kavram 11
sürüm öğretici nasıl yapılır açıklama referans
doğru/bayat/sessiz doğru/bayat/sessiz doğru/bayat/sessiz doğru/bayat/sessiz
0 15/0/0 14/0/0 12/0/0 15/0/0
1 15/0/0 14/0/0 12/0/0 15/0/0
2 12/3/1 9/5/2 11/1/1 2/13/13
3 3/12/5 3/11/4 10/2/2 2/13/13
6 1/14/6 1/13/4 9/3/3 0/15/15
12 0/15/7 0/14/5 0/12/12 0/15/15
3. sürümde bayat 38/56, sessiz 24 (0.6316)
12. sürümde bayat 56/56, sessiz 39 (0.6964)
sürüm 3
denetim kapsamı okunan bulunan bayat bulunan sessiz kaçan sessiz verim
denetim yok 0 14 0 24 —
yalnız referans 15 27 13 11 0.8667
yalnız açıklama 12 16 2 22 0.1667
yalnız öğretici 15 19 5 19 0.3333
yalnız nasıl yapılır 14 18 4 20 0.2857
dört tür 56 38 24 0 0.4286
sürüm 12
denetim kapsamı okunan bulunan bayat bulunan sessiz kaçan sessiz verim
denetim yok 0 17 0 39 —
yalnız referans 15 32 15 24 1.0000
yalnız açıklama 12 29 12 27 1.0000
yalnız öğretici 15 24 7 32 0.4667
yalnız nasıl yapılır 14 22 5 34 0.3571
dört tür 56 56 39 0 0.6964
Üst Tablo: Dört Tür, Altı Sürüm
Birinci ve sıfırıncı sürüm boştur; hiçbir yüzey henüz değişmemiştir ve dört tür de bütün iddialarını korur. İkinci sürümde imza değişir ve tablo hemen ayrışır: referans 2/13/13 verirken açıklama 11/1/1 verir. Aynı sürümde, aynı depoda, aynı özenle yazılmış iki metin; biri iddialarının yüzde on üçünü korumuş, öbürü yüzde doksan ikisini. Fark yazımdan değil, bağlanılan yüzeyden gelir.
Üçüncü sürümde akış yüzeyi değişir ve bu kez öğretici ile nasıl yapılır çöker: 3/12/5 ve 3/11/4. Açıklama 10/2/2 ile ayakta kalır, çünkü iddialarının dokuzu kavrama bağlıdır ve kavram on ikide bir değişir. Altıncı sürümde ad yüzeyi de dönmüştür; on ikinci sürümde kavram da döner ve dört türün tamamı sıfırlanır: 56/56.
Bayat sayısının tümü aynı ağırlıkta değildir. Üçüncü sürümde bayat 38, sessiz 24; oran 0,6316. On ikinci sürümde bayat 56, sessiz 39; oran 0,6964. İkinci sayı kursun bağlayıcı sonucudur: bayatlamanın yaklaşık yüzde yetmişi sessizdir.
Oranın sürümle birlikte yükselmesi rastlantı değildir. Gömülü iddialar imza ve akış yüzeylerinde yoğunlaşır ve bu iki yüzey erken değişir; onların bayatlaması ilk sürümlerde gerçekleşir ve ses çıkarır. Ad ve kavram geç değişir, gömülü iddia içermez ve bayatlamaları sessiz olur. Zaman geçtikçe sessizlerin payı artar. Bir doküman yaşlandıkça yalnız daha yanlış olmaz, aynı zamanda daha sessiz yanlış olur.
Bu yükselişin ölçülebilir olup olmadığı ayrıca sorulmalıdır. Kümenin çözünürlüğü elli altı iddiada 1/56, yani 0,0179’dur; bundan küçük bir fark bu kurguyla savunulamaz. İki oran arasındaki fark 0,6964 − 0,6316 = 0,0648’dir, çözünürlüğün üç katından fazla. Yükseliş ölçüm bandının içindedir. Buna karşılık, iki sürüm arasında yarım iddialık bir kayma gözlemlemek bu kümeyle olanaksızdır; kurgu daha ince ayrımlar için kurulmamıştır.
Alt Tablolar: Denetimin Verimi
denetim yok satırı temel çizgidir. Üçüncü sürümde hiç kimse hiçbir şey okumadan 14
bayat iddia bulunur ve 24 sessiz kaçar; on ikinci sürümde 17 bulunur ve 39
kaçar. Bulunan sayı, gömülü iddiaların çalışmayan örnekleridir. Bu, dokümanın kendiliğinden
verdiği tek geri bildirimdir ve elli altı iddianın yaklaşık üçte biriyle sınırlıdır.
Kapsam satırları denetimin nereye yöneltileceğini gösterir. Üçüncü sürümde yalnız referans okumak on beş iddia karşılığında 13 sessiz bayat bulur; verim 0,8667. Aynı sürümde yalnız açıklama okumak on iki iddia karşılığında 2 bulur; verim 0,1667. Aradaki fark beş kattan fazladır ve denetimi yapan kişinin harcadığı emek neredeyse aynıdır.
On ikinci sürümde tablo düzleşir. Referans ve açıklama 1,0000 verir: okunan her iddia bir sessiz bayattır, çünkü ikisinde de gömülü iddia yoktur ve her şey bayatlamıştır. Öğretici 0,4667, nasıl yapılır 0,3571 verir; bu iki türde okunan iddiaların bir bölümü gömülüdür ve zaten bulunmuştu — denetim onlar için boşa okumuş olur.
Buradan iki işletim kuralı çıkar. Birincisi: denetim hedefi tür değil, yüzeydir. Referansın erken verimli olması yazım biçiminden değil, iddialarının on üçünün imzaya bağlı olmasından gelir. İkincisi: gömülü iddiası çok olan tür, denetim için kötü bir hedeftir. Orada bayatlama zaten kendini bildirir; denetimin okuma emeği kendini bildirmeyene ayrılmalıdır.
Tam kapsam satırı iki sayıyla kapanır. Üçüncü sürümde elli altı iddianın hepsini okumak 24 sessiz bayat bulur ve verim 0,4286’dır; on ikinci sürümde 39 bulur ve verim 0,6964’tür. Bu ikinci sayı üst tablodaki sessizlik oranıyla aynıdır ve tanım gereği öyledir: tam kapsamlı bir doküman denetiminin verimi, o dokümandaki sessiz bayatlama oranının kendisidir. Denetim ne kadar iyi yapılırsa yapılsın, bulacağı şeyin sınırı dokümanın kaç iddiasının sessizce yanlış olduğudur.
Denetimi Ne Tetikler
Denetimin verimini kapsam belirliyorsa, kapsamı da bir şeyin belirlemesi gerekir. Takvim kötü bir belirleyicidir: üç ayda bir yapılan bir denetim, hangi yüzeyin değiştiğinden bağımsız olarak aynı iddiaları okur ve emeğin bir bölümü hiç değişmemiş cümlelere gider.
Daha iyi bir belirleyici deponun kendi kaydıdır. Bir yüzeyin değiştiği, o değişikliği yapan kaydın içinde yazılıdır: bir alan eklendiğinde imza değişmiştir, bir adım eklendiğinde akış değişmiştir. Sürüm Kontrolüne Giriş kursu bu kaydın nasıl okunacağını kurdu ve Dallanma ve İşbirliği kursu tarihçenin hangi soruları yanıtlayabildiğini ölçtü. Buradaki kullanım dardır: tarihçe, denetimin hangi yüzeye yöneltileceğini söyler.
Bu yöntemin bir sınırı vardır ve kurs boyunca ikinci kez karşımıza çıkar. Tarihçe, kod değiştiğinde iz taşır; ad ve kavram yüzeyleri kodun dışında değişir. Bir ürün adının değiştiğine ya da bir gerekçenin geçersizleştiğine dair tarihçede hiçbir kayıt olmayabilir. On ikinci sürümde bu iki yüzeyde 18 iddia durur ve hepsi bayattır. Tarihçeyle tetiklenen bir denetim onları hiç aramaz; onlar için tetiği çekecek başka bir kaynak gerekir.
Özet
- Bayatlamanın iki türü vardır: örneğe gömülü iddia bayatladığında ses çıkarır, gömülü olmayan iddia sessizce bayatlar ve hiçbir belirti vermez.
- İkinci sürümde referans 2/13/13, açıklama 11/1/1 verir; aynı özenle yazılmış iki metnin ömrünü belirleyen şey bağlandıkları yüzeydir.
- On ikinci sürümde elli altı iddianın 56’sı bayattır ve 39’u sessizdir; oran 0,6964’tür ve üçüncü sürümdeki 0,6316’dan yüksektir.
- Doküman denetimi olmadan yalnız gömülü bayatlar bulunur: on ikinci sürümde 17 bulunur, 39 kaçar.
- Denetimin verimi kapsamla değişir: üçüncü sürümde yalnız referans okumak 0,8667, yalnız açıklama okumak 0,1667 verir; hedef tür değil yüzeydir.
- Tam kapsamlı denetimin verimi, dokümanın sessizlik oranının kendisidir — on ikinci sürümde 0,6964.
Sonraki Adım
Doküman denetimi sessiz bayatı bulur, ama birinin oturup elli altı iddiayı okumasını gerektirir ve bu iş kimsenin takviminde kendiliğinden yer almaz. Denetim yapılmadığı sürece o otuz dokuz iddia yerinde durur ve her gün birileri onları okur. Sonraki ders o okurlara bakar: yanlış bir cümleye çarpan okur ne yapar, kaçı bunu bildirir, ve kaç ziyaretten sonra sessiz bayatların kaçı görünür hâle gelir. Kursun son dersi, üçüncü iddianın tek panzehiri olan geri bildirim döngüsünü ölçer.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.