기타 업적

CYK 알고리듬

파서는 프로그램 소스 코드를 문법에 맞게 분해하여 파싱 트리를 만들어 주는 일을 한다. 파서와 관련해서 도널드 커누스, 로버트 플로이드 등이 유명한데 존 코크도 자신만의 방법을 제안했다. 후에 이 방법은 여러 사람이 독자적으로 찾아낸 것이 확인되어 그 사람들의 이름을 모두 붙여 CYK 알고리듬이라고 부르게 되었다. Cocke-Younger-Kasami의 약자이다.

CYK 알고리듬은 상향식 파서이다.

기계 번역

그는 음성 인식과 기계 번역에도 관심을 보였다. 통계에 기반한 기계 번역 연구에 참여했고, 음성 인식을 위해 트라이그램trigram 언어 모델을 처음 제안했던 것으로 알려진다.​13​

별난 생활 태도

존 코크의 사진이 많지 않아서 단언하기는 어려우나, 노년의 사진을 보면 그는 상당히 왜소한 몸집의 소유자였다. 엄청난 골초였다고 하는데 그래서 그를 찾고 싶으면 복도에 떨어진, 그의 담배꽁초를 쫓아가면 된다는 농담도 있었다.​3​

그는 분필을 왼손의 손가락 사이에 끼워 놓고 담배의 끝으로 칠판에 글을 쓰려고 하는 사람이었다.​4​

그리고 그는 착실한 생활인은 아니었다. 봉급을 수표로 받으면 그걸 현금으로 바꿔야 하는데 잊어먹기 일쑤였으며 옷도 잘 안 갈아입었다고 한다. 심지어 다음과 같은 일화도 있다.

“아, 젠장. 그러면 안 되지만 내가 그 자료를 모두 자네에게 보여주지”라고 그는 말했습니다. 그리고 캐비넷을 열었는데 그 안에는 더러운 셔츠들이 한가득 들어 있었습니다. 그는 캐비넷을 뒤집어 엎은 다음에 5분 동안 뒤졌죠.​4​

존의 사무실에 들어갈 때마다 그 안에 쌓여 있는 셔츠 상자들을 무너뜨릴 뻔하던 시절이 있었습니다. 처음에는 요 정도 높이였는데 그다음에 갔을 때는 더 높아져 있었죠. 그렇게 많은 셔츠 상자가 쌓여 있는 이유는, 존이 매일 깨끗한 셔츠는 입고 싶은데 세탁소에 가져갈 생각은 하지 않아서였습니다. 그래서 그는 새 셔츠를 입고 싶으면 새것을 산 후에 입고 있던 것은 그 상자에 넣고 옆에 쌓아 놓기만 했던 겁니다.​4​

어찌 보면 그는 ‘별난’ 사람이었다. 그를 처음 IBM에 소개했던 브래드 던햄은 이런 기억을 가지고 있었다.

내가 차의 백미러를 보았더니 낡은 코트를 입은 존이 보였습니다… 그렇게 엄청난 눈보라가 치고 있는데 광장에서 낡은 코트를 입은 채로 외발자전거를 타고 뱅글뱅글 돌고 있는 사람이 존 아니면 누구겠습니까?​4​

그래서 그랬는지는 모르겠지만 그는 상당히 오랜 기간 동안 독신으로 지냈다. 그래서 그가 거의 은퇴할 즈음인 1989년에 결혼을 알렸을 때 주위의 사람들은 모르긴 몰라도 엄청나게 놀랐을 듯싶다.


  1. ​*​
    1999년에 튜링상을 수상했다.
  2. ​†​
    참고로 린 콘웨이는 성전환 계획이 경영진에게 알려지면서 토머스 왓슨 2세에 의해 해고되었다.

참고문헌

  1. 1.
    Cocke J. The search for performance in scientific processors. ACM Turing Award Lectures.:1987. doi:10.1145/1283920.1283945
  2. 2.
    Watson Jr. memo about CDC 6600 – CHM Revolution. Computer History Museum. Accessed March 25, 2023. https://www.computerhistory.org/revolution/supercomputers/10/33/62
  3. 3.
    John Cocke – A.M. Turing Award Laureate. ACM. Accessed March 25, 2023. https://amturing.acm.org/award_winners/cocke_2083115.cfm
  4. 4.
    Computer History – John Cocke: A Retrospective by Friends – 1990. YouTube. Published March 29, 2017. Accessed March 25, 2023. https://www.youtube.com/watch?v=eYwd30iWVvw&list=PLYTtL1FB2XCphoR3BCIszdSlRFSQAOMPs&index=2
  5. 5.
    Shriver B, Capek P. Just curious: An interview with John Cocke. Computer. Published online November 1999:34-38. doi:10.1109/mc.1999.803638
  6. 6.
    어스프레이 윌리엄. 존 폰 노이만 그리고 현대 컴퓨팅의 기원. 지식함지; 2015.
  7. 7.
    Smotherman MK, Sussenguth EH, Robelen RJ. The IBM ACS Project. IEEE Annals Hist Comput. Published online January 2016:60-74. doi:10.1109/mahc.2015.50
  8. 8.
    IBM Stretch (7030) — Aggressive Uniprocessor Parallelism. Organization Sketch of IBM Stretch — Mark Smotherman. Accessed March 28, 2023. https://people.computing.clemson.edu/~mark/stretch.html
  9. 9.
    Allen FE, Cocke J. A program data flow analysis procedure. Commun ACM. Published online March 1976:137. doi:10.1145/360018.360025
  10. 10.
    Cocke J, Schwartz JT. Programming Languages and Their Compilers: Preliminary Notes. Courant Institute of Mathematical Sciences, New York University; 1970:767.
  11. 11.
    Cocke J, Kennedy K. An algorithm for reduction of operator strength. Commun ACM. Published online November 1977:850-856. doi:10.1145/359863.359888
  12. 12.
    Chaitin GJ, Auslander MA, Chandra AK, Cocke J, Hopkins ME, Markstein PW. Register allocation via coloring. Computer Languages. Published online January 1981:47-57. doi:10.1016/0096-0551(81)90048-5
  13. 13.
    John Cocke (computer scientist). Wikipedia. Accessed March 29, 2023. https://en.wikipedia.org/wiki/John_Cocke_(computer_scientist)

1 2 3 4 5 6 7