hot topic

지금은 바야흐로 소프트웨어 시대

지난 7월 21일, 교육부와 미래창조과학부는 국무회의에서 'SW중심사회를 위한 인재양성 추진계획'으로 초중등학교에 대한 소프트웨어 교육을 본격적으로 확산시킬 것이라 보고하였습니다. 2018년부터 초등학교에서는 소양 중심의 교육을, 중학교부터는 소프트웨어 관련 과목인 '정보'라는 과목을 독립시켜 교육하기로 한다는 것으로 사실상 소프트웨어 교육이 의무화 된 것입니다.


더불어 대학교 또한 소프트웨어 교육을 강화하고 있는 추세인데요. 개교 이래 공대가 없었던 숙명여대는 IT공학과를 신설하기로 결정했으며, 국민대는 올해 신입생부터 프로그래밍 과목을 이수해야만 졸업이 가능하도록 의무화하였습니다. 이 외에도 많은 학교에서 SW관련 학과를 신설하고 교육을 실시하고 있는데, 미래창조과학부에 따르면 SW 학과 재학생은 2012년 5만 1,527명에서 201년 5만 5,143명으로 7.0%증가했다고 합니다.



 


IT 전공자가 한 해에도 2000명씩 증가하는 추세입니다.
한 학과가 보통 50명인걸 생각하면 1년에 40여개의 학과만큼의 학생이 생겨나는 셈입니다. (출처 : 미래창조과학부)

 

소프트웨어에 대한 인기는 이 뿐만이 아닙니다. 현재 많은 수의 스타트업이 어플리케이션을 기반으로 하고 있어, 프로그래밍에 대한 인기는 대학생에서부터 성인까지 다양하게 생겨나고 있습니다.

그럼 왜 이렇게 소프트웨어에 대한 인기가 높아지는걸까요? 제가 생각하는 정답은 '내가 원하는 것을 직접 만들고 싶기' 때문입니다. 이전의 상품은 대부분 기업에서 만들고, 일방적으로 고객에게 전달되는 방식이었습니다. 하지만 지금은 고객이 우선시되고 있고, 더 나아가 사람들이 고객에 머물지 않고 직접 아이디어를 짜고, 직접 상품을 만들고 판매하는 시대가 되어가고 있습니다. 그 중에서도 프로그램은 딱히 물리적인 공간이나 자원을 필요로 하지 않습니다. 그러다보니 상대적으로 쉽게 접근할 수 있으며 요즘은 배울 수 있는 책이나 장소도 많습니다.

하지만 처음 프로그래밍을 배우려는 많은 분들은 이 막막한 외계어에 대해 두려울 수 밖에 없습니다. 프로그래밍 언어에도 많은 언어가 있는데 무엇을 배워야 할지, 또 어떻게 배워야 하며 어떻게 접근해야하는지도 혼자서 헤쳐나가기가 쉽지 않습니다. 그래서 이번 기사에서는 현재 우리나라에서 자주 사용되는 프로그래밍 언어들을 소개드리고, 공부를 시작하는 팁을 드리려 합니다.

 

다양한 프로그래밍 언어, 당신의 선택은?

프로그래밍이란 컴퓨터에게 명령 또는 연산을 시킬 목적으로 설계돼 컴퓨터와 의사소통을 해주게 하는 언어입니다. 컴퓨터는 0과 1밖에 인식하지 못하지만, 사람들이 컴퓨터에 설계하고자 하는 것을 0과 1로 표현하기는 쉽지 않습니다. 그래서 어떻게 하면 쉽게 컴퓨터가 이해하게 할 수 있을지 하나하나 발전시켜나가 지금처럼 일반인도 쉽게 프로그래밍을 할 수 있는 시대가 되게 되었습니다.

일반적으로는 많이 알려져 있지는 않지만, 프로그래밍 언어는 생각보다 굉장히 많습니다. 프로그래밍 언어 사용 순위 등 각종 정보를 열람할 수 있는 사이트인 http://www.tiobe.com에 따르면 100개도 넘는 언어가 있는 것을 알 수 있습니다. 저희가 땅을 파려고 할 땐 소꿉장난 삽부터 모종삽, 일반적인 삽이나 포크레인까지 다양한 도구를 사용합니다. 그것처럼 프로그래밍에서도 또한 각각의 용도에 맞게 언어를 택해 사용하게 됩니다


http://www.tiobe.com 에서는 각종 검색엔진을 참조하여 매달 프로그래밍 언어 순위를 집계하여 발표하고 있습니다. 이번 8월에는 Java가 1위로, C언어가 2위로 순위에 올랐습니다. 이어서 3,4위는 C의 기능을 확장하거나 보완한 C++ C#이 차지했으며 5위에는 최근 한국에서도 큰 인기를 끌고 있는 Python이 순위에 올랐습니다. 하지만 이런 순위를 봐도 어떤 언어를 먼저 시작해야 할 지 결정하기는 쉽지 않습니다.

이번 기사에서는 전통적으로 자주 사용되는 언어인 C와 Java 그리고 쉬운 프로그램언어로 각광받는 Python, 빅데이터가 뜨며 각광받는 R까지 4개의 언어를 소개하는 시간을 가지려 합니다. 이들은 각각 뚜렷한 개성과 장단점을 가지고 있고, 일반적으로 한글 정보를 접하기가 쉬운 언어이기에 초보자도 쉽게 따라갈 수 있답니다.



