brunch

『스크래치로 배우는 컴퓨팅 사고』

by 안서조

시대에 어울려 살려면 배워야 한다. 학교에서 주산을 배우고, 직장생활을 하려니 타자를 배워야 했고, 조금 지나니 16비트, 386 컴퓨터를 배우고 인터넷을 배우고, 삐삐 호출기를 차고 다니다가 무선전화기를 들고, 휴대폰을 들고, 이제 스마트폰이다. 한도 끝도 없이 배워야 밥이라도 얻어먹을 수 있다. 식당 앞에 가면 키오스크가 기다린다. 돈이 있어도 밥 사 먹기 힘든 세상이다. 소스, 코드, 자바 등등 컴퓨터 언어를 모르면 안 되는 세상이다. 사람 말도 다 알아듣기 힘든데 컴퓨터 말까지 알아들어야 한다. 그래도 열심히 배우자.


스마트폰이 일상화되고 4차 산업혁명 시대이다. 이제 우리의 삶 전체가 네트워크와 컴퓨터 안에서 돌아가고 있다. 이 책은 이 시대에 컴퓨터를 활용하기 위해 만들었다. 컴퓨팅 사고란 문제를 해결하기 위해 논리적이고 창의적으로 생각하는 것을 말한다. 컴퓨팅 사고를 배우는 것은 문제를 다양한 방식으로 접근하여 해결하는 방법을 배우는 것과 같다.


이 책은 Part1에서 컴퓨팅 사고에 관한 이론을 설명하고, Part2에서 스크래치 프로그래밍 언어로 실제 프로그래밍을 실습한다.


1769년에 처음 만들어진 증기 자동차가 대중화된 것은 200년이 지난 후였고, 1940년대에 만들어지니 컴퓨터가 개인용 컴퓨터로 보급될 때까지 50년이 걸렸다. 스마트폰은 2007년에 만들어져 불과 10년 만에 대중화되었다. 이에 따른 사회 변화도 가속화되고 있다.


4차 산업혁명은 ‘인공지능, 사물인터넷, 빅데이터, 모바일 등 첨단 정보통신기술이 경제, 사회 전반에 융합되어 혁신적인 변화가 나타나는 차세대 산업혁명’이라고 정의한다. 한마디로 표현하면 ‘융합 기술을 기반으로 하는 초연결 사회’로 정의할 수 있다.


스마트폰, 노트북, 데스크톱, 자동차, 청소기, 냉장고 같은 전자제품들까지도 인터넷에 연결되어 새로운 서비스를 만들고 있다. 집에 있는 모든 제품을 원격으로 조정할 수 있는 스마트 홈. 스스로 운전하는 자율주행 자동차, 사람을 이해하고 말로 명령을 내릴 수 있는 인공지능, 청소나 요리할 수 있는 로봇, 지갑이나 신용카드 없이 거래가 가능한 핀테크 기술까지 모두 인터넷으로 연결이 가능해지는 시대가 왔다. 이렇게 세상의 모든 물건이 인터넷으로 연결되는 세상을 ‘초연결 사회’라고 한다.


다양한 정보를 체계적으로 모아 놓은 것을 데이터베이스라 부른다. 인공지능 기술은 빅데이터로부터 만들어진다. 대량의 정보가 모여야 정확한 분석이 가능해진다. 그래서 빅데이터를 ‘4차 산업혁명 시대의 석유’라고 부른다. 빅데이터는 상품 추천 시스템, 의교 서비스, 보험설계, 광고판의 안면 인식 등 다양한 분야에서 활용하고 있다.


인공지능은 기계가 학습과 추리를 통해 사람과 같은 작업을 수행할 수 있는 기술을 말한다. 인공지능이 본격적으로 알려진 것은 2016년 3월 알파고가 이세돌과 바둑 대결에서 승리하면서 알려졌다. 인공지능은 인공지능 스피커, 번역 어플, 기사 작성(로봇 저녈리즘), 카메라, CCTV, 의료영상 판독, 표정 변화 감지 등에 활용하고 있다.


로봇은 스스로 작업하는 능력을 가진 기계이다. 로봇은 생산 공장에서 인간을 대신하여 조립 용접 등 노동을 수행하는 로봇과 주변 환경을 스스로 인식하여 자신의 행동을 조절하고 결정하는 로봇으론 나눌 수 있다. 로봇은 산업용 로봇, 가정용 로봇, 2족 보행 로봇 등 다양하게 활용하고 있다.


