[GNU의 눈] 자연과학에서 자유 소프트웨어는?

일반입력 :2002/10/19 00:00

최기영

컴퓨터는 원래 많은 양의 계산을 필요로 하는 자연과학을 위해 생겨났습니다. 2차 세계대전 중에 로스알라모스의 물리학자들에 의해 처음으로 사용된 최초의 컴퓨터인 에니악(ENIAC)은 원자폭탄의 제조를 위한 열핵반응 계산이라는 더없이 슬픈 목적에 투입되기도 했지만 이것도 따지고 보면 근본적으로 많은 양의 계산을 처리하기 위해서 였습니다. 이와 같은 목적으로 생겨난 컴퓨터로 우리는 지금 일일이 언급을 할 수 없을 정도로 많은 일들을 처리하고 있으며, 이전에는 상상조차 할 수 없었던 일들을 가능하게 하고 있습니다. 하지만 자연과학에서 컴퓨터는 여전히 원래의 목적, 즉 많은 양의 계산을 빠른 시간 안에 처리하기 위해 사용되고 있습니다. 더 나아가 이젠 자연과학에서 컴퓨터를 제외하고는 더 이상의 발전을 기대할 수 없을 정도로 밀접한 관계를 갖고 있으며, 자신을 태어나게 한 자연과학을 역으로 바꿔버렸습니다. 현재 자연과학에서 컴퓨터가 하는 가장 큰 역할이라면 사람이 계산할 수 없거나 설사 가능해도 사실상 불가능에 가까운 것의 계산 결과를 얻는 것입니다. 복잡한 비선형 방정식의 답을 구하거나 실제로 실험을 진행하기 어려운 상황을 컴퓨터로 모의실험을 해보는 것 등이 모두 여기에 포함됩니다. 이렇게 되면서 물리학을 비롯한 자연과학을 연구하는 연구실치고 계산용 고성능 컴퓨터를 보유하고 있지 않은 곳을 찾아보기 어려울 정도입니다. 또한 물리학에서는 전산물리라는 새로운 분야가 생겨 이를 전공으로 하는 사람들의 수도 급격히 늘고 있는 실정입니다. 그러면서 자연과학자들은 그동안 생각하지 못했던 부분에 대한 고민을 해야 했습니다. 그것은 다름 아닌 연구에 사용한 프로그램을 다른 이와 공유할 것인가 그렇지 않을 것인가에 대한 것이었습니다. 왜 자연과학에서 자유 소프트웨어가 필요한가자연과학에서 계산에 사용한 프로그램을 공유하는 것은 상당히 중요한 일입니다. 무엇보다도 먼저 그 프로그램이 바르게 동작하는지, 올바른 결과를 산출해 내는지를 확인해 내기가 더 쉬워지기 때문입니다. 초창기 컴퓨터들이 자연과학자들에게 받아들여지기 힘들었던 가장 큰 이유는 이 기계가 산출한 결과를 과연 믿을 수 있느냐 하는 부분 때문이었습니다. 아쉬운 일이지만 현재까지도 컴퓨터는 그 자신의 한계 때문에 아주 정밀한 부분에서 엉뚱한 계산 결과를 내놓을 수밖에 없으며, 이런 부분은 정밀하게 수를 다뤄야 하는 자연과학에서 약점으로 작용하고 있습니다. 이를 피하기 위해서는 처음부터 아주 세심하게 프로그램을 작성해서 이런 부분을 피해가거나 프로그램의 작성 후 많은 사람이 사용해 보면서 프로그램의 무결성을 검증하는 두 가지 방법이 있습니다. 하지만 대부분의 자연과학자들은 전산학을 전공한 사람이 아니기에 첫 번째 방법을 채택하기에는 무리가 따릅니다. 그러므로 우리에게 주어진 거의 유일한 해결방법은 수많은 사람들에게 프로그램을 나눠주고 그들에게 프로그램을 무결성을 확인하도록 하는 것뿐입니다. 이와 같이 하면 그 프로그램을 통해 얻은 자신의 연구 결과에 신뢰성을 한층 강하게 부여할 수 있기도 합니다. 흥미롭게도 이는 수많은 자유 소프트웨어의 버그를 수정하기 위해 도입하는 방법과 유사해 보입니다. 그리고 프로그램 하나의 문제를 떠나서 자연과학이라는 커다란 입장에서 바라볼 때 이들을 공유하는 것은 자연과학을 더불어 발전시키는 훌륭한 방법이기도 합니다. 앞서서 이야기했듯 계산을 위한 프로그램의 작성은 과학자들에게 필수 사항이 되고 있습니다. 하지만 이러한 프로그램들을 서로 공유하지 않는다면 이미 다른 과학자들이 작성해 놓은 프로그램을 가져다 사용하면 간단히 해결될 것을 서로 독자적으로 계산 프로그램을 작성하게 됩니다. 각 연구실마다, 연구원들마다 독자적으로 만들 때 소모되는 시간과 기타 비용을 생각해보면 프로그램을 공유하는 것이 보다 효율적이라는 것을 알 수 있습니다. 하지만 자연과학은 강제적으로 행동을 강조하지 않아도 스스로 이러한 부분들을 훌륭히 해결해 나가고 있습니다. 자연과학을 연구하는 과학자들은 자신의 연구 결과나 장비를 다른 과학자들과 공유하는 멋진 전통을 갖고 있습니다. 이들은 자신의 천문대가 관측한 결과를 다른 이들에게 제공하거나 자신의 훌륭한 연구 결과를 논문을 통해 여러 사람에게 알리고 그들이 그 논문을 참고해서 보다 발전된 결과를 얻도록 도와주는 일을 당연하게 여기며 지금까지도 그렇게 해오고 있습니다. 몇 개의 연구실이 공동으로 고가의 실험 장비를 구입해 공동으로 관리하면서 장비를 공유하는 것도 심심치 않게 볼 수 있는 모습중 하나입니다. 이들은 독불장군으로 연구해서는 아무리 노력해도 좋은 결과를 얻을 수 없으며, 다른 이들의 연구 결과에 귀 기울이고 자신의 연구 결과를 발표하는 상호보완과 협력의 모습을 보일 때만 모두가 함께 발전할 수 있다는 사실을 잘 알고 있습니다. 그리고 정말 다행스럽게도 이러한 멋진 전통은 컴퓨터가 도입이 되면서도 크게 손상을 입지 않았습니다. 데이터 분석 및 처리를 손쉽게 해주는 ROOT(http://root.cern.ch)나 자연과학에서 사용되는 여러 함수들을 미리 라이브러리 형태로 제공을 해주는 GSL(GNU Scientific Library, http://www.gnu.org/software/gsl/gsl.html) 등이 그 훌륭한 예로 이를 개발한 자연과학자들은 자신의 결과와 프로그램들을 다른 과학자들이 자유롭게 가져다가 사용할 수 있도록 함으로써 자연과학의 오랜 전통을 훼손하지 않으면서도 새로운 개념의(컴퓨터를 이용한다는) 연구방식을 접목시키는데 성공했습니다. 더욱이 이러한 과학자들 중 일부는 자신이 다른 과학자들을 위해 공개한 프로그램으로 새로운 것을 만들어 낸 사람들이 그들의 결과물을 또다시 다른 이들을 위해 공개함으로써 결과적으로는 모두가 최소한의 노력으로 최대한의 효율을 얻을 수 있는 수단으로서의 장점을 보다 극대화시키기 위해 그리고 그들과 동료들의 연구활동에 대한 자유를 제한받지 않기 위해서 그들의 프로그램의 라이선스를 GPL로 결정했습니다. 그리고 그들의 이러한 결정은 결과적으로 볼 때 그 분야에서의 발전 속도를 더욱 빠르게 만들었습니다. 아직은 부족한 국내 실정안타깝게도 국내에서는 아직까지 계산을 위한 프로그램이나 라이브러리들을 모든 사람들이 자유롭게 사용할 수 있도록 공개해 놓은 곳을 찾기 힘들며 이런 작업을 할 때 도움을 얻을 수 있는 사람을 찾기도 쉽지 않습니다. 이는 자유 소프트웨어의 장점과 필요성에 대한 인식이 국내 자연과학자들 사이에서 아직 널리 퍼지지 않았기 때문이라고 생각합니다. 그래서 GNU 코리아에서는 이런 부분들을 보충하기 위해 GCPS(GNU Computational Physics Society, http://korea.gnu.org/gcps)라는 단체를 지원하고 있습니다. GCPS는 전산물리학에 사용되는 계산 프로그램 및 흉내내기 프로그램 혹은 라이브러리를 자유 소프트웨어를 이용해서 작성하며 GPL을 라이선스로 채택함으로써 전산물리 분야에서 필요로 하는 프로그램들을 서로 공유할 수 있고 도움을 주고받을 수 있는 온라인 커뮤니티를 한국 내에서 이루고자 하는 물리학도들의 모임입니다. 그리고 궁극적으로 이들의 목표는 한국 자연과학계에 자유 소프트웨어를 통한 연구활동의 장점을 널리 알리는 것입니다. GCPS는 이제 막 시작되었기 때문에 아직 많은 내용을 수용하고 있지 못하며 참여하고 있는 사람들의 수도 30명 남짓의 작은 규모를 갖고 있지만 시간이 지남에 따라 보다 많은 내용을 갖고 있게 될 것이며 많은 자연과학도들에게 도움이 될 것이라고 확신하고 있습니다. 현재 GCPS를 통해 공식적으로 진행되고 있는 프로젝트의 수는 하나지만 자신이 작성하는 프로그램을 GCPS를 통해 알리고 다른 이들과 함께 개발을 진행하고자 한다면 언제든 연락하면 됩니다. 자연과학 분야에서의 자유 소프트웨어 도입은 이제 선택사항이 아닌 필수 사항으로 되어가고 있습니다. 계산용 프로그램을 돌리기 위한 컴퓨터의 운영체제는 대부분 GNU/리눅스 시스템이며 컴파일러는 GCC입니다. 이제 남은 것은 자신이 사용하는 것이 자유 소프트웨어임을 인식하고 자신이 얻은 도움을 다른 이에게 되돌리기 위해 스스로가 작성한 프로그램을 GPL을 준수하는 자유 소프트웨어로 만들어서 GCPS를 통해 다른 자연과학도들과 공유하는 것입니다. @