[Python Tutorial] 파이썬이란? - Chapter.01

2019.08.16 17:31Python/ㄴ Tutorial

파이썬의 유래


파이썬이란?

파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어(한 줄씩 소스 코드를 해석해서 그때그때 실행해 결과를 바로 확인할 수 있는 언어를 의미함)이다.
파이썬의 의미는 귀도가 좋아하여 즐겨보던 코미디 쇼 프로그램인 "몬티 파이썬의 날아다니는 서커스(Monty Python's Flying Circus)"에서 따왔다고 한다.
파이썬의 사전적의미는 고대 신화에 나오는 파르나소스 산의 동굴에 살던 큰 뱀을 의미하며, 아폴로 신이 델파이에서 파이썬을 퇴치했다는 이야기가 전해지고 있다. 대부분의 파이썬 책 표지와 아이콘이 뱀 모양으로 그려져 있는 이유가 여기에 있다.

파이썬 공식 로고

파이썬은 원래 한국에서는 마이너한 언어, 즉 대중적으로 큰 인기를 끌지 못했으나 최근들어 구글의 텐서플로우등 여러 모듈과 인공지능 개발분야의 확장, 타 언어에 비해 가벼운 난이도로 인해 근래들어 꽤나 큰 인기를 끌고있다.

파이썬은 특히나 외국에서는 다양한 기업에서 체택하여 사용하고있는 언어이다. 파이썬을 사용하고있는 대표적 기업에는 구글과 드롭박스를 꼽을수 있겠다.

또한 파이썬의 장점으로는 공동 작업과 유지보수가 매우 쉽고 편리하며 확장성이 좋고 개발기간을 절감시켜준다.
이러한 파이썬의 큰 장점으로 이미 다른 언어로 작성되어있는 많은 프로그램과 모듈들이 파이썬으로 재구성되고 있다.

국내에서도 그 가치를 인정받아 사용자층이 더욱 넓어지고 있고, 파이썬을 이용해 프로그램을 개발하는 기업체, 개발자들또한 늘어가고 있는 추세이다.

파이썬의 특징


필자는 파이썬을 주 프로그래밍 언어로 사용하며 가장 좋아하는 프로그래밍 언어이다. 모든 프로그래밍 언어에는 각기 장점이 있지만 파이썬에는 다른 언어들에서는 쉽게 찾아볼 수 없는 파이썬만의 독특한 매력이 있다. 파이썬의 특징을 알면 왜 파이썬을 공부해야 하는지, 과연 시간을 투자할 만한 가치가 있는지 분명하게 판단할 수 있을 것이다.

파이썬은 쉽고 간결하다.

파이썬의 장점중 하나로 손꼽혔던 쉽고 빠른 프로그래밍에는 파이썬이 그렇게 될 수 있엇던 가장 큰 이유가 있다.
그 비결은 바로 파이썬의 간결한 문법체계와 이해하기 쉬운 코드구조덕분이다.

if 4 in [1, 2, 3, 4]: print("4가 있습니다.")

위의 예제는 다음처럼 해석할 수 있다.

만약 4가 1, 2, 3, 4중에 존재한다면 "4가 있습니다."를 출력한다.

프로그램을 모르더라도 직관적으로 무엇을 의미하는지 알 수 있지 않은가? 마치 영어 문장을 읽는 듯한 착각에 빠져든다.

파이썬은 문법이 쉬워 빠르게 배울 수 있다.

어려운 문법과 수많은 규칙에 둘러싸인 언어에서 탈피하고 싶지 않은가? 파이썬은 문법 자체가 아주 쉽고 간결하며 사람의 사고 체계와 매우 유사하다. 배우기 쉬운 언어, 활용하기 쉬운 언어가 가장 좋은 언어가 아닐까? 유명한 프로그래머인 에릭 레이먼드(Eric Raymond)는 파이썬을 공부한 지 단 하루 만에 자신이 원하는 프로그램을 작성할 수 있었다고 한다.

파이썬은 무료이지만 강력하다.