드론은 무인 비행 물체를 지칭한다. 최근에는 드론에 무선 인터넷 통신, 인공지능 기술, 각종 센서를 탑제하여 다양한 서비스가 가능해 졌다. 촬영용 드론, 농업용 드론, 공연 전시용 드론, 배달 드론, 군사용 드론으로 다양하게 활용하고 있다.


사물인터넷은 과거 인터넷 세상에서는 컴퓨터와 스마트폰만 연결되었다면, 이제는 자동차, 냉장고, 세탁기와 같은 사물들도 인터넷에 연결되어 새로운 서비스를 창출하는 세상이 되었다. 교통 전광판, 스마트 홈, 스마트워치, 스마트 칫솔과 수면 측정기, 무인 슈퍼마켓, 스마트 주차장, 스마트 자동차, 스마트 그리드, 스마트시티 등에 활용하고 있다.


가상현실은 실제와 유사한 인공적인 환경을 의미한다. 가상현실을 구현하기 위해서 3차원 컴퓨터 그래픽 기술이 필요하다. 가상현실은 다양한 분야에서 활용되는데 모의 훈련과 엔터테인먼트 콘텐츠 제작에 가상현실이 사용된다.


증강현실(AR)은 가상현실(VR))과 유사한 기술로서 실제 환경에 가상의 정보를 합성하여 원래 존재하는 사물처럼 보이도록 하는 컴퓨터 그래픽 기법이다. 증강현실은 현실세계와 가상세계를 혼합해서 사용하기 때문에 혼합현실이라고도 한다. 게임과 내비게이션, 스마트 안경 등에 활용하고 있다.


클라우딩 컴퓨팅은 하드웨어와 소프트웨어를 클라우드 안에 숨기고 사용자는 필요한 서비스만을 이용하는 컴퓨팅 환경을 말한다. 클라우드 컴퓨팅은 사용자가 외부에서 스마트폰을 사용하든 집에서 PC를 사용하든 간에 하드웨어와 소프트웨어에 일관되게 접근할 수 있는 환경을 만든다. 현대에는 컴퓨터, 노트북, 스마트폰, 태블릿 같이 다양한 장치들이 네트워크로 묶여 있다. 이러한 기기들 사이에 데이터를 자유롭게 이동하여 소프트웨어에 일관되게 접근할 수 있도록 하는 환경이 클라우드 컴퓨팅이다. 클라우딩 컴퓨팅은 하드웨어에 의존하지 않고 컴퓨팅 파워, 소프트웨어, 데이터를 언제 어디서나 사용할 수 있는 환경이다.


중앙처리장치(CPU)는 주어진 명령에 따라데이터를 계산하고 각종 주변 장치에 데이터의 입출력 명령을 내리는 장치이다. CPU는 프로세서라고도 부른다. 컴퓨터의 프로세서는 CPU 외에 GPU와 AP도 있다. GPU는 그래픽 작업만 전문으로 하는 프로세서로 3D 게임이나 동영상의 발달로 그래픽과 관련한 계산 작업이 많아지면서 등장했다. AP는 CPU와 GPU, 무선통신 시스템을 하나의 침에 구현한 제품이다. AP는 부피를 줄이고 전력 소모를 최소화하도록 구현되었기 때문에 스마트폰이나 임베디드 시스템에 사용된다.


컴퓨터는 기본적으로 숫자만 다루지만, 인간은 문자가 필요하다. 문자를 처리하기 위해서 컴퓨터는 숫자와 문자를 하나씩 대응하여 사용하는데, 이것이 아스키코드이다. 아스키코드는 1바이트로 구성되기 때문에 사용할 수 있는 문자는 최대 256개이다.


컴퓨터가 영어 문화권에서 생겨났을 때는 256개의 문자로 충분했다. 한국, 중국, 일본, 태국과 같은 나라는 각각 문자 체계가 달라 아스키코드만으로는 문자를 모두 표현할 수 없다. 세계의 모든 문자를 컴퓨터에서 일관적으로 표현하고 다룰 수 있도록 설계된 산업 표준이 생겼는데, 유니코드이다. 유니코드는 10만 개가 넘는 문자를 표현할 수 있다.


bps는 네트워크에서 1초 동안 보내는 데이터의 양을 의미한다. rpm은 디스크 원반이 1분 동안 회전하는 수를 의미하며 하드디스크의 속도를 나타낸다.


