İçeriğe geç
academia.sh

Ders 13 / 15

Doküman Üretim Yaklaşımları

Üretim tek bir şey değildir: işaretleme dilinden üretim hiçbir yüzeyi kurtarmaz, kaynaktan üretim on ikinci sürümde 22 iddiayı doğru tutar ve ad ile akış yüzeyindeki 23 iddiaya dokunamaz.

İçindekiler

Önceki ders incelemenin borcu yedi kat düşürdüğünü gösterdi, ama bu kazancın bedeli bir insanın her değişiklikte doküman satırlarını da okumasıdır. Okuyan insan pahalıdır ve dikkati sabit değildir. Bir yüzey için daha ucuz bir yol vardır: iddiayı elle yazmak yerine bağlandığı kaynaktan üretmek.

Üretilen bir iddia, kaynağı değiştiğinde kendiliğinden değişir. Kimse onu hatırlamak zorunda değildir, kimse onu incelemek zorunda değildir; bayatlaması düşünülemez hâle gelir. Bu dersin sorusu bunun ne kadarına yettiğidir. Elli altı iddianın kaçı bir kaynaktan okunabilir, kaçı okunamaz ve okunamayanlar hangi yüzeydedir? Ölçüm üç üretim yaklaşımını elle yazılan dokümanla yan yana koyar ve dördünü aynı on iki sürüm boyunca izler.

İddianın Kaynağı

Bir iddianın kaynağı, doğruluğunu belirleyen yerdir. “Bu alanın türü tam sayıdır” cümlesinin kaynağı, alanın tanımlandığı satırdır. “Önce ölçüm oluşturulur, sonra gönderilir” cümlesinin kaynağı, bu sırayı zorunlu kılan işleyiştir. “Bu yapıya birim denir” cümlesinin kaynağı, adı veren karardır. “Birim alanı zorunlu tutulur, çünkü ölçümler birimsiz karşılaştırılamaz” cümlesinin kaynağı, gerekçenin kendisidir.

Aradaki fark şudur: birinci kaynak makine tarafından okunabilir, diğer üçü okunamaz. Bir alanın türü kaynağın içinde yazılıdır ve oradan çekilebilir. Adımların sırası, bir şeyin adı ve bir kararın gerekçesi kaynağın içinde bir yerde durmaz; onları yalnız bir insan bilir. Üretim bu ayrımın üstüne kurulur ve bu ayrım üretimin sınırıdır.

Üç Yaklaşım Sınıfı

Yaklaşımlar ürün adlarıyla değil, sınıf adlarıyla anılır; ürünler değişir, sınıflar kalır.

İşaretleme dilinden üretim. Doküman bir işaretleme dilinde yazılır ve bir çevirici onu yayımlanabilir bir biçime dönüştürür. Bağlantılar denetlenir, içindekiler listesi çıkarılır, sayfa düzeni uygulanır. Üretilen şey biçimdir. Metnin iddiaları yazıldığı gibi durur ve kaynağa hiç bakılmaz.

Açıklama satırından üretim. İddialar kaynağın içine, tanımladıkları öğenin hemen yanına yazılır; bir araç bunları toplayıp doküman hâline getirir. Toplanan metnin bir bölümü elle yazılmıştır, bir bölümü tanımın kendisinden okunur: parametrenin adı, türü, dönüş değeri. Kapsamı dardır — kaynağın yanında yalnızca kaynağı anlatan metin durabilir. Bir öğretici ya da bir gerekçe oraya sığmaz.

Kaynaktan üretim. Arayüzün tanımı doğrudan okunur ve referans metni ondan üretilir. Kapsam geniştir: hangi türde doküman olursa olsun, içindeki imza iddiaları kaynaktan gelebilir. Bu yolla elde edilen metin üretilen referans (generated reference) adını alır.

Üretilmiş bir parçanın nasıl göründüğü aşağıdadır. Kurgu bir ürüne aittir ve çalıştırılmamıştır:

# uretilmis referans parcasi , ornek dokum , calistirilmamistir