프로그래밍의 세계는 Java와 C가 선봉에서 이끌어가고 있습니다. (출처 : http://www.tiobe.com )

 

 

1) C언어

C언어는 시스템 하드웨어를 제어할 수 있을 뿐만 아니라 소프트웨어를 작성할 수도 있는 언어입니다. 또한 위키백과에서 "실질적으로 모든 컴퓨터 시스템에서 사용할 수 있는 프로그래밍 언어"라고 정의할 정도로 저사양의 컴퓨터에서 슈퍼컴퓨터까지 다양한 컴퓨터에 사용가능한 이식성을 갖고 있습니다. 이러한 넓은 사용성에도 불구하고 언어가 간결하고 쉬운 편입니다. 메모리를 관리하기 수월해 공간적으로도 효율적이며 다른 언어에 비해 상당히 빠른 속도를 구현하기도 합니다. "C언어는 여자친구 말고는 다 만들 수 있다 "고 불릴 정도로 웬만한 것들은 다 구현 가능 하며 많은 언어들이 C를 기반으로 만들어지기도 했습니다.

하지만 이렇게 만능으로 불리는 언어답게 상당히 구체적인 구현을 요구합니다. 실수인지, 정수인지, 그리고 얼마만큼의 메모리 크기가 필요한지 등 하나 하나 설정을 해줘야 하며 미묘한 실수에도 가 나기 일수입니다.

C언어는 이런 분들에게 권장합니다

- 시간이 많이 걸리더라도 기초적인 프로그래밍의 구조, 논리부터 차근차근 밟고 올라가고 싶다
- 다양한 분야에서 활용되는 프로그래밍 언어를 배우고 싶다
- 가장 빠르고 가장 강력한 프로그램을 만들고 싶다!

일반적으로 C 언어를 배우는 첫 번째 순서는 마이크로소프트에서 배포하고 있는 Visual studio를 설치하는 것입니다. https://www.visualstudio.com/downloads/download-visual-studio-vs 에 들어가 Visual Studio 2013에서 community 2013을 다운받으면 됩니다. 기업에서 사용하는 것이 아니라면 1개월의 평가판을 사용한 뒤에도 로그인 후 무료로 사용할 수 있습니다.


 

 

JAVA

JAVA는 C언어와 많은 부분이 유사합니다. 다만 포인터, 구조체, 헤더파일 등 복잡한 기능은 제외한 언어입니다. 흔히 JAVA는 객체지향 언어라고 말하는데 입문자가 이해하기엔 다소 난해한 개념입니다. 쉽게 말하면 C언어보다 하나하나 분해해서 설계하기에 용이합니다. 사람을 설계한다고 했을 때, JAVA는 사람을 머리-배-손-다리, 손을 손가락-손목-손톱 식으로 하나 하나 분해하여 설계하기가 쉽습니다. 따라서 다수의 사람들이 한 프로그램을 설계할 때에도 JAVA는 큰 효과를 발휘합니다.

하지만 그보다도 JAVA가 많이 쓰이는 이유는 바로 JAVA는 다양한 분야로 확장이 가능하다는 점입니다. 특히 안드로이드 어플리케이션 개발이나 웹 페이지를 프로그래밍 하는데 있어서 상당히 유용해 많은 사람들이 사용하고 있습니다. 따라서 실용적인 언어라고 할 수 있지만 난이도는 여전히 어려운 언어입니다. 

JAVA는 이런 분들에게 권장합니다

- 어플리케이션이나 웹 페이지 개발을 목적으로 하시는 분
- C 언어처럼 기초를 먼저 차근차근 쌓고 싶으신 분

JAVA는 http://www.oracle.com 에서 Downloads-> JAVA SE->Java SE Development Kit 8 Downloads -> Windows [사양 선택] 으로 기본 플랫폼을 설치할 수 있고, 이후 eclipse 등의 소프트웨어를 사용하여 코딩할 수 있습니다. 이 과정은 이 페이지에 다 담기에는 다소 복잡하여, 네이버나 구글 등에 java 설치를 검색하여 참고할 수 있습니다.

 

Python

이번 프로그래밍 언어는 최근 가장 각광받는 언어 중 하나인 파이썬입니다. 파이썬이 위의 두 언어와 다른 차이점은 코딩을 다 완성하고 나서 실행하는 것이 아니라 한 줄, 한 줄 따로 실행이 가능하다는 점입니다. 그렇기 때문에 생각하는대로 프로그래밍을 하고 바로바로 확인할 수가 있습니다. 또한 문법이 다른 언어에 비해 쉽습니다. 그렇기 때문에 초보자들이 익히기에 가장 쉬운 프로그래밍 언어라고 할 수 있습니다.

단점이라면 C언어처럼 시스템 프로그래밍이나 하드웨어 제어, 복잡한 프로그래밍에는 적합하지 않다는 것입니다. 또한 너무도 쉽게 코딩이 가능하도록 만들어진 만큼 차후 필수적으로 고려해야 할 메모리, 속도, 코딩의 기본 구조 등을 소홀히 하기가 쉽습니다. 하지만 어떤 초보자도 직관적으로 이해하기 쉽게 프로그래밍을 배울 수 있다는 점은 충분히 큰 매력으로 작용합니다.

파이썬은 이런 분들에게 권장합니다