컴퓨터가 인간의 문제를 해결하기 위해서는 주어진 작업을 어떤 순서와 어떤 방법으로 풀지 결정해야 한다. 이렇게 문제를 해결하기 위해 논리적이고 창의적으로 생각하는 것을 컴퓨팅 사고라 한다. 컴퓨팅 사고의 4가지 구성요소로는 추상화, 분해, 패턴인식, 알고리즘이 있다.


추상화란 문제에서 중요하지 않은 부분을 제거하고 중요한 특징만으로 문제를 구성함으로써 문제 해결을 좀 더 쉽게 하는 과정이다. 예, 지하철 노선도, 네온사인 등


분해란 추상화한 문제를 해결하기 쉬운 작은 단위의 문제로 나누는 과정이다. 예, 이진탐색 등


패턴인식이란 추상화 및 분해를 한 후, 데이터를 특징별로 나누어 유사한 문제 해결 방식이 있는지 찾아보는 과정이다. 우리가 해결하는 문제 혹은 데이터에서 의미 있는 패턴을 찾아내는 과정이다. 예, RGB로 이미지를 구성 등.


알고리즘이란 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것. 알고리즘을 요리에 비유하면 레시피와 같다. 알고리즘을 표현하는 방법에는 자연어, 순서도, 의사코드, 프로그래밍 언어가 있다.


알고리즘은 일반적으로 다음 조건을 만족해야 한다.

입력-알고리즘에 입력되는 자료가 0개 이상 존재한다.

출력-알고리즘이 실행되면 결과값이 1개 이상 나온다.

유한성-알고리즘은 종료되어야 한다.

명확성-알고리즘의 명령이 모호하지 않고 명확해야 한다.

수행 가능성-알고리즘의 명령은 수행 가능해야 한다.


알고리즘의 설계.

순차구조; 어떤 일을 처리하는 데 필요한 과정을 시간적인 순서에 따라 순차적으로 나타낸 구조이다. 보통의 경우 위에서 아래로 하나씩 실행된다.

선택 구조; 특정 조건을 만족하는지 아닌지에 따라 다음 명령을 선택적으로 실행하는 구조이다.

반복 구조; 어떤 문제를 해결하기 위해 동일한 동작을 반복적으로 실행하는 구조이다.

알고리즘을 이용한 문제 해결 과정은 알고리즘 작성, 알고리즘 검토, 프로그래밍 및 실행 순서로 이루어진다.

프로그램이 만들어지는 과정은 알고리즘, 코딩, 테스트. 디버깅의 순서로 이루어진다. 만들어진 코드에 에러가 있어 이를 수정하는 작업을 디버깅이라고 한다. 컴퓨터가 이해할 수 있는 언어로 숫자로만 이루어진 언어를 기계어라고 한다. 기계어를 사람이 이해할 수 있는 문자 형태로 바꿔 놓은 프로그래밍 언어를 어셈블리어라고 한다. 기계어와 어셈블리어는 저급 언어에 속한다.


사용자들이 쉽게 이해할 수 있게 만든 프로그래밍 언어를 고급 언어라 부른다. 고급언어 중 변수와 함수를 하나로 묶어서 편리하게 처리할 수 있게 해주는 언어를 객체지향 언어라 부른다. 가장 유명한 것이 자바다.

프로그램 언어 주우 소스코드를 컴퓨터가 실행할 수 있는 기계어로 번역하여 실행 파일을 만든 후 한꺼번에 실행하는 형태를 컴파일러라 부르며, 소스코드를 한번에 한 행씩 실행하는 형태를 인터프리터라고 한다. 컴파일러의 장점은 소스코드의 오류를 발견하는 것과 최적화된 코드를 만드는 것이다.

코딩 입문서로 적합한 책이다.


책 소개

『스크래치로 배우는 컴퓨팅 사고』 조성호, 고광일 지음. 2020.01.06. 한빛아카데미(주). 384쪽. 21,000원.

조성호. 한국외국어대학교 전산학과. 고려대학교 컴퓨터학과에서 석사, 박사 학위 취득. 한신대학교 정보통신학부 교수. 저서. 『쉽게 배우는 운영체제』 등.


고광일. 포항공과대학교에서 소프트웨어 공학 전공으로 석사, 박사 과정을 마쳤다. 우송대학교 교수. 저서, 『스크래치 3.0』 등.



keyword