드디어 OOPSLA가 시작된다. 어제 저녁에 샀던 인스턴트 푸드랑 과일을 아침으로 먹고 Palais de Congres Montreal로 향했다. 이거 건물이 화려하다. 코엑스 같은 용도인 것 같다. 등록을 하러 갔더니 ACM 멤버십이 만료되서 돈을 60$ 더 내야 된댄다. 선화는 메일로 미리 알려줬다던데 난 왜 현장에서 이러지. 딱히 확인해볼 방법도 없고 해서 그냥 돈 냈다. 내니까 커다란 가방 가득이 뭘 담아서 준다. 선화랑 같이 어디 들어갈지 살피다가 그냥 APL Tutorial이 공짜로 바뀌었다길래 그리로 가기로 했다. 어차피 첫날부터 토론을 할 수 있을 것 같진 않아서 처음엔 그냥 강의식으로 하는 걸 앉아서 들으면서 적응하는 게 나을 것 같았다. 과연 강사도 70이 넘어보이는 사람이고 강의도 완전 구닥다리식 강의다. 그래도 우리나라 교수들과 좀 다른 게 있다면 천천히 알아듣는지 확인하면서 강의를 진행한다는 것. 그리고 우리가 동양인이라서 그런지 우리한테 굉장히 친절했다. 공지사항도 다른 사람한테는 빨리 막 말한 후에 우리만 향해서 다시 한 번 천천히 말해줬다. 강의 내용도 제대로 이해하고 있는지 거듭 확인해 가면서. 그 친절이 좀 부담스럽기도 했지만 어쨋든 친절하니까 고마웠다. 아마도 APL이 인기가 없어서 공짜로 전환한 거 같고 그래서 우릴 더 반기는 것 같다. J는 제대로 배운 게 아니라 그냥 혼자 따라해보고 J 사용자 모임에서 얼렁뚱땅 어깨 너머로 본 게 다라서 이번에 천천히 APL을 들을 수 있는 기회가 괜찮았다. 이왕 듣기 시작한 거 오후에 다른 세션 가봤자 진도 따라가기 어려울 꺼 같고 해서 오늘은 그냥 APL에 올인하기로 했다.
내가 APL이나 J에 관심이 약간이나마 있는 이유는 이게 엄청 가독성이 낮은 언어인 것처럼 보이지만 한 편으로는 아주 가독성 높은 DSL을 만들 수 있는 가능성이 있기 때문이다. 사실 APL이 가독성이 낮은 것은 연산자의 의미를 다 외워야 하기 때문인데 적당한 이름에 연산자를 대입하면 별 문제 없이 쓸 수 있다. 그리고 APL의 함수, 곧 연산자는 monadic이나 dyadic 뿐이다. 이 특성은 함수형 언어의 장점을 극대화한다. 함수형 언어는 temporary variable을 쓰지 않고 return값이 있는 함수로만 프로그램을 구성해야 하기 때문에 함수 하나의 크기가 작고 동작이 명확해야 한다. 그래서 저절로 잘 구조화된 프로그램을 작성할 수 있다. 근데 여기서 argument의 수까지 제한을 하면 함수의 크기는 더 작아지게 된다. 더 작은 단위를 다루면 실수가 발생할 가능성이 줄어든다. 이런 특성을 잘 활용하면 J로 아주 가독성 높은 프로그램을 만들 수 있을 것이다.
쭉 보다보니 ruby도 괜찮다는 생각이 많이 들었다. APL의 장점은 연산자를 이리저리 조합해서 새로운 역할을 하게 할 수 있다는 것인데 루비는 APL처럼 간결하게는 아니지만 어떤 면에서는 좀더 human readable하게 비슷한 일을 할 수 있다.
중간에 강사가 우리한테 와서 잘 이해가 되냐고 물었다. 그래서 우린 전에 J를 접한 적이 있어서 그렇게 생소하진 않다고 했더니 그럼 어디서 J를 접했냐고 묻는다. 여기도 J나 APL을 접하기가 쉬운 건 아닌가보지. 그래서 작년 한국에서 대안언어축제가 있었는데 거기서 배웠다고 했더니 거기에 대해 몇 마디 더 묻는다. 마침 대안언어축제 스티커를 좀 챙겨놓은 게 있어서 주면서 소개를 했는데 J만 있고 APL이 없는 것을 되게 아쉬워한다. 그래서 다음 번에는 APL도 넣어주기로 했다. 과연 다음 대안언어축제가 있을지는 잘 모르겠지만-_-;;
저녁에는 APL Conference Banquet이 있었다. 일종의 reception인데 거듭 우리보고 오라고 초대를 하고 공짜 저녁이 제공된다길래 가보기로 했다. 사실 의사소통이 많이 걱정되긴 했지만 꽤 간절하게 초대를 하는데다 좋은 경험일 것 같아서 놓치기 아까웠다. 정확한 장소를 알아두질 않고 그냥 Hyatt라고만 기억하고 있어서 좀 헤맸지만 어쨋든 좀 늦게나마 찾아갔더니 사람들이 반겨준다. 대니 오션 닮은 아저씨랑 젤 얘길 많이 했는데 Dyalog APL 개발자라고 했다. 낼 또 무슨 발표를 한다고 했었는데 암튼 우리한테 APL을 쓰게 하려고 무진장 노력했다. 선화가 Java와의 connectivity에 대해 물으니까 고려해보겠다고 그러고 내가 unicode 지원에 대해 물으니까 아직은 빈약하지만 연구 중이며 도움이 많이 필요하댄다. 다른 사람들은 발음을 알아듣기가 쉽지 않았는데 그래도 이 아저씨는 발음 알아듣기가 좋아서 이런 저런 얘기를 많이 할 수 있었다.
근데 전반적으로 평균 연령이 50은 넘는 거 같았다-_- 전부 머리가 희끗희끗하고 강사도 중간에 1933년 이야기가 나왔는데 이 때 여러분은 없었겠지만 자기는 있었다는 얘길 하는 걸로 봐서 80이 넘는 것 같다. 그 분은 와이프와 딸이 같이 왔는데 와이프도 엄청 나이가 많아보였다. 선화 말로는 100살은 되는 거 같댄다. 분위기가 이래서 그런지 그 대니 오션 아저씨가 말하길 우리가 드물게 나타난 동양인인데다 어려서 반갑다고 했다. 내 나이도 29인데 이 사람들 대부분이 내 나이 두 배는 되어 보였으니 그럴 만도 하다.
또 어떤 할아버지는 파이썬을 쓴다길래 또 파이썬 얘기 좀 하다가 자바스크립트 얘기도 좀 하다가 했다. 그러다가 TDD 이야기가 나와서 강규영의 JSSPec을 소개해 주려고 BDD를 아냐고 물었더니 모른댄다. 들어본 적도 없다는-_- TDD도 흥미롭긴 하지만 잘 못한댄다. 확실히 APL 세계는 나이 많은 사람이 많아서 그런지 Agile과는 거리가 많이 멀어보였다.
강연 중에 또 우리 뒤에 앉은 아저씨가 말을 걸었었는데 자기는 다른 언어들이 계속 ReinventingWheel을 하고 있는 게 안타깝댄다. 이미 APL이라는 Good Wheel이 있는데 왜 다시 만드냐고. 하지만 ReinventingWheel과 RedesignWheel은 다른 게 아닐까? 자동차도 처음 발명된 Wheel을 그대로 썼다면 지금처럼 편안한 자동차는 나오지 않았을 것이다. 이 아저씨는 RubyOnRails도 들어본 적이 없댄다. 세상 돌아가는 것 좀 알아두면서 사시지?
어쨋든 저녁 식사는 훌륭했다. 정말 맛있었는데 문제는 조각들이 너무 크다는 것. 연어 구이를 집어 먹을까 말까 한참 고민했는데 조각이 내 주먹만했다. 거기에 칠면조 다리에 하여튼 온갖 맛있는 것들이 널려 있었다. 분위기가 약간 부담스럽고 선화가 좀 피곤해해서 좀 일찍 나왔다. Thank you for inviting us를 남기고.
전반적으로 minority라서 그런지 new face에 상당히 친절하고 우리가 영어를 잘 못하는 것까지 잘 이해해 주었다. 덕분에 큰 부담 없이 첫 날을 보낼 수 있었던 듯.