신문은 선생님

[IT·AI·로봇] 컴퓨터와 대화하기… 기계가 이해하는 언어로 명령하죠

입력 : 2018.04.04 03:00

[코딩(Coding)]

오직 0과 1 조합만 알아듣는 컴퓨터… 인간이 대화 위해 '코딩' 만들었죠
기계어 거쳐 베이식·자바 등 개발… 요즘엔 레고 같은 '블록코딩' 유행

내년부터 우리나라 초·중학교에도 본격적인 '소프트웨어 교육'이 시작된다고 해요. 4차 산업혁명 시대를 앞두고 학생 스스로 문제를 발견하고 이를 논리적으로 해결하는 '컴퓨터적 사고력'을 기르는 것이 목적이라고 하는데요. 미국·핀란드·영국 등 선진국에서는 이미 학교에서 소프트웨어 교육을 통해 미래 인재를 길러내고 있답니다.

우리나라에선 이런 소프트웨어 교육을 일컬어 '코딩(Coding)'이라고 말해요. 오늘은 코딩이 무엇인지 알아볼게요.

◇프로그램을 짜는 '코딩'

먼저 코드(Code)란 '무엇인가를 입력한다'는 의미예요. 여기에서 '무엇'은 컴퓨터가 알아들을 수 있는 명령어를 말하지요. "프로그램을 말하는 건가?"라고 생각했다면 딱 맞습니다. 지금 어른 세대들이 처음 컴퓨터와 만났을 때는 소프트웨어를 만들 때 '프로그램을 짠다'고 이야기했어요. 이 말의 다른 표현이 '코딩'인 셈이지요.

[IT·AI·로봇] 컴퓨터와 대화하기… 기계가 이해하는 언어로 명령하죠
/그래픽=안병현
우리는 컴퓨터를 이용해 게임이나 인터넷 검색을 하고, 때로는 문서를 만들거나 그림을 그리기도 합니다. 그런데 사실 컴퓨터가 세상에 태어난 이유는 복잡한 수학 문제를 빠르게 계산하기 위해서였어요. 복잡한 문제라는 건 제2차 세계대전에서 미사일을 목적지까지 정확히 보낼 수 있는 힘과 각도를 찾아내는 것이었지요.

그렇다면 컴퓨터에 이런 복잡한 명령을 어떻게 알려줄 수 있을까요? 컴퓨터는 인간의 말을 전혀 알아듣지 못해요. 컴퓨터는 옛날에도 그랬고 지금도 그렇고 오직 숫자 0과 1밖에 모릅니다. 전기가 통하면 1, 통하지 않으면 0이라고 읽어내는 거지요. 그래서 인간의 말을 컴퓨터가 알아들을 수 있는 언어로 풀어서 알려주어야 했어요. 이것이 바로 '코딩'의 시작이에요.

초기 컴퓨터는 0과 1의 조합을 이용해 컴퓨터가 알아들을 수 있는 '특별한 명령어'를 만들었어요. 이때 쓰인 언어를 '기계가 알아듣는 말'이라고 해서 '기계어'라고 불러요. 기계어는 기다란 카드에 구멍을 뚫어서 표현했지요. 컴퓨터는 카드에 구멍이 있으면 0, 없으면 1이라고 받아들였어요. 이용자는 그 카드를 컴퓨터에 한 장 한 장 보여주어야 했기 때문에 카드가 수천 장 되는 경우도 많았어요.

이런 기계어는 사용하기가 매우 번거로웠답니다. 이용자가 정작 카드에 뚫린 구멍의 의미를 알아볼 수 없었고, 혹시라도 카드 순서가 바뀌기라도 하면 컴퓨터가 전혀 엉뚱하게 작동했지요. 그래서 전문가들은 컴퓨터에 사람이 쓰는 언어를 가르치기로 합니다. '포트란(Fortran)'이나 '코볼(Cobol)' '베이식(BASIC)' 같은 초기 컴퓨터 언어가 이렇게 탄생했어요.

