Kısım I · Makine · Bölüm 1

Büyük Harita

Bilgisayar nedir ve katlar nasıl üst üste biner (The big picture)

Neden burada · Neye dayanıyor

Neden burada: Kitabın geri kalanı bu bölümdeki kat planının üstüne kurulacak. Sonraki her bölüm "şu kattayız, altımızda şu var, üstümüzde şu var" diye açılacak. Yapay zekâyla çalışırken yaşadığın "daldan dala atlama" hissinin ilacı bu plan: elinde bir harita olunca, yeni bir kavram geldiğinde onu havada tutmak zorunda kalmazsın, haritadaki yerine koyarsın.

Neye dayanıyor: Hiçbir teknik bilgiye. Telefon ve bilgisayar kullanmış olmak ve senin kendi benzetmen yeter: "Bir binanın nasıl inşa edildiğini biliyorum, yapamam ama gerekirse neyi öğrenmem gerektiğini biliyorum."

Bu bölüm kısa bir teknik bilgi değil, bir çerçeve verir. Bölümün sonunda şu dört şeyi bileceksin: bilgisayarın özünde ne yaptığını, "program" ve "algoritma" kelimelerinin ne anlama geldiğini, yazılımın en önemli fikri olan soyutlamayı, ve bilgisayarın elektrikten senin hukuk uygulamana kadar hangi katlardan oluştuğunu. Ayrıntıların hepsi sonraki bölümlerde; burada her katın yalnızca adını ve işini öğreniyoruz.

1.1 Bilgisayar ne yapar: girdi, işlem, çıktı

Harvard'ın başlangıç dersi CS50, bilgisayar bilimini tek bir resimle açar: solda bir girdi (input), sağda bir çıktı (output), ortada içini henüz bilmediğimiz bir kutu.1 Programlamanın bütün işi, girdiyi alıp istenen çıktıya çeviren o ortadaki kutuyu, yani işlemi (processing) kurmaktır.

girdi  ──►  [   işlem   ]  ──►  çıktı
(input)     (processing)       (output)

İçini bilmediğimiz, yalnızca neyin girip neyin çıktığını bildiğimiz kutuya kara kutu (black box) denir. Bu kelimeyi aklında tut: bu kitabın büyük kısmı, bir kara kutunun kapağını açıp içinde ne olduğunu göstermekten ibaret. Ve her açtığımız kutunun içinden, bir alt katta yeni kara kutular çıkacak.

Gündelik örneklerle düşün:

Bu üçlüye dördüncü bir unsur eklemek gerekir: saklama (storage). Bilgisayar yalnızca anlık hesap yapmaz, sonucu hatırlar. Dünkü serin (streak) bugün hâlâ 7 gün gösteriyorsa, bir yerde saklanmıştır. Girdi, işlem, çıktı ve saklama; bir bilgisayarın yaptığı her şey bu dört işin bir birleşimidir. Kısım I'de her birinin fiziksel karşılığını göreceğiz: girdi ve çıktı için aygıtlar ve sürücüler (Bölüm 17), işlem için işlemci (Bölüm 6), saklama için bellek ve disk (Bölüm 5, 8, 16).

1.2 Adım adım tarif: algoritma ve program

Ortadaki kutu kendi kendine bir şey bilmez; ona ne yapacağını adım adım söylemek gerekir. Bir problemi çözmek için izlenecek adımların sıralı listesine algoritma (algorithm) denir.1 Algoritma bir fikirdir; kâğıda Türkçe de yazılabilir. Aynı algoritmanın bilgisayarın çalıştırabileceği bir dilde yazılmış haline program (program), programın içindeki her bir adıma da komut (instruction) denir.

Hukuktan bir karşılık: bir dava için usul kanunundaki aşamalar (dilekçe, cevap, ön inceleme, tahkikat, karar) bir algoritmaya benzer. Kanun metni algoritmayı tarif eder; o algoritmayı bir mahkemede gerçekten işleten şey, somut dosyadaki işlemler dizisidir. Algoritma ile program arasındaki fark da buna yakın: biri yöntemin tarifi, öbürü o yöntemin belirli bir makinede uygulanabilir hali.

Telefon rehberi örneği

