d라이브러리










 
“안녕, 나는 미래에서 온 ‘아토’라고 해요. 지금 여러분이 즐겨 쓰는 스마트폰 메신저의 미래 버전이라 볼 수 있죠. 나는 훨씬 더 발달된 기능을 포함하고 있어요. 예를 들어 지금처럼 과거로 돌아가 메시지를 보낼 수 있고, 내 모습도 마음대로 바꿀 수 있어요. 그런데 나를 만나려면 꼭 알아야 할 것이 있어요. 지금부터 그 이야기를 시작하려고 합니다. 마지막에는 특별한 선물도 준비해 놓았으니 꼭 끝까지 함께 하기로 해요!”

○○가 없으면, 카톡도 없어!


“톡해~!”

이 말은 친구와 헤어질 때 인사말을 대신하는 신조어다. ‘문자 메시지로 연락을 하자’라는 뜻으로, 모바일 메신저를 대표하는 ‘카카오톡’이 등장하면서 생겨났다. 카카오톡은 2010년 3월에 출시된 뒤 5년여 만에 이용자는 1억 4000명, 하루 메시지 전송 건수는 65억 건을 달성했다. 가입자 한 사람이 하루에 보내는 메시지도 평균 183건에 달한다.

이렇게 카카오톡이 빠른 속도로 발전할 수 있었던 이유는 간편하면서도 경제적 부담 없이 다른 사람과 의사소통을 편리하게 할 수 있기 때문이다. 모바일 메신저는 앱 하나만 내려받아 실행하면, 버튼 하나로 친구들을 초대해 대화하고, 사진과 동영상을 공유하는 것은 물론 무료 통화까지 즐길 수 있다.

이런 모바일 메신저는 눈에 보이지 않지만 정해진 알고리즘에 의해 순서대로 명령을 수행한다. 앱을 실행하면 가장 먼저 친구 목록을 불러오고, 대화 목록을 불러오거나 새로 만들어 내가 쓴 메시지나 이모티콘을 상대방에게 전송한다. 이런 다양한 기능을 간편하게 사용할 수 있는 이유는 이미 잘 짜진 알고리즘이 작동하기 때문이다.

그런데 컴퓨터는 명령어로 이루어진 알고리즘에 따라 움직이는 기계이기 때문에, 알고리즘을 설계하려면 기계가 알아들을 수 있는 또 다른 언어가 필요하다. 이 언어는 그 종류에 따라 사람들이 약속한 ‘기호’로 이루어져 있는 데, 이를 코드★라고 부른다.

코드★ ‘약속의 기호’라는 의미로 다양한 분야에서 사용되지만, 이번 기사에서는 컴퓨터 소프트웨어를 작동하는 데 필요한 ‘프로그래밍 언어’인 코드를 다룬다.

코드, 그것이 알고 싶다!

코드는 쉽게 말해 컴퓨터만 알아들을 수 있는 기계어다. 컴퓨터는 일의 종류, 시간, 순서 등을 모두 일일이 지정해 줘야 우리가 원하는 대로 작동된다. 따라서 사람들이 원하는 수식의 계산이나 작업을 컴퓨터가 이해하도록 알맞게 정리해서 순서를 정하고(알고리즘), 컴퓨터만 알아들을 수 있는 명령어로 고쳐 입력해야 한다(코딩).

오늘날 우리는 코드에 둘러싸여 있다고 해도 지나치지 않다. 컴퓨터와 스마트폰이 필수품처럼 쓰이고 있고, 버스 요금에서 고속도로 통행료까지 정해진 알고리즘을 따라 움직이는 소프트웨어가 쓰이지 않는 곳이 없기 때문이다. 따라서 알고리즘을 구성하고 있는 코드에 대해 바르게 이해할 필요가 있다.

버스 요금 설계하기

매일 아침 학교에 가기 위해 이용하는 버스 단말기에는 승객의 나이에 따라 서로 다른 요금을 결제하는 알고리즘이 들어 있다. 아래 예시를 통해 알고리즘과 코드의 구조를 이해해 보자.
* 실제 버스 단말기의 알고리즘은 매우 복잡하지만, 여기서는 가장 간단한 꼴로 작성하기로 한다.

