책 커버 표지
일경컴퓨터_2019/06/27_파이썬(Python), AI 시대의 ‘표준 언어’
  • 저자 : 日経BP社
  • 발행일 : 20190627
  • 페이지수/크기 : 98page/28cm

요약

Nikkei Computer_2019.6.27 특집 요약 (p24~37)

파이썬(Python), AI 시대의 ‘표준 언어’
COBOL 세대도 주목 필요

프로그래밍 언어 ‘파이썬’의 인기가 급상승 중이다. 2020년부터는 COBOL 대신 파이썬이 기본정보기술자 시험에 채택된다. AI를 활용한 시스템을 개발하는데 최적의 언어이기 때문에 COBOL 세대도 더 이상 파이썬을 모른 척 할 수만은 없다. 그러나 파이썬에도 약점 및 적합하지 않는 용도가 있다. 아직 알려지지 않은 파이썬의 상식과 활용할 때 반드시 느끼게 되는 의문점에 대해 파헤쳐 보도록 하겠다.

Part 1. AI와 찰떡궁합
기업의 도입 잇따라


파이썬 인기의 원동력은 AI(인공지능)이다. 그 이유는 AI 시스템을 개발하는 프로그래밍 언어로서 파이썬이 가장 사용하기 쉽기 때문이다. 데이터 분석 및 인프라 관리 등 파이썬의 용도는 확대되고 있다.

2020년 봄, IPA(정보처리추진기구)가 운영하는 국가시험 ‘기본정보기술자 시험’에서 선택할 수 있는 프로그래밍 언어에서 COBOL이 사라지고 파이썬이 새롭게 채택된다. 전신인 제2종 정보처리 기술자 시험이 탄생한 1970년부터 COBOL은 50년동안 계속해서 출제되어 왔다. 그러나 2020년 봄부터 시작되는 시험에서는 파이썬으로 교체된다.

IPA의 IT인재육성센터 국가자격∙시험부의 이와오(岩男) 편집책임자는 COBOL을 폐지하고 파이썬을 추가한 이유에 대해 “AI 및 데이터 분석 등의 분야에서 파이썬의 이용이 확대되고 있다는 것을 감안했다”라고 설명한다.

일본 최대의 파이썬 컨퍼런스를 주최하는 일반 사단법인인 PyCon JP의 대표이사직을 맡고 있는 CMS 커뮤니케이션즈의 데라다(寺田) 대표이사역은 “2015년 이후, 파이썬 관련 서적의 판매량은 눈에 띄게 늘어났다”라고 말한다. 그 이유는 역시 최근의 AI 붐의 영향을 들 수 있다. “AI, 특히 딥러닝(심층학습)을 위해 파이썬을 학습하기 시작한 엔지니어가 늘어났다”라고 분석한다.

AI의 인기가 파이썬 인기에 직결되어 있는 것은 AI 시스템을 개발하는 프로그래밍 언어로서 파이썬이 가장 사용하기 쉽기 때문이다.

오늘날 시스템 개발에 있어서 프로그램을 제로부터 작성하는 것이 아니라, 프로그램의 공통 부품을 수집한 라이브러리나 특정 용도용 개발 기반인 프레임워크를 활용해 공수를 줄이는 것이 일반적이다. AI 분야의 라이브러리 및 프레임워크의 완성도 면에서 파이썬은 다른 프로그래밍 언어에 비해 압도적으로 뛰어나다.

-- 구글 및 페이스북도 --
-- 데이터 분석 및 인프라 운용에서도 인기 --
-- 대학도 잇따라 필수화 --


Part 2. 파이썬, 왜 간단한가? 약점은 없는가?
10가지 의문에 답한다


파이썬은 어째서 작성하기 쉬운 것인가? 약점은 없는 것인가? AI 이외에 어디에 사용할 수 있는 것인가? AI 라이브러리는 누가 개발한 것인가? 기업이 사용하는 데는 비용이 얼마인가? 파이썬에 대해 누구나가 궁금해하는 10가지 의문에 대해 답하겠다.