이 언어들은 우리가 평소 쓰는 단어를 입력하면 컴퓨터가 그 명령을 따르도록 짜였어요. 다시 말해 키보드로 'PRINT(인쇄)'라고 입력하면 컴퓨터가 종이를 인쇄하도록 만든 것이지요. 이처럼 컴퓨터가 알아들을 수 있는 언어를 우리말과 비슷한 형태로 입력하고 이를 기계어로 번역해주는 것을 '컴파일(Compile)' 언어라고 해요. 이제 컴퓨터를 다루기 한결 쉬워진 거예요.

◇인간과 컴퓨터가 대화하다

인간과 컴퓨터가 직접 대화하기 시작하면서 컴퓨터의 활용성은 급격히 늘어났습니다. 미리 약속한 언어를 응용해서 컴퓨터에 적절히 명령을 내리면 우리가 좋아하는 게임이 되기도 하고, 파워포인트가 되기도 했거든요. 컴퓨터가 우리 삶을 바꾸어 놓은 것도 바로 이 '코딩(컴퓨터가 이해할 수 있는 언어로 프로그램 짜기)'을 통해 수많은 소프트웨어를 만들 수 있었기 때문이에요.

요즘엔 컴퓨터가 알아들을 수 있는 말이 아주 많답니다. 인간이 한국어·영어·일본어 등 수백 개 언어를 갖고 있는 것처럼, 컴퓨터 세상에도 다양한 언어가 있지요. 그리고 그 언어의 종류는 우리가 수많은 신조어와 유행어를 만들어내는 것처럼 아주 민감하게 바뀌어요. 물론 컴퓨터가 알아들을 수 있는 언어는 여전히 0과 1의 신호뿐이지만요.

컴파일 언어는 기계어보다 쉽긴 하지만, 우리가 짠 프로그램 결과물을 보려면 프로그램을 어느 정도 완성해야 했어요. 이런 불편함을 해결하기 위해 결과물을 바로바로 확인할 수 있는 '스크립트(Script) 언어'가 등장합니다. 지금 입력하고 있는 언어가 어떤 결과물을 만들어내는지 화면으로 바로 볼 수 있기 때문에 오류는 적고 대화는 쉬워지는 이점이 있지요. '자바(Java)'가 대표적인 스크립트 언어예요.

요즘엔 '블록 코딩'이란 언어가 큰 인기를 끌고 있어요. 별도로 프로그램 언어를 익힐 필요 없이 마치 레고 블록을 끼워 맞추듯 마우스나 터치스크린으로 필요한 명령어들을 끌어다 놓기만 하면 컴퓨터가 원하는 대로 작동되는 거지요.

최근 학생 사이에서 '코딩' 교육 자료로 가장 많이 활용되는 것도 바로 '블록 코딩'인데요. 미국 MIT에서 만든 '스크래치(Scratch)'가 인기가 많아요. 8~16세 학생들이 게임이나 애니메이션을 만들며 아주 쉽게 프로그래밍의 원리를 배울 수 있도록 설계돼 있지요.

그렇다면 왜 코딩을 배우는 걸까요? 아무리 4차 산업혁명 시대라 해도 모두가 컴퓨터 프로그래머가 될 필요는 없어요. 하지만 코딩을 배우면 머릿속 아이디어를 창의적으로 표현하고 어떤 문제를 체계적으로 해결해나가는 능력을 키울 수 있답니다.


[쉽게 배우는 코딩, 스크래치]

스크래치로 어떻게 게임을 만드는 걸까요? 예를 들어 고양이가 미로를 탈출하는 게임을 만들어본다고 해볼게요. 주인공 캐릭터로 고양이를 선택하거나 직접 그린 뒤, 검은색 미로 모양을 마음대로 그리고 고양이가 미로 벽에 부딪히면 동작을 멈추도록 설계합니다. 예컨대 '고양이가 검은색에 닿았는가?'→'닿았다면 고양이 방향을 180도 돌리고 뒤로 10만큼 움직이기'('안 닿았다면 계속 진행') 이런 식으로 논리적인 설계를 하는 거지요. 네이버가 만든 '엔트리', 마인크래프트 게임을 이용한 '아워 오브 코드(Hour of Code)'도 쉽게 활용할 수 있는 블록 코딩 언어들이에요.


최호섭 IT 칼럼니스트 기획·구성=박세미 기자