IBM®
메인 컨텐츠로 가기
    Korea [국가변경]    이용약관
 
 
   
        제품    서비스 & 솔루션    고객지원 & 다운로드    회원 서비스    
한국 developerWorks   >  dW Interview  > developerworks

“개발 현장에 좋은 영향을 미치는 연구”



이번 인터뷰는 해외로 나가보았습니다. 미국에서 유학 중인 서지원 님과 이메일을 통해 현재 연구 중인 주제와 그러한 연구에서 얻을 수 있는 혜택 등에 대해 이야기를 나눠보았습니다.

서지원 | 스탠포드 대학교 전기공학부 박사 과정


 
  서지원 현재 연구 분야는 무엇인가요.
현재는 크게 두 가지에 관심이 있는데 하나는 정보 흐름 제어(Information Flow Control, 이하 IFC)를 프로그래밍 언어에 적용하는 것입니다. IFC는 특정 데이터가 시스템 내에서 어떻게 이동하는지를 제어하는 기술을 말하는데, 펄(Perl)의 오류 검사(taint checking) 같은 것이 그 예입니다. 펄은 스크립트를 오류 검사 모드(taint mode)로 실행할 수 있게 해 주는데, 그렇게 실행했을 때 외부에서 받은 문자열은 모두 'taint'라고 태깅되고, 그 taint된 문자열이 시스템 호출 함수에 쓰이는 경우에 예외(exception)가 발생합니다. SQL 주입(injection) 취약점을 막는 데 도움이 되죠. IFC는 지금까지 연구가 많이 된 분야이고, 최근에도 계속 연구하는 분야입니다. 저는 IFC를 언어 가상 머신에 구현할 때, 좀 더 간단하고 모듈화해 구현할 수 있도록 하는 부분을 연구하고 있습니다(IFC는 특성상 시스템의 여러 부분을 건드리기 때문에 모듈로 잘 나눠 구현하기 어렵습니다). 다른 쪽으로는 분산 시스템에 관심이 있습니다. 저희 연구실에서는 소셜 네트워크에 기반을 둔 분산 시스템을 연구 중인데, 아주 간단하게 말하면 분산된 페이스북이라고 생각하면 됩니다. 저희 시스템에서는 각 개인의 정보를 저장할 때에, 시맨틱 그래프(semantic graph)를 사용해 저장하기 때문에, SPARQL이라는 쿼리 언어를 이용해 그 정보를 얻어올 수 있습니다. 저는 사용자의 쿼리를 런타임에 다시 써서(re-write) 다른 사용자의 시맨틱 그래프로 쿼리를 분산하는 연구를 하고 있습니다. 간단한 쿼리로 여러 애플리케이션, 특히 모바일 애플리케이션이 쉽게 표현될 수 있을 것으로 생각하고 있습니다.

유학 시절 초기에는 어떤 점이 어려웠나요.
한국 학생이 대부분 마찬가지겠지만 영어가 가장 어려웠습니다. 다른 부족한 부분은 단기간에 노력하면 해결되는 경우가 많지만, 영어는 그렇지 않은 데다 영어 그 자체가 연구의 목적이 아니라서 따로 시간을 내 공부를 하지는 않게 되더군요. 말하기나 듣기는 그래도 인터랙티브한 것이라 대화를 해 나가면서 의사 전달을 하거나 이해하면 되는데 쓰기, 특히 논문 같은 학술적인 글쓰기는 그렇지 않아 어려웠습니다. 한번은 제가 쓴 논문의 한 부분을 교수가 가져와서 옆에서 일일이 틀린 부분을 지적해 주더군요. :)

학풍의 차이가 있는지...
한국에서 대학원생으로 공부해본 적이 없어서 비교하기는 힘들고, 제 느낌을 말하자면 학생의 자유도가 한국보다는 좀 더 높은 것 같습니다. 교수들도 대부분 학생이 하고 싶어하는 것을 할 수 있도록 해 주려고 하고요. 그렇게 해야 생산성도 높다고 생각하는 것 같습니다. 다만 그렇기 때문에 학생들이 자기가 할 연구를 적극적으로 찾아나서야 하므로 그만큼 부담도 있습니다.

