[5호]보기 좋은 코딩 환경이 쓰기도 좋다

Original article was published by Suyeon Park on Artificial Intelligence on Medium


인문학적 시선으로 인공지능 파헤치기-04

과거의 문학도이자 현재의 공학도, 그리고 아티스트인 한 사람이 인공지능에 대해 알려주는 글을 연재한다. 전문용어의 단순한 나열이 아닌, 사람들의 공감을 불러일으키는 방향으로. 언제나 그랬듯, 지능의 발달은 공감에서 출발하기 때문.

파라사우롤로푸스와 무구정광대다라니경

이 두 이름을 외운 적이 있는가? 필자처럼 어릴 적에 책을 끼고 살았다면 큰 어려움 없이 외웠으리라. 초등학교 저학년이던 2000년대 초반 당시에는 공룡들의 이름을 외우는 것을 자랑스럽게 여겼고, 학교에 등교하면 이 의자에서 저 의자로 건너뛰면서 다같이 공룡을 외쳐 불렀다. 물론 죽은 자는 말이 없었지만.

시간이 흘러 어느덧 대학생이 된 그 시절 초등생들은 전공 교재에 나오는 용어들을 외우느라 바쁘다. 서비스 블루프린트니 Introduction Set Architecture(ISA)니 다이아몬드 모델이니 시스템 클럭 같은 여러 단어들과 마주치다 보면, 어린 시절 긴 단어들은 어쩜 그렇게 빨리 외울 수 있었나 하는 혼돈에 휩싸인다.

사람의 뇌는 나이가 들수록 기억력이 감퇴하며 굳어진다고? 설령 그렇다고 해도 필자는 무수한 고령의 전문가들 덕분에 ‘나이에 따른 능력 퇴화설’을 믿지 않는다. 그래서 다른 방면으로 접근한 결과, 활자가 수두룩빽빽한 교재를 보며 한 가지 해답이 떠올랐다.

우리네 대학교재에는 ‘그림’이 없다.

그림책, 그리고 IPython

학습만화가 각광을 받았던 이유, 어린 시절 그 많은 지식들을 쉽게 머릿속에 저장할 수 있었던 이유는 ‘그림’ 덕분이라 믿어 의심치 않는다. 하지만 문자 언어보다 형상 언어를 깎아내리는 한국 풍토상, 학습 단계가 올라가면서 특정 개념에 연관된 그림을 만나기란 쉬운 일이 아니다. 조금씩 바뀌는 추세지만 아직 갈 길이 멀었다. 대학생, 특히 인문계 대학생일수록 ‘깜지’에 익숙하지만 전공 지식을 만화나 그림책으로 접하는 상상은 하지 못할 것이다.

사실 이 글도 활자가 너무 많다. 웹 특성상 어쩔 수 없다. 코드도 죄다 글이다. 그렇다면 프로그래밍을 하는 방법은 검은 화면에서 ‘남의 나라 언어’로 멍하니 키보드만 두들기는 길밖에 없을까?

우리가 다룰 파이썬의 경우, 천만다행히도 IPython이 존재한다.

