파이썬 시작하기
이 글의 작성자는 C/C++ 프로그래밍을 하던 사람이다.
이 글은 Python을 복습하며 작성하는 글이니, 부족한 부분이 있으면 얼마든지 피드백을 주시기 바란다.
Python?
Life is short. You Need Python.
Python은 1991년 귀도 반 로섬이 발표한 프로그래밍 언어이다. 다른 언어에 비해 이해하기 쉬운 문법으로 초보자들에게 많이 추천하는 언어이며, 2020년 3월 26일 기준으로 Tiobe Index 랭킹에서 3위를 기록하고 있다.
Tiobe Index는 대충 프로그래밍 인기 순위라고 보면 된다.
배우기도 쉬운 언어일 뿐만 아니라, 위의 Tiobe Index에서 볼 수 있듯이 실제로도 많이 사용하는 언어이다. 즉, 배우기도 쉽고 쓸 곳도 많다.
Python의 특징
어떤 특징을 가지고 있길래 많이 쓰는걸까? Python의 특징들을 알아보자.
- 무료이며, 오픈소스이다
Python은 공식 홈페이지에서 무료로 다운로드 받을 수 있다. 그리고 소스코드 또한 공개되어 있다.
- 배우기가 쉽다
위에서도 말했듯, 배우기가 매우 쉽다. C/C++이나 Java와 비교해보면, Python은 매우 개발자 친화적인 언어임을 느낄 수 있다. 이는 Python은 사람이 이해하기 쉬운 언어인 High-Level Programming Language(고급 언어)라서 그런 것도 있지만, 고급 언어중에서도 읽고 쓰기가 쉬운 편에 속한다.
고급 언어는 사람 친화적인 언어이고,
저급 언어는 기계 친화적인 언어이다.
만약 다른 프로그래밍 언어를 사용한 경험이 있다면, Python을 다루는데 많은 시간이 필요하지 않을 것이다.
물론 배우기가 쉽다는 거지, 마스터 하기는 쉽지 않다. Python 특유의 철학, Pythonic을 익히려면 시간이 꽤 필요할 것이다.
- 인터프리터를 통해 동작한다
인터프리터(Interpreter) 사람이 쓴 언어를 번역하여 컴퓨터에게 명령을 전달하는 프로그램이다. 인터프리터를 영어사전에서 찾아보면 통역사라는 뜻을 찿을 수 있을 것이다.
인터프리터에게 다음과 같은 소스코드를 전달하면
print('hello world')
인터프리터는 컴퓨터에게 'hello world'
를 출력해라는 명령을
전달하고, 컴퓨터는 'hello world'
를 출력하게 된다.
인터프리터를 통하지 않는 언어가 어떻게 동작하는지 궁금하다면 컴파일러(Compiler)에 대해 찾아보자.
- 이식성이 좋은 언어이다
Python이 인터프리터 언어라는 점과 어느정도 연관이 있는 특징이다.
이식성은 특정 환경에서 작성한 코드를 다른 환경에서도 똑같이 구동할 수 있는 성질이다. 예를 들어 Windows에서 작성한 코드를 Linux나 Mac OS에서도 똑같이 구동할 수 있다면, 그것은 이식성이 좋은 언어라고 할 수 있다.
굳이 마이크로프로세서 까지 언급을 하지는 않겠다.
Python은 각각의 주요 운영체제에서 동작하는 인터프리터가 있다. 따라서 이식성이 좋다고 할 수 있다.
인기있는 언어들은 웬만하면 이식성이 좋다.
- 객체지향(Object-Oriented) 언어이다
Python은 객체지향 프로그래밍에 필요한 기능들을 제공한다. 프로그래밍 자체가 처음인 사람들은 일단 이런게 있다고만 알아두고 넘어가자. 이 특징에 대해서는 나중에 객체지향을 다룰때 언급하도록 한다.
- 방대한 라이브러리를 지원한다
Python은 표준 라이브러리를 통해 편리한 프로그래밍 환경을 제공한다.
라이브러리라는 단어가 생소한 사람이라면, 프로그래밍 중 사용할 수 있는 편리한 도구라고 기억해두자.
표준 라이브러리만으로 부족하다면, pip 등으로 패키지를 추가할 수 있다.
패키지에는 또 다른 라이브러리가 포함되어 있다.
한마디로 누군가가 개발한 기능(도구)를 가져다 쓸 수 있다는 말이다. 그리고 Python은 수많은 라이브러리들이 존재한다.
Python 활용
Python을 통해 다음과 같은 일 외에도 여러 가지 일을 할 수 있다. 일일이 나열하기엔 너무 많으니 대표적인 사용처들만 간단하게 알아보고 넘어가자.
-
GUI Python은 GUI(Graphic User Interface) 프로그램을 제작할 때 쓰일 수 있다. 대표적으로 Tkinter, PyQt등을 사용할 수 있다.
-
Web Programming Python으로 Web Programming 또한 수행할 수 있다. 이에 도움을 주는 도구로는 Django와 Flask등이 있다.
-
Maching Learning 최근들어 핫한 이슈로 떠오르고 있는 Machine Learning 또한 Python으로 수행할 수 있다. 대표적으로 Google의 Tensorflow가 있다.
이 외에도 python 홈페이지에서 무엇을 할 수 있는지 보여주고 있으니, 한 번 찾아보도록 하자.
Python 버전 (2.x, 3.x)
2020년 3월 말이 된 현재, Python2 코드를 접할 일이 얼마나 있을진 잘 모르겠지만, Python2는 지원 종료가 되었다. 이는 Python2에 어떠한 문제가 발생한다고 하더라도 더 이상 지원을 받을 수 없음을 의미한다. 심각한 보안 상의 이슈가 발생한다고 하더라도!
이러한 문제가 발생하는 이유는, Python2 코드는 Python3에서 동작하지 않기 때문이다! 즉, 하위 호환성(backward compatibility)이 유지되지 않기 때문이다.
따라서, 과거에는 Python2 코드로 작성된, 그리고 안정성을 검증받은 코드들이 많이 있었고, Python3 코드는 이제 새로 작성되는 코드들이기 때문에, 그 때 까지는 안정성을 보장받지 못하는 코드들이었다.
하지만 시간이 흐름에 따라, 기존에 작성된 코드들은 점점 Python3 코드로 이식이 되었고, 이제는 Python2가 지원 종료됨에 따라 Python2 코드들을 볼 일이 거의 없을 것이다.
만약 레거시 코드를 종종 유지보수해야 하는 입장이라면, Python2에 대해서 좀 알아두는 편이 좋을 수도 있다.
하지만 지금 새로 배우기 시작하는 입장이라면, 그냥 Python3을 배우자. 앞으로 작성할 내용들도 Python3을 기준으로 작성한다.
Comments