오픈 소스인 파이썬은 당연히 무료이다. 사용료 걱정 없이 언제 어디서든 파이썬을 다운로드하여 사용할 수 있다.
또한 프로그래머는 만들고자 하는 프로그램의 대부분을 파이썬으로 만들 수 있다. 물론 시스템 프로그래밍이나 하드웨어 제어와 같은 매우 복잡하고 시스템에 직접적 연관되어있는 프로그램은 파이썬과 어울리지 않는다. 또한 모바일 앱 또한 개발할 수 없다. 하지만 파이썬은 이러한 약점을 극복할 수 있게끔 다른 언어로 만든 프로그램을 파이썬 프로그램에 포함시킬 수 있다.

파이썬과 C는 찰떡궁합이란 말이 있다. 즉, 프로그램의 전반적인 뼈대는 파이썬으로 만들고, 빠른 실행 속도를 필요로 하는 부분은 C로 만들어서 파이썬 프로그램 안에 포함시키는 것이다. 사실 파이썬 라이브러리들 중에는 순수 파이썬만으로 제작된 것도 많지만 C로 만들어진 것도 많다. C로 만들어진 것들은 대부분 속도가 빠르다.
(파이썬에서 C로 만든 모듈을 사용하는것은 C로 만든 DLL파일을 사용하는것이다. 이부분은 나중에 강의하겠지만 정 궁금하다면 지금 간략하게 찾아보는것도 좋다.)

파이썬은 간결하다

귀도는 파이썬을 의도적으로 간결하게 만들었다. 만약 펄(Perl)과 같은 프로그래밍 언어가 100가지 방법으로 하나의 일을 처리할 수 있다면 파이썬은 가장 좋은 방법 1가지만 이용하는것을 선호한다. 이 간결함의 철학은 파이썬 문법에도 그대로 적용되어 파이썬 프로그래밍을 하는 사람들은 잘 정리되어 있는 소스 코드를 볼 수 있다. 다른 사람이 작업한 소스 코드도 한 눈에 들어와 이해하기 쉽기 때문에 공동 작업과 유지 보수가 아주 쉽고 편하다.

파이썬은 개발 속도가 빠르다

"Life is too short, You need Python." (인생은 너무 짧으니 너는 파이썬이 필요하다.)
"Short Code, that works." (작동하는 짧은 코드)

파이썬의 빠른 개발속도와 간결한 문법체계로 인해 생겨난 말이다.

파이썬으로 할 수 있는것과 할 수 없는것


프로그래밍 언어를 좋은 언어와 나쁜 언어로 구분할 수 있을까?
사실 현실에서 이런 구분은 무의미하다. 어떤 언어든지 강점과 약점이 존재하기 때문이다. 그러므로 어떤 프로그래밍 언어가 어떤 일에 효율적인지를 안다는 것은 프로그래머의 생산성을 크게 좌지우지할 수 있는 힘이 된다. 그렇다면 파이썬으로 하기에 적합한 일과 적합하지 않은 일은 무엇인지에 대해 알고 파이썬이라는 언어를 배우는것은 도움이 된다.

파이썬으로 할 수 있는 일

파이썬으로 할 수 있는 일은 아주 많다. 대부분의 프로그래밍 언어가 하는 일을 파이썬은 쉽고 깔끔하게 처리한다. 파이썬으로 할 수 있는 일들을 나열하자면 끝도 없겠지만 대표적인 몇가지 예를 들어 보겠다.

시스템 유틸리티 제작
파이썬은 운영체제의 시스템 명령어를 이용할 수 있는 각종 도구를 갖추고 있기 때문에 이를 바탕으로 갖가지 시스템 유틸리티를 만드는데 유리하다. 실제로 시스템에서 사용 중인 서로 다른 유틸리티성 프로그램들을 하나로 뭉쳐서 큰 힘을 발휘하게 하는 프로그램들을 무수히 만들어 낼 수 있다.

GUI 프로그래밍
GUI(Graphic User Interface) 프로그래밍이란 쉽게 말해 윈도우의 CMD같은 콘솔 화면이 아닌 응용프로그램의 창처럼 화면을 보며 마우스나 키보드로 조작할 수 있는 프로그램을 만드는 것이다. 파이썬으로 GUI 프로그램을 만드는것은 다른 언어를 이용해 만드는 것보다 훨씬 쉽다. 대표적인 예로 파이썬 프로그램을 설치할 때 함께 설치되는 기본 모듈인 "Tkinter"를 이용해 만드는 GUI 프로그램, "PyQt"를 이용해 만드는 GUI프로그램 등 다양한 모듈을 이용해서 GUI 프로그래밍을 할 수 있으며 "PyQt"의 경우 "QtDesigner"와같은 쉽게 프로그램의 GUI인터페이스를 제작할 수 있는 툴도 제공한다.