olcum_gonder(deger, birim, kaynak=None)

  deger   ondalık        zorunlu
  birim   metin          zorunlu
  kaynak  metin veya boş  varsayılan: boş

  döndürür: kayıt kimliği (metin)

Bu parçadaki her satır tanımdan okunmuştur. Alan eklenirse satır eklenir, tür değişirse sütun değişir. Parçanın söylemediği de aynı ölçüde belirgindir: birim alanının neden zorunlu olduğu, hangi sırayla çağrılacağı ve bu işleve verilen adın nereden geldiği üretilemez.

Üretilen metnin bir özelliği daha vardır ve ölçüme girmez: sırası okurun değil, kaynağın sırasıdır. Alanlar tanımlandıkları düzende listelenir, işlevler kaynaktaki yerlerine göre dizilir. Yazım Disiplini konusunda ölçülen taranabilirlik düzeni burada kurulmaz, çünkü üretimi yapan araç okurun hangi soruyla geldiğini bilmez. Bu, üretilen referansın eksikliği değil tanımıdır: eksiksizliği kaynaktan gelir, düzeni gelmez. Bir dokümanın üretilen bölümleriyle elle yazılan bölümleri bu yüzden birbirinin yerine geçmez; biri her zaman doğru ve düzensiz, öbürü düzenli ve bayatlayabilirdir.

Ölçümün Varsayımları

  • DI11 — Elli altı iddia, dört tür ve dört yüzey ortak kurgudan alınır; yüzey sıklıkları değişmez. Kâhin kurgunun kendisidir.
  • DI12 — Bir yaklaşım iki şeyle tanımlanır: kapsadığı türler ve kaynaktan okuduğu yüzey. Kapsam içindeki bir türün, okunan yüzeye bağlı iddiaları hiç bayatlamaz.
  • DI13 — İşaretleme dilinden üretim dört türü de kapsar ve hiçbir yüzeyi kaynaktan okumaz; ürettiği şey biçimdir.
  • DI14 — Açıklama satırından üretim yalnız referans türünü kapsar ve imza yüzeyini kaynaktan okur; kaynağın yanına öğretici, açıklama ya da nasıl yapılır metni konmaz.
  • DI15 — Kaynaktan üretim dört türü de kapsar ve imza yüzeyini kaynaktan okur; hangi türde olursa olsun bir imza iddiası tanımdan üretilebilir.
  • DI16 — Hiçbir yaklaşım ad, akış ve kavram yüzeyini okuyamaz; bu üç yüzeyin kaynağı makine tarafından okunabilir bir yerde durmaz.
  • DI17 — Üretim örneğe gömülülüğü değiştirmez. Gömülü iddia bayatlayınca ses çıkarır, gömülü olmayan çıkarmaz; sessiz bayatlama tanımı ortak kurgudaki hâliyle kalır.
  • DI18 — Ölçüm üretimin kurulum ve işletim maliyetini saymaz; yalnız sürüm başına doğru kalan, bayatlayan ve sessizce bayatlayan iddia sayısını verir.

Ölçüm

"""Uretim yaklasimlarinin kurtardigi ve kurtaramadigi yuzey.

Bolum 1 - dort yaklasim, alti surumde dogru/bayat/sessiz.
Bolum 2 - kaynaktan uretimin tur basina kazanci ve yuzey basina siniri.
"""
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)
DORDU = ("öğretici", "nasıl yapılır", "açıklama", "referans")
# yaklasim: (kapsadigi turler, kaynaktan okunan yuzey)
YAKLASIM = {"elle yazılan": ((), None),
            "işaretlemeden": (DORDU, None),
            "açıklamadan": (("referans",), "imza"),
            "kaynaktan": (DORDU, "imza")}


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, yaklasim):
    kapsam, okunan = YAKLASIM[yaklasim]
    if iddia["tur"] in kapsam and iddia["yuzey"] == okunan:
        return False
    return surum // SIKLIK[iddia["yuzey"]] >= 1


