소프트웨어 이야기 37

알고리즘은?

¡ 알고리즘은 무엇이지? Wiki 에 있는 글을 보니 이렇게 쓰여 있다 : “In mathematics, computing, linguistics, and related disciplines, an algorithm is a procedure (a finite set of well-defined instructions) for accomplishing some task which, given an initial state, will terminate in a defined end-state. The computational complexity and efficient implementation of the algorithm are important in computing, and this depends ..

왜 알고리즘을 알아야 하지?

알고리즘에 대해 글을 써 보기로 했다. 나는 알고리즘이 전산학의 가장 기본, 감초라 생각한다. 인공지능, 운영체제, DBMS 등 전산학의 어디에고 적절한 알고리즘에 대한 이해가 필요하지 않는 곳이 없다. 튜링상을 받은 사람들을 보더라도 그 중 많은 사람들이 알고리즘을 배우다 보면 나오는 양반들이다. 나는 대학원에서 수학적 논리학과 알고리즘을 배우면서 내가 이 쪽에서 엑스퍼트가 될 만큼 스마트하지 않다는 것을 알았다. 그래도 알고리즘은 전산학을 하기에 필요하므로 알고 있어야 한다고 생각해 노력했다. 알고리즘 책을 마지막 본격적으로 본 것이 92년 경이라 기억한다. 왜 지금 다시 알고리즘이 생각날까? 우리 회사에서 새로운 상품을 준비하는데 알고리즘 훈련이 필요하기 때문이다. 알고리즘 훈련이 되지 않은 사람은..

간단한 페이지랭크 프로그램

간단하게 페이지랭크를 구현해 보았다. 원래는 세르게이와 브린이 한 것 같이 제대로 데이터구조도 갖추어 전반적인 검색 구성요소들을 구현해 보려고 했는데 생각같이 잘 되지 않아 몇 일 생각해 보고 그만두기로 했다. 이러다가는 framework을 만들겠다 (이것은 핑계고 사실은 프로그래밍이 잘 될 것 같지 않음). 나중에 필요하면 우리 직원들 시켜야지... 두세명이서 반년이면 될까? 여기에 첨부한 녀석은 그만 두기로 한 날 아침에 시작해서 점심 먹으로 갈 때 거의 완성한 것임. 나는 사실 웹검색기술을 잘 모른다. 관련 글들을 본 것도 작년 11월이 처음이다. 구글과 페이지랭킹 얘기는 전부터 알고는 있었지만 공부해 본 적은 없었다. 그러다가, 내가 가르키는 컴퓨터구조에서 구글의 파일시스템과 Mapreduce 처..

구글 검색기술과 페이지랭킹

작년말 발표했던 구글 검색기술과 페이지랭킹이다. 참고자료들은 프리젠테이션에 나타낸 것과 같다. wikipedia 가 매우 좋은 출발점이라 생각한다. 모든 참고자료들은 인터넷에서 구할 수 있다. 대부분의 논문들이 그렇듯이 세르게이와 페이지의 글들도 구글기술의 세부는 밝히지 않고 있다. 그렇지만, 엔지니어링에서는 종종 이런 세부기술의 우월성에서 승부가 판가름 난다. 가령 생각없이 짠 프로그램과 성능이 뭐라는 것을 알고 짠 프로그램의 성능 차이는 1000 : 1 나는 경우도 종종 있다. 내 경우 30대 초반에 spatial convolution이 많이 필요해서 기존 라이브러리에 있는 것을 사용했는데 한번 돌리는데 몇 시간이 걸리곤 했다. 도저히 졸업할 것 같지 않아 이를 FFT로 구현했는데, 이것으로 돌리니 ..

Joshua Bloch의 API 강의

Josh Bloch가 말하는 좋은 API는 어떻게 만들어야 하는 가이다. 영어지만 발음 무지 깨끗하다. 왠만한 아나운서보다 낫다. Bloch는 카네기멜론 전산학 박사 출신이고 현재 구글에 있다. 카네기멜론 대학은 미국 피츠버그 교외에 있다. 전산학이 세다. 아담하다. 나는 거기서 대학원 컴퓨터구조와 운영체제를 들었는데 혼났다. 재미도 있었다. 이것 때문이었는지, 전자공학에서 전산학으로 빠졌다. Bloch는 JAVA를 만든 핵심인물 중 하나이고, 강의에도 JDK 예를 든다. 한 예로, JDK1.0 일 때 해시함수를 만들었는데 내부까지 보이는 황당한 구조로 만들었다고 한다. 나라도 그렇게 만들지는 않았을 텐데. 좋은 JAVA 프로그래머가 되려면 Bloch가 쓴 책을 보면 좋을 것이다. 나는 읽지 않았다. 물..

구글 성공의 진짜 이유

첨부한 글은 작년 말 야그2.5 발표할 때 함께 발표한 것이다. 내용은 발표 제목에 나타내었듯이 구글 (성공)에 관한 주관적인 나의 생각이다. 7년 남짓 구글을 쓰면서, 얘기를 들으면서, 크는 것을 보면서 느낀 그대로이다. 경영자로서 나는 그들의 성공에는 여러 요소가 있다는 것을 안다. 그렇지만... 구글은 영리하고 치밀한데에 더하여 주관이 있다. 그들의 주관을 약간의 부러움을 가미해서 주관적으로 그들 성공의 가장 큰 이유라고 바라보았다.