Q1. 어째서 작성하기 쉬운가? → 성가신 ‘타입 선언’이 불필요

파이썬은 프로그램 소스 코드의 작성이 쉬우며 다른 사람이 작성한 소스 코드도 읽기 쉽다고 한다. 그 이유는 크게 3가지가 있다.

첫 번째는 라이브러리가 충실하다는 것이다. 기계학습 등 제3자가 작성한 외부 라이브러리뿐만이 아니라, 파이썬 본체에 들어 있는 표준 라이브러리의 기능도 풍부하다. 따라서 CSV 파일을 조작하거나 웹 사이트에 접속하는 처리가 몇 줄만으로 작성이 가능하다.

두 번째는 파이썬이 변수의 형태가 실행 시에 결정되는 동적 타입 언어(Dynamic typing language)를 채택하고 있기 때문에 프로그램을 작성할 때 타입을 의식하지 않아도 된다는 점이다. Java 등 다른 언어일 경우는 값이 문자열 타입인지, 정수 타입인지, 부동소수점 타입인지 등을 신경 쓰지 않으면 안 되며 타입이 맞지 않을 경우 에러가 된다. 정적 타입 언어를 채택하고 있기 때문이다.

도쿄공과대학 컴퓨터 사이언스학부는 2019년도부터 1학년생 약 300명을 대상으로 파이썬을 필수과목으로 채택했다. 기존에는 Java나 C를 강의했으나, 프로그래밍 초보자에게 있어 데이터 타입의 개념은 처음에는 이해가 어려울 수도 있다. 다고(田胡) 교수는 “Java나 C와는 달리 타입의 개념을 가르치지 않아도 본제에 들어갈 수 있기 때문에 학생들에게 이해가 쉽다”고 평가한다.

세 번째는 인덴트(글자 비움)의 사용방식이다. 파이썬의 코드에는 Java 등 다른 언어에 있을 법 한 중괄호 { }가 별로 눈에 띄지 않는다. 그 대신 반복되는 문자의 집합 등을 나타내는데 인덴트를 사용한다. 보기에도 심플하며 프로그램이 복잡해져도 중괄호의 대응 관계를 보는데 방해가 되지 않는다. 또한 누가 작성하더라도 보기에 편하다는 장점이 있다(메루카리 AI 개발 담당자).

Q2. 어째서 AI 라이브러리가 풍부한가? → 연구자가 적극적으로 공개

AI 시스템의 개발자가 모두 파이썬을 채택하는 이유는 기계학습 및 심층학습, 수치계산 등에 편리한 오픈 소스 소프트웨어 (OSS)의 라이브러리가 풍부하게 존재하기 때문이다. 그렇다면 이들 라이브러리의 개발자는 어째서 파이썬을 선택했을까?

그 대답을 말하는데 누구보다 적임자가 일본에서 근무하고 있다. 도쿄의 AI 스타트업인 Cogent Labs에 소속되어 있는 프랑스인 엔지니어의 크루나포 씨이다. 크루나포 씨가 개발을 시작한 기계학습 라이브러리 ’scikit-learn’은 심층학습 이외의 기계학습 알고리즘을 파이썬으로 이용할 때 항상 인기가 높다.

크루나포 씨는 교토대학 대학원의 박사과정에 재학 중인 2007년, 자신이 파이썬으로 개발한 기계학습 라이브러리를 scikit-learn으로 공개하기 시작했다. 자연언어처리의 연구 중에 개발한 소프트웨어를 OSS로서 공개하는 것은 “기계학습의 연구 커뮤니티에 소속된 사람으로서 자연스러운 일이었다”라고 크루나포 씨는 말한다.

-- 연구에 사용한 소프트웨어도 공개 --

Q3. 인기 있는 개발 환경은? → 마이크로소프트 사의 제품에 주목

파이썬의 인터프리터 및 개발환경은 Windows, macOS, Linux 등 많은 OS로 작동된다. 무상의 코드 에디터나 통합개발환경(IDE)도 잘 갖춰져 있다. IDE는 코드를 편집∙실행∙디버그(Debug)할뿐만 아니라 관수 명칭 등을 자동 보완하거나 소스 코드가 ‘PEP8’으로 불리는 파이썬의 코딩 규칙에 따르고 있는 지를 체크하는 등의 편리한 기능을 갖추고 있다.