CS50 algoritma fikrini kâğıt bir telefon rehberiyle anlatır: binlerce sayfalık, isimlere göre alfabetik sıralı bir kitapta "Kerem" adını nasıl bulursun?1

  1. Sayfa sayfa: Birinci sayfadan başla, ismi bulana kadar her sayfaya bak. Doğru çalışır ama yavaştır: 1.000 sayfalık rehberde en kötü durumda 1.000 sayfaya bakarsın.
  2. İkişer sayfa: İki kat hızlıdır (en kötü 500 bakış), ama dikkat: ismi iki sayfa arasında atlamış olabilirsin, bir sayfa geri dönüp kontrol etmen gerekir.
  3. Ortadan böl: Rehberi ortadan aç. "K" harfi solda mı kaldı, sağda mı? Yanlış yarıyı tamamen at, kalan yarıyı yine ortadan aç. Her adımda problem yarıya iner. 1.000 sayfayı yarılaya yarılaya tek sayfaya indirmek yaklaşık 10 adım sürer (2'yi 10 kez kendisiyle çarparsan 1.024 eder). Rehber 2.000 sayfa olsa yalnızca bir adım eklenir.

Üç yöntem de doğru sonucu verir; fark, ne kadar çabuk verdikleridir. Bir algoritmanın iki ayrı sorusu vardır: doğru mu ve verimli mi. Verimliliği ölçmenin dilini (büyük O gösterimi, big-O notation) Bölüm 11'de öğreneceksin. Şimdilik şu sezgi yeter: aynı işi yapan iki program, büyük veride biri saniyeler, diğeri saatler sürecek kadar farklı olabilir. Leaderboard'da on kullanıcı varken fark etmez; on bin kullanıcı olduğunda eder.

Sözde kod

Programcılar bir algoritmayı programlama diline dökmeden önce çoğu zaman sade bir dille yazar. Buna sözde kod (pseudocode) denir. CS50'nin rehber algoritması sözde kodla şöyle:1

 1  Rehberi al
 2  Rehberi ortadan aç
 3  Sayfaya bak
 4  Eğer kişi bu sayfadaysa
 5      Kişiyi ara
 6  Değilse, eğer kişi daha öndeyse
 7      Sol yarının ortasını aç
 8      3. satıra dön
 9  Değilse, eğer kişi daha arkadaysa
10      Sağ yarının ortasını aç
11      3. satıra dön
12  Değilse
13      Dur

Sözde kodun bir resmî kuralı yoktur; amacı düşünceyi düzenlemek ve başkasına anlatmaktır. Agent'larla çalışırken de çok işine yarayacak: bir agent'a ne istediğini sözde kodla tarif etmek, düz bir dilekle tarif etmekten çok daha az yanlış anlaşılır.

1.3 Programlamanın yapı taşları

Yukarıdaki sözde koda yakından bak. CS50, içinde programlamanın bütün temel yapı taşlarının saklı olduğunu gösterir:1

Uygulamamızda

Bir alıştırma bölümünün mantığı sözde kodla:

puan = 0
can = 3
Her soru için, sorular bitene kadar:          ← döngü
    Soruyu göster                               ← fonksiyon
    Kullanıcının cevabını al                    ← fonksiyon, girdi
    Eğer cevap doğru cevaba eşitse:             ← koşul + Boole ifadesi
        puan = puan + 10                        ← değişken güncellenir
        "Doğru!" göster                         ← çıktı
    Değilse:
        can = can - 1
        Eğer can 0 ise: bölümü bitir            ← iç içe koşul
Bölüm sonu ekranında puanı göster               ← çıktı

Senin JavaScript prototipinde yazdığın kod, bu sözde kodun belirli bir dilde yazılmış halidir. Kullandığın dil değişse de (C, Go, TypeScript) bu beş yapı taşı aynı kalır; değişen yalnızca yazılışlarıdır. Dillerin farklarını Bölüm 21'de haritalayacağız.

1.4 Soyutlama: alt katı bilmeden üst katı kullanmak

Bu bölümün, belki de bütün kitabın en önemli kavramı soyutlama (abstraction). CS50 onu iki yüzüyle anlatır.1

Birinci yüz: büyük problemi küçük parçalara bölmek. Kalabalık bir akşam yemeği hazırlamak göz korkutucudur; ama "yemeği hazırla" işini "çorba", "ana yemek", "tatlı" diye, "çorba"yı da "soğanı doğra", "suyu kaynat" diye bölünce her parça kolaylaşır. CS50'nin Scratch örneğinde aynı "miyavla, bir saniye bekle" adımı üç kez alt alta yazılır; sonra bu adımlar meow adında tek bir bloğa, yani bir fonksiyona toplanır ve "3 kez tekrarla" denir. Program kısalır, anlaşılır olur, değiştirmesi kolaylaşır.

İkinci yüz: ayrıntıyı bir arayüzün arkasına saklamak. CS50 aynı notta şunu da söyler: programlama dilleri, programcıları sıfırlar ve birlerle uğraşmaktan kurtarmak için yaratıldı; her kuşak, bir öncekinin işini daha kolay kullanılır bir katmanla örttü, "başkalarının omuzlarında" durabilelim diye.1 Bu ikinci anlam, kitabın kat planının ta kendisidir.

Bu ikinci yüzü iki kelimeyle tarif ederiz:

Arabanın direksiyonu ve pedalları bir arayüzdür; motor, şanzıman ve fren sistemi gerçeklemedir. Araba kullanmak için içten yanmalı motoru anlaman gerekmez. Üstelik araba elektrikli olsa da direksiyon ve pedallar aynı kalır: gerçekleme baştan sona değişti, arayüz değişmedi, sürücü hiçbir şey öğrenmek zorunda kalmadı. Soyutlamanın gücü buradadır: arayüz sabit kaldıkça, alttaki kat değişebilir ve üstteki kat bundan etkilenmez.

Hukuktan bir karşılık: mahkemeye dilekçe verdiğinde, dilekçenin içermesi gerekenler (taraflar, talep, deliller) bir arayüz gibidir. Kalemin dosyayı nasıl kaydettiği, tebligatın hangi sistemle yapıldığı gerçeklemedir. Tebligat kâğıttan elektroniğe geçti; dilekçe verenin bildiği kurallar büyük ölçüde aynı kaldı.

Bu fikir neden bu kadar önemli

Bir bilgisayar, milyarlarca küçük anahtardan (transistörden) oluşur. Hiçbir insan bunların hepsini aynı anda kafasında tutamaz. Bilgisayarlar yine de inşa edilebiliyor, çünkü her kat yalnızca bir altındaki katın arayüzünü bilir. Devre tasarlayan mühendis transistörün içindeki fiziği yeniden çözmez; işletim sistemi yazan, devrelerin nasıl çizildiğini bilmez; sen HTML yazarken işletim sistemini düşünmezsin. Nand2Tetris kitabı bilgisayarı tam olarak bu şekilde, en alttaki tek bir kapıdan başlayıp her katı bir öncekinin arayüzüne dayanarak kurar.2

Senin hedefin de tam bu: her katın arayüzünü ve işini bilmek. Gerçeklemesini değil. Bir şey bozulduğunda "sorun hangi katta?" diye sorabilmek, o katın kapağını açmanın ilk adımıdır.

1.5 Kat planı

Şimdi binayı aşağıdan yukarı çizelim. Her kat bir soyutlama katmanıdır (abstraction layer): bir altındakinin sunduğu imkânları kullanır, bir üstündekine daha kolay kullanılan imkânlar sunar. Listeyi en üstten okuyabilirsin (senin bugün durduğun yer), ama bu kitap onu en alttan çıkar.

  1. Kat 10Bizim uygulamamızHukuk dersleri, puan, seri, leaderboard. Bütün alt katların sunduğu imkânlarla kurulur. Kısım II.
  2. Kat 9Web ve tarayıcı: HTML, CSS, JavaScriptTarayıcı denen programın anladığı diller: iskelet, görünüm, davranış. Bölüm 20, 23–26.
  3. Kat 8Ağ ve internetBilgisayarların birbirine bit göndermesi; IP, TCP, DNS, HTTP. Bölüm 19–20.
  4. Kat 7İşletim sistemi (macOS, Windows, Linux)Donanımın idaresi: programlara işlemci zamanı, bellek ve dosya dağıtır, aygıtlarla sürücüler aracılığıyla konuşur. Bölüm 13–18.
  5. Kat 6Gömülü yazılım (firmware) ve açılışDüğmeye basınca ilk çalışan, donanıma gömülü program; işletim sistemini başlatır. Bölüm 12.
  6. Kat 5Programlama dilleri ve derleyiciİnsanın okuyabildiği kodu (C, Go, JavaScript) makine diline çeviren araçlar. Bölüm 9–11.
  7. Kat 4Makine dili ve assemblyİşlemcinin doğrudan anladığı, bitlerden oluşan komutlar. Bölüm 7.
  8. Kat 3İşlemci ve bellek (CPU, RAM)Komutları tek tek getirip çalıştıran makine ve verinin durduğu yer. Bölüm 6, 8.
  9. Kat 2Devreler: hesap ve hafızaKapılardan kurulan toplayıcılar ve hatırlayan devreler. Bölüm 4–5.
  10. Kat 1Transistör ve mantık kapılarıElektrikle açılıp kapanan anahtarlar ve onlardan yapılan VE, VEYA, DEĞİL kararları. Bölüm 3.
  11. Kat 0Elektrik ve bit (zemin)Var ya da yok, 1 ya da 0. Her şeyin yazıldığı alfabe. Bölüm 2.

Üç dürüst not, haritayı yanlış okumaman için:

  1. Bu bir sadeleştirme. Gerçek bilgisayarda katlar her zaman tek sıra halinde dizilmez. Örneğin programlama dilleri (Kat 5) aslında hem işletim sistemini hem tarayıcıyı hem bizim uygulamayı yazmak için kullanılan bir araçtır; bina benzetmesinde bir kattan çok, inşaatın her katında kullanılan bir alet çantasına benzer. Haritada Kat 5'e koyduk, çünkü onu anlamak için Kat 4'ü (makine dilini) bilmen gerekiyor ve üstündeki katlar onunla yazılıyor.
  2. Donanım ile yazılımın sınırı Kat 3 ile Kat 4 arasından geçer. Kat 0–3 elle tutulabilen şeylerdir; Kat 4 ve yukarısı, o şeylerin içinde dolaşan bit desenleridir (bir sonraki alt bölüm).
  3. Kitabın bölüm sırası bu haritayı izler. Kısım I, Kat 0'dan Kat 9'a çıkar; Kısım II, Kat 9 ve 10'u inşa eder; Kısım III, yapay zekânın bu binanın neresinde yaşadığını gösterir (cevap: bir uygulama olarak Kat 10'da, ama gücünü Kat 3'teki ekran kartlarından alır).

1.6 Donanım, yazılım ve aradaki gömülü yazılım

Donanım (hardware), bilgisayarın fiziksel parçalarıdır: işlemci, bellek kartları, disk, ekran, klavye, kablolar. Ağırlığı vardır, düşürülünce kırılır. Yazılım (software) ise donanımın ne yapacağını söyleyen komutlar ve verilerdir; ağırlığı yoktur, kopyalanabilir, internetten indirilebilir. Bir benzetmeyle: piyano donanım, nota yazılımdır. Aynı piyano farklı notalarla farklı eserler çalar; aynı bilgisayar farklı yazılımlarla hesap makinesi, oyun konsolu veya hukuk uygulaması olur.

Bu ayrımın bilgisayarı bu kadar güçlü yapan bir sonucu var: yazılım da sonunda bit desenidir ve bit desenleri bellekte veri gibi saklanabilir. Yani bilgisayarı başka bir işe geçirmek için devrelerini sökmek gerekmez; belleğine başka bir program yüklemek yeter. Buna "depolanmış program" fikri denir ve Bölüm 6'nın konusudur.

İkisinin arasında bir de gömülü yazılım (firmware) vardır: donanımın içine, bir yongaya kalıcı olarak yerleştirilmiş, onunla birlikte gelen yazılım. Bilgisayarın açma düğmesine bastığında ilk çalışan programdır; işletim sistemini bulup başlatan odur. Klavyenin, SSD diskin, hatta şarj aletinin bile içinde küçük gömülü yazılımlar vardır. Yazılımdır, çünkü bit desenidir ve güncellenebilir; donanıma yakındır, çünkü onunla birlikte doğar ve onun dilinden konuşur. Bölüm 12'de ayrıntısıyla.

1.7 Önizleme: index.html açıldığında her katta ne olur

Kitabın ilk yarısının ne vaat ettiğini görmek için, senin bugün yaptığın en sıradan işi kat kat izleyelim: prototipindeki index.html dosyasına çift tıklıyorsun ve tarayıcıda uygulaman açılıyor. Kavramların çoğunu henüz bilmiyorsun; bu normal. Amaç, her kavramın haritada nereye düşeceğini şimdiden görmek. Kitabı bitirdiğinde bu paragrafa geri dön; her cümlesini açabiliyor olacaksın.

  1. Kat 7, işletim sistemi: Çift tıklama, fare aygıtından bir sinyal olarak gelir; işletim sistemi bunu bir sürücü aracılığıyla alır. Dosyanın uzantısına (.html) bakar, hangi programın açacağına karar verir ve tarayıcıyı bir süreç olarak başlatır. Dosyanın diskte nerede durduğunu dosya sistemi bilir.
  2. Kat 3, bellek: Dosyanın içeriği diskten (yavaş, kalıcı) belleğe (hızlı, geçici) taşınır. İçerik, bir sıra byte'tır: sıfırlar ve birler.
  3. Kat 0, bit: Bu byte'lar bir kodlama kuralına (UTF-8) göre harflere çevrilir. <, h, t, m, l… Böylece sayılar yeniden metin olur. (Bölüm 2'nin konusu.)
  4. Kat 9, tarayıcı: Tarayıcı metni okur, HTML'i anlar ve onu bellekte bir ağaç yapısına (DOM) çevirir. <link href="style.css"> satırını görünce aynı klasördeki CSS dosyasını, <script> satırını görünce JavaScript dosyasını da okur.
  5. Kat 5 ve 4, dil ve makine dili: Tarayıcının içinde çalışan JavaScript motoru, senin JS kodunu işlemcinin anlayacağı makine komutlarına çevirir.
  6. Kat 3, 2, 1, işlemci ve devreler: İşlemci bu komutları saniyede milyarlarca kez "getir, çöz, çalıştır" döngüsüyle işler. Her komut, içerideki kapıların ve onları oluşturan transistörlerin açılıp kapanmasıyla gerçekleşir.
  7. Kat 7 ve donanım, çıktı: Hesaplanan görüntü, piksellerin renk değerleri olarak ekran kartına, oradan ekrana gider. Uygulaman görünür.