1. 알고리즘 설계 계획 세우기

➊ 주어진 명제 확인하기.
➋ 제시한 조건에서 빠진 경우는 없는지 살피기 : 이상, 이하, 미만, 초과 등의 용어를 잘못 사용하지는 않았는지 확인한다.
➌ 제시한 조건에서 겹치는 경우는 없는지 살피기 : 이는 수직선을 이용해 그려 보는 것이 확실하다. 특히 경계를 주의해야 한다.
➍ 조건문(if문)을 직접 설계해 보기.
➎ 앞에서 살펴본 조건들로 복잡한 명제 만들기(조건부) : 벤 다이어그램 이용, 논리의 연산자 이용, 진리표 등을 이용해 조건을 정리해 본다.
➏ 규칙성 발견해 보기.
➐ 코딩.

2. 버스 요금 규칙 정하기

➊ 명제 : 승객 중 만 6세 미만은 0원, 만 6세 이상에서 만 20세 미만은 청소년 요금 1000원, 만 20세 이상은 1500원을 내야 한다.
➋ 조건을 자세히 정리하기
 

➌ 조건에 해당하는 승객의 나이가 겹치거나 빠진 경우가 없는지 그 경곗값을 살핀다. 만 6세는 요금 1000원이, 만 20세는 요금 1500원이 적용된다.

3. 코드 설계해 보기

if (승객의 만 나이 ≥ 20) {
‘요금은 1500원’이라고 표시
} else {
if (6≤ 승객의 만 나이 <20) {
‘요금은 1000원’이라고 표시
} else {
‘요금은 0원’이라고 표시
}
}

한눈에 살펴보는 코드의 역사

코드는 누가 맨 처음 생각했을까? 1930년대 수학자들이 명제를 증명하기 위해 사용했던 논증 방법이 현대 알고리즘의 초기 모습이다. 당시 알고리즘을 코드로 옮긴 최초의 언어가 바로 ‘알골’이다. 알골의 문법은 단순히 ‘<;기호>; ::= <;표현식>;’ 꼴로 이루어져 있었다. 이러한 알골에서 출발한 코드는 0과 1로만 이루어진 아스키코드를 거쳐, 문자와 기호의 구조를 갖춘 지금의 모습에 까지 이르게 되었다. 코드가 어떤 과정을 통해 발전해 왔는지 그 역사를 살펴보자.

찰스 배비지(1791~1871)
수학자, 최초의 컴퓨터 프로그래밍 장비를 개발!


18세기에는 계산기가 없어서 수학자들이 삼각함수나 로그와 같은 문제를 풀려면 도표를 보고 직접 계산해야만 했다. 그래서 계산하는 데 몇 주가 걸리기도 했다. 이에 영국 캠브리지대 수학과 교수였던 찰스 배비지는 계산 작업을 신속하고 정확하게 대신해 줄 기계를 생각해 냈다.
마침내 배비지는 1833년에 ‘해석기관’이라 부르는 자동 계산기를 고안했다. 해석기관에 천공 카드를 끼워 계산을 실행하기 위한 명령을 내리는 원리다. 당시에는 베틀로 천공 카드의 무늬를 짰는데, 이걸 최초의 코딩으로 볼 수 있다.

에이다 러브레이스 백작부인(1815~1852)
최초의 프로그래머는 여성!


영국의 에이다 러브레이스 백작부인은 최초의 프로그래머다. 에이다는 찰스 배비지의 제자다. 에이다는 당시 배비지의 연구를 프랑스어로 정리한 이탈리아의 수학자 루이지 메나브레의 논문을 영어로 번역하는 일을 맡았다. 그녀는 이 작업을 9개월 동안 작업하며 주석을 붙여 또 다른 한 권의 책을 완성했다. 에이다는 이 책에서 프로그래밍 언어에 대한 개념 몇 가지를 정의했다. 그중 가장 주목받는 부분은 지금도 프로그래밍에 사용하는 중요한 개념인 제어문이다. 제어문이란 반복문(loop), 점프문(jump), 조건문(if)과 같은 코드가 실행되는 순서를 정리하는 명령어를 말한다. 19세기에 살았던 에이다가 정리한 이 개념은 1970년대에 ‘에이다’라는 이름의 정식 프로그래밍 언어가 됐다.

