İlk bilgisayarlar bugünkü kodu anlar mıydı? Kodlamanın kısa tarihi
· Tarih
Kısa cevap hayır. İlk bilgisayarlar bugün yazdığımız kodu anlamazdı. Hatta çoğu, bir programı kendi içinde saklayacak şekilde bile yapılmamıştı. Bu yazıda kodun nasıl yazıldığını, bugüne nasıl gelindiğini ve neden o eski makinelerin bugünkü kodu okuyamayacağını, teknik terimleri açıklayarak anlatmaya çalışıyorum.
Önce tek bir şeyi netleştirelim: program, bilgisayara ne yapacağını adım adım söyleyen talimatlar listesidir. Yemek tarifine benzer: önce şunu yap, sonra bunu ekle, şu olursa şuna bak. Kod yazmak da bu tarifi bilgisayarın anlayacağı biçimde yazmak demek. Mesele, "bilgisayarın anlayacağı biçimin" zaman içinde çok değişmiş olması.
Önce makine yoktu, program vardı
Bilinen ilk bilgisayar programı genellikle Ada Lovelace'e atfedilir. 1843'te Luigi Menabrea'nın, Charles Babbage'ın tasarladığı makineyi anlatan yazısını çevirirken yedi not ekledi (A'dan G'ye). Son not olan Note G, Babbage'ın Analitik Makinesi'nde Bernoulli sayılarını (matematikte belirli bir sayı dizisi) hesaplayacak adım adım bir yöntem anlatıyor. [1]
Sorun şu ki makine hiç yapılmadı, yani program hiç çalıştırılamadı. Sonradan yapılan incelemelerde dördüncü adımda iki değişkenin yer değiştirdiği bir hata bulunduğu da söyleniyor. [1] Bana kalırsa bu, yazılımın donanımdan önce doğabileceğinin en güzel örneği: Tarif yazılmış, ama mutfak yok.
ENIAC: programlamak kablo çekmekti
ENIAC, 1945'te tamamlanan dev bir elektronik bilgisayardı. Bugünkü gibi ekrana bir şey yazarak programlanmıyordu. Fişli panolar, kablolar ve düzinelerce anahtar vardı, programı kurmak için bunları tek tek takıp çevirmek gerekiyordu. Üç taşınabilir tablonun her biri 1.200 anahtar içeriyordu. [2]
Bir problemi makineye uyarlamak çoğunlukla haftalar alıyor, planı kablo ve anahtarlara dökmek günler sürüyor, sonra hatalar ayıklanıyordu. [2] Bu işi, Moore Okulu'nda "hesaplayıcı" olarak çalışan yaklaşık 200 kişi arasından seçilen altı kadın yaptı: Kay McNulty, Jean Jennings (Bartik), Betty Snyder (Holberton), Marlyn Wescoff, Fran Bilas ve Ruth Lichterman. [2] Yani "kod yazmak" o dönemde biraz da elektrik tesisatçılığıydı.
1948'de ENIAC'a ilkel bir "saklı program" mekanizması eklendi. Bu, makinenin hızını altıda bire düşürdü ama yeniden programlamayı günlerden saatlere indirdi. [2]
Programı belleğe koymak: Baby ve EDSAC
Asıl kırılma buydu. Her yeni iş için makinenin kablolarını değiştirmek yerine, programı bilgisayarın belleğine (kısa süreli hafızasına) koymak. Bunu bir benzetmeyle söyleyeyim: Her yemekte mutfağı yeniden kurmak yerine, tarifi mutfaktaki bir deftere yazıp oradan okumak gibi. Bu fikre "saklı program" deniyor.

