Ken Thompson: Her Şeyin Sessiz Mimarı
Bell Laboratuvarları (Bell Labs) 1969 yılında Multics projesinden çekildiğinde, Ken Thompson'ın elinde köşeye atılmış eski bir PDP-7 mini bilgisayarı ve hiçbir resmi görevi kalmamıştı. Buna rağmen, onu kullanarak bir işletim sistemi inşa etti. Unix ve onun türevleri, bugün gezegendeki neredeyse tüm sunucularda, telefonlarda ve gömülü cihazlarda çalışmaktadır. Thompson'ın en yakın iş arkadaşı ve kendi başına da büyük bir figür olan Dennis Ritchie, ilk sürüm hakkında "fikirlerin çoğunun ve bu konudaki işin çoğunun ona ait olduğunu" söylemiştir.
İkili Sayı Sisteminde Aritmetik
Kenneth Lane Thompson, 4 Şubat 1943'te New Orleans, Louisiana'da doğdu. Kendi çocukluğuna dair anlatımı oldukça sadedir: "Her zaman mantığa meraklıydım ve ilkokuldayken bile ikili sayı sisteminde aritmetik problemler üzerinde çalışırdım; böyle şeyler. Sadece meraklı olduğum için." Bu son cümle, kişiliğinin tamamını yansıtmaktadır: hiçbir pratik amacı olmayan, tamamen entelektüel bir merak.
1965 yılında lisans, 1966 yılında ise yüksek lisans derecelerini Kaliforniya Üniversitesi, Berkeley'den (University of California, Berkeley) elektrik mühendisliği ve bilgisayar bilimleri alanlarında aldı. Oradaki tez danışmanı kodlama teorisyeni Elwyn Berlekamp'tı. Bell Laboratuvarları onu 1966'da New Jersey, Murray Hill'deki Bilgisayar Bilimleri Araştırma Merkezi'nde işe aldı.
Unix
1967 ile 1969 yılları arasında Thompson, Bell Laboratuvarları, MIT ve General Electric arasındaki iddialı ortak zaman paylaşımı projesi olan Multics üzerinde çalıştı. Multics devasa, yavaş ve gecikmiş bir projeydi; Bell Laboratuvarları projeden çekildi. Thompson'ın buradan çıkardığı sonuç, fikirlerin doğru ancak uygulamanın yanlış olduğuydu.
Köken hikayesi oldukça iyi bilinir ve biraz absürttür. Kendi yazdığı Space Travel (Uzay Yolculuğu) oyununu oynamaya devam etmek istiyordu ve çalışmak için düzgün bir ortama ihtiyacı vardı. Hurdaya çıkmış bir PDP-7 üzerinde, minimum kaynakla ve hiçbir kurumsal destek almadan işletim sisteminin çekirdeğini inşa etti: hiyerarşik dosya sistemi, süreçler, normal dosya gibi işlem gören aygıt dosyaları, çekirdekten bağımsız bir komut satırı yorumlayıcısı ve programları birbirine zincirlemek için borular (pipes). Bunların her biri bugün o kadar standartlaşmıştır ki, onları birer "tercih" olarak görmek çaba gerektirir.
Tasarım felsefesi sıkıştırma üzerine kuruluydu. Unix, her ihtiyacı önceden tahmin eden bir sistem yerine, az sayıda birleştirilebilir temel öğe sundu ve kullanıcıların istediklerini birleştirmelerine izin verdi. 1973 yılına gelindiğinde yirmiden fazla kurulum mevcuttu. Çekirdek dışındaki kısımları daha kolay yazabilmek için, Ritchie'nin daha sonra C diline dönüştüreceği BCPL'den türetilen B programlama dilini yarattı; dünya altyapı yazılımlarının çoğu bugün hala bu dille yazılmaktadır.
Küçük Araçlar, Derin Kökler
Thompson'ın diğer çalışmaları da aynı imzayı taşır: yük taşıyan, kompakt bir fikir. QED ve ed editörlerinde düzenli ifadeleri (regular expressions) uyguladı ve düzenli ifadeleri sonlu otomatlara dönüştüren "Thompson Yapısı" (Thompson's construction) algoritmasını tasarladı. Bugün kullanılan hemen hemen her düzenli ifade motoru, bu notasyonun bir torunudur.
1971'de bir satranç programı yazdı, ardından Joseph Condon ile birlikte döneminin bilgisayar satrancına hükmeden özel amaçlı satranç makinesi Belle'i inşa etti. Daha sonra, dört, beş ve altı taşlı son oyunlar için tam son oyun veritabanlarını oluşturdu; bu, satranç pozisyonlarının tüm sınıfları için kapsamlı çözümler sunan ve son oyun teorisini kalıcı olarak değiştiren bir çalışmaydı.
1992'de Rob Pike ile birlikte, tek bir bayt akışının Dünya üzerindeki herhangi bir alfabeyi ASCII uyumluluğunu koruyarak taşımasına olanak tanıyan karakter kodlaması UTF-8'i tasarladı. Bugün web'in yüzde 90'ından fazlası bunu kullanmaktadır. Ayrıca Bell Laboratuvarları'nın 1980'lerin ortasında Unix fikirlerini Unix'in kendisinden daha ileriye taşımak için inşa ettiği dağıtık işletim sistemi Plan 9'un da merkezinde yer aldı.
1983'teki Turing ödülü konuşması "Güvene Dair Düşünceler" (Reflections on Trusting Trust), derlediği programlara ve kendi gelecekteki sürümlerine bir arka kapı yerleştiren, böylece kötü niyetli kodun kimsenin okuyabileceği kaynak kodda asla görünmediği bir derleyiciyi tarif ediyordu. "Thompson hack", bilgisayar güvenliğinin temel belgelerinden biridir; kaynak 2023 yılında açıklamalarla birlikte yayınlanmıştır.
Google ve Go
Thompson 2000'in sonlarında Bell Laboratuvarları'ndan emekli oldu ve 2006'da Google'a katıldı. Burada Rob Pike ve Robert Griesemer ile birlikte Go programlama dilini tasarladı. Motivasyonuna dair açıklaması nettir: "Üçümüz bir araya geldik ve C++'tan nefret ettiğimize karar verdik;" C++ için "birbirini dışlayan fikirlerden oluşan bir çöp yığını" demiştir. Go, her üç tasarımcının da her özellik konusunda ikna edilmesi gerektiği kuralı üzerine inşa edilmiştir; bu, dili küçük tutmak için bir disiplindir.
Ödüller istikrarlı bir şekilde birikti: 1980'de Ulusal Mühendislik Akademisi'ne seçilmesi, 1982'de IEEE Emanuel R. Piore Ödülü, 1983'te Ritchie ile birlikte ACM Turing Ödülü, 1985'te Ulusal Bilimler Akademisi üyeliği, 1990'da IEEE Richard W. Hamming Madalyası, 1994'te Bilgisayar Öncüsü Ödülü, 1997'de Bilgisayar Tarihi Müzesi üyeliği, 1998'de Ulusal Teknoloji Madalyası, 1999'da ilk Tsutomu Kanai Ödülü ve 2011'de Japonya Bilgi ve İletişim Ödülü.
Ken Neden Dahi Olarak Anılır?
ACM'nin Turing ödülü alıntısı, alışılmadık derecede kesin bir iddiada bulunur ve niteliği tam olarak konumlandırdığı için alıntı yapmaya değerdir: "UNIX sisteminin başarısı, birkaç temel fikrin zevkli bir şekilde seçilmesinden ve zarif bir şekilde uygulanmasından kaynaklanmaktadır... Unix sisteminin dehası, programcıların başkalarının çalışmaları üzerine inşa etmelerini sağlayan çerçevesidir."
"Zevk" (Taste) burada operasyonel kelimedir. Thompson'ın yeteneği çıkarmadır (subtractive); en geniş faydalı davranış alanını üretecek en küçük kavramlar setini tanımlama ve diğer her şeyi reddetme yeteneği. Borular (pipes) bunun kanonik örneğidir: bir programın çıktısını diğerinin girdisine bağlayan, küçük araçlar koleksiyonunu kombinatoryal bir sisteme dönüştüren önemsiz bir mekanizma. Düzenli ifadeler, UTF-8 ve Go, aynı "yeterli minimum tasarım" modelini gösterir. Düzenli olarak gelmiş geçmiş en büyük programcılar arasında anılır ve bu hüküm ödül komitelerinden değil, geçimini kod yazarak sağlayan insanlardan gelir.
Karşı tez, bu listedeki çoğu kişiye kıyasla daha zayıftır ancak mevcuttur. Unix işbirlikçi bir çalışmaydı; Ritchie, Brian Kernighan, boruları öneren Douglas McIlroy ve diğerleri Unix'i derinden şekillendirdi ve Turing Ödülü paylaşıldı. Birçok Unix fikri Multics'ten uyarlandı, sıfırdan icat edilmedi. Thompson bilgisayar biliminde teorik bir sonuç üretmedi; etkisi tamamen eserler ve tasarım yargıları üzerindedir. Bunun deha mı yoksa son derece gelişmiş bir zanaat mı olduğu adil bir sorudur. En dürüst cevap, yazılımda ikisini ayırmanın zor olduğu ve Thompson'ın zanaatının çoğu insanın teorisinden daha sonuç odaklı olduğudur.
Miras
Linux, macOS, Android, iOS ve hemen hemen her internet sunucusunu çalıştıran yazılımlar, Thompson'ın 1969'da hurdaya çıkmış bir makinede tek başına aldığı kararlardan türemiştir. Karakter kodlaması, çevrimiçi ortamdaki neredeyse tüm yazılı metinleri taşır. Düzenli ifade algoritması her metin editörünün içindedir. 2024 yılında Bilgisayar Tarihi Müzesi için uzun bir sözlü tarih kaydetmiştir ve son yıllarını Apple ürünlerini bırakıp Raspberry Pi OS kullanarak geçirmektedir.
.jpg)