John Cocke

John Cocke
Cocke, IBM'in tarihçe sayfasındaki fotoğrafında
Doğum30 Mayıs 1925(1925-05-30)
Charlotte, Kuzey Karolina, ABD
Ölüm16 Temmuz 2002 (77 yaşında)
Valhalla, New York, ABD
EğitimDuke Üniversitesi
(BS-1946, PhD-1956)
Tanınma nedeniRISC
IBM 801
CYK algoritması
BCJR algoritması
Ödüller
Kariyeri
DalıBilgisayar bilimi
Çalıştığı kurumlarIBM
MIT
New York Üniversitesi

John Cocke (Mayıs 1925, Charlotte, Kuzey Karolina - 16 Temmuz 2002, Valhalla, New York), Amerikalı bilgisayar bilimcisidir. Otuz yedi yıl boyunca IBM'de çalışmış, bilgisayar mimarisi ile derleyici eniyilemesi alanlarına katkıda bulunmuştur. "RISC mimarisinin babası" olarak anılmaktadır.

1975'te başlayan IBM 801 projesine önderlik etmiştir; bu makine indirgenmiş buyruk kümeli ilk bilgisayar sayılmaktadır. Daha önce çalıştığı Stretch ve ACS projelerinde boru hattı, dallanma geçmişi çizelgesi ve tek çevrimde birden çok işlem başlatma gibi teknikler geliştirilmiştir.

Derleyici eniyilemesinde bugün kullanılan dönüşümlerin önemli bir bölümü ona bağlanmaktadır: ortak alt ifadelerin elenmesi, yazmaç ataması, sabit yayılımı ve ölü kod eleme. Adı ayrıca bağlamdan bağımsız dilleri ayrıştıran CYK algoritması ile hata düzeltmeli kodların çözülmesinde kullanılan BCJR algoritmasında geçmektedir.


Eğitimi ve erken yılları

Cocke, üç erkek kardeşin en küçüğü olarak Charlotte'ta doğdu; babası Norman Cocke, Duke Power şirketinin başkanlığını yaptı ve Duke Üniversitesi mütevelli heyetinde bulundu.

Lisans derecesini 1946'da Duke Üniversitesi'nde makine mühendisliği alanında aldı. Öğrenciliği sırasında ABD Deniz Kuvvetleri'nin V-12 programındaydı ve 1952'de yeniden göreve çağrıldı; arada geçen yıllarda ısıtma ve havalandırma alanında çalışan bir şirkette, sonra General Electric'in yüksek gerilim laboratuvarlarında görev yaptı. 1954'te Duke'a döndü ve doktorasını 1956'da matematik alanında tamamladı. Aynı yıl IBM'e katıldı ve 1993'teki emekliliğine dek otuz yedi yıl orada çalıştı.

Stretch ve ACS

IBM'deki ilk büyük işi, dönemin en hızlı bilgisayarı olarak tasarlanan Stretch projesiydi. Bu projede boru hattı, hata düzelten kodlar, buyruk zamanlaması ve yazmaç ataması üzerine çalıştı; makinenin buyruk kümesi 735 ayrı buyruk içeriyordu. Harwood Kolsky ile birlikte Stretch'in sanal bellek düzeneğini anlatan bir bildiri yayımladı.

Ardından İleri Bilgisayar Sistemi (ACS) projesinde mimari grubunun yöneticisi oldu. ACS tek bir işlemci çevriminde birden çok buyruk başlatabiliyordu: dallanma biriminde bir, sabit noktalı birimde üç ve kayan noktalı birimde üç işlem aynı çevrimde başlatılabiliyordu. Bu yaklaşım sonradan çoklu buyruk başlatımlı işleme adıyla anıldı. Tasarımda ayrıca dallanma geçmişi çizelgesi vardı; bugünkü dallanma öngörüsü düzeneklerinin öncülü sayılmaktadır. Proje 1969'da durduruldu, ancak getirdiği teknikler sonraki işlemcilere geçti.

801 ve indirgenmiş buyruk kümesi

IBM, 1970'lerin ortasında Cocke ve ekibini telefon santrallerini denetleyecek bir aygıt üzerinde görevlendirdi. Proje durdurulduğunda ekibin çalışması, indirgenmiş buyruk kümesi ilkesine dayanan ilk örnek makineye dönüştü. Cocke 1975'te başlayan 801 projesine önderlik etti; araştırma olarak başlayan iş sonradan ticari ürünlere temel oldu ve 801 indirgenmiş buyruk kümeli ilk bilgisayar sayıldı.