def olc(liste, surum, yaklasim, 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, yaklasim)]
    sessiz = [i for i in bayat if not i["gomulu"]]
    return len(grup), len(grup) - len(bayat), len(bayat), len(sessiz)


L = iddialar()
print(f"iddia {len(L)}, imza yüzeyine bağlı "
      f"{sum(1 for i in L if i['yuzey'] == 'imza')}, kalan "
      f"{sum(1 for i in L if i['yuzey'] != 'imza')}")
print()
print(f"{'sürüm':>6s}" + "".join(f" {y:>18s}" for y in YAKLASIM))
print(f"{'':6s}" + "".join(f" {'doğru/bayat/sessiz':>18s}" for _ in YAKLASIM))
for s in SURUMLER:
    satir = f"{s:6d}"
    for yaklasim in YAKLASIM:
        _, dogru, bayat, sessiz = olc(L, s, yaklasim)
        satir += f" {f'{dogru}/{bayat}/{sessiz}':>18s}"
    print(satir)
print()
print(f"{'tür':>15s} {'iddia':>6s} {'imza':>5s} {'elle 6':>7s} "
      f"{'kaynaktan 6':>12s} {'elle 12':>8s} {'kaynaktan 12':>13s}")
for tur in TURLER:
    imza = sum(1 for i in L if i["tur"] == tur and i["yuzey"] == "imza")
    t, e6, _, _ = olc(L, 6, "elle yazılan", tur)
    _, k6, _, _ = olc(L, 6, "kaynaktan", tur)
    _, e12, _, _ = olc(L, 12, "elle yazılan", tur)
    _, k12, _, _ = olc(L, 12, "kaynaktan", tur)
    print(f"{tur:>15s} {t:6d} {imza:5d} {f'{e6}/{t}':>7s} {f'{k6}/{t}':>12s} "
          f"{f'{e12}/{t}':>8s} {f'{k12}/{t}':>13s}")
print()
print(f"{'yüzey':>7s} {'iddia':>6s} {'kaynaktan okunur':>17s} "
      f"{'12. sürümde doğru':>18s}")
for y in SIKLIK:
    g = [i for i in L if i["yuzey"] == y]
    dogru = sum(1 for i in g if not bayat_mi(i, 12, "kaynaktan"))
    print(f"{y:>7s} {len(g):6d} {'evet' if y == 'imza' else 'hayır':>17s} "
          f"{dogru:18d}")
iddia 56, imza yüzeyine bağlı 22, kalan 34

 sürüm       elle yazılan      işaretlemeden        açıklamadan          kaynaktan
       doğru/bayat/sessiz doğru/bayat/sessiz doğru/bayat/sessiz doğru/bayat/sessiz
     0             56/0/0             56/0/0             56/0/0             56/0/0
     1             56/0/0             56/0/0             56/0/0             56/0/0
     2           34/22/17           34/22/17             47/9/4             56/0/0
     3           18/38/24           18/38/24           31/25/11            40/16/7
     6           11/45/28           11/45/28           24/32/15           33/23/11
    12            0/56/39            0/56/39           13/43/26           22/34/22

            tür  iddia  imza  elle 6  kaynaktan 6  elle 12  kaynaktan 12
       öğretici     15     3    1/15         4/15     0/15          3/15
  nasıl yapılır     14     5    1/14         6/14     0/14          5/14
       açıklama     12     1    9/12        10/12     0/12          1/12
       referans     15    13    0/15        13/15     0/15         13/15

  yüzey  iddia  kaynaktan okunur  12. sürümde doğru
   imza     22              evet                 22
   akis     16             hayır                  0
     ad      7             hayır                  0
 kavram     11             hayır                  0

Sütun başlıklarındaki kısaltmalar yaklaşım sınıflarının adlarıdır: işaretleme dilinden üretim, açıklama satırından üretim ve kaynaktan üretim.

İlk İki Satır Aynıdır

Tablonun en çabuk okunan bulgusu ilk iki satırın birebir aynı olmasıdır. Elle yazılan doküman ile işaretleme dilinden üretilen doküman, altı sürümün altısında da aynı üçlüyü verir: on ikinci sürümde ikisi de 0/56/39.