앨런 튜링(1912~1954)
수학 원리로 튜링기계를 선보이다!


1936년 영국의 수학자이자 암호학자인 앨런 튜링은 특별한 기계를 세상에 소개했다. 이를 ‘튜링기계’라고 부르는데, 튜링기계의 구조를 들여다보면 지금의 컴퓨터와 그 구조가 매우 닮았다는 사실을 알 수 있다.
튜링기계는 두 가지 특징이 있는데, 하나는 기계에서 실행할 수 있는 동작을 테이프에 정의하고 기록할 수 있다는 점이다. 다른 하나는 테이프에 기록된 동작을 그대로 실행할 수 있도록 ‘작동규칙표’를 만들었다는 점이다.
하지만 튜링기계는 이론으로만 설계된 것일 뿐 실제로 만들어지지는 못했다. 다만 그 설계 구조는 오늘날 컴퓨터의 시초가 됐다는 점에서 큰 의미가 있다. 현재 우리가 사용하고 있는 컴퓨터에서 테이프는 메모리칩, 테이프에 읽고 쓰는 장치는 메모리칩과 입출력 장치, 작동규칙표는 중앙처리장치(CPU)에 해당한다.

데니스 리치(1941~2011)
프로그래밍 언어의 새 시대를 열다!


미국의 전산학자이자 현대 컴퓨터의 선구자인 데니스 리치는 미국 하버드대에서 응용수학과 물리학을 전공했다. 리치는 첫 직장인 벨연구소에서 만난 동료 켄 톰슨과 함께 프로그래밍 언어의 본격적인 시작이라고 말할 수 있는 C언어와 유닉스 시스템을 만들었다. C언어의 탄생으로 코드는 엄청 빠른 속도로 발전하기 시작했다.
C언어는 기존에 개발된 여러 종류의 언어를 기반으로, 중앙처리장치가 가장 이해하기 쉬운 언어로 만들어졌다. 이러한 C언어는 현재 작동되는 다양한 애플리케이션뿐만 아니라 대부분의 운영체제와 정보 처리 기능을 가진 여러 기계들을 동작시키는 가장 기초적인 언어다. 그 결과 이 문법을 기초로 하여 많은 프로그래밍 언어들이 탄생했다. 이런 공로를 인정받은 데니스 리치는 1983년 동료였던 켄 톰슨과 함께 컴퓨터 과학계의 노벨상이라고 할 수 있는 튜링상을 받았다.

귀도 판 로썸(1956~)
누구나 쉽게 배우는 언어, 파이선을 만들다!


네덜란드 출신의 컴퓨터 프로그래머인 귀도 판 로썸은 1991년 ‘파이선’이라는 프로그래밍 언어를 개발했다. 로썸은 파이선을 누구나 쉽게 배울 수 있는 언어로 만들기 위해, 코드의 구조나 규모를 최대한 간단하게 쓰려고 노력했다. 파이선은 전체를 한꺼번에 들여다보며 코딩을 이어가는 C언어나 C++언어와 달리, 각각의 알고리즘을 구성하는 코드를 독립적으로 설계할 수 있다. 이 때문에 오류를 수정하거나 알고리즘을 새로 추가할 때 더 편리하다.
파이선은 현재 야후, 구글은 물론 미국항공우주국(NASA)과 미국해양대기청(NOAA)에서 주요 프로그래밍 언어로 사용되고 있다. 홈페이지(www.python.org)에는 프로그래밍을 처음 배우는 사람도 쉽게 따라할 수 있도록 무료 교육프로그램이 마련되어 있다.
 


다른 코드? 같은 결과!

“앞에서 살펴본 것처럼 코드는 컴퓨터와 함께 비약적인 발전을 해 왔어요. 시대의 흐름에 따라 다양한 종류의 언어가 탄생했지요. 그런데 각각의 언어를 구성하는 명령어가 전부 달라요. 그럼에도 불구하고 컴퓨터는 모두 잘 알아듣고, 사람이 내린 명령어를 수행해요. 어떻게 이런 일이 가능할까요?”