Yaklaşımın özü, donanımı yalın tutup eniyilemeyi derleyiciye bırakmaktı: az sayıda ve düzenli buyruk, her buyruğun tek çevrimde tamamlanması, belleğe yalnızca yükleme ve saklama buyruklarıyla erişilmesi ve yazmaç atamasının derleyicide küresel olarak yapılması. Cocke, Victoria Markstein ile birlikte IBM'de bu teknolojinin gelişimini anlatan bir inceleme yayımladı.

Derleyici eniyilemesi

Cocke'un derleyici çalışmaları, kaynak programı daha hızlı çalışan bir koda dönüştüren eniyileme geçişleriyle ilgilidir. Turing Ödülü gerekçesi, eniyileyici derleyicilerde kullanılan pek çok temel dönüşümü bulması ve dizgeleştirmesi olarak yazılmıştır; gerekçede işlemlerin daha ucuz olanlarıyla değiştirilmesi, ortak alt ifadelerin elenmesi, yazmaç ataması, sabit yayılımı ve ölü kod eleme sayılmaktadır.

Ortak alt ifadelerin küresel olarak elenmesini 1970'te tanımladı. Frances Allen ile birlikte, bir programın akışını denetim akışı çizelgesi üzerinden inceleyen aralık çözümlemesi yöntemini geliştirdi ve veri akışı çözümlemesi için bir yordam yayımladı. Ken Kennedy ile birlikte, döngü içindeki çarpma gibi pahalı işlemleri toplama gibi ucuzlarıyla değiştiren bir algoritma verdi.

Yazmaç atamasının çizge boyama olarak ele alınması, IBM'de Gregory Chaitin'in önderliğinde Cocke'un da içinde bulunduğu bir ekip tarafından yayımlandı ve derleyici yazınının en çok anılan çalışmalarından biri oldu.

Öteki çalışmaları

BCJR algoritması: Lalit Bahl, Frederick Jelinek ve Josef Raviv ile birlikte 1974'te yayımladığı çözme algoritması, doğrusal kodlarda simge hata oranını en aza indirir. Adını dört yazarın soyadlarının baş harflerinden alan bu çalışma, atıf sayısına göre Cocke'un en çok anılan yayınıdır ve ödül gerekçelerinin hiçbirinde geçmez.

İstatistiksel makine çevirisi: IBM'de 1990'da yayımlanan ve çeviriyi olasılık modeline dayandıran çalışmanın yazarları arasındadır; bu yaklaşım sonraki yıllarda makine çevirisinin ana yöntemi oldu.

CYK algoritması: Bağlamdan bağımsız dilleri ayrıştıran algoritma, adını Cocke ile Daniel Younger ve Tadao Kasami'den almaktadır. Cocke algoritmayı kendi adıyla hiç yayımlamadı; yöntem, Jacob T. Schwartz ile birlikte hazırladığı ve Courant Enstitüsü'nde ders notu olarak dağıtılan çalışmanın düğüm aralıklarıyla aşağıdan yukarıya ayrıştırma bölümünde anlatılmaktadır. Younger aynı yöntemi bağımsız olarak 1967'de yayımladı.

Tag sistemleri: Marvin Minsky ile birlikte 1964'te, iki simgeyle çalışan tag sistemlerinin evrensel olduğunu gösteren bir çalışma yayımladı.

DBLP kayıtlarında 24 yayını görünmektedir. Turing Ödülü dersinde IBM'deki en ilgi çekici üç işini Stretch, ACS ve 801 olarak anlatmıştır. ACM ile IEEE Computer Society, yirmiyi aşkın patenti olduğunu bildirmektedir.

Ödülleri

Notlar

  1. ↑ Doğum günü kaynaklarda ayrışmaktadır. ACM 30 Mayıs, IEEE Computer Society ile Ulusal Bilimler Akademisi 25 Mayıs vermektedir.

