루비(ruby)를 배울 때 가장 흥미롭고 매력적인 것들 중 하나는 irb 콘솔 이었습니다. 일종의 REPL(Read Eval Print Loop) 환경으로 개발할 때 아주 유용합니다. 간단하게 하나의 표현식으로 부터 출발해서 테스트-개발 루프를 아주 빠르게 진행할 수 있게 해줍니다. irb는 Web Framework인 Ruby On Rails에도 rails console 이라는 형태로 들어가 있습니다. 웹 애플리케이션에 있어 프레임워크의 중요성이 점차 높아지고 있습니다. 프레임워크가 있어 개발의 생산성과 안정성, 확장성이 높아지는 것은 분명한 사실일 것입니다. 하지만 ‘의존성’ 문제 때문에 테스트가 어려워지는 경향성도 있습니다.
파이썬(python)을 처음 접한 것은 아마 2005~6년 쯤. 당시 PHP로 웹 개발을 많이 하고 perl 공부도 했던 때였는데 3P(Perl, PHP, Python) 라고 묶는 이 3가지 언어에 중 파이썬은 딱히 손이 안 갔던 것으로 기억됩니다. kldp에서도 봤던 것 같은데 2가지 P 언어를 할줄 안다면 파이썬은 그리 매력적으로 보이지 않을 거라고..게다가 trac 이라는 이슈 트래커를 설치하다가 고생한 경험 때문에 파이썬에 대한 관심은 점차 줄어들게 되었습니다.
그러다가 몇 년 전 부터 파이썬인 (데이터) 과학 분야에서 대세화(?) 되어가는 듯한 모습을 보게 됩니다. 오픈소스 컨퍼런스 같은 곳에 갔다가 계속 파이썬 얘기를 듣게 됩니다. 관련된 커뮤니티와 라이브러리가 많이 있어서 그런 것 같다 라고 생각하고 있다가 궁금해서 따라잡기 식으로 공부를 시작했습니다. 파이썬 언어 자체의 매력은 그닥 맘에 와닿지 않았습니다. 일단 이상한 들여쓰기 규칙, 동적 언어 치고는 꽤나 깐깐한 문법, 객체형 아닌 척 하는 이상한 메서드(특히 len)들. 하지만 지금은 그런 맘에 안 드는 점들은 모두 제쳐놓고 파이썬에 빠져들고 있습니다.
그것은 바로 jupyter notebook 때문입니다. 파이썬에 있어서 킬러 앱이 아닌가 싶습니다. 이렇게 매력적인 개발 환경은 루비의 irb 이후로 참 오랜만입니다. 그 매력을 몇 가지 꼽아본다면.
- 코드 작성과 문서화(markdown)를 한 덩어리로 할 수 있습니다. 일종의 실행가능한 문서인 것이죠. 하나의 노트북 파일을 책으로 본다면 중간의 코드 조각을 실행도 하고 그 밑에는 예쁘게 설명도 넣고, 이미지도 넣고 이런게 가능한거죠.
- 거의 대부분의 파이썬 코드를 실행할 수 있습니다. 웹 애플리케이션의 특성상 무거운 작업 등 제한이 있을 것 같았습니다. 하지만 아직까지 특별히 문제가 되는것을 본 적이 없습니다.
- 여러 버전의 파이썬을 함께 사용할 수 있습니다. 파이썬 특성상 2.7 버전과 3.x 버전이 현재 주류로 사용됩니다. 언어에 따라서 환경을 분리하는 것도 쉽지 않은 일이 되는데 주피터에서는 하나의 언어도 여러 버전에 따라 사용하는 것이 매우 쉽습니다. 몇 가지 손을 쓰면 다른 언어(보통 동적 언어들)를 주피터에서 사용하는 것도 가능합니다.
- 그 외에도 자동 완성이 되고, 편집하기 쉽고(vi 단축키), Magic 을 통해서 matplotlib 차트를 넣거나 쉘 명령을 실행할 수도 있고, SQL도 바로 실행해볼 수 있고 등등등
모든 파이썬 개발에서 활용할 수 있는 도구는 아닐 것 같습니다. 모듈을 개발한다거나 하나의 애플리케이션을 개발할때는 보조 용도 정도로만 쓸 수 있을 것 같네요. 하지만 과학 분야와 데이터 과학 분야에서 활용하기에는 너무나 매력적인 도구라는 것은 틀림이 없을 것입니다.
파이썬으로 무언가 해보고 싶다면, 공부하고 싶다면, 데이터 과학에 관심이 있다면 주피터 노트북을 만나보시길 권해드립니다.