- 프로그래밍이 처음으로, 일단 맛을 보고 싶으신 분
- 프로그래밍의 논리를 익혀보고 싶으신 분
- 굳이 속도나 메모리를 고려하지 않아도 될 만큼 복잡한 코딩이 필요 없는 분

설치는 http://python.org 에 들어가 Downloads에서 2.7버전 또는 3.4 버전을 받으시면 끝입니다. 다른 언어에 비해 상당히 쉽죠?

 

R

마지막으로 소개드릴 언어는 R입니다. R은 위의 파이썬과 상당히 유사한 언어입니다. 차이점이라면 통계에 특화되어 있고 요즘 뜨고 있는 ‘빅데이터 기술’을 배우는데 있어 적합한 언어라는 점입니다. 그래프를 표현하는 데에도 좋은 함수들이 많아 시각적인 표현이 필요할 경우 사용하시면 좋습니다. 또한 R은 다른 사용자들이 짠 코드를 쉽게 불러올 수 있어 통계적인 프로그래밍의 경우 정말 쉽게 코딩이 가능합니다.

단점은 파이썬과 같습니다. 거기에 더해서, R은 기본적으로 프로그램을 만들기 위한 언어가 아니며 다른 언어에 비해 속도가 느리다는 단점을 가집니다. 하지만 쉽고 실생활에서도 적용할 데가 많아 다양한 분야에서 쓰이고 있습니다.

R은 이런 분들에게 추천합니다

- 통계를 다루시는 분
- 실생활의 데이터를 분석하고 싶으신 분 
- 굳이 프로그램을 만들 필요는 없으신 분

 



R은 난이도에 비해 상당히 실용적입니다. 카톡방의 채팅 내용도 쉽게 분석이 가능합니다.

설치는 파이썬처럼 다소 쉬운 편입니다. http://cran.nexr.com/ 에서 각 사양에 맞는 프로그램을 선택해 설치하시면 됩니다. R에 대한 정보는 이전기사 빅데이터와 R프로그래밍의 만남, R 유저 컨퍼런스 에서 확인할 수 있습니다.

 

 


화면에 "hello world"을 출력하는 간단한 코드임에도 불구하고 각각 조금씩 다른 형식을 취한다.
언어는 왼쪽 위부터 시계방향으로 C, Java, Python, R.

 

입문용 프로그래밍 언어를 선택하다! 그 다음은?


