洪民憙 (홍민희) 블로그

이하의 글은 2012년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.

최근 비동기 I/O 관련해서 이런 저런 글을 썼는데 간단히 나의 생각을 정리해보고자 한다.

마지막으로 아주 일반적인 얘기지만, 가끔 기술이 분명 발전했는데도 불구하고 본질적으로는 발전하지 않았으며 결국 예전부터 쓰이던 패턴과 같을 뿐이다라고 주장하는 무리들을 종종 보게 된다. 뭐 어떤 관점에서는 맞는 얘기라고 생각한다. 모든 프로그램은 튜링 완전한 언어 위에서 루틴을 엮는다는 점에서는 동일하다. 따라서 기계어로 코딩하던 시절과 지금은 본질적으로 달라진 게 없다. 자, 납득 가능하신가?

그럼 그때와 지금이 달라진 것은 무엇일까? 바로 복잡도를 얼만큼 제어하느냐다. 그리고 이게 기술의 가장 큰 요소이다. (그리고 프로그래밍 언어 애호가로서, 프로그래밍 언어가 패턴을 없애는 기능들을 추가해야 하는 이유이기도 하다고 주장하고 싶다.)


  1. 정확히는 GHC. 모든 I/O는 해당 플랫폼의 이벤트 API 위에서 멀티플렉싱되게 바이너리가 나온다. gevent이 달성하려는 투명한 비동기 I/O 프로그래밍을 해킹(멍키패칭)이 아닌 컴파일러 구현으로 제대로 해결했다고 볼 수 있다.