접근성이 높은 프로그래밍 언어, 파이썬

기술의 발달과 방대한 데이터 처리 능력이 필요해진 현 사회에서 프로그래밍을 배워 컴퓨터 언어를 다루는 것에 능숙해지고자 하는 의학도들이 늘어나고 있다. 프로그래밍 초보자들이 배울 수 있는 언어는 매우 많지만, 지나치게 어려운 언어를 선택하거나 특정 기술에만 적용할 수 있는 언어를 선택하지 않도록 주의해야 한다.

C언어, Java등 다양한 프로그래밍 언어가 있는데, 그 중 파이썬의 경우 문법이 단순하며 핵심 개념을 쉽게 배울 수 있는 언어이다. 파이썬(Python)은 1990년 암스테르담의 귀도 반 로섬(Guido Van Rossum)이 개발한 인터프리터 언어이다. 인터프리터 언어란 한 줄씩 소스 코드를 해석해서 그때그때 실행해 결과를 바로 확인할 수 있는 언어이다.

파이썬은 우리나라에서는 잘 알려지지 않은 언어이지만, 외국에서는 교육 및 직업 현장에서 널리 쓰이고 있다. 예를 들어, 구글에서 만들어진 소프트웨어의 절반 이상은 파이썬을 사용하여 만들었다고 한다. 온라인 사진 공유 서비스인 인스타그램(Instagram), 파일 동기화 서비스인 드롭박스(Dropbox) 역시 파이썬을 사용해서 만들었다고 한다.

파이썬 프로그램은 잘 정리되어있는 소스 코드를 사용한다. 다른 사람이 작업한 소스 코드도 한눈에 들어와 이해하기 쉬우므로 공동 작업과 유지 보수가 아주 쉽고 편하다. 공동 작업과 유지 보수가 매우 쉽고 편할 뿐만 아니라, 인간다운 언어라고 평가받고 있다. 인간이 생각하는 것을 컴퓨터에 지시하는 행위가 프로그래밍이라고 할 수 있는데, 파이썬은 사람이 생각하는 방식을 그대로 표현할 수 있는 언어이다. 다시 말해, 컴퓨터의 사고 체계로 별도로 바꾸어 프로그래밍할 필요가 없다는 뜻이다. 파이썬의 자료형, 함수, 클래스 만드는 법, 라이브러리 및 내장 함수 사용 방법는 어려운 문법과 수많은 규칙으로 구성된 언어가 아닌, 문법 자체가 아주 쉽고 간결하며 사람의 사고 체계와 매우 닮아있다. 펄(Perl)과 같은 프로그래밍 언어가 100가지 방법으로 하나의 일을 처리할 수 있다면 파이썬은 가장 좋은 방법 1가지만 이용하는 것을 선호한다.

하드웨어 제어나 시스템 프로그램이 같은 반복 연산이 많고 복잡한 프로그램은 파이썬으로 만들기 어렵다는 약점이 있다. 즉, 파이썬은 수치 연산 프로그래밍에 적합한 언어는 아니다. 수치가 복잡하고 연산이 많다면 C같은 언어로 하는 것이 더 빠르기 때문이다. 하지만 파이썬에는 NumPy이라는 수치 연산 모듈이 제공된다. 이 모듈은 C로 작성되었기 때문에 파이썬에서도 수치 연산을 빠르게 할 수 있다. 이처럼 다른 언어로 만든 프로그램을 파이썬 프로그램에 포함할 수 있다. 파이썬은 접착(glue) 언어라고도 부르는데, 그 이유는 다른 언어들과 잘 어울려 다른 언어와 결합해서 사용할 수 있기 때문이다. C나 C++로 만든 프로그램을 파이썬에서 사용할 수 있으며, 파이썬으로 만든 프로그램 역시 C나 C++에서 사용할 수 있다. 프로그램의 전반적인 뼈대는 파이썬으로 만들고, 빠른 실행 속도를 필요로 하는 부분은 C로 만들어서 파이썬 프로그램 안에 포함시키는 것이다.