예전에 비해 프로그래밍을 배우는 과정은 상당히 다양해졌습니다. 예전에는 학원을 다니거나 책을 통해 익힐 수밖에 없었지만, 이제는 동영상을 통해서도 익힐 수 있고 심지어는 웹페이지에서 코딩을 하고 정답을 체크해볼 수도 있습니다. 웹사이트  생활코딩(https://opentutorials.org/course/1)에서는 Java를 비롯한 다양한 언어에 대한 동영상 강의를 제공하고 있습니다. 해외 사이트 코드카데미(http://codeacademy.com)에서도 Python과 여러 다양한 언어의 코딩을 제공하고 있는데, 직접 웹페이지에서 코딩을 구현하여 정답을 확인하게 됩니다. 




생활코딩(https://opentutorials.org/course/1)                   코드카데미(http://codeacademy.com)


지금까지 4개의 프로그래밍 언어를 살펴보았는데, 사실 어느 것이 절대적으로 우세하다 하는 것은 없습니다. 다들 각각의 장단점을 가지고 있고, 각자의 사정에 맞게 취하면 되는 것이지요. 하지만 프로그래밍을 시작할 때 가장 중요한 것이 있습니다. 그건 바로 프로그래밍이란 컴퓨터와, 다른 프로그래머와 상호작용하는 하나의 언어라는 점입니다. 언어이기에 철학이 있고, 적절한 구조가 존재합니다. 혼자만 알아볼 수 있는 코드는 언젠가는 한계에 부딪히기 마련입니다. 그렇기 때문에 항상 다른 사람들과 상호작용하는 것이 중요하며, 코드를 단순한 도구로 보지 않는 사고도 중요합니다.

또한 프로그래밍 언어는 수리적, 논리적 과정을 중요시 합니다. 작은 하나의 문제도 짜는 사람에 따라 10줄에 끝날수도, 100줄에 끝날수도 있는 것이 바로 프로그래밍입니다. 그만큼 단순히 손으로만 짜는게 아닌 머리로 생각하며 짜는 것이 중요합니다. 이는 연습을 통해 획득할 수밖에 없는 것이며 연습에는 왕도가 없습니다. 이 과정에서 많은 입문자들이 포기하고는 합니다. 하지만 이를 참아내고 자신만의 함수를 구현해보고, 소스를 구현해봤을 때의 기쁨을 겪어본다면 지금까지의 노력이 값진 결과를 내고 있는 걸 확인할 수 있을 것입니다.

 

ICT 스타트업 창업자가 바라본 프로그래밍


이 기사를 적고 있을 즈음 (주)비전웍스(Vision Works)의 김민표 대표(kmp@govw.co.kr)님을 우연한 기회에 뵙게 되었습니다. 비전웍스는 사회문제해결을 위한 지러닝 G-Learning(Game Based Learning) 기반 ICT융합 콘텐츠를 개발하는 소셜벤처입니다. 대부분의 직원이 문과계 출신임에도 불구하고 현재 ICT 콘텐츠로 큰 두각을 드러내고 있고, 이러한 사례는 창업을 생각하는 분들에게 큰 도움이 될 거라 생각했습니다. 그럼 김민표 대표님의 인터뷰를 들 프로그래밍에 대해 좀 더 빠져들어볼까요?

1. 간단한 자기소개를 해주실 수 있나요?  


안녕하세요. ‘게이미피케이션(Gamification)’을 통해 사회와 소통하는 기업 (주)비전웍스(Vision Works)의 대표를 맡고 있는 김민표입니다. 비전웍스는 사회문제해결을 위한 지러닝 G

-Learning(Game Based Learning) 기반 ICT융합 콘텐츠를 개발하는 소셜벤처입니다. 저는 기능성 게임 기획 및 책임개발자로 활동 중이며, 저와 같은 스타트업 및 소셜벤처 창업자를 위한 창업교육에 관심을 갖고 비즈니스 교육 게임도 개발하고 있습니다


 
특히 린 분석(Lean Analytics)에 기초한 비즈니스 크레이에티브 툴킷(Business Creative Tookit)을 개발하여 기업가정신 및 창업교육 등에 활용하고 있으며, 지난 해 컨설턴트 분들과 함께 『사회적 기업을 어떻게 경영할 것인가』 (아르케 : 2014)의 저자로 참여하였고, 최근 게이미피케이션과 기능성 게임 교육을 주제로 한 책을 준비 중에 있습니다.Learning(Game Based Learning) 기반 ICT융합 콘텐츠를 개발하는 소셜벤처입니다. 저는 기능성 게임 기획 및 책임개발자로 활동 중이며, 저와 같은 스타트업 및 소셜벤처 창업자를 위한 창업교육에 관심을 갖고 비즈니스 교육 게임도 개발하고 있습니다.

2. 혹시 프로그래밍을 접하게 되면서 어려움을 겪은 것이 있으신가요? 혹시 있다면 그것을 어떻게 극복하셨나요?

 프로그래밍은 곧 언어를 배우는 것이라고 생각합니다. 언어를 배우기 위해서는 좋은 교과서와 반복적인 언어의 사용 즉 예제를 연습하고 코딩을 게을리 하지 않는 것이 실력을 늘리는 길이라 생각합니다. 하지만 너무나 많은 프로그래밍 언어와 빠르게 변화하는 IT 환경 속에서 나에게 가장 적합한 언어가 무엇인지 그리고 어떻게 공부를 효과적으로 할 수 있을지에 대한 가이드라인을 찾기가 매우 어려웠습니다. 인터넷을 뒤져도 ‘취업이 잘되는 코딩교육’ 이라는 아이러니한 홍보성 글이 올라올 뿐, 큰 도움이 되지 못하였습니다. 몇 몇의 현업 개발자를 만나 조언을 구하였습니다만, 개발자 마다 프로그래밍 방식이 다르다 보니 오히려 혼란만 늘더군요. 오랜 시간 동안 공부해야 하는 ‘정답이 없는 개발자의 길’ 을 포기하라는 의견이 다수였습니다. 
 하지만 포기하기에는 이르다 생각하였기에 거금을 들여 모 기관에서 운영하는 앱 개발자 과정을 이수한 것이 계기가 되어 지금은 개발 방향을 잡고 조금씩 부족한 부분을 채우고 있습니다. 최근에는 파이썬과 장고를 비롯하여 진행 중인 웹/앱 개발을 위한 다양한 프로그래밍 언어를 공부 중에 있습니다.

3. 전공자가 아닌, 프로그래밍을 처음 시작하시는 사람에게 하고 싶은 조언이 있으신가요?

 5년 전 쯤 IT 분야 모 글로벌 기업의 부사장님으로부터 멘토링을 받던 중, ‘자네는 문과 출신이고 개발자가 아닌데 왜 이 사업을 하려고 하는가? 자네가 개발자 아니고서야 결코 이 분야에서 성공할 수 없다네. 최소 이 분야의 전문서적 수 십 여권을 독파하고 흐름이라도 알아야 하지 않겠나.’ 라며 호되게 질책을 받은 적이 있습니다. 말씀인즉 내부 개발자가 있거나 혹은 외주개발 위탁을 하더라도 창업팀의 대표가 개발에 대한 이해가 전무하다면 콘텐츠 기획과 프로젝트 관리에 있어 부실해 질 수 있음을 경고해 주신 이야기였습니다. 
 저는 5년이 지나서야 비로소 실천에 옮기게 되었는데 혹시 지금 이 글을 읽고 있는 분 중 비전공자로 IT분야 창업을 준비 중에 있다면 지금 실천에 옮기시길 바랍니다. 그리고 최근에는 비전공자를 위한 다양한 교육 기회가 많고 독학을 위한 많은 서적이 출간되어 있기에 지금 프로그래밍을 시작하여도 절대 늦지 않습니다. 무엇보다 낮에는 사업을 준비하고 밤에는 프로그래밍 언어와 사투를 벌이는 모험이 가득 한 흥미진진한 일상을 즐기시길 한번 쯤 권해봅니다.   (사진출처 : 국가경영전략연구원)


  글은 '통계청블로그기자단' 기사로 통계청의 공식입장과 관계가 없습니다.

 

신고
트랙백 TRACKBACK :0 개, 댓글 7 개가 달렸습니다.
  • BlogIcon 움바 2016.06.01 11:41 신고 ADDR EDIT/DEL REPLY

    좋은글 잘 읽었습니다.

  • 파랑새 2016.06.14 08:36 신고 ADDR EDIT/DEL REPLY

    컴퓨터 언어를 배우보고자 정보를 모으고 있습니다.
    유익하고 참고가 되는 내용 감사합니다.

  • 후니훈 2016.06.14 12:21 신고 ADDR EDIT/DEL REPLY

    용훈님 감사해요

  • 노네임 2016.07.11 17:03 신고 ADDR EDIT/DEL REPLY

    좋은글 잘보고갑니다^^

  • BlogIcon 쏘매기 2016.09.01 17:21 신고 ADDR EDIT/DEL REPLY

    내용이 너무 좋아서 개인 블로그에 공유해갈게요! 감사합니다!

  • Nerd Pride 2017.01.07 00:10 신고 ADDR EDIT/DEL REPLY

    감사합니다. 공유할게요 :)

  • 긍정 2017.06.15 14:24 신고 ADDR EDIT/DEL REPLY

    좋은 글 잘 읽었습니다 :)


