Coding/Python Matlab

파이썬 2 에서 3 로의 이전 (오래된 구습의 탈피 ?)

smores 2016. 9. 12. 01:37

생각해 보면 컴퓨터를 사용한 지 꽤나 오래 되었다. 비록 전공으로 컴퓨터 관련 교육을 받거나 한 일은 전무하지만 컴퓨터, 특히 프로그래밍 관련해서는 나름 짬밥수가 있는 편이라 생각한다.


IT 세상은 빨리 변한다. 정신이 없을 만큼. 그런데 나의 컴퓨터 이력에는 상당히 구태의연하다거나 과거의 익숙함에서 벗어나길 싫어하는 경향이 있다. 몇가지 예로는 아직도 오래된 소프트웨어들을 상당히 많이 사용한다. 이는 단순히 취미로 레트로 게임 등을 즐기는 것과는 다르다. 실제 업무등에도 옛 소프트웨어를 사용한다는 의미이다. 몇가지 예로는 윈도우즈 상에서 프로그래밍용 에디터를 아직까지도 EditPlus 2.x 를 많이 쓰고 있다. 처음에 이 소프트웨어를 선택한 이유로는 그 당시의 윈도우즈(아마도 98 아니면 2000) 에서는 몇몇 괜찮은 에디터들이 있었는데 이 프로그램이 유독 반응 속도가 빠르고 텍스트의 컬럼 선택이 쉬웠다는 것 정도. 그 후 자꾸 쓰면서 손에 익다 보니 다른 에디터로 넘어가지를 못하고 있다. 다른 예로는 TableCurve 라는 수식 fitting 소프트웨어가 있는데, 이것은 윈도우즈 3.1 시대의 소프트웨어이다. 내가 잘 몰라서 그렇겠지만 아직까지 나에게는 이것보다 강력한 fitting 용 소프트웨어가 없기에 아직도 사용하고 있다. 다행히 이 프로그램은 WinXP 시절까지 잘 돌아가서 (Win7 부터는 제대로 쓰기 힘들다. 특히 64비트 환경으로 넘어간 다음 부터는) 이 프로그램 때문에라도 Virtualbox 에 XP를 설치해 놓고 사용하곤 한다.


프로그래밍 언어도 문법 등에 익숙한 것을 사용하려다 보니 C++은 (무료이기 때문이기도 하지만) 아직도 커맨드라인용 Borland C++ 5.5 을 즐겨 사용한다. 


파이썬의 경우 처음 배운 것이 2.x 대 초반의 버전으로 시작해서인지 아직도 3.0 사용을 꺼리고 있다. 여러 유용한 패키지들의 파이썬 3 지원에 대한 불안감도 그렇고 해서. 헌데 한글 코딩 관련 문제도 그렇고 이제는 왠만한 유명한 패키지들은 거의 다 포팅이 된 듯 하다. 향후에 개발될 패키지들은 말할것도 없이 파이썬 3으로 나올 것이고...


특히 한글 문제와 관련해서는 윈도우즈를 주력으로 쓰다 보니 윈도우즈에만 있는 유니코드란 놈 때문에도 에디터의 경우 ANSI 를 기본으로 하는 EditPlus 등을 쓰는 이유도 있는 것 같다. 워낙 옛날에 컴퓨터를 공부한 탓에 아직도 한글은 한 글자가 2바이트(조합형)인 것이 더 자연스럽다고 느끼는 경향도 있고. 


하지만 이제는 습관을 바꿀 때가 된 듯 하다. 일단 리눅스를 가상머신이기는 하지만 이래저래 자주 쓰는 상황이 되었고, 파이썬에서의 한글 처리 역시 3 로 가면 아예 자연스럽게 UTF-8 로 별 고민 없이 해결될 것 같고, 파이썬을 쓰는 상황에서는 UTF-8 기본에 여러가지 편의가 많은 Geany 를 사용하면서 윈도우즈나 리눅스 상관없이 동일한 에디터를 사용할 수 있고 하는 식으로 구습을 많이 타파(?) 할 시점이 된 것 같다는 느낌. 게다가 유용한 파이썬 패키지들은 대부분 파이썬 3로 포팅이 된 듯 하다.