Kaynakça

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 "John Cocke" (İngilizce). ACM A. M. Turing Award. 29 Ekim 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  2. 1 2 3 "John Cocke" (İngilizce). Computer History Museum. 22 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  3. 1 2 "John Cocke" (İngilizce). IBM. 22 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  4. 1 2 3 Smotherman, Mark; Sussenguth, Edward H.; Robelen, Russell J. (2016). "The IBM ACS Project". IEEE Annals of the History of Computing. 38 (1). ss. 60-74. doi:10.1109/MAHC.2015.50.
  5. 1 2 Bahl, Lalit R.; Cocke, John; Jelinek, Frederick; Raviv, Josef (1974). "Optimal decoding of linear codes for minimizing symbol error rate". IEEE Transactions on Information Theory. 20 (2). ss. 284-287. doi:10.1109/TIT.1974.1055186.
  6. ↑ Schofield, Jack (27 Temmuz 2002). "John Cocke". The Guardian. Guardian Media Group. 22 Şubat 2013 tarihinde kaynağından arşivlendi. Erişim tarihi: 24 Aralık 2017. (İngilizce)
  7. 1 2 3 4 "John Cocke" (PDF) (İngilizce). IEEE Computer Society, Computer Pioneers. 22 Eylül 2026 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 22 Eylül 2026.
  8. ↑ "John Cocke" (İngilizce). Matematik Soy Ağacı Projesi. 12 Şubat 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  9. ↑ Cocke, John; Kolsky, Harwood G. (1959). "The virtual memory in the STRETCH computer". Papers presented at the December 1-3, 1959, Eastern Joint IRE-AIEE-ACM Computer Conference. ss. 82-93. doi:10.1145/1460299.1460308.
  10. ↑ Radin, George (1983). "The 801 minicomputer". IBM Journal of Research and Development. 27 (3). ss. 237-246. doi:10.1147/rd.273.0237.
  11. ↑ Cocke, John; Markstein, Victoria (1990). "The evolution of RISC technology at IBM". IBM Journal of Research and Development. 34 (1). ss. 4-11. doi:10.1147/rd.341.0004.
  12. ↑ Cocke, John (1970). "Global common subexpression elimination". Proceedings of a symposium on Compiler optimization. ss. 20-24. doi:10.1145/800028.808480.
  13. ↑ Allen, Frances E.; Cocke, John (1976). "A program data flow analysis procedure". Communications of the ACM. 19 (3). ss. 137-147. doi:10.1145/360018.360025.
  14. ↑ Cocke, John; Kennedy, Ken (1977). "An algorithm for reduction of operator strength". Communications of the ACM. 20 (11). ss. 850-856. doi:10.1145/359863.359888.
  15. ↑ Chaitin, Gregory J.; Auslander, Marc A.; Chandra, Ashok K.; Cocke, John; Hopkins, Martin E.; Markstein, Peter W. (1981). "Register allocation via coloring". Computer Languages. 6 (1). ss. 47-57. doi:10.1016/0096-0551(81)90048-5.
  16. 1 2 "John Cocke" (İngilizce). DBLP. Erişim tarihi: 22 Eylül 2026.
  17. ↑ Brown, Peter F.; Cocke, John; Della Pietra, Stephen A. (1990). "A statistical approach to machine translation". Computational Linguistics. 16 (2). ss. 79-85.
  18. ↑ Cocke, John; Schwartz, Jacob T. (1970). Programming Languages and Their Compilers: Preliminary Notes (PDF) (2. gözden geçirilmiş bas.). Courant Institute of Mathematical Sciences, New York Üniversitesi.
  19. ↑ Younger, Daniel H. (1967). "Recognition and parsing of context-free languages in time n3". Information and Control. 10 (2). ss. 189-208. doi:10.1016/S0019-9958(67)80007-X.
  20. ↑ Cocke, John; Minsky, Marvin (1964). "Universality of Tag Systems with P=2". Journal of the ACM. 11 (1). ss. 15-20. doi:10.1145/321203.321206.
  21. ↑ Cocke, John (1988). "The search for performance in scientific processors: the Turing Award lecture". Communications of the ACM. 31 (3). ss. 250-253. doi:10.1145/42392.42394.
  22. ↑ "Dr. John Cocke" (İngilizce). Ulusal Mühendislik Akademisi. 1 Mayıs 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  23. ↑ "Eckert-Mauchly Award Recipients" (İngilizce). IEEE Computer Society. 6 Haziran 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  24. ↑ "John Cocke" (İngilizce). Amerikan Sanat ve Bilimler Akademisi. 23 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  25. ↑ "Honorary Degree Recipients 1980-1989" (İngilizce). Duke Üniversitesi Mütevelli Heyeti. 22 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  26. ↑ "Computer Pioneer Award Recipients" (İngilizce). IEEE Computer Society. 23 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  27. ↑ "National Medal of Technology and Innovation Recipients: 1991" (İngilizce). Amerika Birleşik Devletleri Patent ve Marka Ofisi. 24 Aralık 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  28. ↑ "John Cocke" (İngilizce). Ulusal Bilimler Akademisi. 31 Temmuz 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  29. ↑ "IEEE John von Neumann Medal Recipients" (PDF) (İngilizce). IEEE. 21 Eylül 2026 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 22 Eylül 2026.
  30. ↑ "John Cocke" (İngilizce). Ulusal Bilim Vakfı. 22 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
  31. ↑ "Seymour Cray Computer Engineering Award Recipients" (İngilizce). IEEE Computer Society. Erişim tarihi: 22 Eylül 2026.
  32. ↑ "John Cocke" (İngilizce). Franklin Enstitüsü. 22 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.