빅데이터와 R프로그래밍의 만남, R 유저 컨퍼런스(R User Conference)를 다녀오다


최근 IT계의 가장 큰 화두는 빅데이터입니다. 2011년 즈음부터 쓰이기 시작한 빅데이터라는 용어는 어느새 사회 전반에서도 자주 쓰이고 있으며, 예능에서조차 심심치 않게 발견되고는 합니다. 그리고 빅데이터가 부상하며 함께 떠오른 언어가 있으니, 영어도 아닌 한글도 아닌 그 언어는 바로 프로그래밍 언어인 “R”입니다.


본래 수학적, 통계적 수단으로서 좁은 범위에서 쓰이던 R은 빅데이터 하면 빼놓을 수 없는 프로그래밍 언어가 되었고, 빅데이터를 활용함에 있어 무척 유용한 수단이 되었습니다.


지난 6월 세종대학교에서는 R 유저들이 모여 지식을 공유하는 R 유저 컨퍼런스(R User Conference)가 열렸고, 그 열기는 어느 때보다도 뜨거웠습니다. 통계청 기자단으로서 통계의 마지막 끝판왕이라 할 수 있는 빅데이터를 좀 더 깊게 들여다보고, 프로그래밍 언어 R과 이 둘의 만남인 R 유저 컨퍼런스에 다녀온 일을 이번 기사를 통해 전해드리도록 하겠습니다.


빅데이터 시대의 도래


빅데이터는 보통 대량의(Volume), 다양한(Variety), 빠른 속도로 생성되는(Velocity) 데이터를 뜻합니다. 2011년 즈음부터 본격적으로 쓰이기 시작한 이 용어의 등장엔 구글의 역할이 무척 컸습니다. 구글은 독감 검색 데이터를 분석하여 미국 보건 당국보다 2주 앞서 독감을 예측하는데 성공했고, 이러한 소식은 세계 곳곳에 빠르게 퍼져나갔습니다. 빅데이터의 위력을 실감한 여러 기업과 정부부처들은 앞 다투어 빅데이터 분야를 연구하고, 기존의 기술을 개선하여, 다양한 성과를 내게 됩니다.


우리나라 또한 삼성, LG, 포스코 등 내로라하는 기업들이 데이터 센터를 구축하며 빅데이터 시대를 맞이하고 있습니다. 이들은 SNS 데이터를 획득하여 자사 제품의 불만이나 문제점을 파악하거나, 생산 로그 분석을 통해 생산 공정의 문제점을 실시간으로 파악하는 등 다양하게 빅데이터를 이용하고 있습니다. 심지어 TV 뉴스나 예능에서도 빅데이터를 확용하는 모습이 점차 많아지고 있는데, MBC의 무한도전은 SNS 분석을 통해 식스맨 후보를 선정하기도 했습니다. 



(출처 : MBC 무한도전)


7월 3일 하루동안 빅데이터를 언급한 뉴스는 네이버 기준 192개나 되며, 이러한 열기는 당분간 식지 않을 것처럼 보입니다. 더군다나 사물인터넷의 등장은 빅데이터 시장을 더욱 더 뜨겁게 만들어주었습니다. 시계, 안경, 신발 등 우리가 주변에서 볼 수 있는 사물에 인터넷을 연동한다는 사물인터넷(IOT)은 사용자에 대한 데이터를 축적시켜나갈 것이기에 빅데이터와 곧잘 연관되고는 합니다. 예를 들어 인터넷이 연동된 신발이 제 이동 패턴을 분석한다면 기업은 이를 활용하여 제가 자주 가는 거리에 있는 상점의 쿠폰을 발행해 줄 수 있습니다


하지만 이러한 빅데이터 열풍에는 회의론적 시각도 존재하는데요, 사실 빅데이터는 기존에 존재하던 데이터마이닝 기술에 ‘빅’ 자만 붙였을 뿐 원래 존재하던 기술이었다는 주장도 많고, 현재 말하는 빅데이터 기술이 실제로 실효성 있게 쓰이고 있는가도 여전한 논란거리입니다. 금융권에서 활발하게 빅데이터 기술을 사용하는 곳 중 한 곳인 현대카드의 정태영 부사장은 작년 “빅데이터는 그럴 듯 해 보이나 실체는 없다”는 빅데이터 무용론을 내놓기도 하였습니다.

 