C/C++와의 결합
파이썬은 접착 언어라고도 부르는데, 그 이유는 다른 언어들과 잘 어울려 다른 언어와 결합해서 사용할 수 있기 때문이다. C나 C++로 만든 프로그램을 파이썬에서 사용할 수 있으며, 파이썬으로 만든 프로그램 역시 C나 C++에서 사용할 수 있다.

프로그래밍
일반적으로 익스플로러나 크롬, 파이어폭스와 같은 브라우저를 이용해 인터넷을 사용하는데, 누구나 한 번쯤은 웹 서핑을 하면서 게시판이나 방명록, 혹은 자신의 블로그에 글을 남겨 본 적이 있을 것이다. 그러한 게시판이나 방명록을 바로 웹 프로그램이라고 한다. 파이썬은 웹 프로그램을 만들기에 매우 적합한 도구이며 실제로 파이썬으로 제작된 웹사이트는 셀 수 없을 정도로 많다.

수치 연산 프로그래밍
사실 파이썬은 수치 연산 프로그래밍에 적합한 언어는 아니다. 수치가 복잡하고 연산이 많다면 C같은 언어로 하는 것이 더 빠르기 때문이다.
하지만 파이썬에는 Numeric Python이라는 수치 연산 모듈이 제공된다. 이 모듈은 C로 작성되었기 때문에 파이썬에서도 수치 연산을 빠르게 할 수 있다.

데이터베이스 프로그래밍
파이썬은 사이베이스(Sybase), 인포믹스(Infomix), 오라클(Oracle), 마이에스큐엘(MySQL), 포스트그레스큐엘(PostgreSQL) 등의 데이터베이스에 접근할 수 있게 해주는 도구들을 제공한다.
또한 이런 굵직한 데이터베이스를 직접 이용하는 것 외에도 파이썬에는 재미있는 모듈이 하나 더 있다. 바로 피클(Pickle)이라는 모듈이다. 피클은 파이썬에서 사용되는 자료들을 변형없이 그대로 파일에 저장하고 불러오는 일들을 맡아 한다.

데이터 분석, 사물 인터넷
파이썬으로 만들어진 판다스(Pandas)라는 모듈을 이용하면 데이터 분석을 더 쉽고 효과적으로 할 수 있다. 데이터 분석을 할 때 아직까지는 데이터 분석에 특화된 'R'이라는 언어를 많이 사용하고 있지만, 판다스가 등장한 이후로 파이썬을 이용하는 경우가 점점 증가하고 있다.
사물 인터넷 분야에서도 파이썬은 활용도가 높다. 한 예로 라즈베리파이(Raspberry Pi)는 리눅스 기반의 아주 작은 소형 컴퓨터이다. 라즈베리파이를 이용하면 홈시어터나 아주 작은 게임기 등 여러 가지 재미있는 것들을 만들 수 있는데 파이썬은 이 라즈베리파이를 제어하는 도구로 사용된다. 예를 들어 라즈베리파이에 연결된 모터를 작동시키거나 램프에 불이 들어오게 하는 일들을 파이썬으로 할 수 있다.

파이썬으로 할 수 없는 일


시스템과 밀접한 프로그래밍 영역
파이썬으로 도스나 리눅스 같은 운영체제, 엄청난 횟수의 반복과 연산을 필요로 하는 프로그램 또는 데이터 압축 알고리즘 개발 프로그램 등을 만드는 것은 어렵다. 즉, 대단히 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램에는 어울리지 않는다.

모바일 프로그래밍
파이썬은 구글이 가장 많이 애용하는 언어이지만 파이썬으로 안드로이드 앱(App)을 개발하는 것은 아직 어렵다. 안드로이드에서 파이썬으로 만든 프로그램들이 실행되도록 지원하긴 하지만 이것만으로 앱을 만들기에는 아직 역부족이다. 아이폰 앱을 개발하는 것 역시 파이썬으로는 할 수 없다.

Next Tutorial - 파이썬 설치하기