Başvuru

Sözlük

Kitabın kanonik dili (glossary)

Bu kitapta her kavramın tek bir Türkçe adı var; İngilizcesi yanında. Bölümler bu adlara sadık kalır. Bir tanım, kavramın ne olduğunu bir iki cümleyle söyler; nasıl çalıştığı bölümde anlatılır. "Kaçın" satırı, aynı kavram için kullanılabilecek ama bu kitapta kullanılmayan kelimeleri gösterir. Her bölüm yazıldıkça o bölümün terimleri buraya eklenir.

Karışan kelimeler: bu kitaptaki kararlar

Kısım I · Makine

Bölüm 1 · Büyük Harita

Girdi (input)
Bir işleme dışarıdan verilen veri: tuşa basmak, dokunmak, bir dosya, bir soru.
İşlem (processing)
Girdiyi çıktıya dönüştüren iş; girdi ile çıktı arasındaki kutunun içi.
Çıktı (output)
İşlemin sonucunda dışarı verilen veri: ekrandaki bir yazı, bir ses, bir dosya.
Saklama (storage)
Verinin daha sonra kullanılmak üzere tutulması; bilgisayarın girdi, işlem ve çıktının yanındaki dördüncü işi.
Kara kutu (black box)
Yalnızca girdisi ve çıktısı bilinen, içi bilinmeyen ya da bilinmesi gerekmeyen bir işlem.
Algoritma (algorithm)
Bir problemi çözmek için izlenecek adımların sıralı tarifi; herhangi bir dille, Türkçe de yazılabilir.
Program (program)
Bir algoritmanın bilgisayarın çalıştırabileceği bir dilde yazılmış hali.
Komut (instruction)
Bir programın içindeki tek bir adım.
Kaçın: talimat, emir
Sözde kod (pseudocode)
Bir algoritmanın, belirli bir programlama dilinin kurallarına bağlı kalmadan sade bir dille yazılmış hali.
Fonksiyon (function)
Adı olan, bir iş yapan ve girdi alıp çıktı üretebilen adım; programın içindeki küçük bir kara kutu.
Kaçın: işlev, prosedür
Koşul (conditional)
"Eğer… değilse…" yapısı: programın bir Boole ifadesinin sonucuna göre iki yoldan birini seçmesi.
Boole ifadesi (Boolean expression)
Sonucu yalnızca doğru ya da yanlış olabilen ifade, ör. "cevap doğru cevaba eşit".
Döngü (loop)
Bir adımlar dizisinin bir koşul sağlanana kadar ya da belirli sayıda tekrarlanması.
Değişken (variable)
Bir değeri bir adla saklayan ve değeri program çalışırken değişebilen kutu, ör. puan.
Soyutlama (abstraction)
Ayrıntıyı bir arayüzün arkasına saklayarak bir şeyi içini bilmeden kullanılabilir kılmak; büyük bir problemi adlandırılmış küçük parçalara bölmek de bunun bir biçimidir.
Arayüz (interface)
Bir parçanın dışarıya gösterdiği yüz: ona ne verilebileceği ve karşılığında ne alınacağı.
Ekrandaki düğmeler için: kullanıcı arayüzü (UI). Bkz. karışan kelimeler.
Gerçekleme (implementation)
Bir arayüzün verdiği sözü yerine getirmek için içeride gerçekten yapılan iş.
Kaçın: uygulama, gerçekleştirim
Soyutlama katmanı, kat (abstraction layer)
Altındaki katmanın imkânlarını kullanıp üstündekine daha kolay kullanılan imkânlar sunan düzey. Kitabın kat planı: 0 elektrik ve bit, 1 transistör ve mantık kapıları, 2 devreler, 3 işlemci ve bellek, 4 makine dili ve assembly, 5 programlama dilleri ve derleyici, 6 gömülü yazılım ve açılış, 7 işletim sistemi, 8 ağ ve internet, 9 web ve tarayıcı, 10 bizim uygulamamız.
Kaçın: seviye, tabaka
Donanım (hardware)
Bilgisayarın elle tutulan fiziksel parçaları: işlemci, bellek, disk, ekran.
Yazılım (software)
Donanıma ne yapacağını söyleyen komutlar ve veriler; sonunda bellekteki bit desenleridir.
Gömülü yazılım (firmware)
Donanımın içine kalıcı olarak yerleştirilmiş, onunla birlikte gelen yazılım; açılışta ilk çalışan programdır.
Kaçın: bellenim, ürün yazılımı

Bölüm 2 · Bit ve Byte

Birli sistem (unary, base-1)
Her işaretin aynı değerde olduğu sayma: çentikler, parmaklar.
Onluk sistem (decimal, base-10)
On rakamla (0–9) yazılan, her basamağın sağındakinin on katı değerinde olduğu sayı sistemi.
Basamak değeri (place value)
Bir rakamın değerinin, sayının içindeki yerine göre çarpılması ilkesi.
İkilik sistem (binary, base-2)
Yalnızca 0 ve 1 ile yazılan, basamak değerleri 1, 2, 4, 8… diye ikiye katlanan sayı sistemi.
Kaçın: binary sistem, ikili sistem
Bit (binary digit)
Bilginin en küçük birimi: tek bir 0 ya da 1. n bit 2n farklı durum yazabilir.
Byte
Sekiz bitlik grup; 0–255 arasında 256 farklı değer taşır.
Kaçın: bayt (yazımda)
Kilobyte, megabyte, gigabyte (KB, MB, GB)
Byte'ların büyük katları; onluk ölçüde 1.000'er, ikilik ölçüde 1.024'er katlanır. İkilik ölçünün kesin adları KiB, MiB, GiB'dir. Küçük b bit, büyük B byte demektir.
Onaltılık sistem (hexadecimal, base-16)
0–9 ve A–F ile yazılan sayı sistemi; bir rakamı 4 bite, iki rakamı bir byte'a denk gelir. Genellikle 0x ya da # önekiyle yazılır.
Kaçın: hex sistem (konuşmada "hex" denebilir)
Kodlama (encoding)
Karakterlerin hangi sayılarla ve hangi byte'larla yazılacağını belirleyen kural. Bkz. karışan kelimeler.
Kaçın: karakter seti (charset, eski kullanım)
ASCII
İngiliz alfabesi, rakamlar ve noktalama için 128 karakter tanımlayan 7 bitlik eski kodlama; ör. A = 65.
Unicode
Dünyadaki bütün yazı sistemlerinin karakterlerine, emojiler dahil, tek bir ortak numara veren standart.
Kod noktası (code point)
Bir karakterin Unicode'daki numarası; U+ önekiyle onaltılık yazılır, ör. ş = U+015F.
UTF-8
Unicode kod noktalarını 1–4 byte ile yazan kodlama; ilk 128 karakteri ASCII ile aynıdır. Web'in standart kodlaması.
RGB
Bir rengi kırmızı, yeşil ve mavi ışığın 0–255 arası üç değeriyle (üç byte) tarif eden model.
Piksel (pixel)
Dijital bir görüntüyü oluşturan ızgaranın tek bir renkli noktası.
Çözünürlük (resolution)
Bir görüntünün ya da ekranın kaç piksel genişlik ve yükseklikte olduğu, ör. 1920 × 1080.
Kare (frame)
Bir videoyu oluşturan art arda görüntülerden biri.
Örnekleme (sampling)
Ses gibi sürekli bir sinyali çok kısa aralıklarla ölçüp her ölçümü bir sayı olarak kaydetmek.
Sıkıştırma (compression)
Veriyi daha az bitle yazma yöntemi; kayıpsız (lossless) olanı veriyi birebir geri verir, kayıplı (lossy) olanı fark edilmeyecek ayrıntıları atar.
Dosya biçimi (file format)
Bir dosyadaki byte'ların hangi düzende ve hangi kuralla yazıldığına dair anlaşma, ör. HTML, JPEG, MP3.
Kaçın: dosya formatı, dosya türü
Uzantı (file extension)
Dosya adının sonundaki, hangi dosya biçimiyle okunacağına dair ipucu veren ek, ör. .html.
Veri tipi (data type)
Bir değerin nasıl yorumlanacağını söyleyen etiket: sayı, metin, doğru/yanlış gibi.
Kaçın: veri türü (kitapta "tip" kullanılır)

Bölüm 3 · Elektrikten Mantığa

