2015년 4월 9일 목요일

파이썬의 장단점

2.7버전부터 3버젼까지 책까지 사가며 공부해본 파이썬에 대해서(결국 깊은 수준까지는 단 한번도 코딩 못해 봤지만서도)느끼는 사항이 있어 글을 적어 봅니다.

장점 :
파이썬을 사용하기 전에는 자바를 사용했는데 자바를 사용하며 느낀 불편점이 사실상 파이썬의 장점이었습니다.

1)간결성 : 사실 HelloWorld를 작성하면서도 자바는 익혀야 하는게 상당히 많았습니다.(당장 System.IO는 뭔지 이걸 왜 추가해야 하는건지 등등) 그냥 습관적으로 쓰는 문구가 되어 나중에 이 뜻을 이해 해야 했지만 어째든 굉장히 단순하다는 자바(적어도 C나 C++, 특히 GUI코드쪽은 더더욱)와 비교해도 파이썬은 굉장히 단순한 언어였습니다.

2)코드의 표준성 :어떤 사람에게는 이게 약점으로 지적되는 사항이기는 한데 적어도 코드가 모두 획일된 구조를 갖는다는게 저한테는 장점이었습니다.

3)즉시 실행 : 예전에 베이직 코딩을 해보신 분들이라면 알겠지만 초기의 베이직 언어는 코딩후 그 코드를 세이브하거나 그 세이브 코드를 컴파일 하는 과정이 필요 없는 완전한 스크립 코드였습니다. 그탓에 코드를 쭉 적어준후 RUN명령어만 내려주면 즉시즉시 실행(거기에 매 라인 에러 체크까지 해주니 중간에 잘못될 가능성도 낮음)해 주니 적어도 아주 단순한 코드 기준에서는 컴파일 언어가 오히려 더 늦는(분명 작동 속도야 컴파일 언어가 압도적으로 빠르겠지만 문제는 그 코드를 작동 시키기까지의 과정이)상황이었지요. 거의 모든 스크립코드가 멸종되어 가던 시기에 이 문제(특히 컴파일 명령을 터미널에서 일일이 내려줄땐 더더욱)가 꽤나 한심하게 느껴지었는데(물론 IDE도입하며 없어졌지만) 이게 파이썬에서는 없어졌습니다.

4)패키지 설치 기본 지원 : 요즘은 별거 아닌 사항이지만, 사실 패키지를 설치하기 위해서는 해당 라이브러리를 라이브러리 사이트에 가서 다운 받은뒤 이를 설치해 주어야 합니다. 반면 파이썬의 경우 pip 혹은 easy_install이라는 좋은 툴이 있어 쉽게 인스톨 가능합니다만은...(아래 단점에서 다시 설명하겠습니다.)

5)범용 언어 : 특정 종목(수학이라든가 하는)에만 한정해 사용할수 있는 다른 언어와는 달리 파이썬 자체는 데이타 분석에서 제어, 수학, 데이타 수집, 서버의 제어언어, CAD프로그램의 스크립코드 등등 여러가지 용도로 두루 사용되고 있고 이 점이 내가 파이썬을 자바 이후의 코드로 선택하게 된 가장 커다란 이유이기도 하다.

6)ipython 특히 notebook : 파이썬 툴 중에서 ipython 특히 노트북은 거의 필수라고 해도 좋을 만큼 중요한 툴이 되었고 이거 덕분에 원거리 코딩 작업(코딩은 노트북 돌리는건 서버)도 너무나 수월해 졌음.(거기에 중간중간 설명을 하며 적을 수 있으니 나중에 보고서로 쓰기도 수월하고)

단점
1)2와 3가 서로 호환 않됨...
2버젼과 3버젼이 서로 호환이 않됨. 단순히 println문제야 양쪽에 가로 기호 추가하는걸로 끝나지만 참조한 라이브러리가 부재하는 등의 이유로(더군다나 c기반이여서 어디서 고쳐야 하는지 막막할때) 작동 도중 에러 뜨면 진짜 막막해 져서 아예 해당 패키지의 사용을 포기하는 때도 많음.


2)2에서 3로 잘 않넘어감.
이게 제일 큰 문제인데, 그럼 2에서 3로 넘어간 패키지를 설치해 주면되는거 아니냐라고 생각할 터이지만 애석하게도 상당수의 패키지가 아직도 2에서 안주하고 있습니다.
그리고 아직도 상당수의 예제 코드가 2기준으로 작성되어 있어 코드 실습 조차 쉽지가 않은게 실정입니다.


3)패키지가 잘 않설치되...
1)과 2)로 인해 파생된 문제이기는 하지만 pip로 설치 시도하다 에러뜨면 정말 멍때리게 됨... 당초 소스와 패키지가 구분이 없다시피한 파이썬이다 보니 코드를 수정해서 설치(어차피 패키지 파일이 소스 파일을 압축해 모아둔 것이다.)하기도 역시 난감해 진다. 그나마 구글링해도 이상하게 해결책이 잘 않뜨고(나만 이런거야? 응? 응?)해서 나중에는 설치 및 사용을 포기하는 경우도 많음.


4)성능
사실 용도를 생각하면 큰 문제는 아니기는 한데, 예전에 10만팩토리얼 계산때(2시절) 상당히 오랜 시간이 걸렸다는걸(그래 봤자 몇초지만) 생각하면 꽤 큰문제로 생각할 수도 있음.(근데 같은 머신에서 3버젼은 0.xx초 이내로 줄어듬...)
 거기에 멀티코어 환경에서는 GIL이라는 고전적인 문제(읽었던 책에서는 이 문제를 수치스럽다라고까지 표현했음)가 있다는 점도 이 언어의 가치를 상당히 낮추는 어려운 문제임.



그래서 바라는건

1)패키지 정리좀 하고, APT툴 수준으로 설치에 문제가 없게끔 했으면 좋겠음. 이 문제 때문에 파이썬 실습이 아예 리눅스가 더 쉬울 지경(하긴 파이썬 문제뿐만이 아니라 모든 패키지가 적어도 설치는 리눅스가 더 쉬움)이라는건 심각한 문제다.

2)멀티코어 문제좀 : 이미 성능 향상을 위해 멀티코어로 가는게 정해진지 오래인 상황에서 여전히 이 부분에 대한 수월한 지원(비록 multiprocess라는 좋은 툴이 있기는 하지만)이 요원함.

3)gui : 많은 gui툴이 있기는 하지만 여전히 쓸만하다고 보기는 어려움.

댓글 없음:

댓글 쓰기