공부하는 방식에 변화가 있었나요.
공부하는 방식이 크게 달라지지는 않은 것 같고, 다른 학생들과 의견 교환을 좀 더 하는 것 같기는 합니다. 그리고 연구 주제와 관련이 있는 내용을 좀 더 적극적으로 찾아 공부하는 것이 달라진 점 같네요. 이건 유학이냐 아니냐와 상관없이 대학원 공부를 하면 당연히 그렇게 하는 거죠.

연구 세부 주제를 잡을 때 무엇에 가장 주안을 두시나요.
프로그래밍 언어와 가상 머신에 관심이 가장 많고, 앞으로도 될 수 있으면 그와 관련된 일을 하고 싶습니다. 그렇기 때문에 연구를 할 때에도 그쪽과 관련된 일을 하는 것에 신경을 많이 씁니다. 특히 프로그래밍 언어와 가상 머신에서 핵심 내용인, 예를 들어 타입 시스템, 가비지 컬렉터, JIT 컴파일러 등을 배우고 그와 관련된 연구를 할 수 있는지를 생각합니다. 그래서 각 세부 분야에 대해 한번씩 논문을 쓸 수 있도록 노력 중입니다. 그래야 나중에 각각의 세부 분야에서 더 깊이 연구할 수 있으니까요.

프로그래밍 언어 설계와 구현에 관심이 있는 사람들에게 VM은 화두인 것 같습니다. VM 기술 연구의 매력은 무엇인가요.
VM은 런타임에 많은 일을 할 수 있는 인프라스트럭처라고 생각할 수 있습니다. VM이 보편화되면서 이전에는 할 수 없거나 어려웠던 일들이 쉬워지고 있습니다. 예를 들어, 런타임에 메모리 레이아웃을 바꿔 캐시 미스를 줄이는 등의 최적화는 VM 없이는 어렵죠. VM 위에서 실행되는 애플리케이션이 많기 때문에 (자바나 파이썬으로 만들어진 애플리케이션이 요즘 아주 많지요) 아이디어만 있으면 VM 위에 구현을 한 다음 여러 애플리케이션에 적용해 보는 것이 쉬워졌습니다.

흔히 알려진 플랫폼 독립성이나 방대한 기존 라이브러리 활용(JVM이나 닷넷 기반 언어) 외에 VM 기술 연구 성과로 개발자들이 얻을 수 있는 혜택은 어떤 것이 있을까요.
다르게 표현하면, 'VM에 관한 연구가 실제로 산업에 어떤 영향을 미칠 수 있는가'라고 질문할 수 있겠습니다. 사실 컴퓨터 과학에서 모든 연구는 산업에 직간접으로 영향을 미치기 위해 한다고 볼 수 있습니다. VM 연구라고 해서 다를 것은 없는데요. 구체적인 예를 들자면 가비지 컬렉터가 있습니다. 가비지 컬렉터에 관한 연구가 많이 되면서, 실제로 JVM에 점점 더 성능 좋은 가비지 컬렉터가 도입되고 있습니다. 최근에는 generational 가비지 컬렉터가 많이 쓰이는데, 가비지 컬렉터가 점점 빨라지면서, 프로그래머가 따로 최적화를 하지 않아도 사용자가 (가비지 컬렉터의 실행 때문에) 느끼는 일시 정지 시간이 훨씬 줄었습니다. 프로그래머는 가만히 앉아서 자신의 프로그램이 성능이 향상되는 혜택을 누리는 거죠.

