REPL is great

세상엔 정말 많은 프로그래밍 언어가 있다. C/C++, Java, Python, Ruby 등등 종류도 많을 뿐더러 패러다임, 특징, 환경 등 실로 다양성이 살아있는 생태계라 할 수 있다. 그 와중에 사람들이 무엇을 중요시하는가에 따라서 주로 선택하는 언어군이 있다.

  • 생산성 높은 빠르고 유연한 개발
  • 1us 조차 챙겨야 하는 빠른 동작
  • 절대로 죽지 않고 버텨야 하는 안정성
  • 짧고 함축적인 코드
  • 강력한 프로그래밍 및 디버깅 환경

등등 사람들의 취향은 가지각색이다.

나 역시 여러가지 취향의 교집합을 가지고 있는데, 그 중에서도 REPL 에 좀 집착하는 편이다. 리눅스 쉘 환경도, ipython notebook 도 repl 환경이라고 볼 수 있다. REPL 환경의 장점은 빠른 피드백 이다. 내가 지금 어디에 서 있나, 어디까지를 믿어도 되는가, 이 부분 문제를 풀기 위해 무엇을 하면 되는가 등을 바로바로 확인해보며 진행해 나갈 수 있어서 좋다. 큰 코드베이스를 다룰 때, 작은 코드 조각만을 떼어 독립적인 작은 문제로 변환하여 푸는 경우가 (나는) 많은데, 이런 작업이 여의치 않은 경우에 답답함을 느낀다. 이 피드백 사이클을 줄이는 데에 유닛테스트가 도움을 주기도 하지만, REPL이 주는 정도의 편안함은 없다 - 물론 용도도 다르지만.

오늘 swift를 쓸 일이 생겨 익히다가 터미널에서 REPL 을 써보고 인상이 대폭 좋아졌다는 이야기.

여기까지 생각하고 나서, “그러면 REPL 없이 작업하던 언어에 그 환경이 생기면 생산성이 올라가는거 아닌가?” 라는 생각이 들어서 좀 찾아 보았다. 동작을 잘 할지는 모르겠지만 JavaREPL 같은것도 있고, llvm 덕에(swift도 그렇지만) cling 같은 것도 있다는 것 같다.

프로그래밍은 아니지만 방금 또 하나의 빠른 사이클을 돌았다. 프로그래밍 언어의 다양성 -> 나의 취향은 REPL -> REPL이 없어서 답답하다면 찾아보자 -> 빙고, 라는 훈훈한 결과.

Comments