1.1 소프트웨어가 중요한 사회
사회는 농업혁명을 거쳐 산업혁명의 시대로 전환하며 산업, 사회, 삶의 전반적인 변화를 보여왔다. 2016년 세계경제포럼(World Economic Forum: WEF)은 ‘4차 산업혁명의 이해(Mastering the Fourth Industrial Revolution)’를 통해 4차 산업혁명 시대를 정의하였다. 산업혁명을 크게 [그림 1]과 같이 4개로 구분하여, 1차는 증기기관을 활용하여 기계를 움직이는 시대, 2차는 전기를 이용하여 기계를 움직이는 시대, 3차는 컴퓨터를 활용한 자동화(Automation)와 인터넷을 활용한 연결성(Connectivity)을 이용하는 시대로 정의하였다. 그리고 4차 산업혁명시대를 IoT를 기반으로 한 초연결 사회를 구성하고, IoT를 활용하여 수집된 빅데이터를 기반으로 예측과 판단을 자동화할 수 있도록 인공지능(AI, Artificial Intelligence)기술 접목을 통해 산업·사회·삶 등 사회의 전반적인 변화가 발생하는 시대로 정의하였다.
미래 사회는 3차, 4차 산업혁명 시대를 이끄는 자동화(Automation)를 기본으로 하여, 예측과 판단을 인간의 개입 없이 진행할 수 있는 인공지능을 활용하는 시대로 발전하고 있다. 자동화와 인공지능(AI)은 우리가 일상적으로 사용하는 컴퓨터(Computer)를 기본으로 하고 있다. 컴퓨터(Computer)는 하드웨어와 소프트웨어로 구성되어 있다. 3차 산업혁명 시대의 사회 중심은 컴퓨터의 하드웨어(Hardware: HW)였고, 4차 산업혁명 시대의 사회 중심은 하드웨어(Hardware: HW)에서 소프트웨어(Software: SW)로 진행되어 왔으며, 소프트웨어가 사회의 중심이 되었다. 즉, 소프트웨어(Software) 중심 사회는 “소프트웨어(SW)가 혁신과 성장, 가치 창출의 중심이 되고 개인·기업·국가의 경쟁력을 좌우하는 사회”로 정의할 수 있다.
현대 사회에서 소프트웨어 중요성을 주장한 인물을 살펴보자. 벤츠 CEO 디도제체(Dieter Zetsche)는 “자동차는 가솔린이 아니라 소프트웨어로 달린다”고 말하였다. Vinod Khosla는 2012년 TechCrunch에서 “향후 80%의 의사가 알고리즘으로 대체”될 것이라며 인공지능을 활용할 필요성을 주장하였다. 카네기 멜론대학의 Watts S. Humphrey는 “은행은 금융을 가장한 소프트웨어 산업이다”라고 하였다. 이와 같이 소프트웨어는 4차산업혁명 시대에 자동화와 인공지능 등에 핵심 역할을 하고 있다. 소프트웨어 중심사회를 살아갈 우리는 소프트웨어가 무엇인지 알아보고, 소프트웨어 개발 방법을 습득하여 4차 산업혁명시대를 주도적으로 이끌어 갈 준비를 해야 한다.
1.2 컴퓨터(Computer)의 역할
인공지능을 활용한 소프트웨어 중심 사회에서 컴퓨터(Computer)가 어떤 역할을 하는지 살펴보자. 컴퓨터는 [그림 2]와 같이 문제(Problem)를 해결(Solution)하기 위한 수단으로 활용된다. 컴퓨터는 [그림 2]와 같이하드웨어(Hardware: HW)와 소프트웨어(Software: SW)로 구성되어 있으며, 하드웨어(Hardware: HW) 구성과 소프트웨어(Software: SW)의 역할은 [표 1]과 같다. 소프트웨어는 자료를 입력받아 처리하여 정보로 만드는 일련의 일처리 순서 집합으로, 하드웨어에게 일처리 순서를 알려주어 입력된 자료(Data)를 정보(Information)로 바꾸어 출력하는 역할을 하게 된다.
하드웨어(Hardware)
하드웨어는 소프트웨어가 알려주는 일련의 일처리 순서를 이용하여, 입력 장치로부터 자료(data)를 입력받아 CPU(연산 및 제어)와 기억장치를 활용하여 정보를 생성한 후 이를 출력 장치를 이용하여 표현해주는 역할을 한다. 하드웨어 구성은 [그림 3]과 같다. 하드웨어는 크게 입력 장치, 연산 장치, 제어 장치, 기억 장치, 출력 장치 등으로 구성된다. 중앙 연산처리 장치(Central Processing Unit: CPU)는 연산과 제어의 역할을 통해 정보를 생성하는 주된 역할을 하는 컴퓨터의 두뇌에 해당한다. 기억 장치는 자료와 정보를 저장하는 장치로, 주기억 장치인 RAM(Random Access Memory)과 보조 기억장치로 구성되어 있다. 주기억 장치인 RAM(Random Access Memory)은 실행 중인 소프트웨어나 자료를 일시적으로 저장하는 역할을 수행한다. 보조 기억장치는 반영구적으로 자료나 소프트웨어를 저장할 때 사용하는 것으로, HDD, SSD(Solid State Drive), USB 등이 있다. 입력 장치는 외부로부터 자료를 입력받는 방법으로 키보드, 마우스 등과 IoT(Internet of Things)의 핵심인 센서(Sensor) 등이 있다. 출력 장치는 소프트웨어를 이용해 생성된 정보를 표현하는 것으로 모니터, 프린터, 스피커 등이 있다. 그리고 메인보드(Main Board)는 CPU, 입력 장치, 출력 장치, 기억 장치를 서로 연결해 데이터와 정보를 전달하고, 제어하는 가교 역할을 한다.
소프트웨어(Software)
소프트웨어는 문제로부터 해결책을 만들기 위해 “데이터를 입력 받아 정보를 생성하여 출력하도록 하는 일련의 일처리 순서 집합”으로 하드웨어에게 일하는 순서를 알려준다. 소프트웨어의 종류는 [그림 4]와 같이 문서편집 소프트웨어, 브라우저 소프트웨어, 개발도구 소프트웨어, 운영체제 소프트웨어, 보안 소프트웨어, 일반 소프트웨어 등 다양하다. 운영체제 소프트웨어는 하드웨어와 소프트웨어의 중간에 있는 것으로 하드웨어를 관리하고, 소프트웨어의 실행을 관리하는 역할을 한다. 그리고, 개발도구 소프트웨어는 소프트웨어를 개발할 때 사용하는 소프트웨어이다. 브라우저 소프트웨어는 웹 문서를 해석하고 실행한다. APP 소프트웨어는 안드로이드, iOS(iPhone OS) 등에서 실행되는 소프트웨어를 말한다. 이외에도 산업 현장에서 사용하거나 특수목적으로 사용하는 소프트웨어가 있다.
컴퓨터 동작 과정 알아보기
하드웨어와 소프트웨어가 어떤 과정을 거쳐 자료를 정보로 바꾸는지 알아보자. 이를 통해 파이썬 언어로 개발된 소프트웨어가 하드웨어와 어떻게 상호작용을 하는지 살펴보자. 우리가 만든 소프트웨어가 컴퓨터에 설치되어 있다고 가정한다. 소프트웨어가 하드웨어를 이용하여 정보를 생성하는 과정은 [그림 5]와 같다. 컴퓨터에는 [그림 5]-①과 같이 저장장치인 HDD나 SSD에 소프트웨어가 저장되어 있다. 사용자가 소프트웨어를 구동하면 소프트웨어는 [그림 5]-②와 같이 메모리(RAM)에 특정한 공간을 할당받아 배치된다. 메모리에 적재된 소프트웨어는 정보를 생성하기 위해 CPU에 [그림 5]-③과 같이 보내진다. 소프트웨어가 CPU를 사용하는 것을 프로세스(Process)라고 한다. 이제 소프트웨어가 동작할 준비가 되었다. 사용자는 소프트웨어의 입력 부분을 입력장치를 이용하여 [그림 5]-④와 같이 입력하게 된다. 사용자가 입력한 자료는 [그림 5]-⑤와 같이 기억장치인 RAM에 공간을 할당받아 저장되고, 자료는 처리를 위해 [그림 5]-⑥과 같이 CPU로 로드(load)되며, CPU에서 연산 과정을 거쳐 정보를 생성하게 된다. CPU에서 생성된 정보는 [그림 5]-⑦과 같이 메모리에 저장된다. 마지막으로 소프트웨어는 메모리에 저장된 정보를 [그림 5]-⑧과 같이 출력 장치인 모니터나 프린터, 또는 저장장치에 표현한다. 컴퓨터 동작 과정을 제대로 이해해야 소프트웨어를 만들 때 왜 변수가 필요하고, 프로그램 문법을 이용해 변수를 조작하는지 이해할 수 있다.
---「1. 소프트웨어와 파이썬」중에서