소프트웨어 이야기

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

이현봉 2007. 1. 15. 19:10
간단하게 페이지랭크를 구현해 보았다.

원래는 세르게이와 브린이 한 것 같이 제대로 데이터구조도 갖추어 전반적인 검색 구성요소들을 구현해 보려고 했는데 생각같이 잘 되지 않아 몇 일 생각해 보고 그만두기로 했다.  이러다가는 framework을 만들겠다 (이것은 핑계고 사실은 프로그래밍이 잘 될 것 같지 않음).  나중에 필요하면 우리 직원들 시켜야지...    두세명이서 반년이면 될까? 

여기에 첨부한 녀석은 그만 두기로 한 날 아침에 시작해서 점심 먹으로 갈 때 거의 완성한 것임. 

나는 사실 웹검색기술을 잘 모른다.  관련 글들을 본 것도 작년 11월이 처음이다.  구글과 페이지랭킹 얘기는 전부터 알고는 있었지만 공부해 본 적은 없었다.  그러다가, 내가 가르키는 컴퓨터구조에서 구글의 파일시스템과 Mapreduce 처리를 언급해야 하는데, 이 녀석들이 하는 일이 구글의 검색이니, 검색을 알아보아야 하겠다고 해서 관련 논문을 몇 개 출력해서 집에 갖고 갔다.  저녁 후 읽기 시작해 새벽까지 다 보았다.  내 적성에 잘 맞았다.  이런것에 왜 관심을 안 가졌는지.

따지고보면 나는 꽤 많은 언어를 사용했다.  Fortran, C/C++, PASCAL, ADA, LISP, PROLOG.  이 것들 중 내 취미에 맞는 것은 C, PASCAL, LISP 였다.  PROLOG, ADA는 과목에서만 썼는데 특히 PROLOG는 어떻게 통과했는 지 기억도 나지 않는을 정도로 개념도 못 잡았다. LISP은 많이 쓰지는 않았지만 처음부터 잘 맞았다.  91년 인가, 기말 프로젝트에서 그래픽모델링 엔진을 만드는 프로젝트를 했는데, 제출 10일 앞두고 xLisp로 거의 10일 밤 새면서 프로그램 짠 적이 있다.  그 때 언어를 다른 것으로 했으면 아마 성적 잘 나오지 않았을 것이다.  그 때가 내가 프로그래머로서 전성기이었다.  

JAVA는 참 좋은 언어다.  명쾌하다.  API를 많이 접해보지 않은 내가 보기에도 JAVA는 API가 워낙 많아 못하는게 무엇이 있을가 싶다.  ArrayList만 해도 Array도 아니고 Linked List도 아닌 놈이 이 두가지 특징을 잘 가지고 있으니 얼마나 편한지...   몇일 걸려 Head First JAVA 10장 까지 보고 코딩은 했지만.   JAVA에 익숙해지고 싶은데.  당연히 알겠지만 JAVA 5.0 을 사용했고 일체의 exception handling이 없다.  넋두리가 길다. 

앞축을 풀면 3개의 파일이 나온다.  각 클래스들의 간단한 설명을 첨부함.  우리 김중태이사가 프로그램를 설명해주면 좋아하는 사람들이 있을 것이고 또 이 블로그 편수도 늘릴 수 있다고 해서 이 후 몇 번 설명하려고 함.  내가 여러분의 intelligence를 모욕한다고 생각해 주지 않았으면 좋겠음.