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
- "Uygulama" bu kitapta yalnızca application (hukuk uygulamamız, telefon uygulaması) demektir. İngilizcedeki implementation için gerçekleme kullanılır.
- "Kodlama" bu kitapta yalnızca encoding (harflerin sayıya çevrilme kuralı) demektir. Kod yazmak için programlama ya da kod yazmak denir.
- "Arayüz" genel anlamda interface, yani bir parçanın dışa açılan yüzüdür. Ekrandaki düğmeler ve menüler için her zaman açıkça kullanıcı arayüzü (user interface, UI) denir.
- "Kat", kat planındaki bir soyutlama katmanının kısa adıdır.
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
bbit, büyükBbyte 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
0xya 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.2tam 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ı:
#includegibi 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:
printfile 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\0bulunan 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;
&nn'in adresini verir,*pp'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
mallocile 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'dekihrefç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);mkfsise 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 644gibi 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/outgibi ö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 harfc.
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 harfb.
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.
eth0olası 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ğermetin çifti;exportkabuk 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" + 1sonucu"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,classvenameörneklerdir.
Kaçın: JavaScript nesne özelliğiyle karıştırmak - İçeriksiz öğe (void element)
- Çocuk içerik alamayan ve kapanış etiketi bulunmayan HTML öğesi;
inputvemetagibi.
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/ideş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;
colorgibi. 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-boxgeniş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,absolutegibi 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ıpvar()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
exportettiğ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/exportsö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
importediyorsa 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
.gitklasö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.
- HEAD (HEAD)
- Ş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)
cloneuzak depoyu bütün geçmişiyle kopyalar;pushyerel commit'leri gönderir;pullfetch 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)
dependenciesuygulamayla üretime giden paketler;devDependenciesyalnı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 adile ç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 okunurkenundefinedihtimali 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)
typeile bir tipe verilen ad; nesne şekli, birleşim veya başka bir tip adlandırılabilir.type Puan = numberdiğ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 | nullsayı 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
stringveyanumberyerine 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ı,--noEmitOnErrorhata 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)
asgibi 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)
anyilgili değerdeki tip denetimini önemli ölçüde devreden çıkarır;unknowndeğ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 fonksiyondakiTgiriş ile çıkış arasında korunacak eleman tipini ifade edebilir.
Kaçın: denetimi kapatananyile eşitlemek. - Tip parametresi (type parameter)
- Genel fonksiyon veya tip tanımında farklı tipler için yer tutan ad;
ilk<T>içindekiTgibi. 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.
allowJsJavaScript dosyalarını kabul eder;checkJsonlarda denetim raporlamasını açar.
Kaçın: paket listesi olanpackage.jsonile karıştırmak. - JSDoc tip belirtimleri (JSDoc type annotations)
- JavaScript yorumlarında
@param,@returnsgibi 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ı
useile 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/appaltı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 webile üretilen web sitesi hali; türlerisingle,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;
useQueryile 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;
useMutationile tanımlanır, yalnızca çağrıldığında çalışır.
Kaçın: mutasyon - Taze ve bayat (fresh, stale)
- Taze veri
staleTimeiç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;
EXPLAINile 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:
BEGINile açılır,COMMITile onaylanır,ROLLBACKile 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-lruvb.). - 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_sizeayarı. 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.