Bunun nedeni tanımdadır. İşaretleme dilinden üretim iddiaların kaynağına hiç bakmaz; metin neyi söylüyorsa onu daha düzgün bir biçimde gösterir. Yayım işini otomatikleştirmek gerçek bir kazançtır — bağlantılar denetlenir, sürüm ayrımı kurulur, biçim birliği sağlanır — ama doğrulukla ilgisi yoktur. Bir aracın “doküman üretiyor” olması, ürettiği şeyin iddiaları olduğu anlamına gelmez. Üretim sözcüğü bu iki işi aynı adla anar ve tabloda aralarında elli altı iddialık bir fark vardır. Bir kurulumu değerlendirirken sorulacak soru aracın ne ürettiği değil, hangi yüzeyi hangi kaynaktan okuduğudur; bu soruya “hiçbirini” yanıtı geliyorsa üretilen şey yalnızca biçimdir.

Kaynaktan Üretimin Kurtardığı

Dördüncü sütun ikinci sürümde 56/0/0 verir; elle yazılan aynı sürümde 34/22/17 vermiştir. İlk çatlak ancak üçüncü sürümde, akış yüzeyi değiştiğinde açılır. On ikinci sürümde kaynaktan üretim 22 doğru iddia bırakır — elle yazılanın 0’ına karşılık.

Yirmi iki sayısı doğrudan okunabilir: imza yüzeyine bağlı iddia sayısıdır. Alt tablo bunu tek tek gösterir. İmza satırında on ikinci sürümde doğru kalan 22, yani hepsi; öbür üç satırda 0. Kaynaktan üretim bir yüzeyi tümüyle kaldırır ve öbür üçüne dokunmaz. Aradaki oran ölçünün en kısa özetidir: elli altı iddianın 22’si üretilebilir, 34’ü üretilemez.

Açıklama satırından üretim aynı yüzeyi okur ama yalnız bir türü kapsar; on ikinci sürümde 13 doğru iddia bırakır. On üç, referans türündeki imza iddialarının sayısıdır. Aradaki dokuz iddialık fark, öbür üç türün içindeki imza iddialarıdır ve bunlar kaynağın yanına sığmaz — bir öğreticinin ortasındaki çağrı örneği kaynağın açıklama satırında duramaz.

Kurtarılamayan İki Yüzey

Kaynaktan üretimin on ikinci sürümdeki 34 bayat iddiasının dağılımı şudur: akış 16, kavram 11, ad 7. Kursun beşinci okuması bu üçlünün ikisini öne çıkarır, çünkü ikisi referans türünün içinde de görünür: ad ve akış.

Bu iki yüzey neden üretilemez? Ad, bir şeyin dışarıya verilen adıdır ve kaynaktaki tanımlayıcıyla aynı olmak zorunda değildir. Kaynakta olcum_gonder yazması, dokümanda “ölçüm gönderme” mi yoksa “kayıt oluşturma” mı denmesi gerektiğini söylemez; ad kararı kaynağın dışındadır ve değiştiğinde kaynakta hiçbir iz bırakmaz. Akış, adımların sırasıdır ve tek tek imzalardan çıkarılamaz. Üç işlevin tanımı da doğru üretilir, hangisinin önce çağrılacağı hiçbirinin tanımında yazmaz.

Alt tablonun ikinci sütunu bu iki yüzeyde 23 iddia sayar. Bunlar üretimin varlığından etkilenmez: kaynaktan üretim kurulmuş bir dokümanda da, kurulmamış bir dokümanda da aynı hızda bayatlarlar. Üretim bu iddiaları kurtarmaz, üstelik onları daha da tehlikeli kılar: doküman güncel görünür, imza tabloları tazedir, ve aralarındaki akış cümlesi sessizce yanlıştır.

Türlere Göre Kazanç