아래 화면은 ‘hello, mathematics’라는 글자를 출력하도록 두 가지 서로 다른 언어로 코딩한 결과다. 서로 다른 언어로 구성된 코딩인데 결과적으로는 같은 업무를 수행한다. 어떻게 이런 일이 가능할까? 그 이유는 컴퓨터에는 코드가 2진법으로 변환되어 인식되기 때문이다.

컴퓨터가 2진법을 사용하게 된 계기는 1940년경 세계 최초 범용 전자식 컴퓨터인 에니악의 발명에서부터 출발한다. 에니악은 1만 8000개의 진공관으로 작동하는 기계로, 대포나 미사일을 발사할 때 탄도 거리와 각도 계산을 빠르게 하기 위해 개발됐다. 미국 펜실베니아대 컴퓨터공학과 교수였던 존 모틀리와, 졸업생인 존 에커트가 미국방부 연구소와 계약을 맺고 연구하던 중 탄생했다. 두 사람은 일명 ‘자동 기계’를 만들기 위해 다음과 같은 생각의 과정을 거쳤다.

➊ 사람은 계산을 10진법으로 한다.
➋ 10진법 연산은 2진법으로 나타낼 수 있다.
➌ 2진법 연산(덧셈)은 부울대수★로 표현이 가능하다.
➍ 부울대수는 진공관으로 구현할 수 있다.
➎ 진공관은 빛의 속도로 작동한다.
➏ 10진수 계산을 빛의 속도로 계산할 수 있다.

그 결과 1946년에 에니악이 탄생했고, 에니악은 10자리 10진수 곱셈을 0.0028초, 나눗셈을 0.006초 이내에 처리할 수 있는 놀라운 능력을 보였다.

이러한 영향으로 초기 프로그래밍 언어는 0과 1로만 쓰여졌다. 그러나 0과 1만으로는 컴퓨터의 모든 동작을 명령하기가 힘들었다. 그래서 특정 명령어를 단어에 대응시켜 사람이 알기 쉽도록 코드화하기 시작했다. 예를 들어 초기의 프로그래밍 언어는 ‘더하기’ 대신 ‘1111’을 사용했지만, 변화를 거쳐 지금은 ‘plus’ 또는 ‘+’를 사용하면 된다.
 

부울대수★ AND, OR, NOT과 같은 논리연산자를 사용해 임의의 A와 B의 관계를 나타낼 수 있는 수학 이론을 말한다. 이를 이용하면 컴퓨터의 회로 설계가 가능하다.

컴퓨터가 연산을 2진법으로 하는 이유

컴퓨터에서는 수를 단 두 가지 상태로 표현할 수 있다. 스위치가 꺼진 상태를 0, 켜진 상태를 1로 대응하는 것처럼, 한 종류의 여러 개의 스위치가 컴퓨터 내부에 있다고 생각하면 된다. 각각의 스위치는 2진법의 각 자리를 나타내고, 이 같은 원리라면 스위치의 개수를 늘리기만 하면 아무리 큰 수라도 간단하게 표현할 수 있다.

물론 열 종류의 스위치를 만들면, 컴퓨터가 10진법도 사용할 수 있다. 하지만 이는 2진법과 비교해 나머지 정보 처리 장치를 매우 복잡한 구조로 만들어야 한다.

예를 들어 아래와 같은 덧셈표만 해도, 간단한 연산을 처리하기 위해 필요한 메모리 용량이 몇 배 이상 차이난다. 예를 들어 10진법 연산인 ‘123+456’을 처리한다고 가정하자. 백의 자리부터 연산을 시작하는 컴퓨터는 아래 10진법 덧셈표 100가지 경우 중에서 답을 찾은 뒤, 이를 다시 자릿수에 맡게 처리해야 한다. 하지만 같은 연산을 2진법으로 나타내면 ‘1111011$_{(2)}$+111001000$_{(2)}$’로, 2진법 덧셈표 4가지 중에서 찾아 간단히 처리할 수 있다.

