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
IBM Fellow (1972).
Amerikan Ulusal Mühendislik Akademisi üyeliği (1979). Gerekçe, yüksek başarımlı bilgisayar tasarımındaki önderliği ve eniyileyici derleyiciler alanına katkılarıdır.
Eckert-Mauchly Ödülü (1985). Gerekçe, ileri bakış, koşutluk ve boru hattı kullanımı yoluyla yüksek başarımlı bilgisayar mimarisine; donanım ile yazılım arasındaki ödünleşimin ve derleyici eniyilemesinin kullanılması yoluyla da indirgenmiş buyruk kümeli mimariye katkılarıdır.
Turing Ödülü (1987). Gerekçe, derleyicilerin tasarımına ve kuramına, büyük sistemlerin mimarisine ve indirgenmiş buyruk kümeli bilgisayarların geliştirilmesine yaptığı katkılar ile eniyileyici derleyicilerde kullanılan pek çok temel dönüşümü bulup dizgeleştirmesidir.
IEEE Computer Society Bilgisayar Öncüsü Ödülü (1989). Gerekçe, buyruk boru hattı ve indirgenmiş buyruk kümesi kavramlarıdır.
Ulusal Teknoloji Madalyası (1991). Gerekçe, bilgisayarların hızını ve verimini belirgin biçimde artıran indirgenmiş buyruk kümeli mimarinin geliştirilmesi ve gerçeklenmesidir.
IEEE John von Neumann Madalyası (1994). Gerekçe, indirgenmiş buyruk kümeli mimarinin bulunması, geliştirilmesi ve gerçeklenmesi ile program eniyileme teknolojisidir.
Ulusal Bilim Madalyası (1994), hesaplama dalında. Gerekçe, derleyicilerin tasarımı ve kuramında bilgisayar bilimine katkıları ile yüksek başarımlı bilgisayar sistemlerinin kuramında ve uygulamasında sağladığı ilerlemelerdir.
Franklin Enstitüsü Benjamin Franklin Madalyası (2000), bilgisayar ve bilişsel bilim dalında. Gerekçe, bilgisayar mimarisinde bir devrime yol açan indirgenmiş buyruk kümeli hesaplamanın geliştirilmesidir.
123"John Cocke" (İngilizce). Computer History Museum. 22 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
12"John Cocke" (İngilizce). IBM. 22 Eylül 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
123Smotherman, 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.
12Bahl, 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.
1234"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.
↑"John Cocke" (İngilizce). Matematik Soy Ağacı Projesi. 12 Şubat 2026 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.
↑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.
↑Radin, George (1983). "The 801 minicomputer". IBM Journal of Research and Development. 27 (3). ss.237-246. doi:10.1147/rd.273.0237.
↑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.
↑Cocke, John (1970). "Global common subexpression elimination". Proceedings of a symposium on Compiler optimization. ss.20-24. doi:10.1145/800028.808480.
↑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.
↑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.
↑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.
12"John Cocke" (İngilizce). DBLP. Erişim tarihi: 22 Eylül 2026.Arşivlenmesi gereken bağlantıya sahip kaynak şablonu içeren maddeler (link)
↑Brown, Peter F.; Cocke, John; Della Pietra, Stephen A. (1990). "A statistical approach to machine translation". Computational Linguistics. 16 (2). ss.79-85.
↑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.
↑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.
↑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.
↑"Dr. John Cocke" (İngilizce). Ulusal Mühendislik Akademisi. 1 Mayıs 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 22 Eylül 2026.