21 Haziran 1948'de Manchester'daki Baby adlı makine, bu yöntemle ilk programını çalıştırdı. Tom Kilburn'ün yazdığı program, 262.144 sayısını (2¹⁸) tam bölen en büyük sayıyı, yani 131.072'yi buldu. Bunu yaklaşık 52 dakikada ve 3,5 milyon işlemle yaptı. [3] Bugün bir telefon bunu göz açıp kapayıncaya kadar yapar.
Baby'nin belleği küçücüktü: 32 sözcük, toplam 1.024 bit. [3] Bit, bir açık/kapalı anahtardan ibaret en küçük bilgi birimidir, 8 bit bir bayt eder. Yani toplam 128 bayt, kabaca 128 harflik metin kadar. Program 17 komuttan oluşuyordu ve 32 düğme ve anahtarla, ikili sayılarla (yalnızca 0 ve 1'lerle) bit bit giriliyordu. Makinenin yapabildiği işlem türü yalnızca yediydi. [3]
Bir yıl sonra, 6 Mayıs 1949'da Cambridge'de EDSAC çalıştı. Programlar delikli kâğıt şeritle giriliyor, sonuç bir daktilo benzeri makineye (teleprinter) basılıyordu. İlk programı 0'dan 99'a kadar sayıların karelerini yazdırdı. [4] Makinenin başlangıç emirleri, sayıları elle girmek yerine kısa komut adlarıyla çalışmayı sağlayan basit bir birleştirici (assembler) gibiydi. 1951'e gelindiğinde genel kullanım için 87 alt program hazırdı. Alt program, sık gereken bir işi (örneğin kök almak) bir kez yazıp her seferinde yeniden kullanmak demek. [4]
İnsan diline doğru
Bilgisayarın tek anladığı dil, makine kodu denen 0'lar ve 1'lerden oluşan komutlardır. Bunları elle yazmak çok yorucu ve hataya açıktır. [8] Grace Hopper bu yüzden programcıların İngilizce yazıp bilgisayarın bunu makine koduna çevirmesini önerdi. "Bilgisayarlar İngilizce anlayamaz" denerek bu fikre üç yıl boyunca itiraz edildi. [5]
Böyle bir çevirmen programa derleyici (compiler) deniyor. Hopper'ın 1952'de tamamladığı A-0 Sistemi çoğunlukla ilk derleyici olarak anılır. Wikipedia'nın notuna göre bugünün ölçütleriyle bu program, derleyicinin bir parçası olan "bağlayıcıya" daha yakındı. [5] Ardından Hopper'ın ekibinden FLOW-MATIC, 1959'da COBOL geldi. [5]
FORTRAN ise John Backus'un IBM ekibinin işiydi: 1953'te öneri, 1954'te taslak şartname, 1956'da ilk kılavuz, Nisan 1957'de ilk derleyici. [6] Amaç, IBM 704 için montaj dilinden (makine koduna çok yakın, kısa kelimelerle yazılan bir dil) daha pratik bir yol sunmaktı. Derlenen kodun hızlı çalışması şarttı, çünkü montaj dilini bilen programcılar ürettiği kod yeterince iyi değilse yeni yöntemi kabul etmeyecekti. [6]
Bugün: C'den Python'a
1972 ile 1973 arasında Dennis Ritchie, Bell Labs'te C dilini geliştirdi. Önce Unix işletim sistemine ait araçlar için kullanıldı, Kasım 1973'te yayımlanan Unix Sürüm 4'ün çekirdeği de geniş ölçüde C ile yeniden yazıldı. [7]
Bugün çok kullanılan Python ise bir adım daha yukarıda duruyor. Yazdığınız kod önce bayt koda (bytecode) yani ara bir biçime çevriliyor, sonra bir sanal makine (bilgisayarın içinde çalışan bir program) bunu adım adım çalıştırıyor. [9] Python'un kendi sözlüğü bayt kodun farklı sanal makineler arasında çalışması ya da sürümler arasında aynı kalması beklenmediğini de belirtiyor. [9]
| Dönem | Programı yazma biçimi |
|---|---|
| 1843 | Kâğıt üzerinde adım adım tarif (Note G) |
| 1945-1948 | ENIAC: kablo, fiş ve anahtarlar |
| 1948-1949 | Baby ve EDSAC: bellekteki program, anahtar ve kâğıt şerit |
| 1952-1957 | Derleyiciler: A-0, FORTRAN |
| 1972'den bugüne | C, Python ve diğer yüksek seviyeli diller |
Peki ilk bilgisayar bugünkü kodu anlar mıydı?
Anlamazdı. Üç nedeni var.
Birincisi, makine kodu işlemci ailesine özgüdür: Bir işlemci ailesi için yazılan kod, istisnalar dışında başka bir ailede çalışmaz. [8] Bir Python programı da makinenin kendi komutlarına çevrilmeden hiçbir bilgisayarın doğrudan anlayacağı bir şey değil. İkincisi, ENIAC 1948'e kadar programı bellekte tutmuyordu. [2] Üçüncüsü, Baby'nin belleği 128 baytlıktı ve yedi işlem yapabiliyordu. [3] Bugünkü bir dili çevirecek derleyiciyi barındıracak yeri bile yoktu.
Bugünkü işlemciler hâlâ 0 ve 1'lerle mi çalışıyor?
Evet. Yüksek seviyeli bir dilde yazdığımız şey sonunda işlemcinin makine koduna iniyor. Aradaki farkı derleyici ya da yorumlayıcı kapatıyor. Wikipedia'ya göre makine kodunu doğrudan yazmak yorucu ve hataya açık olduğu için programlar genellikle montaj dilinde ya da yüksek seviyeli dillerde yazılıyor. [8]
Kısa sözlük
- Bit ve bayt: Bit, 0 ya da 1 değerini taşıyan en küçük bilgi birimi. 8 bit bir bayt eder.
- Makine kodu: İşlemcinin doğrudan anladığı, 0 ve 1'lerden oluşan komutlar.
- Montaj dili (assembly): Makine koduna çok yakın, komutlara kısa isimler veren dil. Birleştirici (assembler) bunu makine koduna çevirir.
- Derleyici (compiler): Yazdığınız kodu baştan sona makine koduna çeviren program.
- Yorumlayıcı (interpreter): Kodu çalıştırırken parça parça çeviren program. Bir tür simültane çevirmen gibi düşünebilirsiniz.
- Alt program: Bir kez yazılıp tekrar tekrar kullanılan küçük kod parçası.
- Saklı program: Programın makinenin kablolarında değil belleğinde durması.
Benim vardığım sonuç şu: Bu yüz yılı aşkın yolculukta değişen şey, makinenin hızından çok programcının makineye ne kadar yakın durmak zorunda olduğu. Her yeni katman, insana biraz daha az kablo ve biraz daha çok fikir bıraktı.
Kaynaklar
- Wikipedia. Note G (erişim: 2026-10-21)
- Wikipedia. ENIAC (erişim: 2026-10-21)
- Wikipedia. Manchester Baby (erişim: 2026-10-21)
- Wikipedia. EDSAC (erişim: 2026-10-21)
- Wikipedia. Grace Hopper (erişim: 2026-10-21)
- Wikipedia. Fortran (erişim: 2026-10-21)
- Wikipedia. C (programming language) (erişim: 2026-10-21)
- Wikipedia. Machine code (erişim: 2026-10-21)
- Python Software Foundation. Python glossary (bytecode, interpreted) (erişim: 2026-10-21)
Kapak görseli: ENIAC'ın kontrol panelinde çalışan iki kadın programcı (ABD Ordusu, 1946). U.S. Army · Public domain