Dikkat: Bu akışta Kat 8 (ağ) yok, çünkü dosya senin bilgisayarındaydı. Uygulama internette yayımlandığında, 2. adımdan önce dosyaların başka bir bilgisayardan (sunucudan) istenip ağ üzerinden gelmesi eklenir. Bölüm 20'de bu akışı ağ dahil, uçtan uca yeniden yazacağız; Kısım I'in özeti o olacak.

1.8 Bu kitap nasıl okunur

Bu bölümde neler kuruldu

Bilgisayar, girdiyi işleyip çıktıya çeviren ve sonucu saklayan bir makinedir. Ona ne yapacağını algoritmalarla söyleriz; algoritmaların bir dilde yazılmış hali programdır ve her program fonksiyon, koşul, Boole ifadesi, döngü ve değişkenlerden kurulur. Bu kadar karmaşık bir makinenin inşa edilebilmesinin sırrı soyutlamadır: her kat, altındakinin yalnızca arayüzünü bilir. Bu katlar elektrikten (Kat 0) bizim uygulamaya (Kat 10) uzanır; kitap onları sırayla çıkacak.

Bu bölümde tanıştığın terimler sözlükte, Bölüm 1 başlığı altında.

Birincil okuma

CS50x 2026, Lecture 0 ders notları, şu başlıklar: Computer Science and Problem Solving, Algorithms, Pseudocode, What's Ahead, Meow, Loops, and Abstraction. Kısa, sade bir İngilizceyle yazılmış ve bu bölümün çoğu oradan geliyor. Kitap okumayı seviyorsan, bu kısmın en iyi eşlikçisi Charles Petzold'un Code kitabıdır: hiç ön bilgi istemeden el fenerinden bilgisayara yürür.