데이터와 통계의 마술사 R

R은 통계 계산과 시각화에 특화된 프로그래밍 언어입니다. 빅데이터가 뜨기 전만 해도 수학과나 통계학과 등 소수의 이용자들 사이에서 이용되던 R은 최근 어떤 언어보다도 HOT한 프로그래밍 언어가 되었습니다. R의 가장 큰 특징은 C나 자바같은 프로그래밍 언어보다 사용하기도, 접근하기도 쉽다는 것과 오픈소스라 무료로 사용할 수 있다는 점입니다. 또한 패키지를 통해 타 사용자가 짜 놓은 소스를 손쉽게 사용할 수 있습니다. 그렇기 때문에 초보자부터 전문가, 그리고 기업들까지도 R을 사용하는 빈도가 높아지고 있는 추세입니다.



'R 프로그래밍'에 대한 네이버 검색량. 2013년을 기점으로 R을 찾는 사람들이 늘어나는 추세이다

R을 사용하기 위해서는 소프트웨어만 설치하면 됩니다. http://cran.nexr.com/ 에서 무료로 배포하고 있는 소프트웨어를 깔고, 실행을 하면 바로 코드를 입력할 수 있는 창이 뜨게 됩니다. 여기서 원하는 패키지나 함수를 입력하여 사용하시면 되는데, 사실 흔히 쓰이는 워드클라우드같은 경우 정말로 하나하나 이해하며 접근하려면 다소 많은 시간이 걸릴 수도 있지만, 남들이 짜놓은 코드를 참고한다면 하루 이틀 사이에도 작성이 가능합니다. 요즘은 네이버나 다음에서도 쉽게 코드를 구할 수 있고, 시중에도 많은 책이 나와 있으므로 이를 조금만 참고하시면 남 부끄럽지 않은 결과를 만들 수 있습니다.



이전 기사 21세기의 가장 섹시한 직업, '데이터 사이언티스트'에서 만든 통계청 블로그의 워드클라우드

 

R User Conference 2015


2015년 6월 26일 세종대에서는 R 유저들이 모여 지식을 공유하는 'R User Conference 2015'가 열렸습니다. 데이터 사이언티스트를 꿈꾸는 학생들부터 기업에서 실제로 데이터를 다루고 있는 여러 전문가, 그리고 교수분들이 모여 지식을 나눌 수 있던 이 자리는 빅데이터를 주제로 강연이 이뤄지는 1부와 R의 다양한 활용을 이야기한 2부로 나뉘어 진행됐습니다. 사람들이 메고 있는 명찰에는 우리나라 모든 대학교와 기업이 다 모인 듯 다양한 사람들이 참가하였고, 모두 하나라도 놓치지 않겠다는 듯 배움에 임했습니다.


1부 : 데이터 분석의 철학, 그리고 기업에서의 데이터 사이언스


첫 강연은 고려대학교 통계학과의 허명회 교수님이 맡았습니다. 데이터 분석에 있어 가져야 하는 철학과, 빠지기 쉬운 함정들을 설명했습니다. 데이터 분석은 데이터 자체를 탐구하는 EDA(Exploratory Data Analysis)와 가설을 세우고 실험을 통해 가설을 확인하는 CDA(Confirmatory Data Analysis)로 나뉘는데, 이를 혼동하지 않고 분석해야 한다고 말씀했습니다. 예를 들면, 빅데이터는 보통 현재 존재하는 무수한 데이터에서 의미를 찾아내는 EDA인데, 단순히 여기서 그치지 않고 실험을 세워 데이터를 수집하여 가설을 검정해 그 의미를 과학으로 끄집어내는 CDA를 실시해야 합니다. 이는 과학으로 인정받기 위해서는 반드시 다음에도 똑같이 일어난다는 재현성이 존재해야 하기 때문입니다. 또한 모델을 세울 때에는 모델은 현실을 모방한 가짜라는 것을 명심해야 하고, 연관성과 인과성을 헷갈리지 않는 등의 실수를 범해서는 안된다고 말씀했습니다.



데이터 분석의 철학과 과학성을 강의하신 고려대학교 허명회 교수님


SKT 빅데이터 인사이트 팀의 정도희 팀장은 실제 기업에서의 데이터 사이언스와 그 현실을 적나라하게 보여줬습니다. 대부분이 오프더레코드의, 여기 기사에서 보이기엔 위험해 보이는 말이 많았는데, 인상깊던 부분을 몇 가지 적어보면 우선 최근의 빅데이터 붐의 이유를 빅데이터라는 용어 그 자체에서 찾아내었습니다. 모호하면서도 있어보이는 ‘빅데이터’라는 용어가 여기저기 쓰이기 시작하며 다른 기업이나 국가도 기술을 도입하기 시작했다는 말이었는데요, 그만큼 용어 자체에는 다소 회의적인 모습을 보이셨습니다. 과거 IT 붐 당시 '인터넷'이라는 단어가 여기저기 뜬금없이 쓰이던 것처럼 빅데이터도 모호한 의미로 여기저기 쓰이고 있다는 말이었습니다. 