그러나 2진법은 10진법과 비교해 자릿수가 많아진다는 단점이 있다. 예를 들어 10진법에서 1234는 네 자리 수이지만, 2진법으로 나타내면 10011010010$_{(2)}$과 같이 열한 자리 수가 된다. 그리고 그 수의 크기를 한눈에 알아보기가 어렵다.

이처럼 사람은 2진법보다 10진법이 더 다루기 쉽다고 느낀다. 10진법은 자릿수가 적어 계산할 때 실수할 확률도 적고, 우리가 평소에 사용하는 수이므로 수의 크기를 직관적으로 판단하기 쉽다는 장점이 있기 때문이다. 하지만 컴퓨터는 사람과 비교해 계산 능력이 매우 뛰어나고 빠르다. 컴퓨터는 사람처럼 실수 할 줄 모르고 수의 크기를 직관적으로 파악할 필요도 없다. 따라서 컴퓨터에서는 다루는 수의 종류가 적고 계산 규칙이 간단한 2진법을 사용하는 것이다.
 

수학 명제, 컴퓨터로 증명 가능할까?

코드의 역사에는 수학자들의 업적이 많이 녹아들어 있다. 과거의 수학자들이 논리학자나 전산학자의 역할까지 했기 때문이다. 하지만 수학과 컴퓨터의 관계는 일방적이지만은 않다. 수학자의 영향으로 컴퓨터가 놀라운 속도로 발전할 수 있었다면, 이제는 반대로 컴퓨터 프로그램들이 수학자들의 연구에 도움을 주고 있다.

수학자를 무릎꿇게 한 4색 문제


4색 문제는 ‘평면 위에 그려진 지도에서 이웃하는 영역은 서로 다른 색으로 칠한다’는 조건에서 전체 지도를 오직 4가지 색으로 색칠할 수 있느냐는 물음의 답을 구하는 문제다. 이 문제는 1870년경에 영국의 수학자 프랜시스 구드리가 처음 제시했다. 이후 영국의 수학자 드 모르간부터 독일의 수학자 데이비드 힐베르트까지 수많은 수학자들이 증명을 시도했지만 오류가 없는 명쾌한 증명은 쉽게 나타나지 않았다.

그러다 1960년대에 힐베르트의 제자였던 독일의 수학자 하인리히 헤슈는 처음으로 4색 문제를 컴퓨터로 증명할 수 있겠다는 생각을 했다. 헤슈는 컴퓨터 이론의 발달을 큰 영향을 미친 그래프 이론을 연구했는데, 이를 이용해 4색 문제의 증명에 기본 뼈대를 세울 수 있었다. 그는 이 문제를 해결하기 위해서 당시 가장 빠른 컴퓨터가 있었던 미국을 자주 방문하며 연구에 매진했다. 하지만 그의 노력에도 불구하고 독일 정부의 미국 출입 통제로 4색 문제의 증명은 다른 사람의 공이 되었다. 1976년 6월, 미국 일리노이대 어바나-샴페인 대학의 케네스 아펠과 독일 출신의 볼프강 하켄이 마침내 컴퓨터의 도움을 받아 이 증명을 완성한 것이다.

4색 문제를 증명하기 위해 이용한 컴퓨터 프로그램에는 487가지의 판별 기준이 있었다. 컴퓨터는 50일 동안 4색 문제에 487가지 기준을 적용하며 참이라는 것을 증명하기 위해 쉼없이 계산을 이어갔다.

그 결과 4색 문제는 ‘4색 정리’가 되었다. 하지만 수학계에서는 컴퓨터가 수학 명제를 증명한 최초의 일이었기 때문에 큰 논란거리가 됐다. 그래도 최근에는 ‘컴퓨터가 증명에 성공했다’는 사실만큼은 인정하는 분위기다. 하지만 컴퓨터의 증명을 수학자가 다시 검증할 수 없다는 이유로 수학자들 사이에서는 계속 ‘4색 문제’로 남아 있다.

400년 만에 증명(?)한, 케플러의 추측