Takıldığın, çelişkili bulduğun ya da "bu neden böyle" dediğin her yeri yapay zekâ öğretmenine sor.

Bölüm sonu soruları

Kitaba bakmadan cevapla. Yanlış yaparsan geri bildirim seni ilgili alt bölüme yönlendirir.

1. "Kara kutu" (black box) ifadesi neyi anlatır?
Kara kutu, içini bilmediğimiz ama neyin girip neyin çıktığını bildiğimiz işlemdir. Kitabın büyük kısmı bu kutuların kapağını açmaktan ibaret. Bkz. 1.1.
2. Algoritma ile program arasındaki fark nedir?
Algoritma bir problemi çözen adımların fikridir, Türkçe de yazılabilir. Program, o algoritmanın bilgisayarın çalıştırabileceği bir dilde yazılmış halidir. Bkz. 1.2.
3. 1.000 sayfalık rehberde "ortadan böl" yöntemi en kötü durumda kaç adım sürer?
Her adımda problem yarıya iner; 2'nin 10. kuvveti 1.024 olduğu için yaklaşık 10 adım yeter. Rehber iki katına çıksa yalnızca bir adım eklenir. Bkz. 1.2.
4. Sözde koddaki "Eğer kişi bu sayfadaysa" satırının içindeki "kişi bu sayfada" kısmı hangi yapı taşıdır?
Cevabı yalnızca doğru ya da yanlış olabilen soru bir Boole ifadesidir. "Eğer… ise" kısmı ise koşuldur ve kararını bu ifadeye bakarak verir. Bkz. 1.3.
5. Araba benzetmesinde motor benzinliden elektrikliye geçiyor ama sürücü hiçbir şey öğrenmiyor. Bu neyi gösterir?
Direksiyon ve pedallar (arayüz) aynı kaldı, motor (gerçekleme) değişti. Soyutlamanın gücü budur: alt kat değişir, üst kat etkilenmez. Bkz. 1.4.
6. Kat planında donanım ile yazılımın sınırı nereden geçer?
Kat 0–3 (elektrik, transistör ve kapılar, devreler, işlemci ve bellek) elle tutulan donanımdır. Kat 4'ten (makine dili) itibaren, o donanımın içinde dolaşan bit desenleri, yani yazılım başlar. Bkz. 1.5.
7. Bilgisayar açılınca ilk çalışan ve işletim sistemini başlatan yazılım hangisidir?
Gömülü yazılım (firmware) donanımın içine yerleştirilmiştir ve açılışta ilk o çalışır; işletim sistemini bulup başlatır. Bkz. 1.6.
8. Kendi cümlelerinle: Soyutlama nedir ve milyarlarca transistörden oluşan bir makinenin inşa edilebilmesini nasıl mümkün kılar? Hukuktan ya da gündelik hayattan kendi örneğini ver.
Örnek cevabı göster