그러나 빅데이터가 아무리 거품이고, 허구라고 하더라도 이러한 기술 트렌드는 결과적으로 ‘데이터’가 더 이상 버려지지 않고 저장되게 하였으며 ‘데이터 분석 기술’이 발전하게 되는 현상을 낳았습니다. 그렇기 때문에 접시가 준비가 되지 않았을 뿐, 접시만 준비되면 매우 빠른 속도의 혁신이 가능한 토대가 마련되어 있습니다. 기업들이 그저 트렌드를 따라 빅데이터를 도입하고, 생각보다 별로인 결과에 실망하지만 매일의 일상 속에서 반복되는 끊임없는 개선은 언젠가 커다란 혁신으로 바뀌고, 새로운 세상을 열어가는 토대가 된다는 것입니다. 마지막으로 데이터 분석의 목적에 대해 말씀하였는데, 데이터 사이언스의 역할은 현장에 인사이트를 제공해주는 것입니다. 그렇기에 데이터 사이언스는 기업의, 사회의 변화를 위한 뿌리가 되며, 데이터 사이언티스트를 꿈꾸는 학생, 그리고 현업에 뛰는 분들이 성공을 해야 세상이 바뀔 수 있다는 말씀은 상당히 깊은 인상을 남겼습니다.



SKT의 정도희 팀장은 직관적인 언어로 실제 빅데이터 현실에 대해 재밌는 발표를 진행하였다  

 

2부 : R의 다양한 활용


2부에서는 R이 어떻게 활용될 수 있는지를 여러 전문가 분들께서 설명을 하였습니다. 총 9개의 섹션에서 R의 다양한 활용방법들을 배울 수 있었는데, 공간과 시간의 제약 상 모두 듣지 못한 것은 다소 아쉬운 부분이었습니다. 이번 기사에서는 섹션 중 두 가지인 '분석플랫폼으로서의 클라우드와 R, 그리고 machine learning'과 '뉴럴 네트워크의 변천사를 통해 바라본 R에서 딥 뉴럴 네트워크 활용'을 다뤄보도록 하겠습니다.


우선 윈도우로 유명한 MS(마이크로 소프트)는 이번 컨퍼런스에서 상당히 자주 모습을 드러냈는데, MS가 얼마나 빅데이터와 데이터 사이언스에 관심이 많은지 볼 수 있는 대목입니다. 최근 R 사용화 버전 판매 및 데이터 컨설팅 업체인 레볼루션 R을 인수한 MS는 다양한 서비스를 제공하고 있습니다. 대표적인 서비스로 데이터 분석과 시각화를 프로그램을 설치하지 않고 단순히 MS의 웹 페이지에서 수행할 수 있는 클라우딩 서비스 MS azure가 있는데, 이는 개인 컴퓨터에서 프로그램을 돌리는게 아니라 웹을 통해 MS의 중앙 컴퓨터에 접속해 별도의 설치 없이 분석을 가능하게 해주는 서비스입니다. 또한, 기존에 코딩을 통해서 가능하던 다양한 작업을 간단한 조작으로도 가능하게 지원하고, R을 연동하여 직접 코딩 또한 할 수 있도록 여러 기능을 지원하고 있었습니다. 데이터 분석을 좀 더 손쉽게 지원해주는 기능은 SAS, SPSS의 최신 버전에서도 봐왔기에 그리 놀랍진 않았지만, 설치 없이 실행 가능한 클라우딩 서비스에는 세상이 변하고 있다는 것을 느꼈습니다.



모바일 폰을 갖고 슈퍼컴퓨터를 통제하며 작업을 하는 날이 코 앞으로 다가왔다
(출처 : 마이크로 소프트) 

포스코 ICT의 이태영님은 현재 다양한 영역에서 쓰이고 있는 딥러닝의 원조격인 인공신경망에 대해 강의하였습니다. 인공신경망은 시냅스-수상돌기 등을 통해 생물의 신경세포가 작동하는 것을 모방하여 알고리즘을 만들어놓은 것입니다. 입력 뉴런과 출력 뉴런이 있고, 중간에 수많은 히든 뉴런이 존재하여, 그 사이에서 데이터를 조정하며 가중치 값을 만들어내 계산을 해나가는 방식입니다.


우선 이를 설명하기 앞서 머신 러닝에 대해 알아보겠습니다. 머신 러닝이란 컴퓨터에게 학습 데이터를 주어 학습을 시켜, 우리가 어떤 데이터를 줬을 때 학습 모델을 바탕으로 결과를 내도록 하는 것을 일컫습니다. 예를 들어 X=1,2,3,...,10, Y=1,4,9,...,100 인 데이터를 학습시켰다면 컴퓨터에게 X= 100을 주었을 때 Y=10000이 나오게 하는 것입니다.


인공신경망은 머신러닝을 통해 수많은 데이터를 학습해 패턴을 찾아내는 모델을 만들고, 내부 뉴런 간의 가중치를 설정합니다. 이러한 인공신경망은 블랙박스라 하여, 중간의 계산 과정이 복잡하여 추론 과정을 이해하기가 힘들다는 단점도 갖고 있습니다. 그렇게 모델을 만들고 Input 값을 집어넣으면, 학습한 모델을 토대로 Output을 만들게 됩니다. 아래는 이를 활용한 예제입니다. R을 설치했다면, 다음 코드를 복사, 붙여넣기 하여 테스트를 해볼 수 있습니다.


