프로그래밍/Python

파이썬의 장점 / 단점

채윤아빠 2021. 4. 21. 07:39
728x90
반응형

https://python.land/why-people-hate-python

 

요 근래 파이썬을 깊게 공부하면서 느껴지는 바가 있었는데, 우연하게 위 글을 접하고, 파이썬을 공부하며 느낀점과 함께 생각난 바를 정리해 봅니다.

 

파이썬의 가장 큰 장점으로 배우기 쉽다는 점을 가장 큰 장점으로 꼽습니다.

 

배우기 쉬운 이유는 언어적 특징으로 보면, 널리 알려진 C나, Java와는 다르게 dynamic typing을 지원하여 데이터형이나, 클래스를 생각하지 않고 변수를 쉽게 선언하고 만들 수 있습니다.
또한 파이썬에서 모든 것이 클래스가 인스턴스화된 객체로 취급되며, 언제든지 필요한 속성 및 메소드들을 손쉽게 추가할 수 있는데다가 복잡한 가시성이 없이 모든 것이 public 으로 공개되어 있습니다.
추상화, 추상 클래스 같은 복잡한 개념을 몰라도 클래스를 정의하고 다중상속도 지원되기 때문에 얼마든지 원하는 기능의 클래스를 상속받아서 편하게 쓸 쑤 있습니다.
C 에서와 같은 복잡한 포인터의 개념을 몰라도 간단한 것들은 리스트 만으로도 손쉽게 구현이 가능합니다.


이런 점들로 전문적으로 프로그래밍을 배우지 않은 사람들도 손쉽게 파이썬의 매력에 빠질 수 있지 않았을까 생각됩니다.

 

하지만, 다른 언어들를 20년 가까이 하다가 파이썬을 이제 배우기 시작한 제 입장에서는 파이썬이 불편한 점들도 여럿 있습니다.

 

별도의 기호 등을 사용하지 않고, 단순한 들여쓰기를 통하여 함수 및 코드 블럭을 구분하기 때문에 몇몇 부분에서는 유연성이 떨어져 곤혹스러울 때가 종종 있었습니다. 파이썬 코드를 처음보고는 함수의 끝이 어딘가? 하고 이상해 하기도 했었습니다. 함수의 시작과 끝을 알려주는 별도의 정의가 없다는 점이 신기했습니다. 그리고 코드를 읽기 좋게 하기 위해서 일부러 들여쓰기를 무시해야할 경우가 있는데 파이썬에서는 이게 불가능했습니다.


언어적 특징으로 배우기 쉽다는 점은 크게 작용을 하지만, 바로 그런 점 때문에 프로젝트의 규모가 커진다면 왠지 알 수 없는 논리적 오류가 발생할 가능성이 클 것 같습니다. 컴파일 시 데이터형을 괜히 검사하는게 아닌데, 이런 과정없이 동적으로 모든 속성을 다루다가 개발자가 실수라도 한다면, 오류없이 동작은 하지만 특정 상황에서만 이상한 동작을 하게 되어 오류를 찾기가 매우 어려울 것 같습니다.


멀티 스레드를 지원하긴 하지만, GIL 덕분에 싱글 스레드보다 성능이 떨어질 수 있다는 점도 좀 당혹스러웠습니다. 자료를 찾아보고 그럴 수 밖에 없었던 이유를 알게되어 무릎을 탁 치긴 했지만, 그렇다고 무턱대고 멀티 프로세싱으로 전환할 수도 없을 것 같고... 아무튼 지금 진행하는 프로젝트의 성능 문제가 발생하면 어떻게 해결해야할지 벌써부터 머리가 아파지는 느낌입니다.


스크립트 언어이다 보니 여타 스크립트 언어와 동일한 문제인데, 조건에 따라 동작자체를 다르게 하고 싶을 경우가 있는데, 이 경우 엄청난 if ... else ...로 성능 저하가 우려됩니다.

 

몇 가지 생각나는대로 끄적여 보았는데, 나중에 더 생각나면 댓글에 추가로 남겨보도록 하겠습니다.