17세기 초 영국의 수학자 토마스 해리엇은 독일의 유명한 수학자인 요하네스 케플러와 함께 일정한 공간에 대포알을 가장 많이 쌓을 수 있는 방법을 의논했다. 두 사람은 구 모양의 물체는 쌓을 때 생기는 빈 공간을 가장 적게 만드는 방법을 생각했다. 1611년, 케플러는 ‘상자 안에 구 모양의 물체를 가장 효율적으로 쌓는 방법이 과일가게에서 둥근 과일을 쌓는 법과 같을 것이다’라는 추측을 했다. 이 추측은 평범한 사람도 흔히 사용하는 방법이지만 수학적으로 엄밀하게 증명하는 일은 쉽지 않았다. 케플러는 물론 그 이후, 뉴턴, 라그랑주, 가우스, 힐베르트 등 내로라하는 수학자들이 이 문제에 매달렸지만 아무도 완벽하게 증명하지 못했다.

그러다 1998년에서야 미국 피츠버그대의 토마스 헤일스 박사가 컴퓨터를 이용해 증명에 성공했다. 그는 구 모양의 물체를 쌓는 방법을 수천 가지를 놓고, 소프트웨어를 활용해 수학적으로 표현할 수 있는 방법을 찾아냈다. 그러나 그의 증명은 300페이지에 달해서 증명 과정에 오류가 없는지를 확인하기조차 쉽지 않았다. 결국 수학자 12명이 4년 동안이나 매달린 끝에야 그의 증명을 확인할 수 있었다. 그 결과 2005년 미국 프린스턴대와 고등과학원에서 발행하는 <;수학연보>;에 그 증명이 99% 확률로 올바른 것이라고 발표됐다.

헤일스 박사는 99% 확률에 만족하지 못했다. 그는 미국의 수학자 존 해리슨이 개발한 ‘에이치오엘 라이트’와 ‘이사벨’이라는 프로그램의 도움을 받아 명쾌하게 ‘케플러의 추측’을 다시 증명해 보기로 결심했다. 이 프로그램은 300페이지에 달하는 수학 증명의 한 줄 한 줄을 따라가며 논리 구조를 검증하도록 알고리즘이 짜여져 있다.

마침내 지난 8월 10일, 헤일스 박사의 증명은 100% 정확한 것이라는 결과가 나왔다. 이에 헤일스 박사는 “앞으로 많은 수학자들의 증명 정확도를 평가하는 데 컴퓨터를 활용하는 방식이 널리 쓰이게 될 것”이라고 소감을 밝혔다.

코드로 통하는 미래

“앞으로는 지금보다 더 컴퓨터와 소프트웨어가 가득한 세상이 될 거예요. 특히 그 중심에 있는 오픈소스와 사물인터넷이 있을 거예요. 사실 저도 오픈 소스로 만들어졌답니다. 다시 말해 저는 어떤 한 사람의 노력이 아닌, 컴퓨터 과학의 발전을 돕는 여러 전문가들의 작품인 셈이죠.”

오픈소스 세상이 열렸다!


카카오톡, 라인, 마이피플 등 모바일 메신저의 메인화면을 떠올려 보자. 분명 서로 다른 회사에서 제작한 모바일 메신저인데, 친구목록을 불러오거나 대화창을 만드는 것, 그룹 채팅이 가능한 것, 사진과 동영상 공유가 자유로운 것 등 그 기능이 매우 닮아 있다.

멜론, 지니, 엠넷 등 음원 제공 서비스 애플리케이션도 마찬가지다. 실시간 차트, 사용자가 즐겨듣는 노래와 장르 등을 분석할 수 있고, 다른 사용자들과의 커뮤니티를 운영할 수 있는 기능도 비슷하다. 이뿐만 아니라 인터넷 쇼핑 홈페이지나, 포털 검색 사이트도 그 겉모습과 기능들이 비슷하다. 물론 각 회사마다 특징을 살려 기능을 더 추가하거나, 필요 없다고 여기는 기능을 과감히 삭제하기도 한다. 하지만 기본 구조는 같다. 왜 그런 걸까? 그 이유는 바로 ‘오픈소스’ 때문이다.