install.packages("neuralnet")  # 인공신경망 패키지 설치
library(neuralnet) # 패키지 불러오기
traininginput <-  as.data.frame(runif(50, min=0, max=100))
trainingoutput <- sqrt(traininginput) # 학습 데이터 생성
trainingdata <- cbind(traininginput,trainingoutput)
colnames(trainingdata) <- c("Input","Output")
trainingdata[1:3,] # 학습 데이터 확인
net.sqrt <- neuralnet(Output~Input,trainingdata, hidden=3, threshold=0.01) # 모델 만들기
print(net.sqrt)
plot(net.sqrt) # 모델 확인
testdata <- as.data.frame((1:10)^2) # 테스트 데이터 만들기
net.results <- compute(net.sqrt, testdata) # 테스트 데이터 계산
print(net.results$net.result) # 테스트 데이터 결과
cleanoutput <- cbind(testdata,sqrt(testdata),
                     as.data.frame(net.results$net.result))
colnames(cleanoutput) <- c("Input","Expected Output","Neural Net Output")
print(cleanoutput) # 실제 데이터와 테스트 데이터 비교

 



인공신경망은 좌측의 그림과 같은 모양을 띄고 있습니다. 내부의 hidden 뉴런은 가중치 값을 통해 Input 값을 Output 값으로 바꿔냅니다. 우측은 1부터 100까지의 숫자에 루트를 씌운 값을 신경망을 통해 예측한 결과입니다. 다소 오차가 있긴 하지만 실제와 비슷한 값을 예측해낸 것을 알 수 있습니다. 현재 이 기술은 수많은 발전을 거듭하여 '딥 러닝'기술로 이어졌고, 이는 페이스북의 얼굴 인식 등에서 활용되고 있습니다. 


빅데이터의 시대, 그 미래는?

빅데이터가 과연 많은 언론 매체의 보도처럼 만능의 기술인지에 대해서는 수많은 회의론이 존재합니다. 페이스 북의 빅데이터 분석 강의 공고에서 "현장에서는 보이지도 않던 전문가들이 대체 어디서 생겨났는지 모르겠다"라는 댓글을 본 적도 있습니다. 사실 지금 이 글을 쓰는 저조차 빅데이터라는 단어에 다소 거부감을 느끼고, 오히려 데이터 마이닝이나 데이터 분석 등 다른 용어를 사용하고는 합니다. 하지만 우리가 알아야 하는 것은, 이제 빅데이터라는 단어가 나온지 5년이 채 되지 않았다는 사실입니다. 그리고 아무리 빅데이터 기술의 효용성을 의심한다 해도 결국 데이터는 남았습니다. 그리고 가장 중요한 사람도 남았습니다.


이번 R 유저 컨퍼런스를 다녀오고 느낀 점이 있다면 새로운 지식을 배우고자 노력하는 사람들이 무척이나 많다는 사실입니다. 성별직업, 나이 상관없이 지식을 공유하고자 수백 명이 한 자리에 모여 학습하는 모습은 저도 더욱 열심히 노력해야겠다는 교훈을 남겼습니다. 그리고 한편으로는 이렇게 열정적인 사람들이 많다면 빅데이터의 미래도 역시 밝을 것이라는 생각을 가질 수 있었습니다. 제가 데이터 마이닝을 접하고 배우게 된지 이제 2년이 되어가는데 그 2년간 상당히 많은 변화가 있었습니다. 당시에는 R을 검색해도 쓸만한 정보가 거의 나오지 않았고 R과 관련된 한글 책도 몇 권 안되었지만, 이제는 책을 사지 않고 블로그만 봐도 공부가 가능한 정도가 되었습니다. 사람들은 단순히 정보를 습득하는 것에 그치지 않고 다른 사람들과 공유하고, 토의하며 새로운 시대를 맞이할 준비를 해나가고 있습니다. 그렇기에 빅데이터의 시대, 또는 빅데이터가 만들어낼 또다 른 시대는 분명 우리 삶을 더욱 윤택하게 만들어줄 것입니다.  





  글은 '통계청블로그기자단' 기사로 통계청의 공식입장과 관계가 없습니다.



통계청에서 2015년 생활 속 통계 활용 수기공모전을 진행하고 있습니다. 

관심있는 여러분들의 많은 참여 기다리겠습니다.   

신고
트랙백 TRACKBACK :0 개, 댓글 4 개가 달렸습니다.
  • BlogIcon 7기 박효진 2015.07.06 00:41 신고 ADDR EDIT/DEL REPLY

    마지막에 윤택 융택으로 오타 났어요~!

    • BlogIcon 7기 이용훈 2015.07.06 12:47 신고 EDIT/DEL

      고맙고맙 ㅋㅋ 오늘 다시읽으니 다듬을 부분이 많다

  • BlogIcon 이권식 2015.07.07 00:46 신고 ADDR EDIT/DEL REPLY

    저번에 한국은행에서 연세대학교 통계학과 교수님의 빅데이터 강의를 들었었는데 ㅎㅎㅎ
    그 분은 빅데이터에 대해 너무 낙관적이고, 긍정적으로만 생각하는 것 같다고 우려의 목소리를 표명해주셨어요

    • BlogIcon 이권식 2015.07.07 00:47 신고 EDIT/DEL

      단순히 데이터 마이닝에서 그치는 것에서만 그치기에, 이를 보다 유용하게 해석하기 위해선 각 분야의 융합이 필요하며, 특히 통계학을 배울 것을 강조해주셨네요 ㅋㅋㅋㅋ


티스토리 툴바