http://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/
키보드의 자판을 두들길 때 어떤 일이 일어나는지 한번 살펴봅시다. 소문자 “a”의 경우를 보죠. 키보드는 당신이 키를 누르길, 손을 떼기를 기다리는 중입니다. 어떤 키가 눌렸는지 지속적으로 확인하죠. 키를 누르면 스캔코드를 보내게 됩니다.
키가 눌리길 기다리는 키보드처럼, 컴퓨터는 키보드로부터 신호가 오기를 기다립니다. 뭔가가 나타나면, 컴퓨터가 그것을 해석하고 내부로 전달합니다. “이게 키보드가 방금 전달한 거야. 이거 가지고 하려던걸 해봐”
간단하죠? 그러면 컴퓨터는 표를 확인해 신호가 문자 “a”를 의미한다는걸 밝혀내고, 화면에 표시합니다. 물론 쉬운 작업만은 아니에요. 컴퓨터는 기계입니다. 화면이 무엇인지, “a”가 무엇인지 알지 못합니다. “a”를 화면에 표시하기 위해, 컴퓨터는 선과 원으로 이뤄진 “a”를 저장한 글자체에서 “a”의 형상을 뽑아냅니다. 선과 원들을 가지고 형체를 만들고, 화면에 표시되는 자그마한 픽셀들에 표시합니다. 결국 글자 하나를 표시하는데 적어도 3개의 표현이 필요한대요, 키보드로부터 받는 신호, 미리 저장되어있던 글자, 그리고 화면에 그려진 선과 원들의 조합 이렇게 3개가 필요합니다. 이걸 어떻게 저장하는지, 혹은 문장 중간에 a를 삽입하면 근처에 있는 글자들이 어떻게 되는지는 아직 고려하지도 않았죠. 2진법 정보로 쪼갰을때, “선과 원”이 어떤 걸 의미하는지도 말이죠. 단순하게 “a”를 표현하는 방법은 놀라울 정도로 많습니다. 모두 아주 잘 작동한다는게 놀라울 따름이죠.
키를 누르는 시점으로 거꾸로 올라가는 작업을 하는 사람들이 바로 프로그래머(coder)입니다. 이런 일을 하려면 “데이터 필드는 최하위비트(LSB: least significant bit)를 먼저 전송한다” 같이 당신이 입 벌리고 물음표 지을만한 개념에 대해 이해하려고 관련 문서나 메뉴얼을 페이지 넘겨가며 보는 특정한 기질을 필요로 하죠. (Coders are people who are willing to work backward to that key press. It takes a certain temperament to page through standards documents, manuals, and documentation and read things like “data fields are transmitted least significant bit first” in the interest of understanding why, when you expected “ü,” you keep getting “�.”)
come down the pike: 나타나다
temperament: 기질