[ 인공지능 알고리듬의 이해 ]
“제3회: 컴퓨터 프로그래밍과 알고리즘”
정보통신정책연구원 ICT데이터사이언스연구본부장
정용찬
프로그래밍과 알고리즘이란?
프로그래밍(Programming)이란 ‘프로그램을 만들다’라는 의미다. 즉 기계(컴퓨터)가 어떤 일을 처리하도록 시키기 위해서 특정 작업을 컴퓨터가 수행할 수 있도록 미리 약속된 명령어로 작성하는 것을 말한다.
컴퓨터에게 일을 시키려면 컴퓨터가 이해할 수 있는 언어를 사용해야 하는데 이를 프로그래밍 언어(Programing Language)라고 한다. 사람들이 한국어와 영어로 대화를 하듯 컴퓨터와 대화하기 위한 언어가 프로그래밍 언어다.
전통적인 프로그래밍 언어로는 베이직, 코볼, 포트란, C 등이 있다. 주로 복잡한 계산을 빠르게 처리하는 데 사용했다. 최근 인터넷 환경에서 숫자는 물론 문자를 처리해야 하므로 새로운 언어가 필요했다. 자바, 파이썬, R 등이 빅데이터 환경에서 많이 사용되는 프로그램 언어다.
자바(Java)
인터넷 환경에서 가장 많이 사용되는 프로그래밍 언어다. 스마트폰에서 사용하는 앱은 대부분 이 언어로 개발되었다고 보면 된다.
자바 언어는 1991년 제임스 고슬링과 썬마이크로시스템즈의 연구원들이 만들었다(위키백과). 커피를 좋아하는 사람들은 인도네시아 자바섬에서 생산되는 커피 이름으로 ‘자바’를 기억할 것이다. 개발에 참여한 사람들 중 커피를 좋아하는 연구원들이 많아 이렇게 이름을 붙였다고 한다.
자바가 인터넷 환경에서 가장 많이 사용되는 이유는 운영체제의 종류에 관계없이 다양한 시스템에서 실행이 가능하기 때문이다. 인터넷 환경에서는 서로 다은 종류의 운영체계(OS)를 사용하는 컴퓨터들이 연결되어 있기 때문에 이런 특징이 강점이다.
파이썬(Python)
요즘 잘나가는 직업인 데이터사이언티스트 관련 구인 광고에 어김없이 등장하는 단어가 파이선이다. 구글이나 아마존 같은 인터넷 기업은 수치 정보뿐 아니라 인터넷을 검색할 때 생기는 웹 로그(web log) 정보나 이메일, 블로그 등과 같은 비정형 텍스트 데이터를 처리해야 하는데 이 과정에서 가장 많이 사용하는 프로그램 언어가 파이썬이다.
파이썬은 교육용으로 설계되었기 때문에 쉽고 간단하게 프로그램을 할 수 있다. 프로그램을 구성하고 있는 문법이 다른 프로그래밍 언어와 비교해 쉽고 대화하는 형식을 이용하여 배우기도 쉽다는 장점이 있다.
파이썬이라는 이름은 이 프로그램을 만든 네덜란드의 귀도 반 로섬(Guido van Rossum)이 좋아하는 BBC의 코미디 프로그램인 <Monty Python’s Flying Circus>에서 따왔다.
텐서플로(TensorFlow)
구글의 브레인팀이 연구와 제품 개발을 목적으로 만든 기계학습(Machine Learning)용 소프트웨어 라이브러리다. 라이브러리란 도서관을 의미한다. 도서관의 서가에 다양한 주제의 책이 모여있는 것처럼 자주 사용되는 프로그램은 미리 만들어서 저장해 놓은 후 프로그래머가 약속된 이름만 불러 쓰면 되는 방식이다.
예를 들어 평균을 구하는 프로그램은 데이터 분석 과정에서 누구나 자주 사용하기 때문에 평균을 구하는 프로그램을 저장해 놓고(라이브러리에) ‘평균’이라는 단어만 쓰면 평균을 계산할 수 있는 식으로 작동한다.
텐서플로는 인터넷 환경에서 가장 널리 활용되는 파이썬으로 구현되었다. 인공지능과 딥러닝(Deep Learning)이 각광을 받으면서 텐서플로의 이용이 늘고 있다.
R
R이 개발되기 전에 많이 사용하던 프로그램으로 SPSS와 SAS가 있다. 사회과학 분야의 연구자가 주로 사용했던 SPSS는 메뉴 방식으로 배우기 쉽다는 점에서,통계학이나 공학 분야의 연구자들이 중로 사용했던 SAS패키지는 프로그래밍 방식으로 대규모 데이터 처리에 편리하고 다양한 분석 방법론을 제공한다는 장점이 있었지만 이용료가 비싸다는 제약이 있었다.
R은 무료라는 장점 이외에도 데이터 처리 속도가 빠르고 텐서플로와 같은 다른 언어나 웹과 연동이 가능하여 애플리케이션 개발에 많이 활용되고 있다(계속).