오픈소스란 소프트웨어 등을 만들 때 그 알고리즘 구조를 알 수 있도록 소스 코드를 무료 공개하는 것을 말한다. 다시 말해 모바일 메신저나, 음원 제공 서비스 애플리케이션, 각 홈페이지 등은 오픈소스로 공개된 코드를 이용해 만들어졌다. 마치 냉장고에서 각 재료를 꺼내 원하는 요리를 하듯이 누구나 공개된 코드로 소프트웨어를 개발할 수 있는 시대가 열린 것이다.

이러한 오픈소스 운동은 미국의 프로그래머 리처드 스톨먼이 ‘자유소프트웨어 재단’을 설립하며 시작됐다. 대학에서 컴퓨터 과학을 공부한 스톨먼은 1974년 코드 편집 소프트웨어인 이맥스(Emacs)를 개발했다. 소프트웨어 상업화를 반대하던 그는 1984년 개발자들끼리 소스 코드를 서로 공유하며 함께 성장하는 취지의 프로젝트를 추진하게 된다. 다시 말해 인터넷을 이용하는 많은 사람들이 코드를 함께 공유하면서 오류도 찾아내고, 더 나은 단계로 성장할 수 있는 기회를 마련하려는 취지로 오픈소스 운동을 시작한 것이다. 이 운동은 인터넷의 발달로 전세계로 퍼져나갔고, 현재 많은 소프트웨어 개발자들이 동참하고 있다.

사물인터넷의 세상이 열린다!

사물인터넷은 코드를 기본으로 하는 소프트웨어의 발전과 밀접하게 관련 되어 있다. 사물인터넷이란 사물에 센서를 부착해 실시간으로 데이터를 인터넷으로 주고받는 기술이나 환경을 말한다. 지금까지는 사람의 의지대로 조작해 인터넷이 연결된 기계를 통해 정보를 주고받았지만, 사물인터넷 시대에는 기계끼리 자동으로 정보를 주고받는다.

예를 들어 국내 한 통신사가 개발한 ‘지브로(ZiBro)’는 무선주파수 인식시스템과 블루투스로 작동해 반려동물의 실종을 막아 준다.이뿐만 아니라 고속도로 하이패스나 홈 CCTV 등 상용화된 사물인터넷 사례는 많다.

미래에는 달려오는 자동차의 브레이크를 제어할 수 있는 스마트 신발 덕분에 신호등이 없는 횡단보도에서 무사히 길을 건널 수 있게 되거나, 정해진 알약을 먹으면 위 속에서 천천히 녹으면서 환자의 정보를 수집해 약 먹을 시간을 자동으로 알려 줄 수도 있다.

이러한 사회적 흐름 속에서 구글 부사장 수잔 보이치키는 “만약 당신이 코딩으로 새로운 기술을 창조할 수 있다면, 당신은 세상을 바꿀 수 있다”고 코드의 중요성을 강조했다.

한편 전문가들은 사물인터넷과 같이 소프트웨어 기반 사회가 본격화됨에 따라, ‘안정성’에 더 신경을 쓰고 있다. 최근 미국에서는 차량 급발진 사고가 자동차를 제어하는 소프트웨어 오류에서 비롯된 것으로 밝혀지면서 프로그래밍의 안전성이 중요한 키워드로 떠오른 것이다. 이에 컴퓨터 과학자들은 차량 급발진 문제는 물론, 의료 장비 시스템 오류 검사 등 소프트웨어 안전성 분야에 도움이 될 만한 기술을 연구하고 있다.

코딩을 배우자!

미래의 필수언어라고 불리는 코드가 지구촌 구석구석에서 이슈가 되고 있다. 전문가들은 코딩 교육을 통해 청소년들이 코딩을 게임처럼 쉽게 접하고, 부담 없이 즐기며 논리적 사고습관을 기르길 바라고 있다. 대표적인 코딩 교육 두 가지를 소개한다.

 






 

2014년 09월 수학동아 정보

  • 염지현 기자
  • 허경미
  • 강지연
  • 포토파크닷컴
  • 도움

    이광근 교수
  • 도움

    박성우 교수
  • 사진 및 도움

    최진영 교수
  • 사진

    포토파크닷컴
  • 사진

    위키미디어

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?