Soyutlama, bir şeyin ayrıntılarını bir arayüzün arkasına saklamaktır: dışarıdan yalnızca ne verip ne alacağın görünür, içerideki iş görünmez. Her kat altındaki katın yalnızca arayüzünü bildiği için kimse bütün makineyi aynı anda kafasında tutmak zorunda kalmaz; devre tasarlayan transistör fiziğini, işletim sistemi yazan devreleri, HTML yazan işletim sistemini düşünmez. Örnek: bir noterden vekâletname almak için noterin iç işleyişini bilmem gerekmez; ne getireceğimi ve ne alacağımı bilmem yeter.

9. Kat planını, kitaba bakmadan, en alttan en üste sırayla yaz. Her kat için tek cümlelik bir iş tanımı ekle.
Kat planını göster

0 Elektrik ve bit · 1 Transistör ve mantık kapıları · 2 Devreler: hesap ve hafıza · 3 İşlemci ve bellek · 4 Makine dili ve assembly · 5 Programlama dilleri ve derleyici · 6 Gömülü yazılım ve açılış · 7 İşletim sistemi · 8 Ağ ve internet · 9 Web ve tarayıcı · 10 Bizim uygulamamız. İş tanımları için 1.5.

Kaynaklar

  1. CS50x 2026, Lecture 0 ders notları (Harvard University). Kaynak: CS50 Hafta 0 notları; girdi–çıktı şeması, telefon rehberi, sözde kod, yapı taşları, soyutlama.
  2. Noam Nisan & Shimon Schocken, The Elements of Computing Systems (MIT Press) ve nand2tetris.org: bilgisayarı tek bir kapıdan başlayarak katman katman inşa etme yaklaşımı.