# simple.py
languages = [‘python’, ‘perl’, ‘c’, ‘java’]

for lang in languages:
if lang in [‘python’, ‘perl’]:
print(“%6s need interpreter” % lang)
elif lang in [‘c’, ‘java’]:
print(“%6s need compiler” % lang)
else:
print(“should not reach here”)

이 예제는 프로그래밍 언어를 판별하여 그에 맞는 문장을 출력하는 파이썬 프로그램 예제이다. 다른 언어들에서 늘 보게 되는 단락을 구분하는 괄호({ }) 문자가 보이지 않는 것을 확인할 수 있다. 파이썬 프로그램은 코드의 줄을 맞추지 않으면 실행이 되지 않는다. 더불어, 줄을 맞추어 코드를 작성하는 행위는 가독성에 크게 도움이 된다.

파이썬으로 할 수 있는 일에는 시스템 유틸리티 제작, GUI 프로그래밍, C/C++와의 결합, 웹 프로그래밍, 수치 연산 프로그래밍, 데이터베이스 프로그래밍, 데이터 분석, 사물 인터넷이 있다. 파이썬은 운영체제(윈도우, 리눅스 등)의 시스템 명령어들을 이용할 수 있는 각종 도구를 갖추고 있어서 이를 바탕으로 갖가지 시스템 유틸리티를 만드는 데 유리하다. 유틸리티란 컴퓨터 이용에 도움이 되는 여러 소프트웨어이다. 실제로 여러분은 시스템에서 사용 중인 서로 다른 유틸리티성 프로그램들을 하나로 뭉쳐서 큰 힘을 발휘하게 하는 프로그램들을 무수히 만들어낼 수 있다.

GUI(Graphic User Interface) 프로그래밍이란 윈도우 창처럼 화면을 보며 마우스나 키보드로 조작할 수 있는 프로그램을 만드는 것이다. 파이썬 프로그램을 설치할 때 함께 설치되는 기본 모듈인 Tkinter(티케이인터)를 이용해 만드는 GUI 프로그램의 소스 코드는 매우 간단하다. Tkinter를 이용하면 단 5줄의 소스 코드만으로도 윈도우 창을 띄울 수 있다. 파이썬에는 wxPython, PyQT, PyGTK 등과 같이 Tkinter보다 빠른 속도와 보기 좋은 인터페이스를 자랑하는 것들도 있다.

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

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

그러나 파이썬으로 할 수 없는 일에는 시스템과 밀접한 프로그래밍 영역, 모바일 프로그래밍이 있다. 파이썬으로 도스나 리눅스 같은 운영체제, 엄청난 횟수의 반복과 연산을 필요로 하는 프로그램 또는 데이터 압축 알고리즘 개발 프로그램 등을 만드는 것은 어렵다. 즉, 대단히 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램에는 어울리지 않는다. 파이썬은 구글이 가장 많이 애용하는 언어이지만 파이썬으로 안드로이드 앱(App)을 개발하는 것은 아직 어렵다. 안드로이드에서 파이썬으로 만든 프로그램들이 실행되도록 지원하긴 하지만 이것만으로 앱을 만들기에는 아직 역부족이다. 아이폰 앱을 개발하는 것 역시 파이썬으로는 할 수 없다.

파이썬은 오픈 소스(Open Source)로, 저작권자가 소스 코드를 공개하여 누구나 별다른 제한 없이 자유롭게 사용, 복제, 배포, 수정할 수 있는 소프트웨어이다. https://wikidocs.net/book/1은 Do it! 점프 투 파이썬 이라는 파이썬 입문서의 내용을 담은 웹사이트로, 파이썬의 코드와 관련 연습문제를 풀어봄으로써 파이썬 프로그래밍 언어를 쉽게 익힐 수 있다.

정은별 기자 / 원광
< ssvfd99@gmail.com >