비교적 최근에야 귀도 반 로썸이 자신의 ‘관대한 종신 독재자’ 자리를 내려놓기로 했다는 소식1을 들었다. 귀도가 PEP572을 관철하면서 여러모로 코어 개발자와의 논쟁에서 지친 것이 원인일 테다. 나는 파이썬에 관심을 두고 보게 된지 얼마 안 되었으므로 대단히 짧은 시간동안 보아온 것이지만, 파이썬 3으로 들어오면서 파이썬의 방향에 대해서 많은 논쟁들이 있었고, 큰 기능이 추가될 때마다 어느정도의 불만들은 계속 있어왔던 것 같다. 파이썬 커뮤니티의 규모를 생각하면 불만이 없는 것이 더 이상하긴 하지만, 한편으로는 귀도가 대단히 피곤한 직책에 있다는 생각도 늘 하고 있었다. 그런 의미에서 귀도의 사임이 ‘올 것이 왔다’는 생각이기는 하지만 몇 가지 의문도 남는다.
PEP5722가 그렇게 나쁜 아이디어였나?
별로 논란을 다시 점화하고 싶은 생각은 없다. 여러 글을 찾아다 읽어봤고, PEP572에 반대하는 사람들의 의견도 일리가 있다고 생각한다. 결론적으로 반대의 주된 이유는 다음과 같다.
“파이썬에서는 어떤 일을 하는데 옳은 한 가지 방법만이 존재한다. 그러나 PEP572가 도입되면 assignment에 =도 쓸 수 있고 :=도 쓸 수 있다. 물론 서로 다른 용도로 사용되는 연산자이지만 초보자에게 어떨 때 =을 쓰고 어떨 때 :=을 써야할 지 설명하는데 난점이 있다.”
좋은 지적이기는 하지만, 파이썬은 이미 제법 복잡한 언어이고, 아주 많은 기능들이 공존하고 있는 언어다. 나는 파이썬을 처음 배울 때 람다 함수에 대해서 대단히 혼란스러웠고, 평범한 함수 선언 문법을 두고 람다 함수를 왜 또 만들었는지에 대해서 늘 이상하게 생각했다. 지금이야 람다 함수가 코딩하는 데 많은 귀찮은 일을 덜어주고, 변수 이름을 덜 지정해도 되도록 도와준다는 것을 이해했지만, 아무튼 초보자들에게 람다 함수가 왜 있어야 하는지를 설득하기란 간단한 일은 아닌 것이다. 또 예전에 딥카피와 섈로우카피 둘 다 리스트를 복사해주는 기능인데 진짜 오직 한 가지 방법밖에 없냐는 식의 비아냥도 들은 적이 있다. 물론 저 두 기능은 다른 기능이지만 이 것을 파이썬 커뮤니티 바깥 사람들에게 설명하는 것은 귀찮고 어려운 일인 것이다.
생각해 보면 사실 PEP572가 도입된다고 하더라도 기존에 프로그래밍 스타일을 아주 파괴하지는 않을 것이다. 기존의 관용구에 대한 일종의 short hand가 표준으로 지원된다는 정도로 받아들일 수 있는 이야기가 아닌가. 오히려 나는 이런 일이 asyncio가 도입될 때 일어나지 않고 지금 일어난 것이 더 신기하다. 개인적으로는 asyncio가 더 파괴력이 크고 파이썬 비동기 프로그래밍을 위한 커뮤니티의 자구책(greenlet, stackless 등)을 모두 흔들어놓은 기능이라고 느끼기 때문이다.
앞으로 파이썬은 어떻게 되나
나는 대단히 초보적이고 단순한 일에 파이썬을 사용하는 입장에서 이런 논쟁이 당장 내가 파이썬을 쓰는데 큰 영향을 미치지는 않는다. 다만, 먼 미래에 파이썬이 어떻게 될지가 궁금하기는 하다. 이렇게 파이썬이 클 수 있었던 것은 물론 커뮤니티의 기여도 있겠지만, 언어 디자인에 대한 귀도의 철학과 결단이 큰 영향을 주었음은 분명하다. 그런 의미에서 파이썬은 하나의 커다란 동력을 잃은 것이 아닐까. 반대로 생각해보면 이토록 민주적이고 커다란 파이썬 커뮤니티 사람들이 비록 ‘관대’하다고는 하나 독재자를 두고 십수 년을 지내왔다는 것이 놀랍기도 하다. (민주적이라는 것은 전적으로 나의 경험과 느낌이다.) 나는 파이썬 2가 끈질기게 생명을 유지하고 있는 상황3에서 파이썬3가 정착하는데는 독재자의 역할이 컸다고 생각한다. 앞으로 파이썬 커뮤니티가 독재자가 없는 상황에서도 기민하게 트렌드에 따라 새로운 기능을 추가하고 필요에 따라 옛날 기능을 끊어내는 결단을 내릴 수 있을까. 한편으로는 더 민주적인 방법으로 커뮤니티가 함께 지탱하고 이끌어가는 파이썬의 미래에 기대를 걸어보고 싶기도 하다.
Comments