과거에는 ‘Vim’이나 ‘Emacs’, ‘Atom’과 같은 텍스트 에디터를 사용하는 개발자도 많았으나, 지금은 보다 고기능의 코드 에디터 및 IDE를 이용하는 것이 일반적이다.

초보자에게 추천하는 개발 환경은 ‘Jupyter Notebook’’이나 ‘Spyder’이다. 둘 다 Windows 등에 파이썬을 인스톨 할 때 자주 사용되는 패키지 ‘Anaconda’에 동봉되어 있어 도입이 용이하다.

-- 주목주는 마이크로소프트 제품의 툴 --

Q4. 파이썬의 실제 약점은? → 처리 속도가 느리다

파이썬의 약점은 C나 C++, Java에 비해 실행 속도가 느리다는 점이다.  파이썬은 소스 코드를 인터프리터가 일일이 해석하면서 실행한다. 따라서 컴파일러가 사전에 코드를 실행 파일로 전환하는 C/C++와 같은 언어보다 수십 배~수백 배가 느리다고 한다.

파이썬과 같은 스크립트 언어를 고속으로 실행하는 수단으로서 실행할 때마다 소스 코드를 컴파일 하는 JIT(Just in Time) 컴파일러가 있다. 예를 들어 JavaScript는 주요 브라우저가 JIT 컴파일러를 갖추고 있어 고속으로 실행할 수 있다.

파이썬에도 JIT 컴파일러로서 ‘PyPy’나 ‘Numba’ 등의 개발이 추진되고 있으며 그것들을 사용하면 어느 정도 고속화가 가능해진다. 그러나 기존의 처리계(系)를 대신해 교체할 정도의 성공에는 이르지 못하고 있다. Numpy를 비롯해 다양한 라이브러리에 의해 기능을 추가할 수 있는 파이썬의 강력한 확장성이 JIT 콤파일러에서는 실행하기 어렵다는 점이 이유 중 하나이다.

Q5. AI 이외의 유망 분야는? → 양자 계산에 기대

파이썬은 AI나 데이터 분석 이외의 분야에도 확산되고 있다. 대표적인 예가 Web 어플리케이션이다. 그렇다면 왜 파이썬이어야 하는가? 사례를 들어 설명하겠다. 부동산 관련 서비스를 하고 있는 GA technologies는 2019년 6월에 AI가 최적의 거주 지역 및 물건을 제안하는 Web 어플리케이션용 ‘BEST BASHO’를 파이썬으로 개발했다. 파이썬의 Web 어플리케이션용 라이브러리 'Django’를 사용. 물건정보를 관리하는 기존의 데이터 베이스로부터 설계도 및 가격 등의 정보를 인출해 브라우저에 표시하는 처리 기능 등을 파이썬에 실장 했다.

현재의 컴퓨터와는 전혀 다른 새로운 방식으로서 기대되는 양자컴퓨터. 전기통신대학에서 AI및 데이터 분석을 전문으로 하는 기요스(清洲) 특임교수는 “이 분야에서도 파이썬이 디펙트 스탠다드가 되려고 한다”라고 말한다. 양자컴퓨터 제조사가 제공하는 개발 키트의 대부분이 파이썬을 채택하고 있기 때문이다.

-- 파이썬을 양자용으로 변환 --

Q6. 인재는 어디에 있나? → 누구나 습득이 용이하다

파이썬으로 프로그래밍이 가능한 인재는 조만간 ‘어디에나 있는’ 존재가 될 것이다. 오히려 앞으로는 파이썬과 조합시킨 IT 스킬을 가진 인재가 중요하게 된다. 그런 인재는 대학의 데이터 사이언티스트학부 등으로부터 배출될 전망이다.

-- ‘수학 이론’에 능통한 것이 중요 --