http://py3readiness.org/


사실 이런 결심을 하게 된 것은 작은 동기가 있어서인데, python 으로 단순한 작업만이 아닌 조금 더 유용한 UI 를 갖춘 프로그램을 만들어 볼까 시작한 Tkinter 공부에서 비롯되었다. 예전에 자바도 조금 공부를 했었는데 당시 자바 문법과 스윙을 공부하면서 만든 주식 차팅 프로그램이 있다. 


http://smores.tistory.com/57


지금 다시 손을 보려니 그 당시 어떻게 그런 것을 언어 공부까지 하면서도 만들었을까 싶을 정도였다. 헌데 코드는 상당히 잘 정리되어 있는 점이 더 놀라왔다. (아마도 자바의 경우 기본으로 클래스를 사용해야만 해서인 듯) 그것도 프로그래밍 환경도 IDE 가 아닌 EditPlus 2 만을 사용해서 만들었다는 사실. 


요즘은 다시 주식 분석 및 algorithm trading 에 대한 관심을 갖고 있던 터였기에 자바와 파이썬을 두고 저울질 하다가 파이썬 쪽으로 더 가닥을 잡아 가고 있는 상황이었다. 때문에 주식 차팅 등을 위해서라도 UI 프로그래밍이 필요했기에 Tkinter 를 (예전에 조금 공부하기는 했지만) 다시 들여다 보고 있던 중, 상당히 유용해 보이는 PMW (Python megawidget) 이라는 패키지를 만났다. 


http://pmw.sourceforge.net/


당장 설치해서 데모를 돌리려다 보니 왠걸.. 에러만 난다. 자세히 보니 Tkinter 이 아닌 tkinter 이라고 모듈 임포트를 하려 하고 있고. 해서 더 알아 보니 tk 자체가 파이썬 3 로 가면서 이름을 소문자로 바꿨더라는... 즉, pmw 자체가 python 3 기반으로 만들어 놓은 놈이다. 처음에는 일일히 코드 찾아가면서 다 수정을 해서 rebuild 해서 사용할까 하다가 (grep 등을 이용하는 방법을 열심히 구글링 하는 내 모습이 기억이 난다) 결과적으로는 파이썬 3으로 넘어갈 생각을 하게 되었다. 특히 파이썬 2 에서의 한글 코드 처리의 불편함으로 아예 웹스크래핑 등을 할 때 한글사이트를 만나면 처음부터 리눅스에서 하고, geany 에디터를 사용하고, 등등의 방법을 동원해도 코딩/인코딩 자체의 불편함을 여전히 경험해 왔던 터였다.


갑자기 하루아침에 다 바꾸기는 힘들 것 같고, 윈도우즈에는 Python2, 3 모두 인스톨 해 놓고 path 세팅은 python2 가 우선이 되게 해 놓았다. 그리고 python3 의 경우 python.exe, pythonw.exe 는 python3.exe, python3w.exe 식으로 한카피씩 더 해 놓았고. 에디터는 파이썬 프로그래밍에 한해서는 가급적 geany 를 더 많이 사용해서 익숙해지려 하고, editplus 는 editplus 3 을 구해서 기본으로 UTF-8 모드로 세팅하고 사용하기로 한다. 여전히 문제가 되는 옛날의 한글 텍스트 파일은 어쩔 수 없이 윈도우즈 notepad 로 열고, 다른곳에서 사용할 경우에는 utf-8 로 변경해서 저장해서 사용하는 것으로 하고.


주로 즐기는 레트로 게이밍은 애플2 에뮬레이션을 제외하면 거의 대부분 리눅스에서도 문제 없을 것 같다. 특히 많이 즐기는 8, 16 비트 콘솔들 (NES, SNES, PCengine, Megadrive, GBA, GB/GBC 등) 은 mednafen 하나면 다 해결될 상황인 듯 하고. 


이런식으로 조금씩 바뀌다 보면 언젠가는 (회사에서 하는 업무 외에는) MS 윈도우즈에서 리눅스가 주력으로 바뀔 날도 오지 않으려나 싶다.