수학의 아름다움 by 우쥔
Introduction
도서관에 꽂혀있던 이 책을 읽게 된건 예정에는 없던 일이었다. 당연하게도 구글의 검색관련 일을 했던 저자의 커리어에 관심이 갔고, 꼭 검색 관련이 아니더라도 여러가지 들어봤을법한 이론들에 대한 수식과 이를 간단하게 설명해주는 구성이 좋았다. 책에 나온 수식을 전부 완벽히 이해한건 전혀 아니지만, 가볍게 읽어보긴 좋은 책이었다.
컴퓨터과학의 다양한 이론들의 수학 적용을 소재로하는 이 책은 벌써 출간된지 10년이나 지난 책이고, 그 사이에 컴퓨터과학 역사상 너무나 많은 변화들이 있었던건 부정할 수 없는 사실이다. 하지만 이런 변화에도 저자의 평소 ‘소프트웨어 엔지니어링’에 대한 생각들이 더 와닿았다. 꽤나 느닷없는 생각이긴 하지만, ‘수학’과 ‘소프트웨어 엔지니어링’은 본질적으로 같은게 아닐까?
- 일을 하는 원리와 원칙을 (본질과 정수) 파악한다.
- 간단하고, 실용적인 방법을 생각한다.
Content
아래는 책을 읽으며 마음에 와닿았던 책의 내용을 그대로 옮겨놓은 부분이다.
21p
수학은 종종 심오하고 복잡하다는 인상을 주지만, 사실 수학의 본질은 때로 간단하고 직접적이다. 영국의 철학자 프랜시스 베이컨은 <미에 관하여=""> 라는 글에서 "미는 진귀한 보석처럼 꾸미지 않았을 때 가장 화려하게 빛난다(Virtue is like a rich stone, best plain set)"라고 말했다. 수학의 아름다움 역시 하나의 좋은 방법, 종종 가장 간단하고 명료한 방법에 있다. 그래서 나는 이 책 전체에서 '간단함이 곧 아름다움' 이라는 철학을 견지했다.미에>
135p
기술은 ‘술’과 ‘도’로 나뉜다. 구체적으로 일을 하는 방법이 ‘술’ 이고, 일을 하는 원리와 원칙이 ‘도’다. 이 책의 목적은 ‘술’이 아니라 ‘도’를 설명하는 것이다. 구체적인 검색 기술들은 곧 독보적 기술에서 보편적 기술로 바뀌었다가 뒤처지므로 ‘술’을 추구하는 사람은 평생 고생하며 일한다. 검색의 본질과 정수를 파악해야 힘 빼지 않고 여유를 누릴 수 있다.
144p
“진리는 복잡하고 혼란스러운 것이 아니라 단순함에서 찾을 수 있다(Truth is ever to be found in simplicity, and not in the multiplicity and confusion of things).” - 아이작 뉴턴
188p
컴퓨터과학 분야의 훌륭한 알고리즘은 AK-47 소총처럼 간단하고 효과적이며 확실하고 쉽게 이해할 수 있어야(쉽게 조작할 수 있어야) 하며, 뭔가 있어 보이듯 간단한 것을 일부러 어렵게 만들어선 안 된다고 생각한다.
“충분해요, 충분해. 공학적으로 간단하고 실용적인 방법이 최곱니다”
먼저 사용자 문제 80%를 해결한 후 나머지 20% 문제를 서서히 풀어가는 싱할의 일 처리 철학은 산업계에서의 성공 비결 중 하나다. 수많은 실패는 사람이 우수하지 못해서가 아니라 일 처리 방법이 잘못된 데서 기인한다. 처음부터 너무 크고 완벽한 해결책을 추구하다 보면 오랫동안 완성하지 못해 결국 흐지부지되어버린다.
싱할은 비행기가 새처럼 비행할 필요가 없는 것처럼 컴퓨터가 사람의 방법을 학습할 필요가 없다고 생각했다.
보통 한 유형의 검색에 대한 개선 방법은 다른 유형의 검색에 약간 부정적 영향을 끼친다. 이런 때는 ‘그렇게 된 까닭’을 분명히 밝혀야 그 방법이 부정적 영향을 끼치는 원인과 상황을 찾아내고, 그 발생을 막을 수 있다. 싱할은 검색 품질 개선 방법은 확실한 이유를 설명할 수 있어야 하고, 이유를 명확히 말할 수 없는 개선은 효과적으로 보일지라도 향후 뒤탈이 생길 수 있으므로 채택하지 말라고 요구했다.
414p
모든 ‘좋은’ 알고리즘 가운데 최고의 알고리즘이 있기 마련이며, 그것을 찾는 것이 컴퓨터과학 종사자가 노력해야 할 목표다.
419p
나는 대부분 소프트웨어 엔지니어들이 잘 알지 못하는 분야에서 문제에 직면했을 때 직관에만 의지해 해결하는 모습을 자주 봤다.
이런 방법으로 만든 것은 나쁘게 말하면 ‘짝퉁’이다.
이런 방법은 물론 없는 것보다는 낫지만, 개선되거나 향상될 가능성이 거의 없었고 프로그램의 로직을 대단히 혼란스럽게 만들었다.
(무의식중에) 잘못된 모델을 사용한다고 해도 특정한 상황에서는 그 효과를 짜낼 수는 있다.
그러나 잘못된 모델은 진리에서 벗어난 것이기에 그 부정적인 영향이 점차 수면 위로 드러나기 마련이다. 그리고 최후에는 정확한 결과에서 멀어질 뿐만 아니라 종종 원래는 간단했던 일도 매우 복잡하게 만들어 파국으로 치닫는다.
Comments powered by Disqus.