#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목[종강후,학습#2] Poor Python2021-06-10 11:21
작성자 Level 10

Python 언어를 많이 쓰는 이유는 쉽고 편한 것이 가장 큰 비기술적 장점입니다. 다만, 성능면에서 워낙 느리고 컴퓨터 자원을 비효율적으로 쓰는 단점이 있습니다. 따라서, Python 언어를 배우는 웹파이선프로그래밍 수강자 혹은 수강을 마치고 C++을 배우는 소융학과 전공자는 Python에 대한 올바른 이해가 필요합니다.


Python은 간단한 수학 계산에서 통상 C/C++ 보다 7~10배 정도 느린 언어로 평가받고 있습니다. 느리다는 것은 같은 문제를 해결하는데에 같은 컴퓨터에서 7~10배의 시간이 더 걸린다는 이야기 입니다. 이는 시간 제약이 있거나 컴퓨터자원 제약이 있으면 Python으로는 해결을 못한다는 겁니다.


[참조: Speed comparison of programming languages 바로가기]


참고로 프로그래밍언어의 성능은 분야별로 다르므로, 특정 분야별 코드를 만들어서 비교해야 합니다. 따라서 모든 분야에 대해서 공통의 이야기는 아닙니다. 하지만 극단적으로, 간단한 계산프로그램에서도 C 컴파일러의 최적화된 기술과 비교하면 4만5천배가 느리다고 평가한 사람도 있습니다. 


[참조: How Slow is Python Compared to C 바로가기]


이러한 이유로 Python.org에서도 Python의 성능을 올리는 노력을 꾸준하게 하고 있으며, 이를 위하여 각종 성능 올리기 방법을 공개 중입니다.


[참조: PythonSpeed Performance Tips 바로가기]


따라서 Python 언어를 바르게 이해하고, 올바른 용도로 사용하는 것은, 개발자에게 있어서, 매우 중요합니다. 더불어, 현재 가장 일반적인 추세는 Core 소프트웨어는 C/C++로 만들고, 사용자 인터페이스를 Python이나 Web과 같이 개발이 쉽고 용이한 프로그래밍 언어로 개발하는, 즉 2개 이상의 언어를 혼합하는 mixed programming 혹은 (우아하게 지칭해서) Polygot programming 입니다. (그래서 대부분의 인공지능/비전/임베디드/네트워킹 등의 분야에서, UI는 Python으로 하지만 제대로 쓰려면 C/C++을 쓰도록 권장하게 됩니다) 이러한 이유 등을 이해한 후, 추후 C++ 수업에서도 열심히 임하면 좋겠습니다. C++은 이대호 교수님께서 대기 중 이십니다 .^^. 


[참조: Polygot computing 바로가기


결론적으로, 소프트웨어를 전공하고자 하는 학생이라면, Python 기초 문법은 프로그래밍의 세계로 들어오는 입구입니다. 에버랜드라면 아마도 주차장 입구를 지나 주차장에 파킹을 하고, 이제 입장권 끊어서, 입장대기 하는 정도입니다. 


소융학과에서는 위와 같은 이유로 가장 범용적으로 사용할 Python/C++을 전공필수로 강의하지만, 사회적인 트렌드를 반영하면, Unity 기반 게임은 C# + Python (AI프로그래밍 용도), 모바일 및 Cross Platform은 Google이 만든 언어인 Dart/Flutter (교수님 개인 사이트에 투토리얼 연재중) + FFI (C프로그램 연결), 서버 프로그래밍은 Google이 만든 언어인 Go 언어, 임베디드 환경은 RUST, Android OS는 Kotlin이 급부상 중입니다. 수업에서 다룬 Javascript도 특정 분야의 서버 프로그래밍에서는 C++ 수준의 성능이 나오는지라 서버 분야에서 Full-Stack Programmer가 선호하기도 합니다. 


이 모든걸 학교 수업을 통해서 passive 하게 배워 나갈수는 없습니다. 소융학과는 가장 최근 만들어 졌고, 학과 교수님들의 프로그래밍에 대한 애정과 실력이 워낙 커서 상위권 대학 중 가장 강한 소프트웨어 개발/연구 커리큘럼을 가지고 있다고 자부할 수 있지만, 이러한 것도 제한된 분야에 국한합니다. 60명의 신입생이 각각 6도씩 달라서 총360도에 60명의 방향이 모두 다르기를 바라는 우리 학과에서 self-motivation과 self-learning을 강조하는 이유입니다. 

댓글