Elektrik akımı (electric current)
Bir telden akan elektrik yükünün miktarı.
Gerilim (voltage)
İki nokta arasındaki elektriksel "itme gücü" farkı; dijital devrede telin gerilimi yüksekse 1, düşükse 0 sayılır.
Transistör (transistor)
Bir kontrol ucunun gerilimiyle açılıp kapanan, elektrikle çalışan anahtar; bilgisayarın en küçük yapı taşı.
Yarı iletken (semiconductor)
İletkenliği koşullara göre kontrol edilebilen malzeme; transistörün yapıldığı madde türü.
Silikon (silicon)
Transistörlerin çoğunun yapıldığı, çok saf hale getirilmiş yarı iletken madde.
Entegre devre (integrated circuit)
Tek bir yarı iletken parça üzerinde birbirine bağlı çok sayıda transistör barındıran devre.
Çip (chip)
Entegre devrenin günlük adı; işlemci ve bellek gibi parçalar çip olarak üretilir.
Kaçın: yonga (konuşmada)
Moore yasası (Moore's law)
Bir çipteki transistör sayısının yaklaşık iki yılda bir ikiye katlandığı gözlemi. Doğa yasası değil, deneysel bir gözlemdir.
Boole mantığı (Boolean logic)
Yalnızca iki değerle (doğru/yanlış, 1/0) çalışan mantık; VE, VEYA, DEĞİL işlemleri üzerine kurulur.
Mantık kapısı (logic gate)
Bir Boole fonksiyonunu uygulayan küçük devre; girdileri bitler, çıktısı bir bit. Transistörün kontrol ucuyla (gate) karıştırılmamalı.
Kaçın: kapı (yalın); transistörün "gate" ucu için kontrol ucu
VE (AND)
İki girdinin ikisi de 1 ise 1 veren işlem; hukuktaki kümülatif şartlara benzer.
VEYA (OR)
Girdilerden en az biri 1 ise 1 veren işlem (ikisi de 1 ise de 1); seçimlik şartlara benzer.
DEĞİL (NOT)
Girdiyi tersine çeviren işlem: 1 → 0, 0 → 1.
Doğruluk tablosu (truth table)
Bir fonksiyonun bütün olası girdi kombinasyonlarını ve her biri için çıktıyı sıralayan tablo; n girdi için 2n satırdır.
NAND (NOT-AND)
VE'nin tersi: iki girdi de 1 ise 0, diğer durumlarda 1 veren kapı. Bütün kapılar ondan kurulabilir.
Evrensellik (universality, functional completeness)
Bir kapının (NAND gibi) tek başına bütün Boole fonksiyonlarını kurmaya yetmesi özelliği.
XOR (exclusive or)
İki girdi birbirinden farklıysa 1 veren kapı; "ya biri ya öbürü".
Kaçın: dışlayıcı veya (konuşmada XOR denir)
Seçici (multiplexer, Mux)
Üçüncü bir "seçme" girdisine göre iki girdiden birini çıkışa geçiren kapı.

Bölüm 4 · Kapılardan Hesaba

Elde (carry)
İkilik (ya da onluk) toplamada bir basamağın sığmayan kısmı; bir soldaki basamağa taşınan bit.
Yarım toplayıcı (half adder)
İki biti toplayıp bir toplam biti ve bir elde veren devre (toplam = XOR, elde = VE).
Tam toplayıcı (full adder)
İki bit ile bir önceki basamaktan gelen eldeyi toplayan, toplam ve elde veren devre.
Çok bitlik toplayıcı (multi-bit adder)
Tam toplayıcıları zincirleyerek iki n bitlik sayıyı toplayan devre; eldeler basamaktan basamağa yayılır.
İkiye tümleyen (two's complement)
Negatif sayıları ikilikte yazma yöntemi: n bitte −x, 2n − x olarak saklanır (bitleri ters çevir, 1 ekle). Toplayıcı değişmeden çıkarmayı mümkün kılar.
Kaçın: ikili tümleyen
Taşma (overflow)
Bir hesabın sonucunun, ayrılan bit sayısına sığmaması; işaretli sayıda değer bir uçtan diğer uca sarar.
Kaçın: taşım
Kayan nokta (floating point)
Ondalıklı sayıları işaret, üs ve mantis olarak saklayan gösterim; birçok kesir yalnızca yaklaşık saklanır, bu yüzden 0.1 + 0.2 tam 0,3 olmaz.
Kaçın: yüzen nokta
ALU (Arithmetic Logic Unit)
Toplama, VE gibi aritmetik ve mantıksal işlemleri yapan ve kontrol bitleriyle hangisinin yapılacağı seçilen devre; işlemcinin merkezi.
Kaçın: aritmetik mantık birimi (konuşmada ALU)
Kontrol biti (control bit)
Bir devreye "hangi işlemi yap" diye söyleyen girdi biti; ALU'da altı tanedir.
Kombinasyonel devre (combinational logic)
Çıktısı yalnızca o anki girdilere bağlı olan, hafızası olmayan devre; kapılar, toplayıcılar ve ALU böyledir.
Kaçın: birleşimsel devre

Bölüm 5 · Hafıza

Ardışık devre (sequential logic)
Davranışı yalnızca anlık girdilere değil, saklanmış önceki duruma da bağlı devre. Hesapların sonucunu sonraki adımlara taşıyabilir.
Kaçın: sıralı program ile karıştırma; karşıtı kombinasyonel devredir.
Geri besleme (feedback)
Bir çıkışın giriş tarafındaki yola yeniden katılması. Saatli bellek modelinde eski değer saklama elemanı üzerinden sonraki adımın hesabına döner; rastgele geri bağlantı kurmak tek başına kullanışlı bellek oluşturmaz.
Mandal (latch)
Ele alınan D tipi modelde etkinleştirme açıkken veri girişini izleyen, kapandığında son değeri tutan saklama elemanı.
Kaçın: kenar tetiklemeli flip-flop ile eş anlamlı kullanma.
Flip-flop (flip-flop)
Bu bölümün kenar tetiklemeli D tipi modelinde, veriyi saat sinyalinin belirli geçişinde kabul eden bitlik saklama elemanı. Nand2Tetris'in DFF arayüzü bunu zaman adımlarıyla modeller.
Saat sinyali (clock)
Düşük ve yüksek düzeyler arasında düzenli geçiş yaparak saatli devrelerin adımlarını eşgüdümleyen sinyal; günün saatini tutmak değildir.
Saat çevrimi (clock cycle)
Saat sinyalinin bir tam tekrarı. Bir çevrim, genel olarak bir kaynak kod satırı veya tek bir tamamlanmış makine komutu demek değildir.
Saat hızı (clock speed)
Saniyedeki saat çevrimi sayısı. GHz, saniyede bir milyar çevrim birimidir; tek başına programın bitiş süresini söylemez.
Yazmaç (register)
Bir değerin bit desenini tutan küçük saklama birimi. CPU bağlamında işlemci içindeki yakın çalışma alanlarını anlatır; Nand2Tetris'in soyut RAM tasarımı aynı saklama arayüzünü çok sayıda birime genişletir.
Kaçın: kayıtçı; RAM'in tamamını CPU yazmaçlarıyla özdeşleştirme.
RAM (Random Access Memory)
Konumları adresle doğrudan seçilebilen bellek. Bu bölümün RAM modelinde okuma seçilmiş içeriği verir, yazma o içeriği değiştirir. “Random”, rastgele veri üretmek anlamına gelmez.
Adres (address)
Bellekte hangi konumun seçileceğini belirleyen sayı; orada saklanan değerle aynı şey değildir. Hack'te adreslenen birim 16 bitlik sözcük, byte adresli modelde bir byte'tır.
Kaçın: dosya yolu veya web URL'si ile karıştırma.
Bellek hücresi (memory cell)
Fiziksel belleğin en küçük saklama elemanı için kullanılan ad; çoğu açıklamada tek bit tutar. Adresle seçilen birim bunun birden fazlasını içerebilir.
Okuma (read)
Seçilmiş bellek konumundaki içeriği almak; kaynak değeri silmek değildir.
Yazma (write)
Seçilmiş bellek konumuna yeni değeri kabul ettirmek. Saatli öğretim modelinde adres, veri ve yazma izni birlikte sunulur; değişiklik sonraki adımda görünür.
Uçucu bellek (volatile memory)
Güç kesilince içeriğini koruyamayan bellek; DRAM ve SRAM bu sınıftadır. “Statik RAM” elektrik olmadan saklayan bellek demek değildir.
SRAM (Static Random Access Memory)
Güç varken bitleri kararlı devre durumlarında tutan RAM teknolojisi; DRAM'deki gibi periyodik yenileme istemez, ama güç kesilince bilgiyi kaybeder. CPU önbelleklerinde kullanılır.
DRAM (Dynamic Random Access Memory)
Bilgiyi korumak için güç varken bile düzenli yenileme gereken RAM teknolojisi; ana bellekte yaygındır. Sıradan flip-flop dizileriyle aynı fiziksel düzen değildir.
Durum (state)
Sistemin sonraki davranışını etkileyen saklanmış bilgiler. Devre düzeyinde tutulan bitler, program düzeyinde puan, can ve soru konumu gibi anlamlı değerleri temsil edebilir.
Bölüm 31'deki durum, aynı fikrin React bileşenindeki özel kullanımıdır.

Bölüm 6 · İşlemci

İşlemci (Central Processing Unit, CPU)
Programın makine komutlarını yürüten donanım. Hesap birimleri, yazmaçlar ve kontrol düzeniyle komutları fiziksel eylemlere dönüştürür.
Depolanmış program (stored-program)
Komutların da veri gibi bellekte bit desenleri olarak tutulması fikri. Başka bir program yüklemek, temel hesap devrelerini yeniden bağlamadan makinenin görevini değiştirmeyi sağlar.
Von Neumann mimarisi (von Neumann architecture)
CPU'nun bellekteki komutları getirip veriler üzerinde yürüttüğü temel bilgisayar modeli. Klasik anlatımda komut ve veri ortak bellektedir; Hack öğretim makinesi ayrı komut/veri bellekleri kullanan bir çeşitlemedir.
Harvard mimarisi (Harvard architecture)
Komut ve veri için ayrı bellek yolları veya depolar kullanan düzen. Bu ayrım, programın bitlerle saklanması fikrini ortadan kaldırmaz.
Getir–çöz–çalıştır döngüsü (fetch–decode–execute cycle)
Komutu alma, bitlerinin istediği işi çözme ve bu işi yürütme akışı. İşlevsel sıra, her aşamanın mutlaka ayrı bir saat çevrimi sürdüğü iddiası değildir.
Program sayacı (program counter, PC)
Komut akışında kullanılacak adresi tutan özel yazmaç. Normal ilerleme veya atlama, sonraki getirmenin adresini günceller; yalnızca tamamlanan iş sayısını saymaz.
Kontrol birimi (control unit)
Komut alanlarını ALU seçimi, yazmaç yükleme izni, bellek yazması ve sonraki adres seçimi gibi donanım sinyallerine dönüştüren düzen.
Veri yolu (bus)
Bileşenler arasında adres, veri ve kontrol sinyallerini taşıyan bağlantı düzeni. Kitaptaki ad genel bus kavramını karşılar; yalnızca veri değerinin taşındığı tellerle sınırlı değildir.
Komut seti mimarisi (instruction set architecture, ISA)
Yazılımın gördüğü makine sözleşmesi: komutlar, yazmaçlar ve bu komutların görünür etkileri. İşlemcinin bütün iç devre tasarımı değildir.
Mikromimari (microarchitecture)
ISA sözleşmesinin işlemci içinde nasıl gerçeklendiği; hesap birimleri, boru hattı ve önbellek tasarımı gibi kararlar. Aynı ISA'nın farklı mikromimarileri olabilir.
Boru hattı (pipeline)
Farklı komutların işlenme aşamalarını örtüştüren düzen; bir komut çözülürken başka komutun getirilmesi ilerleyebilir. Çok çekirdekle aynı kavram değildir.
RISC ve CISC (Reduced / Complex Instruction Set Computing)
Daha sade temel komutlarla hızlı gerçekleme ile daha zengin komutlarla çok iş tarif etme yaklaşımlarının tarihsel ayrımı. İsimler tek başına performans sıralaması vermez.
Çekirdek (işlemci) (core)
Kendi komut akışını getirebilen işlem birimi.
İşletim sisteminin çekirdeği (kernel) ile karıştırma.
Çok çekirdek (multi-core)
Aynı işlemci düzeninde birden fazla çekirdeğin bulunması; uygun biçimde bölünmüş işlerin aynı anda ilerlemesine imkân verir.
Paralellik (parallelism)
İşlerin gerçekten aynı anda yürütülmesi. Seri sonuç bağımlılıkları, daha çok çekirdekle kendiliğinden ortadan kalkmaz.
GPU (Graphics Processing Unit)
Grafik işlemlerinden doğan, çok sayıda uygun paralel hesapta yüksek toplam işlem üretimine odaklanan işlemci. Her işte daha hızlı CPU anlamına gelmez.
İkili uyumluluk (binary compatibility)
Hazır çalıştırılabilir dosyanın hedef ortamda çalışabilmesiyle ilgili uyum. ISA yanında işletim sisteminin dosya ve hizmet sözleşmeleri de önemlidir.
Rosetta 2 (Rosetta 2)
Apple silicon Mac'te x86_64 için hazırlanmış Mac kodunu çevirerek çalıştıran mekanizma. Genel olarak Windows uygulamasını Mac uygulamasına dönüştürmez.
Evrensel ikili dosya (universal binary)
Burada Apple'ın biçimiyle, x86_64 ve arm64 için ayrı makine kodu dilimleri içeren tek dosya; uygun yerel dilim seçilir. İki mimarinin aynı makine dilini kullandığı anlamına gelmez.

Bölüm 7 · Makine Dili ve Assembly

Makine kodu (machine code)
Belirli ISA'ya göre anlam kazanan ve CPU'nun yürüttüğü komut bitleri. Aynı bit deseni farklı ISA'larda aynı komut olmak zorunda değildir.
İşlem kodu (opcode)
Komutun işlem türünü belirleyen alan. Alanın genişliği ve diğer alanlarla ilişkisi ISA'ya bağlıdır.
İşlenen (operand)
Bir komutun kullandığı değer, yazmaç veya bellek konumu gibi unsur. Bazı işlenenler açık yazılır, bazıları komutun tanımından gelir.
Kaçın: operant.
Assembly (assembly language)
Makine işlemlerinin bitler yerine okunabilir sembollerle yazıldığı düşük seviyeli dil. Hedef ISA'ya bağlıdır.
Dil olan assembly ile çeviren araç assembler'ı ayır.
Assembler (assembler)
Assembly metnini hedefin makine komutlarına çeviren program. Sembolleri ve etiket adreslerini çözer; CPU'nun kendisi değildir.
Hack makinesi (Hack computer)
Nand2Tetris'in 16 bitlik öğretim bilgisayarı. A ve D çalışma yazmaçlarıdır; M, A'nın seçtiği veri belleği konumunun içeriğini gösterir. “Hack” bu bağlamda makinenin özel adıdır.
Etiket (label)
Assembly programında bir komut konumuna verilen sembolik ad. Hack'te (SON) gibi bildirimler kendi başlarına makine komutu üretmez.
Yükle/sakla (load/store)
Bellekten yazmaca değer alma ve yazmaçtan belleğe değer yazma işleri. Komutların özel adları ISA'ya göre değişir.
Atlama (jump)
Normal sıradaki komut yerine başka komut adresinden devam etme. Koşulsuz atlama her yürütüldüğünde belirtilen hedefi seçer.
Dallanma (branch)
Bu kitapta özellikle koşula göre komut akışının seçilmesi; örneğin sonuç sıfırsa başka adrese geçmek. Bazı belgelerde atlama ile örtüşen daha geniş kullanımı vardır.

Bölüm 8 · Bellek Hiyerarşisi

Bellek hiyerarşisi (memory hierarchy)
Farklı hız, kapasite ve byte başına maliyete sahip saklama düzeylerini birlikte kullanma düzeni. Küçük hızlı alanlar, daha büyük kaynakların kullanılacak bölümünü yakında tutar.
Gecikme (latency)
Bir erişimin veya isteğin sonucunu almak için geçen bekleme süresi. Birim zamanda taşınabilecek veri miktarı olan bant genişliğiyle aynı değildir.
Bant genişliği (bandwidth)
Bir iletişim yolunun birim zamanda taşıyabileceği veri miktarıyla ilgili kapasite; ilk veriyi bekleme süresini tek başına belirlemez.
Önbellek (cache)
Daha büyük veya daha uzaktaki kaynaktan alınan verinin bir bölümünü daha hızlı ya da daha yakın erişilebilen yerde tutan alan. CPU, tarayıcı ve uygulama önbelleklerinin birimleri ve yönetimi farklıdır.
İsabet (hit)
İstenen verinin aranan önbellek düzeyinde bulunması.
Iska (miss)
İstenen verinin aranan önbellek düzeyinde bulunamaması; sonraki kaynağa başvurulur. Verinin bütün sistemden silindiği anlamına gelmez.
Yerellik (locality)
Programların yakın zamanda kullandıkları veya adresçe yakın duran bilgilere yeniden yönelme eğilimi; önbelleğin yararının temelidir.
Zamansal yerellik (temporal locality)
Aynı veri veya komutların kısa süre içinde tekrar kullanılması; döngünün aynı komutlarına dönmek gibi.
Mekânsal yerellik (spatial locality)
Bir adrese erişimin ardından yakın adreslere erişme eğilimi; yan yana değerleri sırayla okumak gibi.
Önbellek satırı (cache line)
CPU önbelleğiyle alt bellek düzeyi arasında birlikte taşınan bitişik veri bloğu. Boyu donanıma bağlıdır; 64 byte bir örnektir, evrensel sabit değildir.
Kalıcı depolama (persistent storage)
Güç kapandıktan sonra da bilgiyi korumayı amaçlayan saklama alanı. “Kalıcı”, silinemez veya bozulamaz demek değildir.
HDD (Hard Disk Drive)
Veriyi dönen plakaların manyetik yüzeylerinde saklayan aygıt. Erişimde kafanın konumlanması ve plakanın dönmesi beklenebilir.
Flash bellek (flash memory)
Güç olmadan veriyi koruyan, elektronik olarak silinip yeniden yazılabilen bellek teknolojisi. Yazma/silme dayanımı sınırlıdır.
SSD (Solid-State Drive)
Bu bölümde ele alınan biçimiyle flash bellek ve denetleyiciler kullanan kalıcı depolama aygıtı. Dönen plaka içermez; RAM ile aynı erişim özelliklerine sahip değildir.
Tarayıcı önbelleği (browser cache)
Tarayıcının aldığı uygun web yanıtlarını yeniden kullanmak üzere tutması. CPU önbellek satırlarıyla aynı birim veya aynı yönetim düzeni değildir.
İçerik dağıtım ağı (Content Delivery Network, CDN)
İçerik kopyalarını farklı konumlardaki sunucularda tutup kullanıcıya uygun yakın noktadan sunmayı amaçlayan düzen. Her kişisel verinin ortak kopyalanabileceği anlamına gelmez.

Bölüm 9 · İlk Gerçek Dil: C

Kaynak kod (source code)
İnsanın yazdığı, okunabilir komut listesi; derleyiciye girdi olur.
Kaçın: sadece "kod" (belirsizse "kaynak kod" denir)
Derleyici (compiler)
Kaynak kodu makine koduna çeviren program; dilin kurallarına uymayan yerleri hata olarak bildirir.
Derleme (compiling)
Kaynak kodun çalıştırılabilir dosyaya dönüştürülmesinin tamamı; dört aşamadan oluşur: ön işleme, derleme (assembly üretme), assembly (nesne kodu üretme), bağlama. Dar anlamda yalnızca ikinci aşamayı da kasteder.
Çalıştırılabilir dosya (executable)
Derlemenin çıktısı; işletim sisteminin belleğe yükleyip çalıştırabileceği, makine kodu içeren dosya.
Kaçın: "exe" (yalnızca Windows uzantısıdır)
Sözdizimi (syntax)
Bir programlama dilinde kodun nasıl yazılacağını belirleyen kuralların bütünü.
Başlık dosyası (header file)
Hazır fonksiyonların adlarını ve nasıl çağrılacaklarını bildiren dosya, ör. stdio.h; ön işleme sırasında kaynağa eklenir. Fonksiyonun gerçek kodunu içermez, bkz. kütüphane.
Kütüphane (library)
Başkasının yazıp hazır bıraktığı, derlenmiş kod koleksiyonu; bağlama aşamasında programa eklenir.
Kaçın: kitaplık
Tip (type)
Bir değişkenin bellekteki bitlerinin nasıl okunacağını ve ne kadar yer kaplayacağını belirleyen etiket: int, char, float, bool. Bölüm 2'deki veri tipi fikrinin programdaki hali.
Atama (assignment)
Sağdaki değeri soldaki değişkene yazan işlem (=); eşitlik sorusu değildir, o == ile sorulur.
Parametre ve argüman (parameter, argument)
Parametre, fonksiyonun tanımında yazılan girdi adıdır; argüman, çağrıda ona verilen gerçek değerdir.
Dönüş değeri (return value)
Bir fonksiyonun çalışmasını bitirince çağıran yere geri verdiği değer (return).
Ön işleme (preprocessing)
Derlemenin ilk aşaması: #include gibi satırlar metin olarak işlenir, başlık dosyalarının içeriği kaynağa kopyalanır.
Nesne kodu (object code)
Assembler'ın ürettiği makine kodu; henüz başka dosyalara ve kütüphanelere bağlanmadığı için tek başına çalıştırılamaz.
Kaçın: obje kodu
Bağlama (linking)
Nesne dosyalarını ve kütüphane kodunu tek bir çalıştırılabilir dosyada birleştiren, derlemenin son aşaması.
Kaçın: linkleme
Sözdizimi hatası (syntax error)
Dilin yazım kuralına aykırı kod; derleyici yakalar ve program oluşmaz.
Çalışma zamanı hatası (runtime error)
Program başladıktan sonra, çalışırken ortaya çıkan ve genellikle programın durmasına yol açan hata.
Mantık hatası (logic error)
Program geçerlidir ve çökmez ama istenenden farklı sonuç verir; hiçbir araç kendiliğinden uyarı vermez.
Hata ayıklama (debugging)
Bir hatanın yerini bulup düzeltme işi; yöntemleri: printf ile değer yazdırmak, hata ayıklayıcı kullanmak, sorunu yüksek sesle anlatmak.
Kaçın: debug etmek (konuşmada geçebilir)
Hata ayıklayıcı (debugger)
Programı satır satır yürütmeye, kesme noktasında durdurmaya ve değişkenlerin değerlerini görmeye yarayan araç.

Bölüm 10 · C ile Belleğe Dokunmak

Dizi (array)
Aynı tipten değerlerin bellekte art arda, yan yana saklandığı yapı; skor[i], "başlangıç adresi + i × hücre boyu" hesabıdır.
Kaçın: tablo, liste (liste ayrı bir veri yapısıdır, bkz. Bölüm 11)
İndeks (index)
Bir dizide kaçıncı hücreye bakılacağını söyleyen, sıfırdan başlayan sayı. Veritabanındaki dizin için de aynı sözcük kullanılır, ama bağlam farklıdır (bkz. Bölüm 38).
Karakter dizisi (string)
C'de char'lardan oluşan ve sonunda \0 bulunan dizi; başka dillerde yazı ya da metin değeri.
Kaçın: katar, dizge; "yazı" günlük kullanımda geçebilir
Sonlandırıcı (NUL terminator, \0)
Karakter dizisinin bittiğini gösteren, değeri 0 olan özel karakter. Bir dizinin boyu, strlen'in bulduğu uzunluktan 1 fazladır. NULL ile karıştırılmamalıdır.
İşaretçi (pointer)
Bir değerin bellek adresini saklayan değişken; &n n'in adresini verir, *p p'nin gösterdiği adresteki değere gider. 64 bitlik makinede 8 byte yer kaplar.
Kaçın: gösterici; konuşmada "pointer" denebilir
Yığın (stack)
Fonksiyon çağrılarının çerçevelerini (dönüş adresi, argümanlar, yerel değişkenler) otomatik ayıran ve geri veren bellek bölgesi; son giren ilk çıkar. Aynı sözcük, Bölüm 11'deki yığın veri yapısı için de kullanılır; ikisi ilişkilidir ama aynı şey değildir.
Kaçın: "stack" (yazımda)
Öbek (heap)
Çalışma sırasında malloc ile istek üzerine bellek ayrılan, ömrünü programcının belirlediği bellek bölgesi.
Kaçın: "heap" (yazımda); yığın ile karıştırma
malloc ve free
C'de öbekten belirli büyüklükte bellek ayıran (malloc) ve işi bitince onu geri veren (free) kütüphane fonksiyonları.
Bellek sızıntısı (memory leak)
Ayrılan belleğin geri verilmemesi; program çalıştığı sürece o bellek kullanılamaz kalır ve program zamanla şişer. Hata mesajı vermez.
Arabellek taşması (buffer overflow)
Ayrılmış bir bellek bloğunun sınırının ötesine yazmak ya da okumak; öbekte (heap overflow) ya da yığında (stack overflow) olabilir.
Kaçın: tampon taşması
Segmentation fault
Bir programın kendisine ait olmayan belleğe dokunması üzerine işletim sisteminin onu durdurması.
Kaçın: segment hatası (kitapta özgün adı kullanılır)
Bellek güvenliği (memory safety)
Bir programın yalnızca kendisine ayrılmış belleğe dokunmasının dil tarafından güvence altına alınması; çöp toplayıcı, sahiplik kuralları ya da pointer aritmetiğinin çıkarılması gibi yollarla sağlanır.
Çöp toplayıcı (garbage collector)
Çalışma sırasında artık erişilemeyen belleği bulup otomatik olarak geri veren sistem (JavaScript, Go).
Kaçın: çöp toplama sistemi
Sahiplik (ownership)
Rust'ın bellek yönetimi yaklaşımı: her değerin tek bir sahibi vardır ve sahibi kapsam dışına çıkınca değer atılır; kurallar derleme zamanında denetlenir.
Değer ve referans (value vs reference)
Değer, verinin kendisinin kopyalanmasıdır; referans (başvuru), verinin kendisine giden yolun kopyalanmasıdır. JavaScript'te ilkel değerler değer olarak, nesneler referans olarak kopyalanır.
Kaçın: "by reference" (yazımda)
Yüzeysel ve derin kopya (shallow copy, deep copy)
Yüzeysel kopya, nesnenin yalnızca en üst düzey özelliklerini kopyalar; iç içe nesneler orijinalle ortak kalır. Derin kopya, her şeyi bağımsız olarak kopyalar (JavaScript'te structuredClone).

Bölüm 11 · Veri Yapıları ve Algoritmalar

Veri yapısı (data structure)
Verinin bellekte nasıl örgütlendiğini belirleyen düzen; hangi erişimin ucuz olduğunu etkiler.
Kaçın: veri tipi ile eşitlemek
Zaman karmaşıklığı (time complexity)
Tanımlı temel işlemlerin miktarının girdi büyüklüğüyle nasıl değiştiği.
Kaçın: doğrudan saniye sayısı
Büyük O gösterimi (big-O notation)
Girdi büyürken iş miktarının büyümesine asimptotik bir üst sınır verir; sabit çarpanları gizler.
Kaçın: tek makine komutunun süresi
Doğrusal arama (linear search)
Öğeleri sırayla karşılaştırır; en kötü durumda bütün öğelere bakar.
Kaçın: lineer arama (kitapta doğrusal)
İkili arama (binary search)
Sıralı veri üzerindeki aday aralığını ortadaki öğeyle karşılaştırarak daraltır.
Kaçın: sırasız veriye koşulsuz kullanmak
Seçmeli sıralama (selection sort)
Kalanların en küçüğünü seçip sıradaki konuma getirerek ilerler.
Kaçın: seçim sıralaması
Kabarcık sıralama (bubble sort)
Ters sıradaki komşu çiftleri yer değiştirerek düzenler.
Kaçın: erken durma özelliğini her sürüme atfetmek
Birleştirmeli sıralama (merge sort)
Küçük sıralı parçaları birleştirerek bütünü sıralar; standart zaman büyümesi O(n log n).
Kaçın: birleştirme işlemiyle aynı şey saymak
Özyineleme (recursion)
Fonksiyonun aynı işi küçülen girdiler için kendisini çağırarak tarif etmesi.
Kaçın: her durumda hızlandırma sanmak
Taban durumu (base case)
Özyinelemede yeni çağrı yapmadan cevap verilen durma koşulu.
Kaçın: taban adresi
Bağlı liste (linked list)
Düğümleri, bir sonrakinin adresini tutan bağlantılarla birbirine bağlayan yapı.
Kaçın: dizi ile eşitlemek
Düğüm (node)
Bağlı liste veya ağaç gibi bir yapının veri ve bağlantı tutan parçası.
Kaçın: Node.js çalışma ortamıyla karıştırmak
Ağaç (tree)
Bir kökten alt düğümlere dallanan hiyerarşik yapı; her ağaç sıralı arama ağacı değildir.
Kaçın: her ağacı dengeli sanmak
İkili arama ağacı (binary search tree)
Küçük ve büyük değerleri uygun alt dallara ayıran arama düzeni; verim ağaç yüksekliğine bağlıdır.
Kaçın: B-tree ile birebir eşitlemek
Karma tablo (hash table)
Anahtardan hesaplanan bölme üzerinden adayları daraltan veri yapısı; çakışmaları ele alır.
Kaçın: her girdide kesin O(1) demek
Karma fonksiyonu (hash function)
Bu bölümde bir anahtardan tablo bölmesini seçmekte kullanılacak sayıyı üretir.
Kaçın: parola saklamaya yeterli sanmak
Çakışma (collision)
Farklı anahtarların aynı karma tablo bölmesine yönelmesi.
Kaçın: anahtarlar eşittir sonucunu çıkarmak
Kuyruk (queue)
İlk giren ilk çıkar (FIFO) davranışı sunan veri düzeni; ekleme enqueue, çıkarma dequeue.
Kaçın: bütün gerçeklemeleri bağlı liste sanmak
Yığın (stack)
Son giren ilk çıkar (LIFO) davranışı sunan veri yapısı; push ekler, pop çıkarır.
Kaçın: bellek yığını veya teknoloji yığınıyla eşitlemek

Bölüm 12 · Açılış: Firmware ve Önyükleme

Önyükleme (booting)
Donanımın ilk kodundan işletim sisteminin başlamasına uzanan hazırlık ve kontrol devirleri.
Kaçın: yalnızca masaüstünün görünmesi
Salt okunur bellek (read-only memory, ROM)
Olağan yürütmede yeniden yazılan RAM’den farklı bellek sınıfı; Apple Boot ROM örneğinde kod üretimde yerleştirilir ve değişmezdir.
Kaçın: bütün firmware depolamasını değişmez sanmak
Açılış ROM’u (Boot ROM)
Apple örneğinde üretimde yerleştirilmiş, ilk çalıştırılan ve güven kökü olan değişmez kod.
Kaçın: güncellenebilir iBoot ile eşitlemek
BIOS (Basic Input/Output System)
Geleneksel PC sistemlerinde başlangıç hazırlığı, testler ve önyüklemeyle ilgili gömülü yazılım düzeni.
Kaçın: yalnızca ayar ekranı
UEFI (Unified Extensible Firmware Interface)
Platform gömülü yazılımı ve işletim sistemi yükleyicileri arasında ortak açılış ortamı ve arayüz tanımı.
Kaçın: yalnızca fareli BIOS ekranı
Açılış testi (power-on self-test, POST)
Açılışta yapılan başlatma denetimleri ve tanı testleri; kapsamı ve hata kodları sisteme bağlıdır.
Kaçın: bütün donanım için eksiksiz sağlamlık ispatı
Önyükleme yöneticisi (boot manager)
Önyükleme seçeneklerini belirli sırayla değerlendiren ve sonraki yükleyiciyi seçen bileşen.
Kaçın: önyükleyici ile her bağlamda eşitlemek
Önyükleyici (bootloader)
İşletim sisteminin başlangıcını hazırlayan, gerekli parçaları yükleyip sonraki aşamaya yürütme veren program.
Kaçın: bütün kullanıcı programlarını yöneten çekirdek
Çalışma zamanı servisleri (runtime services)
UEFI’de açılış servislerinden ayrı olarak işletim sistemi devraldıktan sonra da tanımlı koşullarla kullanılabilen hizmetler.
Kaçın: ExitBootServices sonrasında hiçbir firmware hizmeti kalmaz demek
Güvenli önyükleme (secure boot)
Başlatılan bileşenleri geçerli güven politikasına göre doğrulayan açılış düzeni.
Kaçın: şifreleme veya hatasızlık garantisi
Güven zinciri (chain of trust)
Güvenilen bir başlangıçtan sonra her aşamanın sonraki aşamayı doğrulaması.
Kaçın: yalnızca dosya adını kontrol etmek
Dijital imza (digital signature)
İçeriğin ilgili anahtarla imzalandığını ve imzalanan içeriğin değişmediğini denetleyen kriptografik mekanizma.
Kaçın: içeriği gizlemekle eşitlemek
Donanımsal güven kökü (hardware root of trust)
Güven zincirinin temel kabul ettiği donanıma dayalı başlangıç; Apple örneğinde değişmez Boot ROM kodu.
Kaçın: başlangıç güveninin kendiliğinden oluştuğunu sanmak

Bölüm 13 · İşletim Sistemi

İşletim sistemi (operating system, OS)
Programların kaynak kullanımını düzenleyen ve donanımın üstünde ortak hizmetler sunan yazılım bütünü.
Kaçın: yalnızca masaüstü görünümü
Sanallaştırma (virtualization)
Fiziksel kaynakları programlara kullanışlı mantıksal görünümlerle sunmak; CPU ve bellek paylaşımı bunun temel örnekleridir.
Kaçın: yalnızca ikinci işletim sistemi çalıştırmak
Eşzamanlılık (concurrency)
Birden çok işin ilerlemesini iç içe yönetme; aynı anda fiziksel yürütme şart değildir.
Kaçın: paralellikle eşitlemek
Kalıcılık (persistence)
Veriyi geçici çalışma belleğinden daha uzun süre kullanılabilecek biçimde saklama konusu.
Kaçın: her yazma çağrısını elektrik kesintisine dayanıklılık sözü sanmak
Çekirdek (kernel)
İşletim sisteminin ayrıcalıklı kaynak yönetimi yapan merkezi.
Kaçın: masaüstü veya bütün sistem programlarıyla eşitlemek
Kullanıcı alanı (user space)
Olağan uygulamaların çekirdeğin korunan tarafı dışında çalıştığı alan.
Kaçın: ekrandaki kullanıcı klasörü
Ayrıcalık seviyeleri (privilege levels)
Donanımın hangi işlemlere hangi yürütme yetkisinde izin verildiğini ayıran düzeyler.
Kaçın: hesap adıyla eşitlemek
Kullanıcı modu (user mode)
Olağan programların kısıtlı donanım yetkisiyle yürüdüğü mod.
Kaçın: insanın bilgisayarı kullanıyor olması
Çekirdek modu (kernel mode)
Çekirdek kodunun ayrıcalıklı işlemleri yürütebildiği CPU çalışma modu.
Kaçın: yönetici hesabıyla birebir eşitlemek
Sınırlı doğrudan yürütme (limited direct execution)
Uygulama komutlarını doğrudan CPU’da yürütürken donanım sınırlarıyla kontrolü koruma yaklaşımı.
Kaçın: her komutu çekirdeğin yorumlaması
Sistem çağrısı (system call)
Programın çekirdeğin tanımlı hizmetini denetimli geçişle istemesi.
Kaçın: her fonksiyon çağrısı
Tuzak (trap)
Bu modelde programdan tanımlı çekirdek girişine denetimli geçiş mekanizması; sistem hizmeti istemekte kullanılır.
Kaçın: rastgele çekirdek adresine atlama
Kaynak yönetimi (resource management)
Sınırlı CPU, bellek ve aygıt erişimini işler arasında düzenleme.
Kaçın: yalnızca RAM boşaltma
Mekanizma (mechanism)
Bir sistem işinin nasıl yapılabildiğini sağlayan düzenek.
Kaçın: hangi işin seçileceğini belirleyen politikayla eşitlemek
Politika (policy)
Mevcut mekanizmalarla hangi seçimin ne zaman yapılacağını belirleyen kural.
Kaçın: yalnızca güvenlik ayarı
Yalıtım (isolation)
İşletim sistemi bağlamında bir programın izinsiz etkisinin diğer programlara ve çekirdeğe yayılmasını sınırlandırma.
Kaçın: uygulamadaki bütün hataları yakalama garantisi

Bölüm 14 · Süreçler ve İş Parçacıkları

Süreç (process)
Bir programın çalışan örneği; bellek görünümü, yürütme konumu ve kaynak durumuyla birlikte ele alınır.
Kaçın: kullanıcı hesabı veya giriş oturumu
Süreç kimliği (process identifier, PID)
İşletim sisteminin çalışan bir süreci ayırt etmekte kullandığı sayısal kimlik.
Kaçın: uygulamanın kalıcı kullanıcı kimliği
Bağlam değişimi (context switch)
Bir yürütmenin durumunu saklayıp başka yürütmenin durumunu yükleyerek devam ettirme.
Kaçın: programı baştan başlatmak
Zamanlayıcı (scheduler)
Hazır yürütmeler arasında sırada hangisinin işlemci alacağını seçen işletim sistemi bileşeni.
Kaçın: zamanlayıcı donanımıyla eşitlemek
Zaman dilimi (time slice, scheduling quantum)
Bir işin yeniden değerlendirilmeden önce kullanabileceği zaman bütçesi.
Kaçın: bütün işletim sistemlerinde tek sabit süre
Dönüşümlü zamanlama (round-robin scheduling)
Hazır işlere sırayla zaman dilimleri veren öğretici zamanlama politikası.
Kaçın: her gerçek zamanlayıcının değişmez politikası
Hazır (ready)
Yürütülebilecek durumda olduğu halde henüz işlemciye seçilmemiş işin durumu.
Kaçın: bekliyor ile eşitlemek
Çalışıyor (running)
İşin o anda işlemcide komut yürüttüğü durum.
Kaçın: var olan bütün süreçler
Bekliyor (blocked)
Devam edebilmek için giriş/çıkış sonucu gibi bir olayın tamamlanmasını bekleyen işin durumu.
Kaçın: yalnızca sıra beklemek
İş parçacığı (thread)
Süreç içindeki yürütme akışı; kendi program sayacı, yazmaç durumu ve yığını vardır, adres alanını diğerleriyle paylaşır.
Kaçın: süreçle eşitlemek
Paralellik (parallelism)
Birden çok işin fiziksel olarak aynı anda yürütülmesi.
Kaçın: eşzamanlılıkla eşitlemek
Yarış durumu (race condition)
Sonucun işlerin istenmeyen iç içe geçiş sırasına bağlı olarak yanlış olabildiği durum.
Kaçın: yalnızca çok çekirdekte olur demek
Kaybolan güncelleme (lost update)
Aynı eski değerden üretilen yazmalardan birinin diğer değişikliği yansıtmadan üstüne yazması.
Kaçın: aritmetik toplama hatası
Kritik bölüm (critical section)
Ortak durum üzerinde başka ilgili erişimlerle karışmaması gereken adımlar bütünü.
Kaçın: yalnızca son atama satırı
Kilit (lock)
Ortak duruma erişimi protokolle düzenleyen eşgüdüm aracı.
Kaçın: rastgele bir Boole değişkeniyle eşitlemek
Karşılıklı dışlama (mutual exclusion)
Korunan ilgili bölümde aynı anda en fazla bir işin bulunması güvencesi.
Kaçın: bütün programın tek iş yapması
Mutex (mutual exclusion lock)
Karşılıklı dışlama sağlayan kilit; ilgili erişimler aynı protokolü izlemelidir.
Kaçın: tek süreçteki kilidi bütün sunucular için güvence sanmak
Olay döngüsü (event loop)
JavaScript bağlamında hazır işlerin sıraya alınıp yürütülmesini düzenleyen çalışma modeli.
Kaçın: işletim sistemi zamanlayıcısıyla eşitlemek
Eşzamansız (asynchronous)
Bir işin sonucu beklenirken mevcut yürütmeyi o sonuca kadar tutmadan daha sonra devam edilecek biçimde düzenlenmesi.
Kaçın: otomatik paralellik
Goroutine (goroutine)
Go çalışma zamanının aynı adres alanında yönettiği eşzamanlı yürütme işi; OS iş parçacıklarına paylaştırılır.
Kaçın: her biri yeni OS iş parçacığı demek

Bölüm 15 · Sanal Bellek

Adres alanı (address space)
Bir sürecin gördüğü, 0'dan başlayan ve yalnızca kendisine ait sanılan bellek dizisi; kod, öbek ve yığın bölgelerini içerir.
Sanal adres (virtual address)
Programın kullandığı adres; fiziksel bellek hücresinin numarası değil, sürecin kendi adres alanındaki numara.
Kaçın: mantıksal adres (OSTEP'te de geçer, bu kitapta sanal denir)
Fiziksel adres (physical address)
RAM'deki gerçek hücrenin numarası; sanal adres çevrilince ortaya çıkar.
Şeffaflık (transparency)
Sanal belleğin hedeflerinden biri: düzeneğin programdan gizli olması; program belleği kendine ait sanır.
Kaçın: açıklık (burada tersi kastedilir: görünmezlik)
Sayfa (page)
Sanal adres alanının sabit boyutlu parçası (çoğu sistemde 4 KB).
Sayfa çerçevesi (page frame)
Fiziksel belleğin sayfayla aynı boyutlu yuvası; bir sanal sayfayı tutabilir.
Sayfalama (paging)
Bellek yönetimini sabit boyutlu sayfalarla yapma yöntemi.
Sanal sayfa numarası (virtual page number, VPN)
Sanal adresin üst kısmı: hangi sayfa olduğunu söyler; çeviride çerçeve numarasına dönüşür.
Sayfa içi konum (offset)
Sanal adresin alt kısmı: sayfanın kaçıncı baytı olduğunu söyler; çeviride değişmez.
Kaçın: ofset
Sayfa tablosu (page table)
Her sürecin sanal sayfa numaralarını fiziksel çerçeve numaralarına çeviren arama tablosu.
Sayfa tablosu girdisi (page table entry, PTE)
Tablonun bir satırı: çerçeve numarası ve geçerli, koruma, bellekte-mi, kirli, erişim bitleri.
Geçerli biti (valid bit)
Sayfanın çevirisi var mı? Kapalıysa erişim işletim sistemine tuzak üretir.
Kirli bit (dirty bit)
Sayfa belleğe getirildiğinden beri değiştirildi mi? Kirli sayfa atılmadan önce diske yazılmalıdır.
Bellek yönetim birimi (memory management unit, MMU)
İşlemcinin içinde, her sanal adresi fiziksel adrese çeviren donanım.
Çeviri önbelleği (translation-lookaside buffer, TLB)
MMU'nun içinde, en çok kullanılan sanaldan fiziksele çevirileri tutan önbellek.
Takas alanı (swap space)
Nadir kullanılan sayfaların RAM'den çıkarılıp yazıldığı diskteki ayrılmış alan.
Sayfa hatası (page fault)
Bellekte olmayan (diske atılmış) bir sayfaya erişilince oluşan istisna; işletim sistemi sayfayı diskten getirir.
Kaçın: bellek hatası
Bellek baskısı (memory pressure)
RAM'in dolmaya başlaması; işletim sistemi sayfaları diske atmak zorunda kalır.
Sayfa değiştirme politikası (page replacement policy)
RAM doluyken hangi sayfanın diske atılacağına karar veren kural.
Çırpınma (thrashing)
Bellek talebi RAM'i çok aştığında sistemin sürekli sayfa yazıp okuyup işi ilerletememesi.
Site yalıtımı (site isolation)
Chrome'un her siteye (iframe'ler dahil) ayrı süreç vermeye çalışması.

Bölüm 16 · Dosyalar ve Dosya Sistemleri

Dosya (file)
Adı olan, okunup yazılabilen bir bayt dizisi; içindekinin ne olduğuna dosya sistemi değil, dosyayı açan program karar verir.
Dizin (klasör) (directory, folder)
Başka dosyaları ve dizinleri içeren kap; içi (ad, inode numarası) çiftlerinden oluşan özel bir dosyadır.
Kök dizin (root directory)
Dizin ağacının en üstündeki dizin; Unix ailesinde /, Windows'ta sürücü harfiyle başlar (C:\).
Yol (path)
Bir dosyaya ağaçta adım adım nasıl gidileceğini söyleyen yazı.
Kaçın: dosya adresi (URL ile karışır)
Mutlak yol (absolute path)
Kök dizinden başlayan, bulunduğun yerden bağımsız yol (/Users/kerem/…).
Göreli yol (relative path)
Bulunduğun yerden başlayan yol (style.css, ../index.html); HTML'deki href çoğu zaman böyledir.
Dosya sistemi (file system)
Diski dosya ve dizinlere çeviren, bunların disk üzerindeki yerini kaydeden veri düzeni ve işletim sistemi kodu (APFS, ext4, NTFS).
Blok (block)
Dosya sisteminin diski böldüğü eşit boyutlu birim (örneğin 4 KB).
İnode (inode, index node)
Bir dosyanın üst verisini (boy, izinler, hangi blokların onun olduğu) tutan kayıt; adı içermez.
Üst veri (metadata)
Verinin kendisi değil, onun hakkındaki bilgi: boy, izin, sahip, blok konumu.
Kaçın: metaveri
Bitmap (bitmap (allocation))
Hangi inode ya da veri bloğunun boş (0) ya da dolu (1) olduğunu gösteren bit dizisi.
Süper blok (superblock)
Dosya sisteminin kendisini anlatan kayıt: kaç inode ve blok var, inode tablosu nerede.
Sabit bağ (hard link)
Aynı inode'u gösteren ikinci bir dizin girdisi; dosya, bütün adları silinince gerçekten silinir.
Bağlama (mount)
Bir dosya sistemini mevcut dizin ağacının bir dizinine takma işlemi (mount); mkfs ise diske boş bir dosya sistemi yazar.
Zorla diske yazma (fsync)
Bir dosyanın bekleyen (tamponlanmış) yazılarını diske zorlayan sistem çağrısı.
Günlükleme (journaling, write-ahead logging)
Değişikliği yapmadan önce günlüğe yazıp kesintide tutarlılığı koruma yöntemi.
Sahip (owner)
Dosyanın izinlerini belirleyen kullanıcı hesabı.
Grup (group)
Aynı izinleri paylaşan kullanıcıların kümesi.
İzin (permission)
Sahip, grup ve diğerleri için okuma (r), yazma (w) ve çalıştırma (x) hakkı; chmod 644 gibi yazılır.
Metin dosyası (text file)
Baytları bir karakter kodlamasıyla (çoğunlukla UTF-8) okunabilen dosya: HTML, CSS, JS, JSON.
İkili dosya (binary file)
Baytları metin değil, kendi dosya biçimine göre düzenlenmiş dosya: resim, PDF, derlenmiş program.

Bölüm 17 · Sürücüler ve Giriş/Çıkış

Giriş/çıkış aygıtı (I/O device)
Bilgisayarın dış dünyayla ya da kalıcı depoyla alışveriş yaptığı parça: klavye, ekran, disk, ağ kartı.
Bkz. 17.1
Veri yolu (bus)
İşlemci, bellek ve aygıtlar arasında veri taşıyan bağlantı; farklı hız ve uzaklık gereksinimleri, kademeli bağlantı düzenlerini yararlı kılar.
Bkz. 17.1
Aygıt yazmacı (device register)
Aygıtın üzerindeki küçük saklama yeri; işletim sistemi aygıtı durum, komut ve veri yazmaçlarına okuyup yazarak yönetir.
Bkz. 17.1
Sektör (sector)
Disk arayüzünün okunup yazılabilen birimi. Seçtiğimiz 512 byte sektör ve 4096 byte dosya sistemi bloğu örneğinde bir blok 8 sektördür; bunlar bütün diskler için zorunlu boyutlar değildir.
Kaçın: blok (dosya sisteminin birimi, sektörün katıdır). Bkz. 17.1
Sürücü (device driver)
İşletim sisteminin içinde, bir aygıtın özgül ayrıntılarını bilen ve onu yöneten yazılım; üst katmanlar aygıt türünden habersiz kalır.
Kaçın: sürücü harfi (C:, Windows'ta disk adı) ile karışır. Bkz. 17.2
Programlanmış giriş/çıkış (programmed I/O, PIO)
Veriyi aygıt ile bellek arasında işlemcinin kendisinin taşıması. Tamamlanma durumunun tekrar tekrar okunması ise ayrı olarak yoklamadır.
Bkz. 17.2
Belleğe eşlenmiş giriş/çıkış (memory-mapped I/O)
Aygıt yazmaçlarının bellek adresleriymiş gibi sunulması; yazmaca yükleme ve saklama komutlarıyla ulaşılır. Alternatifi in/out gibi özel giriş/çıkış komutlarıdır.
Bkz. 17.2
Karakter aygıtı (character device)
Byte akışı gibi, dosyaya benzer biçimde erişilen aygıt (seri port, konsol); ls -l'de ilk harf c.
Bkz. 17.2
Blok aygıtı (block device)
Üzerinde dosya sistemi barındırabilen, bloklar halinde yönetilen aygıt (disk); ls -l'de ilk harf b.
Bkz. 17.2
Ağ arayüzü (network interface)
Ağda veri alışverişi için kullanılan arayüz; Linux modelinde sıradan bir /dev aygıt dosyası değildir. eth0 olası arayüz adlarından biridir.
Kaçın: arayüz (tek başına, yazılım sözleşmesi) ve kullanıcı arayüzü ile karışır. Bkz. 17.2
Ana ve alt numara (major and minor number)
Bir aygıt dosyasının iki numarası: ana numara geleneksel olarak aygıtın sürücüsünü, alt numara hangi aygıt olduğunu belirtir.
Bkz. 17.2
Mekanizma ve politika (mechanism and policy)
Mekanizma hangi yeteneklerin sunulduğu, politika bunların nasıl kullanılacağıdır; sürücü mekanizma sağlar, politikayı üst katmanlar koyar.
Bkz. 17.2
Yüklenebilir modül (loadable kernel module)
Çalışan çekirdeğe sonradan eklenip çıkarılabilen kod; sürücüler tipik örnektir (Linux'ta insmod, rmmod).
Kaçın: modül (JavaScript dosyası, Bölüm 27). Bkz. 17.2
Yoklama (polling)
Aygıtın bitip bitmediğini durum yazmacını tekrar tekrar okuyarak anlamak; basit, ama bekleyen işlemci başka iş yapamaz.
Bkz. 17.3
Kesme (interrupt)
Aygıt gibi bir kaynağın işlemciye olay bildirmesi; işlemci uygun kesme işleyicisine geçer. Her kesme veri aktarımının bittiği anlamına gelmez.
Bkz. 17.3
Kesme işleyicisi (interrupt handler, ISR)
Kesme gelince çalışan işletim sistemi kodu: gerekli durumu işler; bir giriş/çıkış isteğini tamamlayıp bekleyen süreci uyandırabilir.
Bkz. 17.3
Kesme denetleyicisi (programmable interrupt controller, PIC)
Aygıtların kesme hatlarını toplayıp işlemciye ileten anakart çipi.
Bkz. 17.3
Kesme tablosu (interrupt descriptor table)
Her kesmeyi, atlanacak işleyici adresiyle eşleştiren, işletim sisteminin kurduğu tablo.
Bkz. 17.3
Canlı kilitlenme (livelock)
İşletim sisteminin yalnızca kesmeleri işleyip kullanıcı programlarına hiç fırsat verememesi (örneğin yoğun ağ trafiğinde).
Bkz. 17.3
Kesme birleştirme (interrupt coalescing)
Aygıtın kesmeyi biraz bekleyip birkaç tamamlanmış isteği tek kesmede bildirmesi; kesme sayısı düşer, gecikme artar.
Bkz. 17.3
Doğrudan bellek erişimi (direct memory access, DMA)
Veriyi bellek ile aygıt arasında işlemci yerine bir DMA motorunun taşıması; örneğimizde bitince kesme gelir. Yoklama ve kesmenin alternatifi değil, ayrı bir sorunun cevabıdır.
Bkz. 17.3

Bölüm 18 · İşletim Sistemleri Ailesi ve Terminal

Unix
1969'da Bell Laboratuvarları'nda doğan işletim sistemi; bugün "UNIX" sertifikalı bir ticari markadır, sertifikasız benzerlerine "Unix-benzeri" denir.
BSD (Berkeley Software Distribution)
Berkeley'de Unix üzerine geliştirilen sistem ve yazılım ailesi; FreeBSD ve Darwin'in BSD katmanı bu soydandır.
Darwin
Apple'ın macOS ve iOS'un altındaki açık kaynaklı çekirdek sistemi; çekirdeği XNU'dur.
XNU (X is Not Unix)
Darwin'in melez çekirdeği: Mach, FreeBSD bileşenleri ve sürücüler için I/O Kit; macOS ve iOS'ta kullanılır.
Linux
Yalnızca bir çekirdek (GPLv2 altında özgür yazılım); tam bir sistem için araçlarla birleştirilip dağıtım olarak paketlenir.
Dağıtım (distribution)
Linux çekirdeğini kabuk, araçlar ve paket yöneticisiyle paketleyen bütün; örneğin Ubuntu.
Ubuntu
Debian temelli bir Linux dağıtımı.
Android
Linux çekirdeği üzerine HAL, ART ve kendi uygulama çatısını ekleyen açık kaynaklı yazılım yığını.
Windows NT
Windows'un çekirdek soyu: NT Executive ve HAL; Unix ailesinden ayrı kol.
POSIX (Portable Operating System Interface)
Unix tipi sistemler için ortak işletim sistemi arayüzü ve ortamı (sistem çağrıları, kabuk, yardımcı programlar) şartnamesi; IEEE 1003.1 / POSIX.1-2024.
Kabuk (shell)
Yazılan satırı komut olarak yorumlayan program; zsh, bash, PowerShell.
Kaçın: terminal (pencere) ile karıştırma
Terminal (terminal)
Gündelik masaüstü kullanımında tuşları kabuğa ileten ve çıktıyı gösteren terminal uygulaması; tarihte fiziksel klavye ve ekran aygıtıydı. Kabukla aynı program değildir.
Komut satırı arayüzü (command-line interface, CLI)
Komut yazarak kullanılan arayüz.
Grafik kullanıcı arayüzü (graphical user interface, GUI)
Pencere, düğme ve menülerle kullanılan arayüz.
Yerleşik komut (builtin)
Ayrı program değil, kabuğun kendi içinde çalışan komut; örneğin cd.
Ortam değişkeni (environment variable)
Bir programa başlarken verilen ad=değer metin çifti; export kabuk değişkenini çocuk süreçlere geçirir.
PATH (executable search path)
Komutun aranacağı dizinlerin iki nokta üstüste ile ayrılmış listesini tutan ortam değişkeni.
Çıkış durumu (exit status)
Komutun bitince bıraktığı sayı ($?); 0 başarı.
apt (Advanced Packaging Tool)
Debian ve Ubuntu'nun paket yöneticisi komutu. Sistem geneline kurma ve kaldırma yönetici yetkisi ister; bilgi sorgulamak her zaman bu yetkiyi gerektirmez.
Homebrew
macOS, Linux ve WSL için paket yöneticisi; kendi prefix dizinine kurar.
WSL (Windows Subsystem for Linux)
Windows içinde Linux ortamları çalıştıran özellik. WSL 2, Linux çekirdeğini sistemin yönettiği hafif bir sanal makinede yürütür; kullanıcının ayrıca tam bir sanal makine kurmasını gerektirmemesi, hiç sanallaştırma olmadığı anlamına gelmez.

Bölüm 19 · Ağ

Ağ (network)
Aygıtların aralarında veri alışverişi yapabildiği bağlantı düzeni. İnternete çıkış olmadan da yerel ağ kurulabilir.
Kaçın: internet ile eşitleme.
Yerel alan ağı (local area network, LAN)
Ev veya ofis gibi sınırlı bir yerde aygıtların oluşturduğu ağ.
Geniş alan ağı (wide area network, WAN)
Farklı konumlardaki ağların geniş coğrafi alanda birbirine bağlandığı düzen.
Ethernet (Ethernet)
Kablolu yerel bağlantılarda kullanılan ağ teknolojisi ailesi.
Wi-Fi (Wi-Fi)
Aygıtların radyo üzerinden yerel bağlantı kurmasını sağlayan teknoloji. Yerel ağa bağlanmak, dış internet hizmetinin erişilebilir olduğunu tek başına göstermez.
Anahtar (switch)
Yerel ağda gelen iletileri ilgili bağlantıya ileten aygıt.
Kaçın: yönlendiriciyle veya programdaki anahtar–değer çiftiyle karıştırma.
MAC adresi (MAC address)
Yerel bağlantıda ağ arayüzünü ayırt etmek için kullanılan adres. Alan adı veya IP adresiyle aynı görevde değildir.
Yönlendirici (router)
Farklı ağlar arasında paket ileten; hedef ağ adresine göre sonraki bağlantıyı seçen aygıt.
Kaçın: modem veya yazılımdaki sayfa yönlendiricisiyle özdeşleştirme.
Modem (modem)
Ağ verisini erişim hattının gerektirdiği sinyal biçimine, karşı yönde de geri dönüştüren ekipman. Evde aynı kutu yönlendirici ve kablosuz erişim işlevlerini de içerebilir.
Paket (packet)
Ağda taşınmak üzere düzenlenmiş, başlık ve yük içerebilen veri birimi.
Kaçın: yazılım paketi (package) ile karıştırma.
Paket başlığı (packet header)
Taşınan birimin adres ve kontrol bilgileri gibi alanlarını içeren bölüm. HTTP başlığıyla aynı biçime veya aynı sorumluluğa sahip olmak zorunda değildir.
Yük (payload)
Bir iletim biriminin taşıdığı asıl veri. Bir katmanın başlığı, başka bir katmanda yükün içinde bulunabilir.
Paket anahtarlama (packet switching)
Bağlantıları bütün konuşma boyunca tek tarafa ayırmak yerine farklı iletişimlerin paketleri arasında paylaşma yaklaşımı.
Devre anahtarlama (circuit switching)
İletişim boyunca taraflar arasında ayrılmış bir devre kurmaya dayanan yaklaşım.
Gidiş-dönüş süresi (round-trip time, RTT)
Bir mesajın gidip cevabının geri gelmesi için geçen süre. Bant genişliğini artırmak, bu sürenin bütün bileşenlerini ortadan kaldırmaz.
Protokol (protocol)
Tarafların hangi iletiyi hangi biçimde, hangi sırayla değiş tokuş edeceğini belirleyen ortak kurallar.
Katmanlı model (layered model)
İletişim görevlerini, birbirine hizmet sunan sorumluluk düzeylerine ayıran açıklama düzeni.
TCP/IP modeli (TCP/IP model)
Bu kitapta bağlantı, internet, taşıma ve uygulama olarak dört katla anlatılan internet iletişim modeli. Kitabın Kat 0–10 planıyla aynı numaralandırma değildir.
Kapsülleme (encapsulation)
Bir katmanın verisini başka bir katmanın taşıma ve kontrol bilgileriyle sarması.
Çerçeve (frame, networking)
Ethernet gibi bağlantı katmanlarında kullanılan iletim birimi.
Kaçın: videodaki kare veya CSS çerçevesiyle karıştırma.
OSI modeli (Open Systems Interconnection model)
İletişim sorumluluklarını fiziksel, veri bağlantı, ağ, taşıma, oturum, sunum ve uygulama olarak yedi katla inceleyen başvuru modeli.
IP adresi (Internet Protocol address)
IP iletişiminde kaynak ve hedefi belirtmek için kullanılan ağ adresi.
Kaçın: bellek adresi, dosya yolu veya alan adıyla eşitleme.
IPv4 (Internet Protocol version 4)
32 bitlik adres alanına sahip IP sürümü; adresleri yaygın olarak noktalarla ayrılmış dört sayı biçiminde yazılır.
IPv6 (Internet Protocol version 6)
128 bitlik adres alanı kullanan IP sürümü; okunabilir gösteriminde onaltılık gruplar bulunur.
Yönlendirme (routing, networking)
Hedef ağ adresine doğru hangi yoldan devam edileceğini belirleme işi.
Kaçın: uygulama içindeki sayfa yönlendirmesiyle karıştırma.
İnternet servis sağlayıcı (Internet Service Provider, ISP)
Bir ağın başka ağlara erişmesini sağlayan ve dış bağlantıları işleten kuruluş.
Ağ adresi çevirisi (Network Address Translation, NAT)
Yerel adres/port bilgileriyle dış iletişimdeki adres/port bilgileri arasında eşleme kurulabilen düzen.
Port (port)
Taşıma protokolünde hizmetleri ve veri akışlarını ayırt etmeye katılan sayısal alan.
Kaçın: fiziksel bağlantı yuvası veya sürecin değişmez kimliği.
TCP (Transmission Control Protocol)
Uygulamaya güvenilir, sıralı byte akışı sunan taşıma protokolü. Kayıp veriyi yeniden gönderebilir; şifreleme veya verinin uygulamada kaydedilmesi güvencesi değildir.
El sıkışma (handshake)
Tarafların asıl iletişim için gerekli başlangıç bilgilerini karşılıklı iletilerle kurması. TCP ve TLS el sıkışmaları farklı görevler taşır.
UDP (User Datagram Protocol)
Portlar arasında ayrı veri iletileri taşıyan; kendi başına TCP türü sıralama ve yeniden gönderme sunmayan protokol. Üstünde ek hizmetler kurulabilir.
İstemci (client)
Bir iletişimde hizmet isteyen taraf. Her zaman tarayıcı veya ayrı bir fiziksel bilgisayar olmak zorunda değildir.
İstemci–sunucu modeli (client–server model)
Hizmet isteyen istemci ile isteği karşılayan sunucu rollerine dayalı iletişim düzeni. Sunucu süreçle, sunucu makinesi o sürecin üzerinde çalıştığı bilgisayarla ilgilidir.

Bölüm 20 · İnternet ve Web: HTML'e Varış

İnternet (Internet)
Farklı ağları ortak protokollerle birbirine bağlayan altyapı.
Kaçın: web veya Wi-Fi ile eşitleme.
Web (World Wide Web, WWW)
İnternet üzerinde kaynaklara adreslerle erişme ve bağlantılarla aralarında gezinme sistemi. İnternetin bütün hizmetlerini kapsamaz.
Hiper metin (hypertext)
Başka kaynaklara bağlantılar içeren metin.
URL (Uniform Resource Locator)
Bir kaynağa erişmek için kullanılan adres gösterimi; şema, alan adı, port, yol, sorgu ve parça gibi bileşenleri bulunabilir. Kaynak mutlaka fiziksel dosya değildir.
Şema (scheme)
URL'nin hangi erişim düzeniyle yorumlanacağını belirten ilk bileşen; örneğin https.
Kaçın: veritabanı şemasıyla karıştırma.
Alan adı (domain name)
Ağ kaynağını insanın yazabildiği adla belirtmeye yarayan, DNS hiyerarşisinde yer alan ad.
URL yolu (URL path)
Hizmet içinde hangi kaynağın istendiğini belirleyen adres bölümü; sunucunun diskindeki dosya yoluyla bire bir aynı olmak zorunda değildir.
Sorgu (query, URL)
URL'de ? ile başlayan, isteğe ek bilgi taşıyan bölüm. Parametrelere hangi anlamın verileceği hizmetin kararıdır.
Kaçın: TanStack sorgusu veya SQL sorgusuyla özdeşleştirme.
Parça tanımlayıcısı (fragment identifier)
URL'nin # sonrasındaki bölümü; örneğin belge içindeki bir hedefi belirtir. HTTP isteğiyle sunucuya gönderilmez.
DNS (Domain Name System)
İnternet kaynakları için hiyerarşik, dağıtık adlandırma sistemi. En tanıdık işlevi alan adına bağlı IP adreslerini bulmaktır.
Kaçın: web sayfasını getiren veya dosya yolunu çözen sunucu sanma.
Ad çözümleme (name resolution, DNS lookup)
Bir adla ilgili DNS bilgisinin bulunması; bu bölümde özellikle alan adıyla ilişkili IP adreslerinin öğrenilmesi.
DNS çözümleyicisi (DNS resolver)
DNS sorgusunu cevaplamak için uygun önbellek bilgisini kullanan veya gerekli diğer ad sunucularına başvuran bileşen.
Yetkili ad sunucusu (authoritative name server)
Sorumlu olduğu alanın DNS kayıtları için yetkili bilgiyi sunan hizmet.
DNS yaşam süresi (DNS time to live, TTL)
Bir DNS kaydının önbellekte yeniden kullanılabileceği süreyi sınırlayan değer.
Kaçın: IP paketinin atlama sayacıyla karıştırma. Yaşam süresi kavramı Redis önbelleğinde de başka bağlamda kullanılır.
HTTP (Hypertext Transfer Protocol)
Kaynakların istek ve yanıtlarla alışverişini tanımlayan uygulama katmanı protokolü. Yalnızca HTML taşımaz.
HTTPS (HTTP over TLS)
HTTP iletişiminin TLS korumasıyla yapılması. Şifreli iletim, içeriğin doğru veya hizmetin dürüst olduğuna ilişkin güvence değildir.
TLS (Transport Layer Security)
İletişimde şifreleme, bütünlük koruması ve kimlik doğrulama sağlayan protokol; normal web kullanımında tarayıcı sunucunun sertifikasını doğrular.
İstek (request)
HTTP'de istemcinin bir kaynağa yönelik gönderdiği ileti.
Yanıt (response)
HTTP'de sunucunun bir isteğe verdiği; durum, başlıklar ve varsa gövde içeren ileti.
Tarayıcı (browser)
Web kaynaklarını isteyen, yorumlayan, görüntüleyen ve kullanıcıyla etkileşen uygulama. İşletim sistemi üzerinde süreçler ve iş parçacıklarıyla çalışır.
İşleme motoru (rendering engine)
Belge ve görünüm kurallarından gösterilecek sonucu üretmekle ilgilenen tarayıcı bileşeni.
Kaçın: JavaScript motoruyla eşitleme.
V8 (V8 JavaScript engine)
Chrome'da kullanılan JavaScript motoru. HTML'i tek başına görüntüye dönüştüren bütün tarayıcının adı değildir.
Ayrıştırma (parsing)
Metni dilinin kurallarına göre anlamlı yapıya dönüştürme. Tarayıcı HTML'den DOM oluştururken bu işi yapar.
Yerleşim (layout)
Belge öğelerinin görünüm bilgilerine göre boyutlarının ve konumlarının hesaplanması.
Boyama (paint)
Görüntüde hangi sırayla ne çizileceğine ilişkin kayıtların üretilmesi.
Pikselleştirme (rasterization)
Çizim bilgisinin piksel verisine dönüştürülmesi.
Birleştirme (compositing)
Ayrı görüntü katmanlarını bir kare olarak toplama işi.
Kaçın: Git birleştirmesiyle karıştırma.
HTML (HyperText Markup Language)
Web belgesinin yapısını ve içeriğinin anlamını belirten işaretleme dili. Tarayıcı tarafından ayrıştırılarak bellekte belge yapısına dönüştürülür.
CSS (Cascading Style Sheets)
Web belgesinin görünüm ve yerleşim kurallarını belirten dil.
JavaScript (JavaScript)
Tarayıcıda programlanabilir davranış sağlayan dil; motor tarafından yürütülür ve belge üzerinde değişiklik yapabilir. Tarayıcı dışındaki kullanımını Bölüm 25 ve 29 açar.

Kısım II · İnşaat

Bölüm 21 · Programlama Dilleri Haritası

Düşük seviyeli dil (low-level language)
Çalışacağı işlemcinin mimarisinden az soyutlama sunan dil: makine dili ve assembly. Hızlıdır, taşınabilir değildir.
Yüksek seviyeli dil (high-level language)
İnsanın düşünme biçimine yakın, belirli bir işlemciye bağlı olmayan dil; kod çalışmadan önce makine diline çevrilmelidir.
Yorumlayıcı (interpreter)
Kaynak kodu önceden çevirmeden, okuyup komutları o anda çalıştıran program.
Kaçın: Kaçın: yorumcu
Ara kod (bytecode)
Gerçek işlemcinin değil, bir sanal makinenin makine dili olan, kaynak ile makine kodu arasındaki temsil.
Kaçın: Kaçın: bayt kodu
Sanal makine (virtual machine, JVM)
Ara kodu çalıştıran yazılım olarak yazılmış hayali işlemci; Java Sanal Makinesi (JVM) örneği.
Anında derleme (JIT, just-in-time compilation)
Kodun çalışma sırasında, sık çalışan kısımlarının makine koduna çevrilmesi.
Kaçın: Kaçın: JIT derleme (kısaltma açılmadan)
JavaScript motoru (JavaScript engine)
JavaScript kodunu ayrıştırıp çalıştıran program; V8, SpiderMonkey, JavaScriptCore.
Tip sistemi (type system)
Bir dilde her değerin tipini ve hangi tiplere hangi işlemlerin yapılabileceğini belirleyen kurallar bütünü.
Statik tipli (statically typed)
Tiplerin derleme zamanında bilindiği ve denetlendiği dil.
Dinamik tipli (dynamically typed)
Tiplerin çalışma zamanında, değere bakılarak belirlendiği dil.
Güçlü tipli (strongly typed)
Tipleri karıştırmaya izin vermeyen, uyuşmazlığı reddeden dil; kesin bir ayrım değil, bir derecedir.
Zayıf tipli (weakly typed)
Tipler karışınca değerleri sessizce çeviren dil; JavaScript örneği.
Tip zorlaması (type coercion)
Bir değerin bir tipten ötekine örtük (otomatik) çevrilmesi: JavaScript'te "5" + 1 sonucu "51".
Tip çıkarımı (type inference)
Derleyicinin tipi programcı yazmadan değerden kendisinin bulması.
Paradigma (paradigm)
Bir dilin kod yazmaya dair önerdiği düşünce biçimi; diller birden çok paradigmayı destekleyebilir.
Buyurgan programlama (imperative programming)
Bilgisayara sırayla ne yapacağını söyleyen, durumu adım adım değiştiren programlama.
Kaçın: Kaçın: emirli programlama
Yordamsal programlama (procedural programming)
Adımları adlandırılmış parçalara (yordam, fonksiyon) bölerek yazan buyurgan programlama biçimi.
Nesne yönelimli programlama (OOP, object-oriented programming)
Verinin ve onu işleyen kodun nesneler içine sarıldığı programlama biçimi.
Kaçın: Kaçın: nesne tabanlı
Sınıf (class)
Bir tür nesnenin kalıbı: hangi veriyi ve davranışı taşıyacağını tanımlar.
Nesne (object)
Bir sınıfın kalıbından üretilmiş somut örnek; veri ve davranışı birlikte taşır.
Kalıtım (inheritance)
Bir sınıfın başka bir sınıfın özelliklerini devralması.
Fonksiyonel programlama (functional programming)
İşi, girdiden çıktı üreten fonksiyonların birleşimi olarak kuran; fonksiyonları değer gibi dolaştıran programlama biçimi.
Bildirimsel programlama (declarative programming)
Nasıl yapılacağını değil, ne istendiğini söyleyen programlama; HTML ve SQL örnekleri.
Teknoloji yığını (tech stack)
Bir ürünün üst üste dizilmiş dil ve araç kümesi; bizimki TypeScript + Go + SQL.
Kaçın: Kaçın: stack (bellek yığınıyla karışır)

Bölüm 22 · Uygulama Türleri

Web uygulaması (web application)
Tarayıcıda çalışan ve kullanıcıyla etkileşen, durumu olan uygulama.
Web sitesi (website)
Ağırlıklı olarak okunacak içerikten oluşan, tarayıcıda açılan sayfalar topluluğu.
Statik site (static site)
Sunucunun belirli bir kaynak istendiğinde her seferinde aynı, önceden yazılmış içeriği döndürdüğü site.
Dinamik site (dynamic site)
İçeriği istenen adrese ve veriye göre sunucuda üretip döndüren site.
Tek sayfa uygulama (SPA, single-page application)
Tek bir web belgesi yükleyip başka içerik gerektiğinde belgenin gövdesini JavaScript ile güncelleyen web uygulaması.
Kaçın: Kaçın: tek sayfalı uygulama
Yerel uygulama (native application)
Hedeflenen donanım ve yazılım ortamı için (örneğin Android ya da iOS) o platformun araçlarıyla derlenmiş uygulama.
Kaçın: Kaçın: native uygulama (ilk geçişte parantez içinde kalabilir)
Çapraz platform (cross-platform)
Tek kod tabanından birden çok platforma (Android, iOS, web) uygulama üretme yaklaşımı; örneğin React Native ve Expo.
İlerlemeli web uygulaması (PWA, progressive web app)
Web teknolojileriyle yazılıp cihaza yüklenebilen, çevrimdışı ve arka planda çalışabilen, tek kod tabanlı uygulama.
Kaçın: Kaçın: PWA (kısaltma açılmadan)
APK (Android package)
Android cihazlara uygulamayı yüklemek için kullanılan, uygulamanın çalışma zamanında gereken her şeyini içeren paket dosyası.
Android App Bundle (AAB) (Android App Bundle)
Doğrudan yüklenemeyen, mağazada cihaza özel APK'ların üretildiği yayın biçimi.
Uygulama mağazası (app store)
Platforma özgü uygulamaların bulunup yüklendiği, dağıtımı yapan aracı hizmet (Google Play, App Store).
Masaüstü uygulaması (desktop application)
Bilgisayarda (macOS, Windows, Linux) çalışan, ya işletim sistemi için derlenmiş ya da web teknolojisiyle paketlenmiş uygulama.
Electron
JavaScript, HTML ve CSS ile masaüstü uygulaması yapmak için, Chromium ve Node.js'i içine gömen çerçeve.
Ana süreç (main process)
Bir Electron uygulamasında pencereleri yaratıp yöneten, Node.js ortamında çalışan giriş noktası.

Bölüm 23 · HTML ve DOM

İşaretleme dili (markup language)
İçeriğin yapısını ve anlamlı parçalarını öğelerle tarif eden dil; HTML bunun web’de kullanılan örneğidir.
Kaçın: programlama diliyle aynı şey saymak
Etiket (tag)
HTML kaynak metninde bir öğenin sınırını veya başlangıcını belirten işaret; örneğin <p>.
Kaçın: öğe ile eşanlamlı kullanmak
Öğe (element)
HTML’de paragraf, başlık veya girdi gibi yapısal parça; çoğunlukla açılış etiketi, içerik ve kapanış etiketiyle tarif edilir.
Kaçın: yalnızca açılış etiketini bütün öğe saymak
Nitelik (attribute)
HTML öğesine açılış etiketinde eklenen bilgi; id, class ve name örneklerdir.
Kaçın: JavaScript nesne özelliğiyle karıştırmak
İçeriksiz öğe (void element)
Çocuk içerik alamayan ve kapanış etiketi bulunmayan HTML öğesi; input ve meta gibi.
Kaçın: bütün öğelerin kapanışını kaldırmak
Anlamsal HTML (semantic HTML)
Öğeyi görünüşüne değil görevine ve anlamına göre seçme; başlık için başlık, eylem için düğme kullanma.
Kaçın: semantik etiketleri yalnızca görsel şablon saymak
Erişilebilirlik (accessibility, a11y)
Farklı yetenek ve kullanım biçimlerindeki insanların içeriğe ve işlevlere erişmesini gözetme.
Kaçın: yalnızca ekran okuyucu desteğine indirgemek
Form (form)
Kullanıcı girdilerini birlikte düzenleyen ve gönderme davranışı sağlayan HTML yapısı.
Kaçın: formu yalnızca görsel kutu saymak
Form etiketi (label)
Bir form denetimine okunabilir ad bağlayan HTML öğesi; for/id eşleşmesiyle veya denetimi içine alarak ilişki kurar.
Kaçın: label ile genel tag kavramını özdeş saymak
Belge Nesne Modeli (DOM, Document Object Model)
Belgenin bellekte düğümler ve ilişkiler olarak temsil edilmesi; programlar bu modeli DOM API ile okuyup değiştirebilir.
Kaçın: kaynak HTML dosyası veya ekran görüntüsüyle özdeş saymak
Düğüm (node)
DOM ağacındaki yapısal birim; öğe, metin ve yorum gibi farklı türleri vardır.
Kaçın: her düğümü HTML öğesi saymak

Bölüm 24 · CSS

Kural (rule)
Seçici ile onun bildirim bloğunun oluşturduğu CSS bütünü.
Kaçın: iş kuralıyla bağlam belirtmeden karıştırmak
Seçici (selector)
CSS kuralının hangi öğelerle eşleşeceğini belirleyen ifade; DOM sorgularında da kullanılabilir.
Kaçın: mantık devresindeki seçiciyle karıştırmak
Özellik (property)
CSS’te hangi sunum yönünün ayarlanacağını belirten ad; color gibi. Değer o yönün seçilmiş ayarıdır.
Kaçın: HTML niteliğiyle özdeş saymak
Kaskad (cascade)
Birbiriyle yarışan CSS bildirimlerinden hangisinin etkili olacağını belirleyen düzen; özgüllük ve kaynak sırası bu düzenin parçalarıdır.
Kaçın: her koşulda son satır kazanır demek
Özgüllük (specificity)
CSS seçicisinin, kaskadın uygun karşılaştırma aşamasında kullanılan ağırlığı.
Kaçın: kaskadın tamamıyla aynı saymak
Kalıtım (CSS) (inheritance)
Bazı CSS özelliklerinin değerinin ebeveyn öğeden çocuğa geçmesi; bütün özellikler varsayılan olarak kalıtılmaz.
Kaçın: sınıflar arası kalıtımla özdeş saymak
Kutu modeli (box model)
İçerik, iç boşluk, kenarlık ve dış boşluğun boyut ilişkisini açıklayan CSS modeli.
Kaçın: width değerini her koşulda toplam genişlik saymak
İç boşluk (padding)
İçerik ile kenarlık arasındaki alan.
Kaçın: dış boşluk
Kenarlık (border)
İçerik ve iç boşluğu saran çizgi/alan.
Kaçın: dış boşlukla özdeş saymak
Dış boşluk (margin)
Kenarlığın dışındaki uzaklık; border-box genişlik hesabına dahil değildir.
Kaçın: iç boşluk
Yerleşim (layout)
Kutuların alan ve konum ilişkilerinin düzenlenmesi.
Kaçın: yalnızca mutlak koordinat verme
Esnek kutu yerleşimi (flexbox)
Öğeleri bir ana eksende esneterek ve hizalayarak düzenleyen yerleşim yöntemi; satıra sarılabilir.
Kaçın: yalnızca tek satır yapabilir demek
Izgara yerleşimi (grid)
Satır ve sütunları birlikte tarif edebilen CSS yerleşim yöntemi.
Kaçın: flexbox’ın her durumda yerine geçen sürümü saymak
Konumlandırma (positioning)
Kutunun normal akışa ve konumlandırma dayanağına göre yerini yönetme; relative, absolute gibi kiplerle kullanılır.
Kaçın: bütün yerleşimi absolute ile çözmek
Duyarlı tasarım (responsive design)
İçeriğin farklı görünüm alanlarında kullanılabilir kalmasını esnek boyut ve düzenlerle sağlama.
Kaçın: sayfanın tamamını telefonda küçültmek
Medya sorgusu (media query)
Görünüm alanı genişliği gibi bir koşul sağlandığında CSS kurallarını etkinleştiren yapı.
Kaçın: cihaz markasını kesin saptayan kural saymak
Önce mobil (mobile-first)
Dar alanda çalışan bir başlangıç düzeni kurup yeterli alan olduğunda ek düzen açma yaklaşımı.
Kaçın: her cihaz için ayrı HTML üretmek
CSS değişkenleri (custom properties)
CSS içinde -- adlarıyla ortak değerler tanımlayıp var() ile kullanma imkânı; bu biçimdeki özellikler kaskada katılır ve kalıtılır.
Kaçın: JavaScript değişkeni veya puan sayacı saymak
Tasarım sistemi (design system)
Ürünün renk, boşluk, yazı ve bileşen davranışlarını ortak ve tutarlı kararlar altında toplama fikri; birkaç CSS değişkeninden daha geniştir.
Kaçın: yalnızca renk listesi saymak

Bölüm 25 · JavaScript

Değer (value)
Programın üzerinde işlem yaptığı somut veri; sayı, metin veya nesne gibi.
Kaçın: değişken adıyla özdeş saymak
İlkel değer (primitive value)
Nesne olmayan temel JavaScript değeri; karakter dizisi, sayı, Boole, null ve undefined bu gruptadır.
Kaçın: her değeri değiştirilebilir nesne saymak
let ve const (let, const)
Blok kapsamlı bağ kuran JavaScript bildirimleri; let yeniden atamaya izin verir, const vermez. const nesnenin içini dondurmaz.
Kaçın: const nesnenin tüm alanlarını değişmez yapar demek
null ve undefined (null, undefined)
JavaScript’te iki farklı yokluk değeri; null örnekte bilerek boş seçimi belirtir, undefined başlangıçsız değişkende veya olmayan özellikte görülebilir.
Kaçın: sıfır puanla aynı saymak
Ok fonksiyonu (arrow function)
=> ile yazılan fonksiyon değeri biçimi; kısa ifade gövdesi sonucu döndürür. Normal fonksiyonla her davranışı aynı değildir.
Kaçın: düşünmeden her function yazımının yerine geçirmek
Kapsam (scope)
Bir değişken adına kodun nerelerinden erişilebildiğini belirleyen sınır ve kurallar.
Kaçın: değişkenin diskte saklanma süresi saymak
Kapanış (closure)
Bir fonksiyonun, oluşturulduğu sözcüksel çevredeki bağlara erişimini koruması.
Kaçın: değerlerin otomatik diske kaydı saymak
Nesne (JavaScript) (object)
İlişkili veriyi özellik adı–değer çiftleriyle tutabilen JavaScript değeri; sınıf tanımlamadan da oluşturulabilir.
Kaçın: her nesne için önce sınıf zorunlu demek
Dizi (JavaScript) (array)
İndekslerle sıralı değerler tutan, büyüyebilen JavaScript nesnesi; C dizisinin fiziksel bellek açıklamasıyla özdeş değildir.
Kaçın: bütün elemanları aynı tipte olmak zorunda saymak
JSON (JavaScript Object Notation)
Yapılandırılmış veriyi metin olarak ifade eden biçim; JavaScript dışındaki dillerde de okunup üretilebilir.
Kaçın: bellekteki nesne veya çalıştırılacak program saymak
Kontrol akışı (control flow)
Programda hangi adımın ne zaman çalışacağını belirleyen sıralama, dal ve tekrar düzeni.
Kaçın: hata yakalama her mantık yanlışını bulur demek
Node.js (JavaScript runtime environment)
V8 motoruyla JavaScript’i tarayıcı dışında çalıştıran ve kendi ortam API’lerini sağlayan çalışma ortamı.
Kaçın: dil veya tarayıcı DOM’u saymak
Eşzamansız programlama (asynchronous programming)
Uzun sürebilen işin sonucunu beklerken diğer işlere tepki verebilecek şekilde devamları düzenleme.
Kaçın: ağır hesabın otomatik başka çekirdeğe taşınması
Geri çağırma (callback)
Başka koda verilen ve onun tarafından çağrılan fonksiyon; her geri çağırma eşzamansız değildir.
Kaçın: daima sonra çalışır demek
Promise (Promise)
Bekleyen, başarıyla sonuçlanan veya reddedilen bir işin sonucunu temsil eden JavaScript nesnesi.
Kaçın: henüz alınmamış verinin kendisi saymak
async ve await (async, await)
Promise tabanlı fonksiyon ve devam yazımı; await ilgili fonksiyonun devamını bekletir, bütün programı veya ağır hesabı kendiliğinden paralelleştirmez.
Kaçın: başka iş parçacığı garantisi saymak
Olay döngüsü (JavaScript) (event loop)
Çalışma ortamında hazır görev ve devamların işlenmesini düzenleyen mekanizma; işletim sisteminin süreç zamanlayıcısıyla aynı şey değildir.
Kaçın: bütün tarayıcı tek iş parçacığıdır demek

Bölüm 26 · JavaScript ile Sayfayı Canlandırmak

DOM API (Document Object Model API)
Belge düğümlerini bulma, oluşturma ve değiştirme gibi işlemler sağlayan programlama sözleşmesi; uzak HTTP API’si olmak zorunda değildir.
Kaçın: sunucu isteğiyle özdeş saymak
Olay (event)
Programın tepki verebildiği ortam bildirimi; click, input ve submit örneklerdir.
Kaçın: yalnızca fare hareketi saymak
Olay dinleyici (event listener)
Belirli bir olay türü gerçekleştiğinde çağrılacak tepkiyi kaydetme düzeni.
Kaçın: kayıt anında fonksiyonun çalıştığını varsaymak
Olay nesnesi (event object)
Olay hakkında hedef ve varsayılan davranışı iptal etme gibi bilgileri/işlemleri taşıyan nesne.
Kaçın: target ile currentTarget’ı aynı saymak
Kabarcıklanma (event bubbling)
Birçok olayın hedef öğeden üst öğelere doğru yayılması.
Kaçın: bütün olayların aynı şekilde yayıldığını varsaymak
Olay devretme (event delegation)
Çocuklarda başlayan olayları ortak ebeveyne bağlı dinleyicide karşılayarak yayılmadan yararlanma.
Kaçın: her yeni şık için yeniden dinleyici zorunlu saymak
Durum (kullanıcı etkileşimi) (state)
Uygulamanın hatırlayıp sonraki davranışını belirlediği veriler; örnekte puan, can, soru indeksi ve cevaplandı bayrağı. Ekran bunun çıktısıdır.
Kaçın: yalnızca DOM’daki görünen yazı saymak
Yerel saklama (localStorage)
Tarayıcıda kökene bağlı karakter dizisi anahtar–değer kayıtları tutan, oturumlar arasında kalabilen saklama imkânı.
Kaçın: silinmez veya güvenilir ortak veritabanı saymak
Köken (origin)
Web’de şema, alan adı ve port birleşimiyle tanımlanan sınır; saklama ve erişim kurallarında kullanılır.
Kaçın: yalnızca alan adı saymak
Çerez (cookie)
Tarayıcıda tutulabilen, kapsam ve güvenlik kuralları uygunsa ilgili HTTP istekleriyle gönderilen küçük veri.
Kaçın: localStorage ile aynı ağ davranışında saymak
Fetch API (Fetch API)
HTTP isteklerini başlatıp yanıtlarını Promise tabanlı biçimde işlemek için kullanılan API; yanıt gövdesi ayrıca okunur.
Kaçın: 404 gelince kendiliğinden reddedilir demek

Bölüm 27 · Modüler Kod

Modül (module)
Bir JavaScript dosyası; kendi kapsamı vardır ve yalnızca export ettiğini dışarı açar.
Dışa aktarma (export)
Bir modülün bir değişkeni ya da fonksiyonu başka modüllere açması.
Kaçın: dışa verme
İçe aktarma (import)
Bir modülün başka bir modülden dışa aktarılmış şeyi almasi.
ES modülleri (ES modules, ESM)
2015 standardıyla gelen, import/export sözdizimli dil düzeyi modül sistemi. Eski sistem CommonJS (require) idi.
Adlandırılmış dışa aktarım (named export)
Adıyla dışa açılan ve alınırken aynı adın süslü parantezle yazıldığı export.
Varsayılan dışa aktarım (default export)
Modül başına en fazla bir olan ve alan tarafın istediği adı verebildiği export.
Dinamik içe aktarma (dynamic import)
import() ifadesi: modülü istek üzerine yükler ve bir Promise döndürür. Statik import dosya başında sabit yolla yazılır.
Global kapsam (global scope)
Klasik script'lerin hepsinin ortak paylaştığı en dış kapsam; isim çakışmalarının kaynağı.
Bağımlılık çizgesi (dependency graph)
Hangi modülün hangi modüllere dayandığını gösteren ağ; modül sisteminde her modül bunu açıkça yazar.
Sorumlulukların ayrılması (separation of concerns)
Sistemi, her biri tek bir derdi ele alan parçalara bölme ilkesi (terim Dijkstra'ya atfedilir).
Tek sorumluluk ilkesi (single responsibility principle, SRP)
Bir modülün değişmek için tek bir nedeni olmalı.
Bağımlılık (dependency)
Bir kodun başka bir kod olmadan anlaşılıp değiştirilememesi; A modülü B'den import ediyorsa A, B'ye bağımlıdır. (Bölüm 29'da: projenin kullandığı dış paket de bağımlılıktır.)
Bağlaşım (coupling)
İki modül arasındaki karşılıklı bağımlılığın derecesi; hedef gevşek bağlaşımdır.
Kaçın: kuplaj
Uyum (cohesion)
Bir modülün içindeki öğelerin birbirine ne kadar ait olduğu; hedef yüksek uyumdur.
Kaçın: kohezyon
Bilgi sızıntısı (information leakage)
Aynı tasarım kararının birden çok modülde yansıması; değişiklik birçok yere dokunmayı gerektirir.
Giriş noktası (entry point)
Uygulamanın başladığı dosya; modül çizgesi bu dosyadan dallanır.
Okunabilirlik (readability)
Kodun başka birinin (ya da gelecekteki senin) kolayca anlayabileceği halde olması.
Derin modül (deep module)
Basit bir arayüzün arkasında çok işlev saklayan modül (Ousterhout); arayüz maliyet, işlev faydadır.
Bilgi gizleme (information hiding)
Modülün bir tasarım kararını (veri yapısı, kural) içinde saklayıp arayüzde göstermemesi.
Aşırı sınıflaşma (classitis)
Her biri basit ama arayüzleri toplamda karmaşık çok sayıda küçük sınıfa bölme hastalığı.

Bölüm 28 · Git

Sürüm kontrol sistemi (version control system, VCS)
Dosyalardaki değişikliklerin geçmişini tutan sistem; yerel, merkezî ve dağıtık türleri vardır.
Kaçın: versiyon kontrol
Git (Git)
Dağıtık sürüm kontrol sistemi; her klon projenin bütün geçmişini taşır.
Depo (repository)
Projenin dosyalarının ve bütün geçmişinin tutulduğu yer; yerelde .git klasörü.
Kaçın: repo (konuşmada denebilir)
Çalışma dizini (working directory, working tree)
Projenin tek bir sürümünün diskte açılmış hali; dosyaları düzenlediğin klasör.
Hazırlık alanı (staging area, index)
Bir sonraki commit'e girecek değişikliklerin seçilip tutulduğu yer.
Commit (commit)
Hazırlık alanındakileri depoya kalıcı anlık görüntü olarak yazan işlem; yazılan kayıt.
Kaçın: kaydetmek (konuşmada denebilir)
Anlık görüntü (snapshot)
Projenin bir andaki dosya halinin kaydı; Git farkları değil anlık görüntüleri saklar.
Özet değer (hash)
İçerikten hesaplanan sabit uzunlukta kimlik; Git'te 40 karakterlik onaltılık SHA-1.
Dal (branch)
Bir commit'e işaret eden hafif, taşınabilir işaretçi.
Şu anda üzerinde çalışılan dalı (ve commit'i) gösteren özel işaretçi.
Birleştirme (merge)
İki dalın işini bir araya getirme; ortak atadan ayrılmış dallarda yeni bir birleştirme commit'i üretir.
Çakışma (merge conflict)
Aynı yerin iki dalda farklı değiştirilmesi; Git birleştirmeyi durdurur ve dosyaya işaretler koyar.
Yeniden temellendirme (rebase)
Bir dalın commit'lerini başka bir dalın ucuna yeniden oynatma; geçmişi doğrusallaştırır. Paylaşılmış commit'lerde kullanılmaz.
Uzak depo (remote)
Aynı projenin başka bir yerde (ör. GitHub) duran kopyası; klonlayınca varsayılan adı origin.
GitHub (GitHub)
Uzak depoları barındıran ve çekme isteği gibi ekip özellikleri ekleyen hizmet; Git'in kendisi değildir.
Klonlamak, göndermek, çekmek (clone, push, pull)
clone uzak depoyu bütün geçmişiyle kopyalar; push yerel commit'leri gönderir; pull fetch yapıp birleştirir.
Çatal (fork)
Başka bir deponun (upstream) sana ait ayrı bir kopyası; kendi ayarları ve izinleri vardır.
Çekme isteği (pull request, PR)
Bir dalın değişikliklerini birleştirme önerisi; inceleme ve tartışma imkânı verir.
Kod incelemesi (code review)
Değişiklik birleşmeden önce başka birinin onu okuyup yorumlaması; kararlar: comment, approve, request changes.
Çalışma ağacı (git worktree)
Aynı depoya bağlı ek çalışma klasörü; geçmiş ve dallar ortak, HEAD ile hazırlık alanı ağaca özgüdür.
.gitignore (.gitignore)
Git'in izlemeyeceği dosya desenlerini listeleyen dosya.
Sır (secret)
Bilinirse başkasının senin adına işlem yapabileceği gizli değer (parola, API anahtarı); depoya girmez.

Bölüm 29 · Araçlar: Node, npm

Paket (package)
Adı ve sürümü olan, paylaşılabilir bir kod kümesi (bir ya da birkaç modül).
npm (Node Package Manager)
Node.js'in standart paket yöneticisi; paketleri kayıt defterinden projeye kurar.
Paket yöneticisi (package manager)
Paketleri kuran, güncelleyen ve sürümlerini yöneten araç (npm, Yarn, pnpm).
Kayıt defteri (registry)
Paketlerin toplandığı ve indirildiği çevrimiçi depo (npm registry).
package.json (package.json)
Projenin adı, sürümü, betikleri ve bağımlılıklarını tarif eden JSON dosyası.
Üretim bağımlılığı / geliştirme bağımlılığı (dependencies, devDependencies)
dependencies uygulamayla üretime giden paketler; devDependencies yalnızca geliştirmede gereken araçlar.
node_modules (node_modules)
npm'in paketleri kurduğu klasör; .gitignore'a yazılır, package.json'dan yeniden üretilir.
Dolaylı bağımlılık (transitive dependency)
Doğrudan istemediğin ama kurduğun paketlerin getirdiği paketler.
Anlamsal sürümleme (semantic versioning, semver)
major.minor.patch biçimi: major geriye uyumsuzluk, minor yeni özellik, patch hata düzeltmesi sözüdür. ^ ve ~ kabul edilen aralığı belirler.
Kaçın: semantik sürümleme
Kilit dosyası (lock file)
Kurulan tam paket ağacını (tam sürümlerle) sabitleyen dosya; npm'de package-lock.json. Depoya girer.
npm ci (npm ci)
Kilit dosyasını zorunlu kılan, temiz ve donmuş kurulum komutu; otomasyonda kullanılır.
Betik (script)
package.json'da kısa ad verilmiş komut; npm run ad ile çalışır.
Geliştirme sunucusu (dev server)
Kodu yazarken yerelde çalışan, dosyaları tarayıcıya sunan geçici sunucu.
Sıcak modül değişimi (Hot Module Replacement, HMR)
Dosya kaydedilince yalnızca ilgili modülün sayfa yeniden yüklenmeden güncellenmesi.
Paketleyici (bundler)
Çok sayıda modülü üretim için az sayıda dosyada birleştirip küçülten araç (Vite).
Vite (Vite)
Geliştirme sunucusu ve üretim derlemesi olan derleme aracı; Expo dışındaki web projelerimizin temeli.
Dönüştürücü (transpiler)
Kodu aynı seviyede başka bir dile ya da sürüme çeviren araç (TypeScript/JSX → JavaScript; yeni → eski JavaScript).
Derleme zinciri (build toolchain)
Kaynak kodu çalıştırılabilir çıktıya çeviren araçlar dizisi: dönüştürücü, paketleyici vb.
Denetleyici (linter)
Kodu çalıştırmadan inceleyip olası hata ve kötü kalıpları raporlayan araç (ESLint).
Kaçın: lint (konuşmada denebilir)
Biçimlendirici (formatter)
Kodun görünümünü (girinti, tırnak) tek tipe getiren, anlamını değiştirmeyen araç (Prettier).
Tedarik zinciri riski (supply chain risk)
Kullanılan bir dış paketin (doğrudan ya da dolaylı) ele geçirilmesi ve kötü kodun uygulamaya girmesi tehlikesi.

Bölüm 30 · TypeScript

TypeScript (TypeScript)
JavaScript'e statik tip denetimi ve tipleri ifade eden sözdizimi ekleyen dil; tip belirtimleri derleme sırasında silinir, çalışma davranışı JavaScript olarak yürür.
Kaçın: JavaScript'in yerine geçen ayrı bir tarayıcı motoru saymak.
Tip belirtimi (type annotation)
Değişkenin, parametrenin veya dönüş değerinin beklenen tipini açıkça yazma; örneğin puan: number. Tip çıkarımı yapılabildiğinde her yerde yazılması gerekmez.
Kaçın: belirtimin çalışma sırasında veri dönüştürdüğünü sanmak.
Statik tip denetimi (static type-checking)
Programı çalıştırmadan, kaynak koddaki tip ilişkilerinin kurallara uyup uymadığını inceleme.
Kaçın: ürünün bütün iş kurallarının doğruluğu veya dış verinin doğrulanmasıyla eşitlemek.
Arayüz, TypeScript bildirimi (interface declaration)
Bir nesnenin taşıması beklenen özellikleri ve tiplerini adlandıran bildirim. Genel arayüz fikrinin dildeki bir biçimidir; nesne üretmez.
Kaçın: kullanıcı arayüzü veya nesne oluşturan sınıf sanmak.
İsteğe bağlı özellik (optional property)
Nesnede bulunması zorunlu olmayan, adından sonra ? ile gösterilen özellik. Sıkı yokluk denetiminde okunurken undefined ihtimali ele alınır.
Kaçın: eksik özelliğe otomatik değer atanacağını varsaymak.
Yapısal tipleme (structural typing)
Tip uyumunu öncelikle değerin yapısına, örneğin gerekli özellikleri uygun tiplerle taşımasına göre değerlendirme.
Kaçın: her nesnenin önceden aynı tip adıyla etiketlenmesini zorunlu saymak; bütün ek özellikleri her bağlamda serbest sanmak.
Tip takma adı (type alias)
type ile bir tipe verilen ad; nesne şekli, birleşim veya başka bir tip adlandırılabilir. type Puan = number diğer sayılardan ayrı yeni bir sayısal tip üretmez.
Kaçın: değişken oluşturma veya kendiliğinden iş kuralı koyma sanmak.
Birleşim tipi (union type)
Bir değerin belirtilen tiplerden biri olabileceğini anlatan tip; number | null sayı veya boş seçim olabilir.
Kaçın: üyeleri birbirine dönüştüren işlem veya bütün üyelerin aynı anda bulunması sanmak.
Tip daraltma (narrowing)
Koşullar, atamalar ve kontrol akışından yararlanarak bir noktada değerin olası tiplerini daha özel bir tipe indirme.
Kaçın: değeri başka tipe dönüştürmeyle eşitlemek.
Sabit değer tipi (literal type)
Genel string veya number yerine belirli bir değeri tip olarak ifade etme; örneğin "bekliyor". Birleşimlerle izinli değerler listesi kurulabilir.
Kaçın: çalışma sırasında nesnenin bütün alanlarını dondurduğunu sanmak.
TypeScript derleyicisi (TypeScript compiler, tsc)
TypeScript paketinin tip denetimi yapabilen ve JavaScript çıktısı üretebilen komut satırı aracı. --noEmit çıktı yazmayı, --noEmitOnError hata olduğunda çıktı yazmayı kapatır.
Kaçın: yalnız makine kodu üreten araç sanmak; dosya üretildi diye tip denetimi geçti demek.
Tiplerin silinmesi (type erasure)
Tip belirtimleri ve yalnız tip anlatan bildirimlerin JavaScript çıktısında bulunmaması; silinme derleme sırasında olur. Çalışma sırasında verinin kendisi ve JavaScript'in tip davranışları sürer.
Kaçın: bütün TypeScript sözdiziminin veya gerçek JavaScript koşullarının silindiğini söylemek.
Tip iddiası (type assertion)
as gibi bir yazımla derleyiciye değerin tipi hakkında ek bilgi bildirme. Çalışma sırasında doğrulama veya veri dönüşümü yapmaz.
Kaçın: çalışma zamanı testi olan doğrulama ifadesiyle veya sayıya dönüştürmeyle karıştırmak.
any ve unknown (any, unknown)
any ilgili değerdeki tip denetimini önemli ölçüde devreden çıkarır; unknown değerin tipinin henüz bilinmediğini ifade eder ve kullanmadan önce daraltmayı gerektirir.
Kaçın: ikisini eş anlamlı veya dış verinin otomatik doğrulaması saymak.
Genel tipler (generics)
Bir tip ilişkisini farklı tiplerle kullanılabilen parametreler üzerinden tarif etme. Array<Soru> soru dizisini, genel bir fonksiyondaki T giriş ile çıkış arasında korunacak eleman tipini ifade edebilir.
Kaçın: denetimi kapatan any ile eşitlemek.
Tip parametresi (type parameter)
Genel fonksiyon veya tip tanımında farklı tipler için yer tutan ad; ilk<T> içindeki T gibi. Tip açıkça seçilebilir veya çağrının girdisinden çıkarılabilir.
Kaçın: çalışma sırasında taşınan normal fonksiyon argümanı sanmak.
TypeScript yapılandırma dosyası (tsconfig.json)
Bir TypeScript/JavaScript projesinin dosya kapsamını ve derleyici seçeneklerini toplayan dosya. allowJs JavaScript dosyalarını kabul eder; checkJs onlarda denetim raporlamasını açar.
Kaçın: paket listesi olan package.json ile karıştırmak.
JSDoc tip belirtimleri (JSDoc type annotations)
JavaScript yorumlarında @param, @returns gibi işaretlerle tipleri ifade etme yolu. Dosyayı TypeScript'e çevirmeden denetimi güçlendirmeye yardımcı olur.
Kaçın: tarayıcının çalışma sırasında yürüttüğü yeni komutlar saymak.

Bölüm 31 · React ve Bileşenler

Çerçeve (framework)
Soyut bir tasarımı içinde taşıyan ve senin kodunu kendi belirlediği noktalarda çağıran yazılım iskeleti; akışı o yönetir. Karşıtı kütüphane (bu bölümde: tasarım anlamında, çağırdığın fonksiyonlar kümesi).
Kaçın: çatı, framework (Türkçe metinde)
Kontrolün tersine çevrilmesi (inversion of control)
Programın akışını senin değil çerçevenin yönetmesi: sen fonksiyonunu kaydedersin, çerçeve zamanı gelince çağırır. "Bizi arama, biz seni ararız" ilkesi diye de anılır.
Bileşen (component)
Kendi mantığı ve görünümü olan kullanıcı arayüzü parçası; React'te işaretleme döndüren, adı büyük harfle başlayan bir fonksiyon.
Kaçın: komponent
Özellikler (props)
Bir bileşene üst bileşeninden verilen, bileşenin değiştiremediği girdiler; fonksiyonun parametresine benzer. Veri aşağı, olay (fonksiyon özellikle) yukarı akar.
Kaçın: prop'lar, nitelik (HTML niteliğiyle karışır)
Durum (state)
Bir bileşenin çizimler arasında hatırladığı ve değişince yeniden çizimi tetikleyen yerel veri (seçili şık, puan).
Kaçın: stat. Sunucu tarafındaki durum için bkz. durumlu sunucu
Bildirimsel kullanıcı arayüzü (declarative UI)
Her durum için ekranın nasıl görüneceğini yazıp, durum değişince ekranı güncelleme işini çerçeveye bırakan yazım; karşıtı elle DOM güncelleyen buyurgan yazım. Bkz. bildirimsel programlama, buyurgan programlama.
JSX
JavaScript içine HTML benzeri işaretleme yazmaya yarayan sözdizimi uzantısı; tarayıcı anlamaz, araç zinciri onu fonksiyon çağrılarına çevirir. HTML değildir (className, tek kök, kapalı etiket).
Çizme (render)
React'in bileşen fonksiyonlarını çağırıp ekranın yeni tarifini hesaplaması; çizme sırasında dış dünyaya dokunulmaz.
Kaçın: render etmek (sözlükte). DOM'a yazma adımıyla karıştırma: bkz. işleme
İşleme (commit)
Çizim çıktısına uymak için React'in DOM'a yalnızca gereken asgari değişiklikleri uyguladığı adım. Git'teki commit ile ilgisi yoktur.
Anlık görüntü (snapshot)
React'te her çizimin kendi özellik ve durum değerleriyle sabit çalışması; o çizimin olay işleyicisi hep o değerleri görür.
Güncelleyici fonksiyon (updater function)
Durum ayarlayıcıya yeni değer yerine verilen, önceki durumdan yenisini üreten fonksiyon (x => x + 1); art arda güncellemeleri sıraya koyar.
Kanca (hook)
Adı use ile başlayan, bileşen çizilirken React'in özelliklerine takılmayı sağlayan fonksiyon (useState, useEffect); yalnızca en üst düzeyde, her çizimde aynı sırada çağrılır.
Kaçın: hook (Türkçe metinde)
Olay işleyici (event handler)
Belirli bir kullanıcı eylemi (tıklama, yazma) yüzünden çalışan fonksiyon; yan etkiler burada yapılır.
Etki (Effect)
React'te, çizmenin kendisinin doğurduğu yan etkiyi bileşeni dış bir sisteme eşitlemek için yazan kod; ekran güncellendikten sonra çalışır ve bağımlılıklarına göre yeniden kurulur.
Kaçın: efekt
Yan etki (side effect)
Programın dışındaki dünyayı ya da var olan durumu değiştiren her şey: ağ isteği, zamanlayıcı, belge başlığını değiştirmek.
Bağımlılık dizisi (dependency array)
Bir etkinin içinde okuduğu özellik ve durum değerlerinin listesi; değer bir öncekinden farklıysa etki yeniden çalışır. Modül bağımlılığıyla karıştırma.
Temizlik fonksiyonu (cleanup function)
Bir etkinin döndürdüğü, yaptığını durduran ya da geri alan fonksiyon (bağlantıyı kesmek, zamanlayıcıyı durdurmak).
Saf bileşen (pure component)
Aynı özellik ve durumla aynı çıktıyı veren ve çizim sırasında önceden var olan nesneleri değiştirmeyen bileşen.
Durumu yukarı taşımak (lifting state up)
İki bileşenin ortak ihtiyaç duyduğu durumu en yakın ortak üst bileşene taşıyıp aşağıya özellik olarak vermek; durumun tek sahibi olur.
Anahtar (key)
Listedeki bir öğeyi kalıcı olarak tanımlayan, kardeşler arasında benzersiz değer; React'in öğeyi çizimler boyunca tanımasını sağlar.
Kaçın: şifreleme anahtarı anlamıyla karıştırma
Yönlendirme (routing)
Kullanıcı belirli bir URL'yi ziyaret ettiğinde hangi içeriğin ya da sayfanın gösterileceğine karar verme; React çekirdeğinin değil çerçeve ya da yönlendirici kütüphanenin işidir.
Kaçın: rotalama
Sayfa (page, routing)
Yönlendirmede bir rotaya (URL kalıbına) bağlı, ekranı kaplayan bileşen. Bellek sayfasıyla ilgisizdir; bkz. sayfa (Bölüm 15).
Rota (route)
Bir URL kalıbı ile gösterilecek sayfa bileşeni arasındaki eşleme; Expo Router'da src/app altındaki dosyalardan çıkar.
Dosya tabanlı yönlendirme (file-based routing)
Rotaların kod yerine klasör ve dosya adlarından tanımlandığı yönlendirme (index.tsx, [param].tsx, _layout.tsx).

Bölüm 32 · React Native ve Expo

React Native
React bileşenlerini tarayıcı yerine Android ve iOS'un yerel görünümlerine çeviren çerçeve; kod JavaScript'tir, HTML, DOM ve CSS yoktur.
Görünüm (view)
Android ve iOS'ta ekranın temel yapı taşı: metin ya da resim gösteren, dokunmaya cevap veren dikdörtgen.
Yerel bileşen (native component)
JavaScript'ten çağrılan ama çalışırken Android ve iOS'un kendi görünümüne dönüşen bileşen. Hazır gelenlere çekirdek bileşen denir: View, Text, Pressable.
Expo
React Native üstünde çerçeve: Expo SDK, Expo CLI, Expo Router ve isteğe bağlı bulut hizmetleri (EAS).
Expo Go (Expo Go)
Mağazadan inen hazır uygulama; kodunu içinde çalıştırır. Öğrenme alanıdır; kendi yerel kodunu taşıyamaz.
Development build (geliştirme derlemesi)
Expo Go'nun kendi uygulamana özel sürümü; yerel kodlu kitaplıkları çalıştırır, yerel kod değişince yeniden derlenir.
Kaçın: "geliştirme yapısı"; terimi olduğu gibi kullan
EAS Build (Expo Build)
Uygulama paketlerini Expo'nun bulutunda üreten hizmet; imza kimlik bilgilerini yönetebilir.
İmzalama (code signing)
Platformun bir uygulamanın kimden geldiğini ve değiştirilmediğini imzayla doğrulaması. İmza anahtarı bir sırdır.
Sürekli yerel üretim (CNG)
Android ve iOS klasörlerinin elle bakılmayıp şablondan ve yapılandırmadan gerektiğinde üretilmesi (expo prebuild).
Hermes
React Native uygulamalarında kullanılan varsayılan JavaScript motoru.
Metro
React Native ve Expo'nun paketleyicisi; kodu ve varlıkları yerel çalışma zamanının çalıştıracağı biçime çevirir.
Web çıktısı (web output)
Expo projesinin expo export -p web ile üretilen web sitesi hali; türleri single, static, server.
Derin bağlantı (deep link)
Uygulamayı doğrudan belirli bir ekranda açan adres.
Yerel modül (native module)
Arayüzü olmayan, JavaScript'e fonksiyon olarak açılan yerel kitaplık: bildirim, konum, depolama.
Uygulama izni (permission)
Hassas bir özelliğe erişmek için kullanıcıdan istenen, işletim sisteminin verip kullanıcının geri alabildiği yetki.
Yerel bildirim (local notification)
Uygulamanın cihazda kendi zamanladığı bildirim; sunucu gerekmez.
Anlık bildirim (push notification)
Uzaktaki sunucunun FCM/APNs üzerinden gönderdiği bildirim; teslim garantisi yoktur.
Push token (ExpoPushToken)
Bir cihaz ve projeye bağlı, bildirimin gönderileceği adres dizisi; parola değildir ama kullanıcıya özel veri gibi saklanır.
FCM ve APNs
Google'ın (Firebase Cloud Messaging) ve Apple'ın (Apple Push Notification service) bildirim servisleri.
Bilet ve makbuz (ticket, receipt)
Expo bildirim servisinde bilet isteğin alındığını, makbuz FCM/APNs'in aldığını söyler; ikisi de kullanıcının gördüğünü göstermez.

Bölüm 33 · TanStack

İstemci durumu (client state)
Yalnızca kullanıcının cihazında, programın içinde yaşayan durum: seçili şık, açık menü, tema. Asıl kopya oradadır, anında okunur.
Sunucu durumu (server state)
Asıl sahibi sunucuda olan verinin arayüzdeki ödünç kopyası: leaderboard, toplam puan. Eşzamansız okunur, başkaları değiştirebilir, bayatlayabilir.
Kaçın: server state yerine "uzak durum"
TanStack Query
Sunucu durumunu çekmeyi, önbelleğe almayı, eşitlemeyi ve güncellemeyi yöneten kütüphane (eski adı React Query).
Sorgu (query)
TanStack Query'de benzersiz bir anahtara bağlı, eşzamansız bir veri kaynağına bildirimsel bağımlılık; useQuery ile tanımlanır.
Kaçın: veritabanı sorgusu (Bölüm 38) ile karıştırma: bağlamdan anlaşılır
Sorgu anahtarı (query key)
Bir sorgunun verisini önbellekte adresleyen dizi (['leaderboard', {limit: 10}]); fonksiyonun bağımlı olduğu her değişkeni içermelidir.
Değişiklik (mutation)
Sunucuda veri oluşturan, güncelleyen, silen ya da yan etki doğuran işlem; useMutation ile tanımlanır, yalnızca çağrıldığında çalışır.
Kaçın: mutasyon
Taze ve bayat (fresh, stale)
Taze veri staleTime içinde önbellekten okunur, yeniden çekilmez. Bayat veri önbellekten hemen gösterilir ve uygun anda arka planda yeniden çekilir.
Kaçın: bayat yerine "eski" (genel anlamda eski ile karışır)
Yeniden doğrulama (revalidation)
Önbellekteki kopyayı hemen gösterip arkada sunucudan doğrulamak ve değiştiyse güncellemek (stale-while-revalidate).
Sorguyu geçersiz kılmak (query invalidation)
Önbellekteki sorguları, süreleri dolmadan bayat işaretlemek ve ekranda kullanılıyorlarsa yeniden çekmek (invalidateQueries).
İyimser güncelleme (optimistic update)
İstek başarılı olacak varsayımıyla ekranı sunucu cevabından önce güncellemek; hata olursa geri almak.
TanStack Router
React ve Solid için tipli yönlendirici: iç içe yollar, yükleyiciler, URL arama parametrelerini tipli durum olarak yönetme.
TanStack Start
TanStack Router üstüne kurulu tam yığın React çerçevesi: sunucuda sayfa üretme (SSR), akış, sunucu fonksiyonları.

Bölüm 34 · Arka Uç ve API

Sunucu (süreç olarak) (server)
Bir portu dinleyip istek bekleyen, kendi kendine bitmeyen program (süreç). Makine için "sunucu makinesi" denir.
Kaçın: sunucu makinesi ile karıştırma
Ön yüz (frontend)
Uygulamanın kullanıcının cihazında çalışan, kullanıcıyla doğrudan konuşan yarısı: ekranlar, düğmeler, geçici durum.
Kaçın: frontend'i "arayüz" diye karşılama (arayüz = interface)
Arka uç (backend)
Uygulamanın ortak sunucuda çalışan yarısı: veriyi saklar, kuralları uygular, ortak durumu tutar.
Kaçın: back-end, sunucu tarafı (konuşmada serbest)
Güven sınırı (trust boundary)
Kontrol ettiğin kod ile etmediğin taraf arasındaki çizgi; sınırı geçen her veri güvenilmez sayılır ve doğrulanır.
API (Application Programming Interface)
Bir programın başka bir programa hangi isteklerde bulunabileceğini ve ne alacağını tanımlayan önceden anlaşılmış kurallar bütünü; iki program arasındaki sözleşme.
Kaçın: "arayüz" tek başına (kullanıcı arayüzüyle karışır)
Web API
Ağ üzerinden HTTP ile çağrılan API; ön yüz ile arka uç arasındaki sözleşme.
Durumsuz sunucu (stateless server)
İstekler arasında istemciyle ilgili bir şey kendi belleğinde tutmayan sunucu; her istek gereken bilgiyi taşır.
Durumlu sunucu (stateful server)
Her istemci için kendi belleğinde bir şey tutan sunucu; yeniden başlatma ve çoklu sunucuda sorun çıkarır.

Bölüm 35 · HTTP, JSON ve REST

Yöntem (method)
HTTP isteğinin amaçlanan işini belirten GET, POST gibi sözcük.
Kaçın: fiil tek başına
Başlık (header)
İstek veya yanıt hakkında üst veri taşıyan ad–değer alanı.
Kaçın: üstbilgi
Gövde (body)
HTTP mesajında varsa asıl içeriği taşıyan bölüm.
Durum kodu (status code)
Yanıtın başarı veya hata anlamını belirten sayısal kod.
Kaçın: hata kodu (başarılı kodlar da vardır)
JSON (JavaScript Object Notation)
Dilden bağımsız metinsel veri değişim biçimi.
Kaçın: JavaScript nesnesiyle aynı saymak
Serileştirme (serialization)
Program değerlerini saklanabilir veya aktarılabilir gösterime dönüştürme.
Kaçın: kodlama (encoding ile karışır)
REST (Representational State Transfer)
Kaynaklar ve gösterimler etrafında etkileşimi düzenleyen mimari kısıtlar bütünü.
Kaçın: HTTP+JSON ile eşitlemek
Kaynak (resource)
Adreslenebilen kavram; örneğin bir soru veya sıralama.
Kaçın: yalnız veritabanı satırı
Gösterim (representation)
Bir kaynağın aktarım için seçilmiş biçimi; örneğin JSON içeriği.
Kaçın: gerçekleme
Uç nokta (endpoint)
API üzerinde belirli bir istek giriş yeri; yöntem ve yoluyla anılır.
Kaçın: endpoint tek başına
İdempotent (idempotent)
Aynı isteğin tekrarının hedeflenen etkisinin tek isteğin etkisiyle aynı olması.
Kaçın: aynı yanıtı vermek
Köken (origin)
Şema, ana makine adı ve port birleşimi.
Kaçın: alan adıyla eşitlemek
Kökenler arası kaynak paylaşımı (CORS, Cross-Origin Resource Sharing)
Tarayıcının başka kökendeki yanıta erişimini başlıklarla düzenleyen mekanizma.
Kaçın: kimlik doğrulama
Ön uçuş isteği (preflight request)
Tarayıcının asıl kökenler arası istek öncesinde yöntem ve başlık iznini sorduğu OPTIONS isteği.
Çerez (cookie)
Tarayıcının saklayıp kapsamına uyan isteklere ekleyebildiği küçük veri.
Kaçın: oturumla eşitlemek
Oturum (session)
Ayrı istekleri kullanıcıyla ilişkili bir etkileşim bağlamında birleştiren düzen.
Kaçın: yalnız ağ bağlantısı
GraphQL (GraphQL)
İstemcinin ihtiyaç duyduğu alanları şemaya uyan sorguda seçebildiği API yaklaşımı.
Kaçın: veritabanı diliyle eşitlemek
Uzak yordam çağrısı (RPC, Remote Procedure Call)
Uzaktaki adlandırılmış işi parametre ve dönüş değerleri üzerinden çağırma yaklaşımı.
Kaçın: gRPC ile eşitlemek

Bölüm 36 · Go: Neden Go

Çalışma zamanı (runtime)
Çöp toplama ve goroutine yönetimi gibi dilin çalışırken kullandığı hizmetler.
Kaçın: Go için yok saymak
Paket (package)
Birlikte derlenen ve ad alanı paylaşan Go kaynaklarını düzenleyen birim.
Kaçın: npm paketiyle birebir eşitlemek
Yapı (struct)
Adlandırılmış alanları tek değer içinde toplayan Go tipi.
Kaçın: sınıf ile eşitlemek
Metot (method)
Bir alıcı tipe bağlanmış fonksiyon.
Kaçın: HTTP yöntemiyle karıştırmak
Alıcı (receiver)
Bir metodun hangi değer üzerinde çalışacağını belirten parametre.
Kaçın: istemci (client)
Sıfır değeri (zero value)
Başlangıç değeri belirtilmeyen değişkene tipine göre verilen varsayılan değer.
Kaçın: rastgele bellek içeriği
Boş tanımlayıcı (blank identifier)
Go'daki alt çizgi; bir değerin bilinçli kullanılmadığını bildirir.
Kaçın: hataları gelişigüzel yutmak
Goroutine (goroutine)
Go çalışma zamanının yönettiği eşzamanlı fonksiyon yürütmesi.
Kaçın: işletim sistemi iş parçacığıyla eşitlemek
Kanal (channel)
Goroutine'ler arasında tipli değer iletimi ve eşgüdüm sağlayan dil aracı.
Kaçın: her ortak veriyi otomatik korur sanmak
Standart kütüphane (standard library)
Dil dağıtımıyla gelen hazır paketler.
Modül (Go) (module)
Birlikte sürümlenen, go.mod ile tanımlanan Go paketleri topluluğu.
Kaçın: tek kaynak dosyası
Tek ikili dosya (single binary)
Gerekli Go kodunun ve çalışma zamanı hizmetlerinin bir çalıştırılabilir dosyada birleştirilebilmesi.
Kaçın: her hedefte ve dış kaynaksız çalışır sanmak

Bölüm 37 · Go ile API Yazmak

İşleyici (handler)
HTTP isteğini karşılayıp yanıt üreten parça; Go'da Handler arayüzünü karşılar.
Kaçın: yalnız handler (Türkçe anlatımda)
Yönlendirici (HTTP) (router)
Yöntem ve yol gibi bilgilere göre işleyiciyi seçen program parçası.
Kaçın: ağ yönlendiricisiyle eşitlemek
Doğrulama (validation)
Girdinin beklenen biçime ve izin verilen kurallara uyduğunu denetleme.
Kaçın: yalnız JSON ayrıştırma
Alan etiketi (struct tag)
Go yapı alanıyla ilişkili, JSON adı gibi ek bilgileri taşıyan metinsel etiket.
Ara katman (middleware)
Bir işleyiciyi sararak öncesinde veya sonrasında ortak iş yapan parça.
Kaçın: ayrı sunucu sanmak
Bağlam (context)
İptal, son tarih ve istek kapsamlı değerleri katmanlar boyunca taşıyan arayüz.
Kaçın: bütün ayarların torbası
Zaman aşımı (timeout)
Belirlenen süre bitince işi sürdürmeme sınırı; iptal için alt işin işbirliği gerekir.
Kaçın: zorla öldürme garantisi
Servis (service)
Bu bölümde uygulama kurallarını koordine eden parça.
Kaçın: ayrı süreç olmak zorunda sanmak
Depo (veri erişimi) (repository)
Veriyi okuma/yazma davranışını saklama ayrıntısından ayıran arayüz ve gerçeklemeleri.
Kaçın: Git deposuyla karıştırmak

Bölüm 38 · Veritabanları ve SQL

Veritabanı (database)
Belirli amaçlar için düzenlenmiş veriler bütünü.
Kaçın: DBMS ile her bağlamda eşitlemek
Veritabanı yönetim sistemi (DBMS, database management system)
Veritabanını tanımlayan, saklayan, sorgulayan ve değiştiren yazılım.
Kaçın: yalnız veri dosyası
İlişkisel model (relational model)
Veriyi ilişki/tablo düzeninde ifade eden model.
Kaçın: yalnız tablolar birbirine bağlı demek
Tablo (table)
Belirli sütunları paylaşan satırlar bütünü; satır sırası kendiliğinden garanti edilmez.
Kaçın: dizi (array)
Satır (row)
Tablodaki tek kayıt.
Sütun (column)
Kayıtta adlandırılmış, belirli veri tipli alan.
Birincil anahtar (primary key)
Satırı benzersiz ve boş olmayan değer veya değerlerle tanımlayan anahtar.
Kaçın: fiziksel satır numarası
Yabancı anahtar (foreign key)
Bir tablodaki değeri uygun mevcut anahtara bağlayarak ilişkiyi koruyan kısıt.
Kaçın: yalnız id adlı sütun
Şema (veri tasarımı) (schema)
Tablo, alan, tip ve kısıtların yapısal tasarımı; Postgres ad alanı anlamından burada ayrılır.
Kaçın: yalnız çizim
SQL (Structured Query Language)
İlişkisel verileri tanımlamak, sorgulamak ve değiştirmek için kullanılan dil.
Kaçın: veritabanı ürünü
Sorgu (SQL) (query)
Veritabanından belirli sonuç isteme ifadesi.
Kaçın: TanStack sorgusuyla aynı çalışma yeri sanmak
Birleştirme (JOIN)
Koşula göre tablolardan satırları aynı sonuçta buluşturma.
Kaçın: tabloyu kalıcı yapıştırma
Takma ad (alias)
Tablo veya sonuç sütununa sorgu içinde verilen kısa/alternatif ad.
Gruplama (GROUP BY)
Satırları ortak anahtar değerlerine göre hesap gruplarına ayırma.
Kaçın: sıralama
Toplulaştırma fonksiyonu (aggregate function)
Birçok satırdan tek hesap sonucu üreten COUNT veya SUM gibi fonksiyon.
NULL (null)
Değerin bulunmadığını veya bilinmediğini gösteren SQL işareti; sıfır değildir.
Kaçın: 0 veya boş metinle eşitlemek
Normalizasyon (normalization)
Veriyi bağımlılıklarına göre düzenleyerek gereksiz tekrar ve güncelleme tutarsızlığını azaltma.
Kaçın: her alanı ayrı tablo yapmak
Güncelleme anomalisi (update anomaly)
Aynı olgunun tekrarlanan kopyalarının değişiklikte tutarsız kalması sorunu.
İlişkisel olmayan veritabanı (NoSQL database)
İlişkisel tablo modelinden farklı veri modellerini kullanan sistemler için geniş üst başlık.
Kaçın: kuralsız veya sorgusuz demek
Belge veritabanı (document database)
İç içe alan ve diziler taşıyabilen belgeleri temel alan veri sistemi.
Kaçın: JSON dosyasıyla eşitlemek

Bölüm 39 · Postgres Pratikte

Dizin (index)
Bir sütunun değerlerini sıralı tutan ve her değerin tablodaki yerini gösteren ek veri yapısı; aramayı tüm tabloyu taramaktan kurtarır, yazmayı yavaşlatır ve yer kaplar.
Kaçın: indeks
B-tree (B-tree)
Dizinlerde varsayılan olarak kullanılan, dengeli, geniş düğümlü arama ağacı; eşitlik ve aralık sorgularını ve sıralı okumayı destekler.
Sorgu planı (query plan)
Veritabanının bir SQL sorgusunu hangi adımlarla (tarama, dizin kullanımı, birleştirme) çalıştıracağını gösteren karar; EXPLAIN ile görülür.
Sıralı tarama (sequential scan, Seq Scan)
Bir tablonun bütün satırlarını baştan sona okuyup koşulu her satırda denemek; dizin yokken ya da işe yaramazken seçilen plan.
İşlem (transaction)
Birden çok SQL adımını ya-hep-ya-hiç birimine bağlayan mekanizma: BEGIN ile açılır, COMMIT ile onaylanır, ROLLBACK ile geri alınır.
Kaçın: tranzaksiyon
ACID (ACID)
İşlemlerin dört güvencesinin baş harfleri: bölünmezlik, tutarlılık, yalıtım, kalıcılık.
Bölünmezlik (atomicity)
Bir işlemdeki adımların ya hepsinin ya hiçbirinin gerçekleşmesi.
Tutarlılık (consistency)
Bir işlemin veritabanını kısıtları ihlal etmeyen bir durumdan başka bir kurallı duruma götürmesi.
Yalıtım (isolation)
Eşzamanlı işlemlerin birbirinin bitmemiş değişikliklerini görmemesi; kademeleri yalıtım düzeyleridir.
Kalıcılık (durability)
Onaylanmış bir işlemin, sunucu hemen çökse bile kaybolmaması; değişiklikler "tamam" denmeden önce diske günlüklenir.
Çok sürümlü eşzamanlılık denetimi (MVCC, multiversion concurrency control)
Her sorgunun verinin bir görüntüsünü gördüğü, böylece okumanın yazmayı, yazmanın okumayı bloke etmediği eşzamanlılık yöntemi (Postgres'in yöntemi).
Yalıtım düzeyi (isolation level)
İşlemlerin birbirinden ne kadar yalıtıldığını belirleyen kademe (Read Committed, Repeatable Read, Serializable); Postgres varsayılanı Read Committed'dır.
Kısıt (constraint)
Veritabanının zorladığı veri kuralı: NOT NULL, UNIQUE, birincil/yabancı anahtar. Kuralı kodun değil şemanın yapar.
Şema göçü (migration)
Veritabanı şemasındaki bir değişikliği uygulayan (up) ve geri alan (down) numaralı SQL dosyası.
Kaçın: migrasyon
JSONB (JSONB)
Postgres'in ayrıştırılmış ikilik biçimde sakladığı, sorgulanabilen ve indekslenebilen JSON veri tipi; anahtar sırasını ve tekrarlanan anahtarı saklamaz.
Bağlantı havuzu (connection pool)
Veritabanına açılmış ve yeniden kullanılan hazır bağlantılar grubu; bağlantı kurma maliyetini ve eşzamanlı bağlantı sayısını sınırlar.
SQL enjeksiyonu (SQL injection)
Kullanıcı girdisinin SQL cümlesinin içine metin olarak yapıştırılıp komutun parçası olması; parametreli sorguyla önlenir.
Parametreli sorgu (parameterized query)
SQL'in yapısını ve değerlerini ayrı ileten ($1) sorgu; değer her koşulda veri olarak ele alınır.
Yedek (backup)
Verinin başka bir yerde duran kopyası. Postgres'te mantıksal (pg_dump) ve sürekli arşivleme yöntemleri vardır.
Ön yazma günlüğü (WAL, write-ahead log)
Postgres'in her değişikliği veri dosyalarına yazmadan önce kaydettiği günlük; çökme güvenliği ve belirli ana dönüş için kullanılır.
Belirli ana dönüş (PITR, point-in-time recovery)
Bir taban yedek ile arşivlenmiş WAL dosyalarını birleştirip veritabanını geçmişteki seçilen bir ana döndürme.

Bölüm 40 · Önbellek ve Redis

Bellek içi veri deposu (in-memory data store)
Çalışma verisini RAM'de tutan, bu yüzden çok hızlı ama kapasitesi sınırlı ve (varsayılan ayarlarda) kalıcılığı zayıf olan depo. Örnek: Redis.
Kaçın: in-memory veritabanı (konuşmada serbest)
Anahtar–değer (key–value)
Her verinin bir anahtar (ad) ve ona bağlı bir değerden oluştuğu basit veri modeli; veriye anahtarın adıyla ulaşılır.
Redis (Redis)
RAM'de çalışan, string, hash, list, set ve sıralı küme gibi veri yapıları sunan anahtar–değer deposu; önbellek, leaderboard, oturum ve sayaçlar için kullanılır.
Sıralı küme (sorted set)
Her benzersiz üyenin bir skoru olan ve skora göre sürekli sıralı duran Redis veri yapısı; aynı skorlularda sözlük sırası geçerlidir. Leaderboard için doğal yapıdır.
Kaçın: sıralı set
Skor (score)
Sıralı kümede bir üyenin yerini belirleyen sayısal değer. (Uygulamamızdaki "puan" ile genellikle aynı sayı olur.)
Cache-aside (cache-aside, lazy loading)
Önce önbelleğe bakıp bulunamazsa (ıska) veritabanından okuyup önbelleğe yazan ve döndüren önbellek kalıbı. Türkçesi: tembel yükleme.
Yaşam süresi (TTL, time to live)
Bir önbellek girişinin (anahtarın) silinmeden önce kalacağı süre; bayatlığı sınırlar.
Kaçın: ömür (konuşmada serbest)
Geçersiz kılma (invalidation)
Asıl veri değiştiğinde önbellekteki kopyayı silmek ya da güncellemek.
Bayat veri (stale data)
Asıl veri değiştiği halde önbellekte hâlâ duran eski kopya.
Tahliye politikası (eviction policy)
Redis belleği dolunca hangi anahtarların silineceğini ya da yeni yazmaların reddedileceğini belirleyen kural (noeviction, allkeys-lru vb.).
Hız sınırlama (rate limiting)
Bir kullanıcının ya da adresin belirli sürede yapabileceği istek sayısına üst sınır koymak; Redis'te sayaç ve TTL ile yapılır.
Kuyruk (queue)
İlk giren ilk çıkar sırasıyla işlenen iş listesi; isteğin içinde yapılmaması gereken işleri arka plandaki işçiye ertelemek için kullanılır.
Oturum deposu (session store)
Oturum kimliği ile kullanıcı eşlemesinin sunucuların ortak erişebildiği bir yerde (ör. Redis) TTL ile tutulması.

Bölüm 41 · Kimlik Doğrulama ve Güvenlik

Kimlik doğrulama (authentication, AuthN)
Bir hesaba ilişkin sunulan kimlik kanıtının geçerliliğini sınama; bütün kaynaklara erişim izni anlamına gelmez.
Kaçın: yetkilendirme ile eş anlamlı kullanmak
Yetkilendirme (authorization, AuthZ)
Belirli kimliğin belirli kaynak üzerinde istenen işlemi yapmasına izin verilip verilmediğini belirleme.
Kaçın: giriş yapmak
Özet fonksiyonu (hashing)
Girdiden özet değer üreten tek yönlü işlem; parola saklamada tahminleri pahalılaştırmak için özel yöntem seçilir.
Kaçın: şifreleme ile eş anlamlı kullanmak
Tuz (salt)
Parola kaydına özgü rastgele girdi; aynı parolaların aynı özeti vermesini önler, gizli olması gerekmez.
Kaçın: gizli anahtar
Argon2id (Argon2id)
Hesap ve bellek maliyeti ayarlanabilen parola özetleme yöntemi; Argon2 ailesinin parola saklamada önerilen çeşidi.
Kaçın: genel amaçlı hızlı özet
bcrypt (bcrypt)
Ayarlanabilir maliyetli parola özetleme yöntemi; yeni sistem tercihi için güncel rehber ve girdi sınırları değerlendirilir.
Kaçın: parolayı geri çözen şifreleme
Belirteç (token)
Erişim veya kimlik bağlamında taşınan değer; rastgele bir başvuru ya da yapılandırılmış içerik olabilir.
Kaçın: her belirtece JWT demek
JWT (JSON Web Token)
İddiaları taşıyan standart biçim; imzalı olması içeriğin gizli olduğu veya yetkilendirmenin tamamlandığı anlamına gelmez.
Kaçın: şifrelenmiş oturum
OAuth 2.0 (authorization framework)
Bir hizmete erişim yetkisini sınırlı biçimde devretme çerçevesi; tek başına kimlik protokolü değildir.
Kaçın: OIDC ile özdeşleştirmek
OpenID Connect (OIDC)
OAuth 2.0 üzerinde kullanıcı kimliği bilgisini standartlaştıran kimlik doğrulama katmanı.
Kaçın: OAuth erişim belirtecini kimlik kanıtı saymak
Siteler arası betik çalıştırma (cross-site scripting, XSS)
Güvenilmeyen içeriğin tarayıcı tarafından etkin içerik olarak işlenmesine yol açan açık sınıfı.
Kaçın: SQL enjeksiyonu
Siteler arası istek sahteciliği (cross-site request forgery, CSRF)
Kullanıcının giriş yaptığı tarayıcı üzerinden onun istemediği durum değiştirici isteklerin gönderilmesi.
Kaçın: XSS ile eş anlamlı kullanmak
Sırların yönetimi (secrets management)
Gizli erişim değerlerinin üretim, dağıtım, erişim kontrolü, değiştirme ve iptal yaşam döngüsü.
Kaçın: yalnız dosyayı gizlemek
Kişisel veri (personal data)
Kimliği belirli veya belirlenebilir gerçek kişiye ilişkin bilgi; hesapla ilişkilendirilen öğrenme kayıtları da değerlendirmeye girer.
Kaçın: yalnız kimlik numarası ve ad

Bölüm 42 · Test ve Kalite

Test (test)
Belirli başlangıç ve eylem koşullarında gözlenen davranışı beklenen sonuçla denetleyen düzenek.
Kaçın: doğruluk ispatı
Birim testi (unit test)
Sınırlı bir kod biriminin davranışını dar kapsamda sınayan test.
Kaçın: her fonksiyona zorunlu bir dosya
Entegrasyon testi (integration test)
Kodun gerçek veritabanı gibi başka bir parçayla bağlantısını denetleyen test.
Kaçın: sahte bağlantıyı gerçek saymak
Uçtan uca test (end-to-end test, E2E)
Anlamlı bir kullanıcı akışını istemci ve sunucu gibi birden çok katmandan geçirerek sınayan test.
Kaçın: yalnız bir fonksiyon testi
Doğrulama ifadesi (assertion)
Gözlenen değeri beklenen koşulla karşılaştırıp uyuşmazlığı başarısızlık olarak bildiren denetim.
Kaçın: sadece sonucu yazdırmak
Sınır durumu (edge case)
Bir eşik, boşluk veya hata sınırında özel davranış doğurabilen girdi durumu.
Kaçın: yalnız rastgele örnek
Test verisi düzeneği (fixture)
Testin denetlenebilir başlangıcını sağlayan bilinen kurgu veri ve kurulum.
Kaçın: üretim verisinin rastgele kopyası
Test dublörü (test double)
Testte gerçek işbirlikçinin yerine kullanılan sahte parça; gerçek bağlantı davranışını kendiliğinden kanıtlamaz.
Kaçın: her türüne yalnız mock demek
Test piramidi (test pyramid)
Çok sayıda dar ve hızlı, daha az sayıda geniş ve pahalı test için kapsam–maliyet sezgisi.
Kaçın: zorunlu test oranı
Kararsız test (flaky test)
Aynı kodla denetimsiz zaman veya veri gibi etkiler yüzünden bazen geçip bazen kalan test.
Kaçın: tekrar geçince düzelmiş saymak
Test önce geliştirme (test-driven development, TDD)
Yeni davranış için önce başarısız test, sonra çalışan gerçekleme ve ardından yapı iyileştirmesiyle ilerleme.
Kaçın: testi sonradan yazmakla özdeşleştirmek
Yeniden düzenleme (refactoring)
Gözlenebilir davranışı değiştirmeden kodun iç yapısını iyileştirme.
Kaçın: her değişikliğe refactor demek
Tablo güdümlü test (table-driven test)
Girdi ve beklenti satırlarını aynı test mantığından geçirerek sınama biçimi.
Kaçın: her satır için aynı kodu kopyalamak
Test kapsamı (test coverage)
Test çalışmasında hangi kod bölümlerinin yürütüldüğünü gösteren ölçüm; doğruluk garantisi değildir.
Kaçın: kalite puanı
Sürekli entegrasyon (continuous integration, CI)
Değişiklikleri sık bütünleştirip ortak kodun derleme ve test denetimlerini düzenli çalıştırma pratiği.
Kaçın: otomatik yayınla eş anlamlı kullanmak

Bölüm 43 · Yayına Alma ve Bulut

Yayına alma (deployment)
Belirli yazılım sürümünü belirli çalışma ortamına yerleştirip çalışır hale getirme.
Kaçın: yalnız dosya yüklemek
Ortam (environment)
Uygulamanın kod, yapılandırma, veri ve hizmetlerle çalıştığı bağlam.
Kaçın: yalnız makine adı
Geliştirme ortamı (development)
Kod yazma ve yerel denemeler için kullanılan çalışma düzeni.
Kaçın: üretim verisinin zorunlu kopyası
Test ortamı (test environment)
Otomatik denetimlerin kontrollü veri ve hizmetlerle çalıştığı düzen.
Kaçın: staging ile zorunlu özdeşlik
Üretim öncesi ortam (staging)
Yayın adayının üretime benzer koşullarda denendiği, üretimden ayrı ortam.
Kaçın: gerçek kullanıcı üretimi
Üretim ortamı (production)
Gerçek kullanıcıların gerçek verileriyle hizmet aldığı çalışma ortamı.
Kaçın: geliştirme sunucusu
Sanal makine (sunucu bağlamı) (virtual machine, VM)
Kendi işletim sistemi ve çekirdeğiyle çalışan sanallaştırılmış bilgisayar; JVM'den farklı bağlam.
Kaçın: konteyner ile özdeşleştirmek
Konteyner (container)
Uygulama dosyalarıyla birlikte yalıtılmış çalışan, aynı sistemdeki konteynerlerle çekirdek paylaşan süreç düzeni.
Kaçın: küçük sanal makine
Konteyner imajı (container image)
Konteyneri çalıştırmak için paketlenmiş dosya ve program çıktısı; çalışan örnek değildir.
Kaçın: Dockerfile
Dockerfile (Dockerfile)
Konteyner imajının oluşturma adımlarını tarif eden metin dosyası.
Kaçın: imajın kendisi
Kalıcı birim (volume)
Verinin tek bir konteynerin yaşamından bağımsız tutulmasını sağlayan depolama mekanizması.
Kaçın: yedek
İmaj kayıt defteri (container registry)
Konteyner imajlarının saklandığı ve dağıtıldığı hizmet.
Kaçın: çalışan konteyner
Bulut (cloud)
İşlem, ağ ve depolama kaynaklarına hizmet olarak erişilen, sorumlulukların sağlayıcıyla paylaşıldığı düzen.
Kaçın: donanımsız çalışma
Hizmet olarak altyapı (Infrastructure as a Service, IaaS)
Makine, ağ ve depolama gibi temel kaynaklara hizmet olarak erişim modeli.
Kaçın: tamamen yönetilen uygulama
Hizmet olarak platform (Platform as a Service, PaaS)
Altyapının önemli bölümünü sağlayıcıya bırakarak uygulama çalıştırmaya odaklanan hizmet modeli.
Kaçın: uygulama güvenliğinin devri
Sunucusuz (serverless)
Sunucu sağlama ve işletiminin önemli bölümünün kullanıcıdan gizlendiği hizmet düzeni; sunucular hâlâ vardır.
Kaçın: sunucu yok
Sürekli teslim (continuous delivery)
Yazılımı güvenilir biçimde yayına alınabilir tutma pratiği; üretim geçişinde insan kararı olabilir.
Kaçın: otomatik üretim dağıtımıyla özdeşlik
Sürekli dağıtım (continuous deployment)
Denetimden geçen değişikliklerin üretime otomatik yayımlandığı düzen.
Kaçın: yalnız testleri çalıştırmak
İş akışı (CI/CD) (workflow)
Bir olayla tetiklenen, işleri ve adımları tanımlayan otomasyon tarifi.
Kaçın: çalıştırıcı
Çalıştırıcı (runner)
CI/CD işinin adımlarını gerçekten yürüten makine.
Kaçın: iş akışı dosyası
Yayın çıktısı (artifact)
Bir sürüm için oluşturulmuş ikili dosya, web dosyaları veya imaj gibi dağıtılabilir çıktı.
Kaçın: kaynak kodun kendisi
Geri dönüş (rollback)
Hatalı yayından çalışan sürüme dönme planı; kodla birlikte şema ve veri uyumu düşünülür.
Kaçın: her veriyi kendiliğinden geri getirmek
DNS kaydı (DNS record)
Alan adıyla ilgili adres veya başka ad gibi bilgiyi taşıyan kayıt.
Kaçın: sunucu süreci
Gözlem (observability)
Sistemin dışa verdiği sinyallerden iç davranışını anlamayı mümkün kılan düzen.
Kaçın: yalnız açık/kapalı denetimi
Ölçüm (metric)
Zaman içindeki sayısal sistem davranışını özetleyen gösterge.
Kaçın: tek olay kaydı
İz (trace)
Bir isteğin farklı parçalardaki yolculuğunu ve sürelerini ilişkilendiren sinyal.
Kaçın: tek kayıt satırı
Alarm (alert)
Müdahale gerektiren koşul oluştuğunda sorumluya haber veren düzen.
Kaçın: her olayda bildirim
Yapılandırma (configuration, config)
Çalıştırılan yere göre değişen adres ve erişim bilgisi gibi ayarlar; kaynak koddan ayrılır.
Kaçın: sır kasası

Bölüm 44 · Mimariler

Yazılım mimarisi (software architecture)
Sistemin önemli tasarım kararları ve parçalarının sınırları; kitapta değiştirmesi pahalı kararlar bakışıyla ele alınır.
Kaçın: yalnız kutu çizimi
Monolit (monolith)
Sunucu tarafının tek mantıksal yayın birimi halinde oluşturulduğu düzen; tek dosya veya tek kopya demek değildir.
Kaçın: tek makineyle özdeşleştirmek
Modüler monolit (modular monolith)
Tek yayın birimi içinde bilgi gizleyen ve açık sorumluluk sınırları koruyan modüllü düzen.
Kaçın: rastgele klasörlere bölmek
Mikroservisler (microservices)
İş yetenekleri çevresinde kurulmuş, kendi süreçlerinde çalışan ve bağımsız yayımlanabilen hizmetler yaklaşımı.
Kaçın: yalnız küçük dosyalar
Katmanlı mimari (layered architecture)
Sunum, iş kuralı ve veri erişimi gibi sorumlulukları mantıksal düzeylerle ayıran düzen.
Kaçın: her katmanı ayrı makine saymak
Sunum katmanı (presentation layer)
Kullanıcı arayüzü veya HTTP/JSON gibi dış sözleşmeler üzerinden dünyayla konuşan sorumluluk düzeyi.
Kaçın: yalnız renk ve görünüm
İş mantığı (business logic)
Puan ve ilerleme gibi ürün kurallarını yürüten kod sorumluluğu.
Kaçın: HTTP biçimiyle özdeşleştirmek
Veri katmanı (data layer)
Kalıcı verinin okunması ve yazılması gibi saklama ayrıntılarını taşıyan sorumluluk düzeyi.
Kaçın: işlem sınırını düşünmeden her sorguyu ayırmak
Olay güdümlü mimari (event-driven architecture)
Bir parçadaki değişimin olay bildirimleriyle başka parçaların işini tetikleyebildiği düzen.
Kaçın: her olayı zorunlu ağ mesajı saymak
Olay (mimari bağlam) (event)
Gerçekleşmiş değişikliği bildiren bilgi; yapılması istenen komuttan ayrılır.
Kaçın: komutla özdeşleştirmek
İşlemsel giden kutusu (transactional outbox)
Asıl veriyle bildirim niyetini aynı yerel işlemde kaydedip dış sisteme sonradan ileten kalıp.
Kaçın: tam bir kez yan etki garantisi
En az bir kez teslim (at-least-once delivery)
Mesajın yeniden teslim edilebildiği düzen; tüketici tekrarın yanlış ek etki yaratmasını engeller.
Kaçın: her teslim tek iştir varsayımı
Ölçeklenme (scaling)
Artan yük altında hizmeti sürdürmek için kaynak ve çalışan örnek düzenini değiştirme.
Kaçın: yalnız kodu hızlandırmak
Dikey ölçeklenme (vertical scaling)
Tek makinenin işlemci veya bellek gibi kaynaklarını artırma.
Kaçın: kopya sayısını artırmak
Yatay ölçeklenme (horizontal scaling)
İş yükünü birden çok çalışan örneğe yayarak kapasiteyi düzenleme.
Kaçın: mikroservise geçmekle özdeşlik
Yük dengeleyici (load balancer)
Gelen trafiği birden çok hedefe dağıtan, uygun düzenlerde hedef sağlığını da gözeten giriş noktası.
Kaçın: bütün darboğazların çözümü

Bölüm 45 · Uçtan Uca: Uygulamamız

Cevabın yolculuğu
Bir kullanıcı eyleminin (cevaba dokunmak) bütün katlardan geçerek ekrandaki sonuca dönüşmesinin dokuz duraklı anlatımı: dokunuş → React Native → TanStack → fetch → HTTPS → Go handler → Postgres işlemi → Redis → JSON → ekran.
Mutasyon (mutation)
TanStack Query'de sunucudaki veriyi değiştiren işlem (ör. cevap göndermek); başarıdan sonra ilgili sorguları geçersiz kılıp ekranı tazeler.
Handler (handler)
Bir HTTP isteği geldiğinde çalışan, belirli bir yola bağlı Go fonksiyonu: kimlik doğrular, gövdeyi çözer, işi yapar, yanıt yazar.
Gerçeğin kaynağı (source of truth)
Bir verinin tek yetkili ve kalıcı kopyasının durduğu yer; bizde Postgres. Redis gibi önbellekler bundan türetilir ve yeniden kurulabilir.
Oyunlaştırma (gamification)
Puan, seri, can, sıralama gibi oyun mekaniklerini oyun olmayan bir bağlama (öğrenmeye) taşımak.
Seri kuralı (streak rule)
Art arda gün sayısını hesaplayan kural: bugün zaten cevaplandıysa aynı, dün cevaplandıysa bir fazla, daha eskiyse 1. Sunucunun saatine göre sunucuda hesaplanır.
İstemciye güvenmemek (never trust the client)
Doğruluk, puan ve yetki kararlarının kullanıcının cihazında değil, onun kontrol edemediği sunucuda verilmesi ilkesi.
İkiye bölerek hata aramak (bisecting)
Katlı bir yolculukta hatayı, orta noktayı yoklayıp aday durakları her seferinde yarıya indirerek bulma yöntemi.

Bölüm 46 · Agent'larla Geliştirme

Agent (agent)
Araçları (dosya okuma, terminal) çevreden gelen geri bildirimle bir döngü içinde kendi kararıyla kullanan LLM tabanlı sistem. İş akışından farkı: yolu önceden yazılmış kod değil, modelin kendisi seçer.
Kaçın: Kaçın: ajan (kitapta İngilizce terim kullanılır)
İş akışı (yapay zekâ) (workflow)
LLM'lerin ve araçların önceden yazılmış kod yollarıyla yönetildiği sistem. Bkz. Agent.
Büyük dil modeli (large language model, LLM)
Metin alıp metin üreten yapay zekâ modeli; ayrıntısı Bölüm 58'de.
Araç (tool)
Modelin metin üretmenin ötesinde bir şey yapmasını sağlayan işlev: dosya okumak, komut çalıştırmak. Model aracı çağırmak ister, çatı çalıştırır.
Çatı (harness)
Modeli saran, araçları gerçekten çalıştıran ve sonuçları modele geri veren program.
AGENTS.md
Projenin kökünde duran, agent'lara derleme/test komutlarını ve kuralları anlatan düz Markdown dosyası. README insanlar içindir, AGENTS.md agent'lar içindir.
Kabul ölçütleri (acceptance criteria)
Bir işin bitmiş sayılması için sağlanması gereken, evet/hayır cevaplanabilen koşullar; ideal olarak çalıştırılabilir bir kontrol.
Fark (diff)
İki sürüm arasında hangi satırların eklendiğini (+), silindiğini (-) gösteren çıktı; agent'ın işini incelemenin temel aracı.
Kaçın: Kaçın: fark yerine "değişiklik listesi" (belirsiz)
Uydurma (hallucination)
Modelin gerçek olmayan bir şeyi (var olmayan fonksiyon, yapılmamış test) inandırıcı biçimde söylemesi.
Bağlam penceresi (context window)
Modelin bir adımda "görebildiği" toplam metin: talimatlar, konuşma, okunan dosyalar, araç çıktıları. Dolunca eski şeyler özetlenir ya da kaybolur.
En az yetki ilkesi (least privilege)
Bir kullanıcıya ya da agent'a yalnızca işi için gereken izni verme ilkesi. Bkz. Bölüm 41.

Kısım III · Merak

Bölüm 47 · Yapay Zekâ Haritası

Yapay zekâ (artificial intelligence, AI)
Zekâ gerektiren işleri yapan bilgisayar programlarının geniş alanı; ne yaptığıyla tanımlanır, nasıl yaptığıyla değil.
Makine öğrenmesi (machine learning, ML)
Kuralı elle yazmak yerine örneklerden çıkaran programlar; yapay zekânın bir alt kümesi.
Derin öğrenme (deep learning, DL)
Öğrenmeyi çok katmanlı sinir ağlarıyla yapan yaklaşım; makine öğrenmesinin alt kümesi.
Sinir ağı (neural network)
Birbirine bağlı küçük birimlerden (nöronlardan) oluşan, beyinden esinlenmiş hesap yapısı. Ayrıntısı Bölüm 51'de.
Kaçın: Kaçın: yapay sinir ağı (uzun, gerekmedikçe)
Kural tabanlı program (rule-based program)
İşlemin içinin programcının yazdığı kurallardan oluştuğu program; seri kuralı gibi.
Öğrenen program (learning program)
İşlemin içinin örneklerden bulunan sayılarla (parametrelerle) doldurulduğu program.
Model (model)
Girdiyi çıktıya çeviren, şekli sabit ama içindeki sayıları ayarlanabilir fonksiyon.
Parametre (parameter)
Modelin ayarlanabilir sayısı (ağırlık, sapma). Eğitim bunları değiştirir; çıkarımda sabittir.
Eğitim (training)
Parametreleri örneklere daha iyi uyacak biçimde ayarlama süreci; pahalıdır, önceden yapılır.
Çıkarım (inference)
Eğitilmiş modeli, parametreler sabitken yeni bir girdiye uygulamak; her kullanımda yapılır.
Kaçın: Kaçın: çıkarsama (kitapta çıkarım kullanılır)
Denetimli öğrenme (supervised learning)
Her örneğin bir girdi ve doğru cevabı (etiketi) olduğu öğrenme türü.
Etiket (label)
Bir girdiye karşılık gelen doğru cevap; denetimli öğrenmenin "öğretmen" bilgisi.

Bölüm 48 · Eğim ve Türev

Fonksiyon, matematikte (function)
Her geçerli girdiye belirli bir çıktı veren kural. Buradaki sayısal örneklerde aynı girdi aynı sonucu verir; örneğin f(x)=x². Programlama fonksiyonu fikriyle ilişkilidir; her programlama fonksiyonu yalnız bir matematiksel girdi–çıktı hesabı yapmaz.
Kaçın: fonksiyonu yalnız bir formül veya yalnız bir grafik sanmak.
Eğim (slope)
Çıktıdaki değişimin girdideki değişime oranı. Bir doğru için sabittir; eğri üzerinde iki nokta arasındaki ortalama eğim ile tek noktadaki yerel eğim ayrılır.
Kaçın: çıktı değeriyle karıştırmak.
Türev (derivative)
Girdideki sıfır olmayan oynatma sıfıra yaklaşırken fark oranının ulaştığı değer, varsa. O noktada fonksiyonun küçük girdi değişimine yerel hassasiyetini anlatır; f′(x) veya df/dx ile gösterilir.
Kaçın: büyük adımlar için kesin çıktı farkı; h=0 koyup bölmek.
Sonlu fark (finite difference)
Fonksiyonu birbirine yakın girdilerde hesaplayıp sonuçların farkını kullanma yöntemi. Farkı adım büyüklüğüne bölerek türeve sayısal yaklaşım elde edilir; bu, sıfır adımlı bir hesap değildir.
Kaçın: yaklaşık ölçümü türevin tam tanımıyla özdeşleştirmek.
Teğet (tangent)
Bir eğriyi belirli noktada yerel olarak temsil eden doğru; türev mevcutsa o doğrunun eğimi türevdir.
Kaçın: eğrinin bütününü temsil eden doğru.
Kısmi türev (partial derivative)
Birden çok bağımsız girdili fonksiyonda diğer girdiler sabit tutulurken yalnız seçilen girdiye göre alınan türev; ∂F/∂a gibi yazılır.
Kaçın: “kısmi” sözcüğünü yaklaşık veya eksik türev diye okumak.
Vektör (vector)
Bu bölümde belirli sırayla tutulan sayı listesi. Gradyanda her konum belirli bir girdiye aittir; sırayı değiştirmek sayının neyi anlattığını değiştirir.
Kaçın: sırasız sayı kümesi.
Gradyan (gradient)
Skaler çıktılı bir fonksiyonun bütün seçilmiş girdilere göre kısmi türevlerini girdi sırasıyla bir araya getiren vektör; ∇F ile gösterilir. “a'nın gradyanı” günlük kullanımda bu vektörün a'ya ait bileşenini anlatabilir.
Kaçın: gradyanı çıktı değeri veya kendiliğinden yapılan parametre güncellemesi sanmak.
Zincir kuralı (chain rule)
İç içe fonksiyonlarda bir bağımlılık yolu boyunca yerel türevleri çarparak ilk girdinin son çıktıya etkisini hesaplama kuralı. Birden çok yol varsa bu yolların katkıları toplanır.
Kaçın: aynı yol boyunca eğimleri toplamak.

Bölüm 49 · micrograd 1: Hesap Grafiği

Value nesnesi (Value object)
micrograd'ın bir skaler sayıyı, gradyan alanını, önceki değerlere bağlantıları ve o sayıyı üreten işlemin geri taşıma tarifini birlikte tutan nesnesi. Buradaki ad belirli Python sınıfını anlatır.
Kaçın: yalnız sayı; yazılım mimarisindeki her “value object” kullanımını bu sınıfla aynı sanmak.
Skaler (scalar)
Bu hesap motorunda tek bir sayı; sayı listesi veya çok boyutlu tablo değil. Her Value bir skaler değer taşır.
Kaçın: skaler ile gradyan vektörünü aynı şey saymak.
İşleç yükleme (operator overloading)
Bir sınıfın + veya * gibi işleçlerin kendi nesneleri üzerinde ne yapacağını tanımlaması. Value.__add__ ve Value.__mul__ sonuçla birlikte hesap kaydını da üretir.
Kaçın: işaretleri değiştirmenin yeni bir matematik kuralı oluşturduğunu sanmak.
Hesap grafiği (computational graph)
Hangi sayının hangi önceki değerlerden hangi işlemle üretildiğini gösteren bağlı hesap kaydı. Oklar girdiden sonuca çizilebilir; micrograd'ın _prev alanı sonuçtan önceki değerlere erişim sağlar.
Kaçın: x–y eksenlerindeki fonksiyon eğrisiyle karıştırmak; her zaman ağaç sanmak.
Hesap düğümü (node)
Bu motorun hesap grafiğinde bir Value ile tutulan başlangıç, ara veya son değer. Görselleştirmede işlem için çizilen ayrı simge, ayrıca bir Value nesnesi gerektirmez.
Kaçın: DOM düğümüyle veya bütün nöronla bağlamı belirtmeden özdeşleştirmek.
Kenar, hesap grafiğinde (edge)
Bir değerin başka bir değerin üretilmesinde kullanıldığını gösteren yönlü bağımlılık bağlantısı.
Kaçın: fiziksel ağ kablosu veya ekrandaki çizgiden ibaret sanmak.
Yönlü çevrimsiz grafik (directed acyclic graph, DAG)
Bağlantılarının yönü olan ve bu yönleri izleyerek aynı düğüme dönülen çevrim içermeyen yapı. micrograd'ın olağan işlemleriyle kurulan hesap grafiği bu yapıdadır; aynı ara değer birden çok yerde paylaşılabilir.
Kaçın: yalnız ağaç; çevrim ile bir fonksiyonun tekrar çağrılmasını karıştırmak.
İleri geçiş (forward pass)
Girdilerden başlayıp bağımlılık sırasıyla ara ve son değerleri hesaplama. micrograd bu sırada hesap grafiğini de kurar; grad alanlarını henüz hesaplamış olmak gerekmez.
Kaçın: geri yayılım veya parametre güncellemesi.
Otomatik türev (automatic differentiation, autograd)
Bir hesabın bilinen küçük işlemlerindeki türev kurallarını hesap kaydı üzerinde birleştirerek o noktadaki türevleri hesaplama. Yeni etiket veya amaç seçmez, kendi başına eğitim yapmaz.
Kaçın: rastgele parametre araması; bütün formülü sembolik olarak açmak; sonlu farkla aynı saymak.
Ters kip (reverse mode)
Seçilmiş son çıktıdan başlayıp önceki değerlere doğru türev katkılarını hesaplayan otomatik türev düzeni. micrograd geri yayılımı bu yönde yürütür.
Kaçın: son çıktıdan başlangıç sayılarının tek çözümünü geri bulmak.

Bölüm 50 · micrograd 2: Geri Yayılım

Geri yayılım (backpropagation)
Seçilmiş son çıktının önceki değerlere göre türevlerini hesap grafiği boyunca geriye doğru hesaplama. Yerel türevleri gelen gradyanla çarpar, aynı değere gelen farklı katkıları toplar.
Kaçın: parametreleri kendiliğinden değiştiren eğitim adımı; sonucun tersini çözmek.
Başlangıç gradyanı (seed gradient)
Geri hesabı başlatan türev değeri. micrograd seçilmiş skaler çıktının kendisine göre türevini 1 yapar; bu, çıktı sayısının 1 olduğu anlamına gelmez.
Kaçın: başlangıç parametresi veya veri etiketi.
Yerel türev (local derivative)
Tek bir işlemin çıktısının onun girdilerinden birine göre türevi. Toplamada 1; çarpmada diğer girdinin değeridir. Son çıktıya göre gradyanla aynı sayı olmak zorunda değildir.
Kaçın: işlemin data değeri veya tüm grafiğin gradyanı.
Gelen gradyan (upstream gradient)
Seçilmiş son çıktının, ele alınan işlemin çıktısına göre türevi. Yerel türevle çarpılarak o işlemin girdisine katkı oluşturur.
Kaçın: diğer girdinin data alanıyla karıştırmak.
Gradyan birikimi (gradient accumulation)
Bu bölümde, aynı nesnenin sonuca giden farklı kullanım yollarından gelen türev katkılarının grad alanında += ile toplanması. Eğitimde ayrı adımlardan kalan gradyanları temizlememek farklı bir sorundur.
Kaçın: her düğüme yalnız bir katkı geleceğini varsaymak; eski katkıyı = ile ezmek.
Topolojik sıralama (topological sort)
Bu hesap grafiğinde her işlem girdisinin, ondan üretilen sonuçtan önce yer aldığı düğüm sırası. Geri yayılım ters sırayı izleyerek bir düğümü dağıtmadan önce sonraki bütün katkıların gelmesini sağlar. Geçerli sıra tek olmak zorunda değildir.
Kaçın: alfabetik veya data büyüklüğüne göre sıralama.

Bölüm 51 · Nöron, Katman, MLP

Yapay nöron (neuron)
Girdileri ağırlıklarla çarpıp bir sapmayla toplayan; istendiğinde sonucu etkinleştirme fonksiyonundan geçiren küçük hesap birimi. Biyolojik sinir hücresinin ayrıntılı bir kopyası değildir.
Kaçın: nöronu insan beyniyle özdeşleştirmek
Ağırlık (weight)
Nöronun bir girdisini çarpan, sonuca etkisini ve yönünü belirleyen ayarlanabilir sayı.
Kaçın: önem katsayısını her bağlamda olasılık saymak
Sapma (bias)
Ağırlıklı toplama girdilerden bağımsız olarak eklenen ayarlanabilir sayı; nöronun başlangıç eğilimini kaydırır.
Kaçın: yanlılık, önyargı (bu nöron parametresi için)
Toplam (weighted sum)
Her girdinin kendi ağırlığıyla çarpılıp bütün çarpımların sapmayla toplandığı değer: w₁x₁ + w₂x₂ + … + b.
Kaçın: toplamı etkinleştirme sonrası çıktıyla karıştırmak
Etkinleştirme fonksiyonu (activation function)
Nöronun toplamına uygulanan fonksiyon. Doğrusal olmayan biçimleri, art arda katmanların tek bir ağırlıklı toplama çökmesini önler.
Kaçın: aktivasyon fonksiyonu
Doğrusal olmayan (nonlinear)
Tek bir doğrusal toplamla ifade edilemeyen dönüşüm niteliği. Ağdaki tanh ve ReLU, bu niteliği sağlayan etkinleştirme örnekleridir.
Kaçın: doğrusal olmayanı rastgele veya düzensiz saymak
tanh (hyperbolic tangent, hiperbolik tanjant)
Sonlu gerçek girdiyi −1 ile +1 arasına sıkıştıran etkinleştirme fonksiyonu; büyük mutlak girdilerde düzleşir.
Kaçın: tanh çıktısını genel olarak olasılık saymak
ReLU (rectified linear unit)
Negatif girdiyi sıfır, pozitif girdiyi kendisi olarak veren etkinleştirme fonksiyonu.
Kaçın: ReLU ile softmaxı aynı fonksiyon saymak
Ölü ReLU (dead ReLU)
Gördüğü örneklerde sürekli negatif toplam ürettiği için etkinleştirme çıkışı ve bu yoldan taşınan gradyanı sıfır kalan ReLU nöronu.
Kaçın: her sıfır çıktıyı kalıcı ölü nöron saymak
Katman (layer)
Aynı girdileri kendi ağırlıklarıyla işleyen nöronlar kümesi. Kat planındaki soyutlama katıyla aynı tür yapı değildir.
Kaçın: iki farklı katman anlamını birbirine karıştırmak
Çok katmanlı algılayıcı (MLP, multi-layer perceptron)
Katmanların art arda bağlandığı; bir katmanın çıktısının sonrakine girdi olduğu sinir ağı yapısı.
Kaçın: çok katmanlı ağın her katmanını zorunlu olarak doğrusal saymak
Gizli katman (hidden layer)
Ağın girdisi ile son çıktı katmanı arasında bulunan iç katman. Gizli olması, değerlerinin ölçülememesi değil, dış çıktı olmaması demektir.
Kaçın: gizliyi şifrelenmiş diye okumak

Bölüm 52 · Eğitim: Kayıp ve Gradyan İnişi

Kayıp (loss)
Tahminle istenen sonuç arasındaki uyumsuzluğu, seçilen ölçüte göre tek sayıda ifade eden değer. Bu bölümde kareli farkların toplamı kullanılır.
Kaçın: kaybı her zaman yanlış cevap yüzdesi saymak
Kayıp fonksiyonu (loss function)
Modelin tahminlerinden ve hedeflerden kayıp hesaplayan kural. Eğitimde veri sabitken parametrelerin değiştirilmesiyle değeri değişir.
Kaçın: kayıp ölçüsünü bütün gerçek dünya başarılarının kendisi saymak
Gradyan inişi (gradient descent)
Parametreleri kaybın gradyanının ters yönünde küçük adımlarla değiştiren eniyileme yöntemi.
Kaçın: geri yayılım ile aynı işlem saymak
Öğrenme oranı (learning rate)
Gradyanla yapılan parametre güncellemesinin büyüklüğünü ayarlayan sayı. Çok büyük ya da çok küçük seçim eğitimde sorun yaratabilir.
Kaçın: öğrenilen bir ağırlık sanmak
Eğitim döngüsü (training loop)
İleri geçiş, kayıp hesabı, geri geçiş ve parametre güncellemesini tekrarlayan program döngüsü. Yeni geri geçiş için önceki gradyanlar temizlenir.
Kaçın: her turda ağırlıkları sıfırlamak
Gradyanı sıfırlama (zeroing gradients)
Yeni geri geçişten önce önceki turun birikmiş gradyanlarını temizlemek. Parametrenin kendi değerini sıfırlamak değildir.
Kaçın: ağırlıkları sıfırlama
Aşırı öğrenme (overfitting)
Modelin eğitim verisinde iyi olurken görülmeyen veride kötüleşmesi; öğrendiğini yeni örneklere yeterince taşıyamaması.
Kaçın: fazla eğitim adımını tek başına aşırı öğrenme kanıtı saymak
PyTorch (PyTorch)
Tensör işlemleri, otomatik türev ve farklı hesap aygıtlarıyla sinir ağı kurmayı sağlayan kütüphane.
Kaçın: yalnızca GPU ile çalışan bir dil saymak
Tensör (tensor)
Sayıları düzenli eksenler üzerinde tutan veri yapısı; model girdileri, çıktıları ve parametreleri bununla temsil edilebilir. Şekil ve matris çarpımı Bölüm 55.3’te ayrıntılanır.
Kaçın: tensörü GPU donanımının kendisi saymak
Optimizer (optimizer)
Parametre güncelleme kuralını ve onun çeşitlerini yürüten hazır araç; eğitim döngüsünün güncelleme adımını üstlenir.
Kaçın: geri yayılım motoruyla özdeşleştirmek

Bölüm 53 · makemore 1: Bigram

Dil modeli (language model)
Önceki metin parçalarından sonrakinin ne olabileceğine ilişkin olasılıklar veren model.
Kaçın: her dil modelini sohbet agentı saymak
Harf düzeyinde (character-level)
Modelin tahmin biriminin bu örnekte tek bir harf veya özel sınır işareti olması.
Kaçın: bütün dil modellerinin biriminin tek harf olduğunu sanmak
Otoregresif (autoregressive)
Her yeni parçayı önceki parçalara bağlı üreten ve üretilen parçayı sonraki tahminin girdisine ekleyen modelleme biçimi.
Kaçın: bütün çıktının bağımsız ve aynı anda seçildiğini sanmak
Olasılık dağılımı (probability distribution)
Olası sonuçlara verilen, negatif olmayan ve toplamı 1 eden olasılıkların bütünü.
Kaçın: dağılımı tek bir kesin cevap saymak
Veri kümesi (dataset)
Öğrenme veya değerlendirme için bir araya getirilen örnekler topluluğu; bu bölümde names.txt içindeki isimler.
Kaçın: dosyanın bütün olası isimleri içerdiğini sanmak
Başlangıç ve bitiş işareti (start and end token)
Bir örneğin başladığını veya bittiğini belirten özel işaret. Bu bigramda her iki görev için nokta kullanılır.
Kaçın: noktayı isim içindeki sıradan bir harf saymak
Bigram (bigram)
Art arda gelen iki parçalık çift. Bu kitabın bigram dil modeli sonraki harfin dağılımını yalnızca önceki harften hesaplar.
Kaçın: iki harflik bağlam sanmak; bağlam burada bir harftir
Sayım tablosu (count table)
Satırı önceki, sütunu sonraki harf olan ve her hücresinde o çiftin görülme sayısını tutan tablo.
Kaçın: sayımı doğrudan olasılık saymak
Normalleştirme (normalization)
Bu modelde her satırın sayımlarını kendi toplamına bölerek satırı toplamı 1 olan olasılıklara dönüştürmek.
Kaçın: bütün tablonun tek toplamına bölmek
Koşullu olasılık (conditional probability)
Bir bilgi verildiğinde başka bir sonucun olasılığı; P(n|a), önceki harf a iken sonrakinin n olma olasılığıdır.
Kaçın: P(n|a) ile P(a|n) değerlerini zorunlu olarak eşit saymak
Örnekleme (sampling)
Bir olasılık dağılımına uygun rastgele sonuç seçmek. Burada sonraki harfi çekmektir; Bölüm 2’deki ses örneklemesiyle bağlamları ayrıdır.
Kaçın: her defasında en olası harfi seçmek
Tohum (seed)
Sözde rastgele sayı üretecinin başlangıcını belirleyen değer. Aynı üreteç ve aynı çağrı dizisiyle deneyin tekrarlanmasına yardım eder.
Kaçın: farklı kütüphanelerin aynı tohumla aynı diziyi vermesini beklemek

Bölüm 54 · Olabilirlik ve Kayıp

Olabilirlik (likelihood)
Sabit gözlenmiş veriye modelin verdiği olasılığın, model parametrelerinin fonksiyonu olarak değerlendirilmesi. Bu bigram örneğinde koşullu harf olasılıklarının çarpımıdır.
Kaçın: modelin kendisinin doğru olma olasılığıyla karıştırmak
Logaritma (logarithm)
Bu bölümde bir sayının e tabanındaki üssünü veren doğal logaritma. Pozitif sayıların çarpımını logaritmaların toplamına çevirir.
Kaçın: logaritmayı olasılığın tersi saymak
Log olabilirlik (log-likelihood)
Olabilirliğin doğal logaritması; bu modelde gözlenen çiftlerin log olasılıklarının toplamı.
Kaçın: logaritmanın olasılık sıralamasını ters çevirdiğini sanmak
Negatif log olabilirlik (negative log-likelihood, NLL)
Log olabilirliğin eksi işaretlisi; küçük olması daha iyi veri uyumuna karşılık gelir. Eğitimde çift başına ortalaması kayıp olarak kullanılır.
Kaçın: NLL değerini doğruluk yüzdesi saymak
Yumuşatma (smoothing)
Hiç görülmemiş çiftlere de pozitif olasılık verebilmek için sayımlara küçük bir pay ekleyip yeniden normalleştirme. +1 yöntemi her hücreye bir ekler.
Kaçın: düzgünleştirme; sayım yumuşatmasını ağırlık düzenlileştirmesiyle birebir aynı saymak

Bölüm 55 · Bigram'ı Sinir Ağıyla Kurmak

Tek-sıcak kodlama (one-hot encoding)
Olası her kimlik için ayrı bir konum ayırıp yalnızca seçilen kimliğin konumunu 1, diğerlerini 0 yapan gösterim.
Kaçın: kodlamayı burada kod yazmak diye okumak
Logit (logit)
Modelin olası bir çıktı için ürettiği, henüz normalleştirilmemiş ham skor. Negatif olabilir ve doğrudan olasılık değildir.
Kaçın: logiti olasılıkla veya ham sayımla özdeşleştirmek
Softmax (softmax)
Bir skor dizisinin üstel değerlerini toplamlarına bölerek toplamı 1 olan olasılık dağılımı üreten dönüşüm.
Kaçın: yalnızca en yüksek skoru seçen işlem saymak
Matris (matrix)
Sayıları satırlar ve sütunlar halinde düzenleyen iki boyutlu yapı; bu modelin W ağırlıkları 27 × 27 matristir.
Kaçın: matrisin her satırını zorunlu olarak bir olasılık dağılımı saymak
Şekil (shape)
Bir tensörün eksenleri boyunca kaç eleman olduğunu gösteren düzen bilgisi; (5,27), beş satırda yirmi yedişer değer demektir.
Kaçın: şekli tensörün sayısal içeriğiyle karıştırmak
Matris çarpımı (matrix multiplication)
Soldaki matrisin her satırı ile sağdakinin her sütununu eleman eleman çarpıp toplayarak sonuç hücrelerini hesaplayan işlem.
Kaçın: eleman bazında çarpma ile aynı işlem saymak
Yayınlama (broadcasting)
Uyumlu eksen boyutlarına sahip tensörlerin bazı işlemlerde genişletilmiş gibi birlikte işlenmesi. Kurallar boyutları sağdan hizalar.
Kaçın: işlemin anlamını kontrol etmeden şekil uyumunu doğruluk saymak
Çapraz entropi (cross entropy)
Bu bölümde logitler ve doğru sınıf indeksleriyle hesaplanan ortalama negatif log olabilirlik kaybı. PyTorch’un hazır çağrısı logit bekler.
Kaçın: hazır kayıp çağrısına logit yerine softmax sonucunu vermek
Düzenlileştirme (regularization)
Eğitim amacına modelin parametrelerini sınırlayan ek bir baskı koymak. Buradaki örnek ağırlık karelerinin ortalamasını cezalandırır.
Kaçın: sayım tablosuna +1 eklemekle aynı formül saymak
Grafik işlemci (graphics processing unit, GPU)
Çok sayıda benzer hesabı paralel yürütmeye uygun işlemci; bu bölümde matris işlemlerini hızlandırabilen alt kat donanımı.
Kaçın: GPU kullanımını modelin kendiliğinden daha çok bağlam görmesi saymak

Bölüm 56 · MLP Dil Modeli ve Gömme

Bağlam (context)
Dil modelinin bir sonraki parçayı tahmin ederken koşullandığı önceki parçalar. Bu bölümde son harflerden oluşur; görünür miktarı bağlam penceresiyle sınırlıdır.
Bkz. bağlam penceresi; bağlam değişimiyle karıştırma.
Bağlam uzunluğu (context length)
Modelin bu örnekte her tahmin için aldığı harf sayısı; block_size ayarı. Büyük dil modellerinde genellikle simge sayısıyla belirtilir.
Kaçın: sınırsız geçmiş veya öğrenilmiş parametre sayısı.
Gömme (embedding)
Bir harf ya da simge kimliğinin öğrenilen yoğun vektörle temsili. Bu bölümde vektörler, sonraki harf tahmin kaybını azaltmak üzere ağın öbür parametreleriyle birlikte öğrenilir.
Kaçın: her vektörün belirli bir insan kavramını kesin olarak temsil ettiğini varsaymak.
Gömme matrisi (embedding matrix)
Her satırında bir kimliğin gömme vektörünü tutan öğrenilebilir tablo. C[X], X'teki kimliklerin satırlarını getirir.
Kaçın: gömmeyi modelden bağımsız, değişmez bir sözlük sanmak.
Boyut (dimension)
Bu bölümde bir vektörün eleman sayısı; gömme boyutu her kimlik için kaç sayı tutulduğunu belirtir. Tensörün şeklinin tamamıyla aynı şey değildir.
Arama tablosu (lookup table)
Bir kimliği indeks olarak kullanıp karşılık gelen kayıt ya da satırı doğrudan getiren düzen. Tek-sıcak vektörle matris çarpımı ilgili satırı seçtiğinden, gömme satırını getirmek aynı hesabın doğrudan yoludur.
Boyutluluk laneti (curse of dimensionality)
Bağlamın boyutu arttıkça olası birleşim sayısının hızla büyümesi ve sonlu verinin bu uzayı giderek seyrek doldurması sorunu.
Kaçın: uzun bağlam kullanan her modelin matematiksel olarak çalışamaz olduğunu söylemek.
N-gram (n-gram)
Art arda gelen n parçalık dizi. Bölümdeki n-gram dil modeli önceki n−1 parçadan sonraki parçanın olasılığını kestirir; bigram bunun iki parçalık örneğidir.
Dağıtık temsil (distributed representation)
Bir kimliğin özelliklerinin tek bir özel hücre yerine bir vektörün birlikte çalışan bileşenlerinde temsil edilmesi. Öğrenilen temsiller ve ortak ağ, farklı bağlamlar arasında bilgi paylaşımını mümkün kılar.
Kaçın: dağıtık sunucu sistemiyle aynı kavram saymak.
Eğitim kümesi (training set)
Modelin parametre güncellemelerinde kullanılan örnekler. Bu bölümün bölmesinde aynı ismin bütün bağlam–hedef çiftleri aynı kümede kalır.
Doğrulama kümesi (validation set, dev set)
Parametre güncellemesine katılmadan, ayarları ve durma zamanını seçmek için kullanılan örnekler. Seçimi etkilediğinden test kümesiyle aynı amaçta değildir.
Test kümesi (test set)
Model ve ayar seçimi tamamlandıktan sonra nihai ölçüm için ayrılan örnekler. Sonucuna bakıp yeniden ayar seçilirse bağımsız değerlendirme niteliği zedelenir.
Kaçın: test sonucunu tekrar tekrar kullanarak model seçmek.
Hiperparametre (hyperparameter)
Bu bölümde eğitim düzeni ya da model yapısı için seçilen ayar: bağlam uzunluğu, gömme boyutu, nöron sayısı, öğrenme oranı gibi. Öğrenilen ağırlık ve sapmalardan ayrıdır.
Eksik öğrenme (underfitting)
Modelin eğitim örneklerindeki örüntüleri bile yeterince yakalayamaması. Yüksek eğitim ve doğrulama kaybı bir belirti olabilir; tek başına nedeni belirlemez.
Mini yığın (minibatch)
Bir eğitim adımında kayıp ve gradyan hesabına birlikte katılan örneklerin küçük grubu. Bütün eğitim kümesini her adımda işlemek yerine maliyeti azaltır.
Şaşkınlık (perplexity)
Doğal logaritmayla hesaplanan ortalama negatif log olabilirliğin üstel değeri. Eşit olasılıklı seçenekler benzetmesiyle yorumlanabilir; gerçek doğru cevap sayısı değildir.
Kaçın: farklı simgeleştirme birimleriyle hesaplanan değerleri doğrudan karşılaştırmak.

Bölüm 57 · Dikkat ve Transformer

Dikkat (attention)
Bir dizideki her konumun, öbür konumların değerlerini girdiden hesaplanan ağırlıklarla karıştırarak yeni vektör üretmesi. Ağırlıklar eğitimde öğrenilen sabit yuva ağırlıkları değil, o anki girdilerden çıkar.
Kaçın: dikkati insan dikkatiyle ya da sınırsız bağlamla özdeşleştirmek
Öz-dikkat (self-attention)
Sorguların, anahtarların ve değerlerin aynı diziden geldiği dikkat. GPT tarzı modellerde nedensel maskeyle birlikte kullanılır.
Kaçın: öz-dikkati kodlayıcı–kod çözücü dikkatiyle karıştırmak
Sorgu (dikkatte) (query)
Bir konumun "ne arıyorum?" sorusunu taşıyan vektör; anahtarlarla iç çarpımı uyum skorunu verir. Veritabanı sorgusuyla yalnızca benzer bir fikirdir.
Kaçın: dikkat sorgusunu SQL sorgusu saymak
Anahtar (dikkatte) (key)
Bir konumun sorgularla eşleşmek için sunduğu vektör (künye). Sözlük anahtarı ya da şifreleme anahtarı değildir.
Kaçın: dikkat anahtarını sözlük ya da şifre anahtarıyla karıştırmak
Değer (dikkatte) (value)
Ağırlıklı toplamda karışan, bir konumun taşıdığı içerik vektörü. Programlamadaki değer kavramından ayrıdır.
Kaçın: dikkat değerini değişkenin değeri saymak
İç çarpım (dot product)
İki vektörün karşılıklı elemanlarını çarpıp toplayarak tek sayı veren işlem; dikkatte uyum skorunu verir.
Kaçın: iç çarpımı eleman bazında çarpmayla aynı saymak
Ölçeklenmiş iç çarpım dikkati (scaled dot-product attention)
softmax(Q·Kᵀ / √d_k)·V formülüyle hesaplanan dikkat. Bölme, büyük boyutta softmax'ın doygunluğunu engeller.
Kaçın: ölçeklemeyi isteğe bağlı süs saymak
Dikkat ağırlıkları (attention weights)
Skorların softmax'ından çıkan, satırı 1'e toplanan ağırlıklar; değerlerin ağırlıklı toplamını belirler.
Kaçın: ağırlıkları eğitimde öğrenilen sabit parametre saymak
Nedensel maske (causal mask)
Gelecek konumların skorunu softmax'tan önce −∞ yaparak onlara sıfır ağırlık veren üst üçgen maske.
Kaçın: maskeyi hesabı hızlandırma hilesi saymak
Konum kodlaması (positional encoding)
Dikkat sırayı bilmediği için gömmelere eklenen konum vektörü. Makalede sinüs–kosinüs; GPT kodlarında genellikle öğrenilen konum gömmesi.
Kaçın: dikkatin sırayı kendiliğinden bildiğini sanmak
Çok başlı dikkat (multi-head attention)
Dikkatin farklı Wq, Wk, Wv matrisleriyle birkaç kez koşulup çıktılarının birleştirildiği hali; her kopyaya baş denir.
Kaçın: başları ayrı ayrı sonraki harfi tahmin eden modeller saymak
Konum bazlı ileri besleme ağı (position-wise feed-forward network)
Transformer bloğunda dikkatin ardından her konuma ayrı ayrı ve aynı ağırlıklarla uygulanan iki katmanlı MLP.
Kaçın: konumlar arası bilgi karıştırdığını sanmak
Artık bağlantı (residual connection)
Alt katmanın çıktısını girdinin yerine değil üstüne ekleyen x + f(x) kestirmesi.
Kaçın: katman çıktısının girdinin yerini aldığını sanmak
Katman normalleştirmesi (layer normalization)
Bir konumun vektörünü kendi ortalaması ve varyans ölçeğiyle düzenleyen işlem; kararlılık terimi ve öğrenilen çarpan/sapma da içerir. Son çıktı zorunlu olarak tam sıfır ortalamalı, bir varyanslı değildir.
Kaçın: onu veri kümesi ya da yığın normalleştirmesiyle karıştırmak
Transformer bloğu (Transformer block)
Dikkat, MLP, artık bağlantı ve katman normalleştirmesinden oluşan, üst üste dizilen birim.
Kaçın: bloğu yalnızca dikkat katmanından ibaret saymak
Kodlayıcı ve kod çözücü (encoder–decoder)
2017 Transformer'ındaki iki yığın: girdiyi okuyan kodlayıcı, çıktıyı üreten ve kodlayıcıya bakan kod çözücü.
Kaçın: bugünkü her Transformer'ı kodlayıcı–kod çözücü saymak
Çapraz dikkat (cross-attention)
Sorguların kod çözücüden, anahtar ve değerlerin kodlayıcıdan geldiği dikkat. GPT tarzı yalnızca kod çözücü modellerde yoktur.
Kaçın: çapraz dikkati çapraz entropiyle karıştırmak
Transformer (Transformer)
Dikkate dayanan model ailesi; 2017'de çeviri için önerilen kodlayıcı–kod çözücü tasarımı ve ondan türeyen yığınlar.
Kaçın: adı sihirli bir yapay zekâ ürünü saymak
GPT (Generative Pre-trained Transformer)
Maskeli öz-dikkatli, yalnızca kod çözücü bir Transformer yığınıyla sonraki simgeyi üreten model tarzı.
Kaçın: GPT'yi orijinal çeviri Transformer'ıyla aynı model saymak
Yalnızca kod çözücü (decoder-only)
Kodlayıcısız, çapraz dikkatsiz; maskeli öz-dikkat ve MLP bloklarından oluşan model tasarımı.
Kaçın: yalnızca kod çözücüyü dikkatsiz model saymak

Bölüm 58 · Büyük Dil Modelleri

Simge (token)
Dil modelinin girdi olarak gördüğü metin parçası; tokenizer sözlüğündeki bir parçadır ve modele numarası girer. Sözcük, sözcük parçası ya da tek byte olabilir.
Kaçın: belirteç (Bölüm 41'deki oturum belirteciyle karışır); “sözcük” (simge her zaman sözcük değildir)
Simgeleştirme (tokenization)
Metni simgelere, yani sayı dizisine çevirme işi; yapan programa tokenizer denir ve model eğitiminden önce kurulur.
Kaçın: kodlama (kitapta yalnızca encoding anlamında, Bölüm 2)
Byte çifti kodlaması (byte pair encoding, BPE)
UTF-8 byte'larından başlayıp en sık geçen komşu çifti tekrar tekrar yeni bir simgeyle değiştiren simgeleştirme yöntemi.
Kaçın: BPE'yi tek başına “tokenizer” saymak
Birleştirme kuralı (merge rule)
BPE'nin öğrendiği “şu iki simge yan yana gelirse tek simge say” kaydı; yeni simge numaraları 256'dan başlar.
Simge sözlüğü (vocabulary)
Tokenizer'ın tanıdığı bütün simgelerin listesi; boyutu bir tasarım kararıdır.
Kaçın: sözcük dağarcığı
Ön eğitim (pretraining)
Çok büyük metin yığınında “sonraki simgeyi tahmin et” hedefiyle yapılan ilk geniş kapsamlı eğitim; etiket metnin kendisinden gelir.
Kaçın: ön eğitilmiş modeli asistan saymak
İnce ayar (fine-tuning)
Ön eğitilmiş ağırlıklardan başlayıp daha küçük öğrenme oranıyla, daha küçük ve seçilmiş veriyle sürdürülen eğitim; yeni bir yöntem değil, aynı eğitimdir.
Talimat takibi (instruction tuning)
Modeli (talimat, iyi cevap) çiftleriyle ince ayarlayıp isteklere cevap verir hâle getirme.
Ödül modeli (reward model)
Bir cevaba sayı veren ve insanların iki cevaptan hangisini tercih ettiğini tahmin etmek üzere eğitilen model; doğruluğu değil tercihi ölçer.
İnsan geri bildirimiyle pekiştirme (reinforcement learning from human feedback, RLHF)
İnsan tercihlerinden bir ödül modeli kurup modeli o modelin puanını artıracak biçimde ince ayarlama; bölümde 2022 tarihli InstructGPT örneğiyle anlatılır, güncel modellerin tarifi sayılmaz.
Sıcaklık (temperature)
Softmax'tan önce logit'leri bir sayıya bölen çıkarım ayarı: 1'in altı dağılımı keskinleştirir, üstü yassılaştırır; doğruluk garantisi vermez.
Kaçın: sıcaklığı “doğruluk düğmesi” saymak
Ölçek yasası (scaling law)
Dil modelinin kaybının model boyutu, veri ve hesapla kuvvet yasası gibi azaldığını söyleyen deneysel eğilim; belirli bir deney düzeninde ölçülür.
Kaçın: doğa yasası gibi okumak

Bölüm 59 · Kapanış: Agent'lar ve Harita

Araç çağırma (tool calling)
Modelin kullanılabilir bir işlemi adı ve yapılandırılmış argümanlarıyla istemesi. İsteği gerçek eyleme çatı ya da sağlayıcının yürütme sistemi çevirir; sonuç modele geri verilir.
Kaçın: modelin “yaptım” demesini gerçek yürütme kanıtı saymak.
Araç şeması (tool schema)
Bir aracın görünür sözleşmesini, özellikle beklenen girdi alanlarını ve tiplerini tarif eden yapı. Model gerçekleme yerine bu sözleşmeyle çalışır; biçim uygunluğu yetki veya doğruluk garantisi değildir.
Kaçın: şemayı güvenlik izniyle aynı şey saymak.
Durdurma koşulu (stopping condition)
Agent döngüsünü tamamlanma, insan kararı gereksinimi veya önceden belirlenen tur, süre ya da bütçe sınırında durduran kural.
Kaçın: daha çok araç turunu kendiliğinden daha iyi sonuç saymak.
Dolaylı istem enjeksiyonu (indirect prompt injection)
Bir web sayfası, dosya veya araç sonucu gibi dış içerikteki talimatların modeli asıl görevden saptırmaya çalışması. Bu içerik güvenilmeyen veri olarak ele alınmalı; izin sınırları ve insan onayı ayrıca kurulmalıdır.
Kaçın: araç çıktısını kullanıcı yetkilendirmesi saymak.

Tanımlar, her bölümün sonundaki kaynaklara dayanır. Bölüm başlıklarına tıklayınca o bölümün metnine gidersin.