Orta tablo üretimin kime yaradığını türe göre ayırır. Altıncı sürümde referans elle yazılmış hâlde 0/15 verirken, kaynaktan üretilmiş hâlde 13/15 verir — bu, Doküman Türleri konusunda ölçülen karşılaştırmanın aynısıdır. Öğretici ise 1/15’ten 4/15’e çıkar; kazanç üç iddiadır ve on ikinci sürümde de üç kalır.

Fark, türlerin yüzey dağılımından gelir. Referansın on beş iddiasının 13’ü imzaya bağlıdır; öğreticinin on beş iddiasının yalnız 3’ü. Öğretici öncelikle akış anlatır ve akış üretilemez. Açıklama türünde tablo daha da keskindir: on iki iddianın 1’i imzaya bağlıdır, on ikinci sürümde kaynaktan üretim 1/12 verir ve kazanç tek bir iddiadır.

Buradan çıkan işletim kararı doğrudur ve dar bir kararla sınırlıdır: üretim, referans türünü hedefler. Öbür üç tür için üretim kurmak, kurulum bedelini yüzey dağılımının karşılamadığı bir yatırımdır. Aynı emek o türlerde inceleme ve doküman denetimine harcanırsa daha çok iddia doğru kalır.

Üretimin Sessizliğe Etkisi

Son sütunun on ikinci sürümdeki üçlüsü 22/34/22’dir: otuz dört bayat iddianın yirmi ikisi sessizdir. Elle yazılan dokümanda aynı satır 0/56/39 verir. Üretim yirmi iki bayat iddiayı ortadan kaldırmıştır, ama sessizlerin sayısı otuz dokuzdan yirmi ikiye inerken gürültü çıkaranların sayısı da düşer.

Hesap kısadır. Yirmi iki imza iddiasının 5’i çalıştırılabilir örneğe gömülüdür. Üretim bu iddiaları doğru tuttuğu için o beş örnek artık hiç bozulmaz. Geriye kalan otuz dört iddianın gömülü olanı 17 − 5 = 12’dir. Yani üretim, bayatlamayı haber veren kanalı da daraltır: on yedi uyarı noktasından beşi kapanır.

Bu bir kusur değil, bir yer değiştirmedir. Üretimden önce doküman elli altı iddiadan on yedisi için kendi kendine sinyal üretiyordu; sonra otuz dört iddiadan on ikisi için üretir. Her iki durumda da geriye kalanı bulmanın tek yolu birinin oturup iddiayı kaynağıyla karşılaştırmasıdır. Üretim bu işi küçültür, ortadan kaldırmaz.

Özet

  • Bir iddianın kaynağı makine tarafından okunabiliyorsa üretilebilir; imza böyledir, ad, akış ve kavram değildir.
  • İşaretleme dilinden üretim biçim üretir, iddia üretmez; tabloda elle yazılan dokümanla birebir aynı üçlüleri verir ve on ikinci sürümde ikisi de 0/56/39’dur.
  • Kaynaktan üretim on ikinci sürümde 22 iddiayı doğru tutar; bu sayı imza yüzeyine bağlı iddia sayısının tamamıdır.
  • Açıklama satırından üretim yalnız referans türünü kapsadığı için 13 iddiada kalır; kapsam farkı dokuz iddiadır.
  • Üretimin kurtaramadığı 34 iddianın 23’ü ad ve akış yüzeyindedir; doküman güncel görünürken bu iddialar sessizce yanlış olabilir.
  • Yüzey dağılımı gereği üretim referans türünü hedefler: referans 13/15, öğretici 3/15, açıklama 1/12 kazanır.

Sonraki Adım

Elimizde şimdi iki savunma var ve ikisi de kısmi: inceleme ad ile kavramı göremiyor, üretim ad ile akışı üretemiyor. İkisinden de geriye kalan iddialar, yanlış olduklarını hiçbir biçimde duyurmayanlardır. Sonraki ders kursun merkezine iner ve bu artığı sayar: dört türün altı sürüm boyunca doğru, bayat ve sessiz üçlüleri, on ikinci sürümdeki sessizlik oranı, ve sessiz olanı bulmak için gereken doküman denetiminin iddia başına bedeli.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat