Published on

[Python] 공학용 파이썬 라이브러리 소개

Authors
  • avatar
    Name
    Almer Minified
    Twitter

오픈 소스 기반의 엔지니어링 및 과학 데이터 처리

최근 몇년간 사물인터넷(IoT)과 임베디드시스템에 대한 관심이 높아지면서 사용자가 보다 쉽고 효율적으로 코딩할 수 있는 스크립팅 언어 또는 가상 프로그래밍 언어에 대한 필요성이 대두되고 있다. 사용자가 보다 쉽고 효율적으로 코딩할 수 있도록 스크립팅 언어 형식이나 가상 머신을 활용한 중간 언어가 개발되고 있다. 사용자가 더 쉽고 효율적으로 코딩할 수 있도록 스크립팅 언어 형식이나 가상 머신을 활용하는 중간 언어. 언어, 즉 바이트 코드 형식을 활용하는 언어이다. Python 언어는 여러 가지 이유로 교육 및 업계에서 주목을 받고 있다. 일반적인 웹 프로그래밍이나 데이터베이스 프로그래밍에만 사용되는 것이 아니다. 웹 프로그래밍과 데이터베이스 프로그래밍뿐만 아니라 수치 프로그래밍과 데이터 분석, 사물 인터넷 등 다양한 분야에서 활용되고 있다. 수치 프로그래밍과 데이터 분석, 사물인터넷(IoT)에 이르기까지 다양한 엔지니어링 분야에서 그 유용성과 효율성이 입증되었다. 수치 프로그래밍, 데이터 분석, 사물인터넷(IoT) 등 다양한 엔지니어링 분야에서 그 유용성과 효율성을 입증했다. 이 글에서는 파이썬 언어의 특징을 간단히 살펴보고 엔지니어링에서 파이썬을 활용할 수 있는 몇 가지 방법을 소개한다. 그리고 엔지니어링에서 활용할 수 있는 방법을 소개한다.

파이썬(Python)이란 어떤 언어인가?

파이썬은 1991년 네덜란드 프로그래머 귀도 반 로섬이 '개발 생산성'에 중점을 두고 발표한 고급 프로그래밍 언어이다. 쉽고 빠른 개발, 라이브러리 사용성, 확장성 및 재사용을 극대화하고, 시스템 독립적이어서 어떤 시스템에서도 제약 없이 사용할 수 있는 플랫폼 독립적인 언어를 만드는 것이 목적이었다. 파이썬이라는 이름은 귀도가 즐겨보던 TV 코미디 쇼에서 따왔다고 한다.

네덜란드 출신의 컴퓨터 프로그래머인 Guido van Rossum은 파이썬 프로그래밍 언어를 처음 제안한 인물로, 2005년부터 2012년까지 Google에서 근무했으며 2013년부터는 Dropbox에서 근무하고 있다.

파이썬은 비영리 단체인 파이썬 소프트웨어 재단에서 관리하는 개방형 커뮤니티 기반 개발 모델을 가지고 있다. C로 구현된 파이썬은 사실상의 표준이다. Python은 초보자부터 전문가까지 다양한 사용자층을 보유한 범용 동적 프로그래밍 언어로, Perl 및 Ruby와 종종 비교되기도 한다. 다양한 OS 플랫폼(Window, Mac, Linux 등)에서 사용된다. 수많은 라이브러리(모듈)를 보유하고 있으며 대학, 교육 기관, 연구 기관 및 산업계에서 점점 더 많이 사용되고 있다. 파이썬의 가장 큰 장점은 배우기 쉬운 프로그래밍 언어라는 점이지만, 다른 프로그래밍 언어(C/C++ 등)로 작성된 라이브러리(모듈)를 쉽게 연결하기 위한 언어로 사용되는 경우가 많다. 실제로 Python은 많은 상용 애플리케이션에서 스크립팅 언어로 사용되며, 유니코드 문자열을 지원하므로 다양한 언어의 문자를 처리하는 데 매우 유용한다. 파이썬은 인터프리터 위에서 실행되도록 설계되었으며, 런타임에 데이터 유형을 확인하는 동적 타이핑과 객체의 멤버에 대한 무제한 액세스와 같은 기능을 갖추고 있지만 특성이나 비공개 메서드 후크를 생성하여 액세스를 제한할 수 있다. 최신 파이썬은 여전히 인터프리터 언어처럼 동작하지만, 사용자 모르게 내부적으로 소스 코드를 컴파일하여 다음에 실행할 때 더 빠른 바이트코드를 생성한다. 또한 실행 속도를 향상시키기 위해 다양한 인터프리터를 지원하며, 대표적인 인터프리터는 다음과 같다.

● CPython : C로 작성된 인터프리터. ● Stackless Python: C 스택을 사용하지 않는 인터프리터. ● Jython(JPython): 자바 가상 머신 용 인터프리터. ● IronPython : .NET framwork용 인터프리터. ● PyPy : 파이썬으로 작성된 파이썬 인터프리터.

다른 단점으로는 런타임뿐만 아니라 MCU에 최적화된 네이티브 바이너리 코드를 생성하는 C, C++와 같은 언어에 비해 성능이 느리다는 점이다. 하지만 일반적인 최신 컴퓨터 응용 프로그램 환경에서는 처리 속도의 차이가 크지 않으며, 빠른 처리 속도가 필요한 프로그램의 경우에도 프로토타입을 만든 후 빠른 처리 속도가 필요한 부분만 선택해 C로 모듈화(ctypes, SWIG, SIP 등의 래퍼 생성기에서 지원)하는 것이 가능하다. 또한 파이렉스, 싸이코, 넘파이 등을 이용해 숫자를 빠르게 계산할 수 있어 이공계에서 그 활용도가 매우 빠르게 증가하고 있다.

파이썬(Python) 언어의 실행환경

기본적으로 Python은 오픈 소스이며 무료이다. Linux와 마찬가지로 파이썬 소프트웨어 재단에서 유지 관리 및 배포하며 누구나 무료로 다운로드하여 사용할 수 있다. Mac OS 10.8 이상 및 대부분의 Linux에 이미 설치 및 배포되어 있다. 사용자가 선택적으로 다운로드하여 설치할 수 있는 배포판은 다음과 같은 Python 배포판을 포함하여 여러 가지가 있다. ● ActivePython: ActiveState사에서 관리하는 무료 파이썬 배포판. ● Canopy: Enthought사에서 관리하는 무료 Python 배포판 ● Anaconda: Continuum사에서 관리하는 무료 python 배포판. 파이썬은 크게 2.x와 3.x 두 가지 버전이 있으며, 구문 차이와 호환성 문제로 인해 2.7 버전이 가장 많이 사용되고 있다. 배포판에는 기본 파이썬 인터프리터와 패키지가 포함되어 있는데, 기본 파이썬 인터프리터를 설치한 후 여러 패키지를 하나씩 설치하게 되면 개별 패키지의 종속성 등의 문제로 인해 필요한 패키지를 설치하는 것이 상당히 불편하므로 가급적 무료 배포판을 사용하는 것을 권장한다. 필자는 개인적으로 아나콘다 배포판을 사용하고 있는데 매우 편리하다.

Numpy, Scipy

Matplotlib13

Spyder (Scipy + Numpy + matplotlib)

파이썬(python) 활용

파이썬은 최근 임베디드에서도 쓰인다. 2013년 캠브리지 대학의 응용수학 및 이론 물리학 전공의 Damien P. George는 파이썬 프로그래밍 언어를 임베디드 용으로 사용했다. 이는 파이썬3의 인터프리터를 ARM Cortex-M4에 구현함으로, 아두이노처럼 쓸수 있게 했다.

그후 ARM-코어에 최적화된 파이썬 인터프리터를 사물인터넷으로 플랫폼으로 연결하려는 시도들이 진행되고 있다. 최근 몇년간 파이썬을 이용한 다양한 측정 프로그램을 제작해 본 바로는 C/C++언어와 같은 객체지향언어의 개념을 이해하는 프로그래머 입장에서 보면 파이썬은 매우 쉽고 빠르게 개발하게 해준다. 특히, 파이썬의 인터프리터를 ARM과같은 마이크로프로세서에 최적화를 구현한 micopython 프로젝트의 결과는 놀라웠다. 또한 Cython이나 Ctypes 등을 이용하여 처리속도의 최적화가 필요한 알고리즘의 구현은 파이썬의 공학적 활용에 있어 많은 가능성을 제시한다.

맺음말

파이썬(Python)이란 언어에 대하여 소개하고, 이를 공학적 또는 과학적인 분야에서 활용할수 있는 가능성을 소개하였다. 그러나, 지난 10여년간 오픈소스 분야에서 괄목한 성장세를 이끌고 있는 파이썬 언어와 이의 공학적인 활용에 대하여 모든 것을 소개하기에는 지면이부족할 것이다.