파이썬 창시자 귀도 반 로섬과 함께 일한 것은 자신에게 어떤 경험이었나요.
처음 미국에 왔을 때 회사에서 한번 일을 해 보고 싶어서 MS와 구글에 인턴을 지원했습니다. MS는 짐 휴거넌(Jim Hugunin, Jython•IronPython 창시자)에게 연락을 해서 그쪽 팀에 지원했고, 구글은 귀도에게 연락을 해서 당시 귀도가 일하던 팀과 기타 몇몇 팀에 지원을 했습니다. PyCon에 가서 짐과 귀도를 둘 다 만나보고 이야기를 잠깐 했는데 귀도가 좀 더 친근하고 적극적으로 여러 가지에 대해 조언을 해 주어서, 구글에서 일하기로 결정했습니다. 인턴도 20%의 시간을 자기가 하고 싶은 프로젝트에 쓸 수 있다는 것도 결정에 영향을 미쳤지요. 처음 가서 귀도와 일을 하기 시작하면서 느꼈던 것은 귀도가 아주 친절하고 재미있는 사람이라는 것입니다. 그 당시만 해도 하고 싶은 표현을 영어로 잘 못했는데, 언어 문제로 어렵지 않도록 배려를 잘 해주고 도와줬습니다. 특히 인상 깊었던 것은 처음에 귀도가 하던 Mondrian(참고: Mondrian Tech-talk)이라는 프로젝트를 잠깐 제가 도와주었을 때입니다. 아주 간단한 것을 저한테 맡기고 제가 그걸 한 다음에 같이 리뷰를 했는데, 제대로 돌아가는 것을 보고 "Yeah~"하고 소리치면서 손을 위로 번쩍 들던데, 저는 적응이 안 돼서 얼떨떨했죠. 간단한 일에도 신나 하는 것을 보고 일을 즐기면서 하기 때문에 더 일을 잘 하는 게 아닌가 하는 생각이 들었습니다. 전반적으로 귀도는 통찰력이 깊어 보였고, 순수(purity)와 실용성(practicality) 사이의 균형을 잘 맞춘다는 생각이 들었습니다. 키워드로만 넣을 수 있는(keyword-only) 인자를 구글에 있는 동안 구현했는데, 어떻게 구현할지 좀 고민해서 가서 이야기를 하면, 잠깐 생각하고는 바로 어떠어떠해서 된다, 안 된다를 알려주더군요. 물론 파이썬을 오래 개발해서 잘 알고 있어서 그런 것이겠지만요. 결론적으로는 딱 짚어서 어떤 점에서 영향을 받았다고 말할 수는 없지만, 같이 일하면서 일하는 방식 등에서 많이 배우고, 영향을 받은 것 같습니다.

키워드로만 넣을 수 있는 인자를 구현하기 이전에 파이썬 제너레이터 익스프레션(Generator Expressions) 구현에 참여하기도 하셨는데 언어 디자인에서 실제 구현 단계로 넘어올 때 어느 부분이 가장 까다로웠나요.
둘 다 새로운 문법을 추가하는 일이었고, 구현 자체, 문법 추가부터 테스트 코드를 쓰는 것까지 제가 다 했습니다. 제너레이터 익스프레션은 구현했을 당시에 파이썬 내부에 대해 잘 몰랐기 때문에 어떻게 할지 감이 잡히지 않아 리스트 컴프리헨션(List Comprehension)이 구현된 것을 보면서 구현을 했습니다. SVN 저장소를 보면서 리스트 컴프리헨션이 구현되면서 추가된 부분을 참고하면서 구현했는데, 비슷한 점이 좀 있어서 도움을 많이 받았습니다. 그렇지만 제너레이터 익스프레션이 기존 문법과 충돌하는 부분도 있었고, 변수 캡처((참고: 제너레이터 익스프레션 패치 토론)) 같이 리스트 컴프리헨션에는 없는 문제들도 있어서 다른 파이썬 개발자들(Armin Rigo, Guido van Rossum, Raymond Hettinger)과 이야기를 해 가면서 구현을 조금씩 고쳤습니다. 키워드로만 넣을 수 있는 인자는 어느 정도 파이썬 내부 구현에 익숙해져 있어서 어렵지 않게 구현하였습니다. 그렇지만 역시 문법을 추가하는 일이라 디버깅하는 것이 쉽지 않았습니다. 문법을 추가하고 나서, 고려하지 않은 케이스들이 있는지를 테스트해야 했는데, 어떻게 해야 할지 좀 막막해 하다 결국 모든 파이썬 표준 라이브러리들에 대해 테스트를 했던 기억이 나네요.