image source: IPython webpage(https://ipython.org)

지금까지의 개발 환경과 사뭇 다른 모습이다. 파이썬 기본 인터프리터에서는 상상할 수 없는 그래프 기능과 다채로운 색깔까지 지원된다. 사진에는 나와 있지 않지만 만약 코드 실행 도중 에러가 발생했을 때 어디에서, 무슨 이유로 발생했는지도 자세히 알려 준다. 게다가 웹브라우저에서도 고난이도의 코딩을 할 수 있다.

IPython은 ‘대화형 파이썬(Interactive Python)’의 줄임말이다. 위에서 서술한 이유로 인해 데이터 사이언스 분야에서 각광받고 있으며, 프로그래밍 입문자가 친밀감을 느낄 수 있는 환경이라고 생각하기에 더욱 추천하고 싶다. 앞으로 설명할 개념들도 필자가 IPython 노트북 형태로 공개할 것이다. 독자들은 글을 읽고 나서 필자가 올린 링크를 눌러 설명에 사용된 코드들을 하나하나 직접 실행할 수 있다.

잠시만, 노트북 형태라고요?

그림책처럼 파이썬 읽기

image source: https://medium.com/@dinaelhanan/an-absolute-beginners-guide-to-google-colaboratory-d55c0eb375de

지난 포스팅을 봤다면 ‘주피터는 목성인데 왜 저기 있는지 모르겠다’는 표현을 기억할 것이다.

IPython 세계에서 ‘프로젝트 주피터(Project Jupyter)’는 프로그래밍 언어들을 웹사이트에서도 자유롭게 빌드할 수 있는 미래를 목표로 추진 중인 오픈소스 프로젝트다. ‘주피터랩(JupyterLab)’은 다양한 언어로 프로그래밍할 수 있도록 제공되는 ‘노트북 인터페이스’다.

주피터랩을 사용하기 위해서는 사용자가 컴퓨터에 이것저것 파일들을 설치해야 한다. 그래서 CLI에 어느 정도 익숙한 사람이 사용해야 큰 무리가 없다. 필자 같은 경우는 무턱대로 설치를 시도하다가 장장 6시간 동안 쉬지 않고 매달렸다. 독자 여러분은 이 고통을 겪지 않도록 훌륭한 도구를 소개하고자 한다. 상단의 사진 옆 ‘CO’가 그것이다.

이름하여 ‘구글 코랩(Google Colab, 또는 Colaboratory)’. 코랩은 컴퓨터에 아무런 파일을 설치하지 않아도, 파이썬이나 파이썬 패키지를 설치해 주지 않아도 사용할 수 있다. 대중교통에서 스마트폰으로 코랩 노트북에 접속해도 코드를 실행할 수 있다! 구글이 데이터 사이언티스트와 머신 러닝 엔지니어에게 놀이터를 제공한 셈이다. 따라서 사용자들은 코랩 노트북을 통해 진행 상황과 결과를 다른 사람들에게 편하게 공유할 수 있고 초보자들도 걱정 없이 코드를 공부할 수 있다.

필자가 위에서 언급한 ‘노트북 형태’는 바로 이것이며, 독자 여러분은 이 시리즈를 졸업한 후 자신만의 프로젝트를 실행할 때도 코랩을 든든한 지원군으로 옆에 둘 수 있으리라. 어떤가, 훌륭한 파이썬 그림책이 될 것 같지 않은가?

보기 좋은 떡이 먹기도 좋다

‘이상한 나라의 엘리스’에서 엘리스는 언니를 향해 쓴소리를 한다. 그림도 없는 책을 무슨 재미로 보냐고.

맞다. 그림은 죄가 없다. 태초의 의사소통은 소리와 몸짓, 그림으로 이루어졌지, 갑자기 글을 술술 쓰지 않았다. 배움의 과정에서 그림이 없다면 ‘나이가 들면서 집중력이 감퇴하여 기억력이 떨어지는 과정’을 자연스럽게 겪게 될 것이다. 글과 그림이라는 지식 습득의 양대산맥 중 한쪽의 길을 차단하기 때문이다.

다음 편부터 넘파이(Numpy)를 다룰 것이다. 사람들의 말에 휩쓸리지 말고 자유롭게 배우는 첫 걸음을 인공지능 학습에 적용해 보자.

글을 맺으며.

컴퓨터와 사용자 간 소통 방법은 시대가 흐르면서 끊임없이 발전했다. 배치 인터페이스(batch interface, 구멍이 뚫린 카드나 종이 테이프로 명령을 내리며 소통하던 방식)를 지나 명령줄 인터페이스(Command Line Interface, ‘터미널’을 통해 명령어를 입력하며 한 줄 한 줄 소통하던 방식)를 넘어, GUI(Graphic User Interface)가 자리잡은 지도 어느덧 20년이 넘었다. 휴대용 전자기기와 터치 스크린, 스마트 글래스와 스마트 워치, 스마트 의류 등으로 새로운 인터페이스가 요구되고 있다.

미래의 서비스 디자인 엔지니어이자 개발자인 사람이 되는 것을 꿈꾸며 한 마디 하고 싶다. 그 아이디어를 그림책에서 찾으면 어떨지?