Q7. 비용은 얼마나 드나? → 거의 무료로 사용할 수 있다

파이썬 프로그래밍에 필요한 요소는 인터프리터, IDE, 라이브러리의 3종류이다. 그 대부분이 무상으로 이용할 수 있다. 따라서 파이썬을 사용하는 데는 비용이 들지 않는다.

인터프리터는 공식 사이트인 ‘Python.org’에서 공식판을 무상으로 다운로드 할 수 있다. 상업용 디스토리뷰전도 있다. 그 대표격은 미국 아나콘다 사의 ‘Anaconda’이다. 특징은 데이터 분석에 필요한 개발 환경과 라이브러리를 묶음으로 하고 있다는 것. 무상 판과 지원받을 수 있는 유상 판이 있다.

-- 유상 라이브러리가 강점인 분야도 --

Q8. 일본 발(發) 기술은 있나? → 심층학습 Chainer가 대표적인 예이다

일본 발 파이썬용 라이브러리의 대표적인 사례는 심층학습용인 ‘Chainer’이다. PFN이 OSS로서 2015년에 공개했다. 구글의 TensorFlow 및 페이스북의 PyTorch가 전세계에 보급되는 가운데, 일본을 중심으로 꾸준한 인기를 누리고 있다.

Chainer의 특징은 파이썬으로 실장 되어 있는 것과 함께 뉴럴 네트워크의 구조도 파이썬으로 기록할 수 있다는 점이다. RNN(Recurrent Neural Networks) 등 복잡한 네트워크 구조를 기술하는 것에 적합하다.

-- 아직 존재하는 일본 발 프로젝트 --

Q9. 누가 운영하나? → 개발 커뮤니티가 존재

파이썬을 최초로 만든 것은 네덜란드 출신의 귀도 반 로섬 씨이다. 현재는 개발 커뮤니티에서 오픈 소스 프로젝트로 개발이 추진되고 있다. 핵심이 되는 것은 ‘코어 디벨로퍼’이다. 인터프리터 등 파이썬의 언어 자체에 변경을 추가할 수 있는 권한을 가진다.

차기 버전으로 실장 하는 기능에 대해서는 ‘PEP(Python Enhancement Proposal)’로 불리는 제안 문서를 기반으로 코어 디벨로퍼가 논의해 결정한다. 그 논의로 결착이 안될 경우에는 5명의 멤버로 구성된 운영심의회(Steering Council)가 최종적으로 중재에 나선다.

Q10. 기간계도 파이썬으로 다시 수정해야 하나? → 기간계는 Java가 적합하다

대상이 AI라면 기존 시스템이라도 파이썬으로 수정하는 장점은 크다. Lightblue Technology의 엔타(園田) 사장은 “이전에는 Java를 사용해 AI 시스템을 개발하고 있었으나, 뭔가 부족한 느낌이었다”라고 털어 놓았다.

AI시스템을 개발할 때에는 테스트용 데이터를 복수로 분할해 AI 모델의 정밀도를 확인하는 ‘교차검증’이 빠질 수 없다. “Java라면 교차검증의 프로그램을 자신들이 작성할 필요가 있다. 파이썬이라면 라이브러리의 scikit-learn을 활용해 4줄만으로 작성할 수 있다”(엔타 사장). 큰 폭으로 개발 효율의 향상이 예상되기 때문에 이행하는데 공수가 걸려도 수지타산은 맞는다.

한편, Java로 개발한 업무 시스템을 파이썬으로 바꾸는 것에는 이점이 없다. 업무 시스템 분야에는 Java의 이용을 전제로 한 프레임 워크나 라이브러리, 개발∙보수의 노하우가 수없이 많이 존재한다. 엔지니어도 Java가 익숙한 사람이 많다. “향후 기간계의 개발에서 파이썬을 사용할 가능성이 있을지 모르지만, 현 단계에서는 충분히 준비가 되어 있다고는 볼 수 없다”(NTT 데이터의 이나바(稲葉) 디지털 기술부 Agile Professional Center 과장)는 것이 현재 실정이다.

 -- 끝 --

목차