지금 다시 돌아볼 때 당시 구현에서 보완하고 싶은 점이 있다면.
구현 자체는 특별히 보완하거나 해야 할 부분은 없습니다. 파이썬 내부 구현을 고려했을 때에 디자인 스페이스가 그렇게 넓지는 않았기 때문입니다. 다만, 제너레이터 익스프레션을 자이썬(Jython)에도 구현을 했으면 좋았을 것 같다는 생각이 듭니다. 사실 자이썬에도 구현을 했고 거의 완성됐는데, 버그가 하나 있어서 패치를 못 냈습니다. PyCon에 가서 제레미 힐튼(Jeremy Hylton)과 여러 다른 개발자들과 같이 디버깅을 했는데 결국 못해서 그냥 버그 있는 채로 패치를 제출했고, 이러이러한 버그가 있다고 설명을 했습니다. 그런데 역시 버그가 있으니까 아무도 고쳐서 반영하려고 하지 않더군요. 얼마 전에 업로드한 패치에 대해, 자이썬이 JavaCC에서 Antlr로 파서를 바꿔서 적용할 수 없다는 메일을 받았습니다.

PyPy 프로젝트에도 기여를 하셨는데 언어 명세 설계 못지 않게 효율적인 구현체를 만들어 내는 것도 중요하다는 생각이 듭니다. 앞으로 언어 구현자들에게 주어진 과제는 무엇일까요.
PyPy는 아직 크게 기여하지는 못했습니다. 아직까지는 제가 하는 연구에 PyPy를 쓰고 있는 정도입니다. VM 구현을 할 때 고려해야 할 점이라면 - 연구용 VM에 한정해 이야기하자면 - 여러 가지 아이디어를 쉽게 테스트할 수 있는지를 우선 고려해야 한다고 생각합니다. PyPy나 JikesRVM처럼 파이썬, 자바로 구현한 VM의 경우에는 파이썬과 자바로 자신의 아이디어를 표현할 수 있기 때문에 아무래도 C 등의 로우 레벨로 구현된 VM에 비해 아이디어를 테스트하기가 좀 더 쉬운 것 같습니다. 다만, PyPy의 경우에는 학습 곡선이 좀 가파른 편인데, 학습 용이성(learnability)도 고려를 해야 하겠지요.

앞으로 계획은.
프로그래밍 언어와 관련해 더 많은 경험을 해 보고 싶고, 여러 세부 분야에서 연구를 해서 논문을 내고 싶습니다. 그러면서 가능하다면 연구한 내용을 실제 산업에서 쓸 수 있도록 오픈 소스화한다든지 오픈 소스에 적용을 한다든지 하는 것도 병행하고 싶네요.

[서지원 소개] 2005년에 서울대학교 전기공학부를 졸업하고 2007년 스탠포드 대학교에서 전기공학부 석사 학위를 받았다. 현재 스탠포드 대학교에서 Monica Lam 교수의 지도 아래 프로그래밍 언어, 분산 시스템 등을 연구하며 박사 과정을 밟는 중이다. 파이썬, 루비, 스몰토크 등의 다이나믹 언어와 소프트웨어 엔지니어링에 관심이 많다.



이 문서 북마킹 하기

mar.gar.in mar.gar.in naver naver eolin eolin del.icio.us del.icio.us

[지난 인터뷰 보기]



위로


뉴스레터
 
  
자바스크립트가 작동이 중지되었습니다. 이 기능을 수행하시려면 브라우저에서 자바스크립스트를 작동시켜 주시거나 이곳을 클릭해주세요.
사이트 여행

dW 커뮤니티
포럼 | 블로그 | Spaces
dW Student Community

로컬 컨텐츠

행사 및 세미나

기획 기사

개발자 입문

튜토리얼 및 교육

TOP 10 인기자료

SW 다운로드

RSS 피드


Special offers
Screencast
IBM SOA Sandbox 시험판
dW Student Community
로보코드
코드 트레이닝


    IBM 소개 개인정보 보호정책 문의