1-1. 컴퓨터 프로그래밍이란 뭘까요?
【배우기】
1. 프로그래밍의 뜻은 무엇일까요?
2. 컴퓨터가 쓰는 언어는 어떤 것일까요?
1프로그래밍의 뜻은 무엇일까?
활동1
컴퓨터 프로그래밍이란?
프로그래밍의 의미를 이해하고 프로그래밍 개념 이해에 필요한 관련 용어와 그 뜻을 익히는 내용이다. 프로그래밍으로 할 수 있는 일을 알아보고, 프로그래밍 언어의 필요성과 코딩의 중요성을 이해한다.
교재, 이미지
1.소프트웨어 교육에서 사용되는 용어는 영어 단어가 많다. 청각장애학생이 이해할 수 있도록 비유와 이미지를 적절히 활용하여 지도한다.
2.프로그래밍을 한다는 것이 어떤 의미를 갖고, 일상생활에서 프로그래밍이 적용된 것들을 다양하게 제시하여 지도한다.
3.이솦(https://www.ebssw.kr/)의 SW지식-교양/상식 코너에서 소프트웨어와 코딩에 관한 영상자료를 활용할 수 있다.
가. 프로그래밍의 뜻을 알아봐요
프로그래밍(Programming)이란 프로그램(Program)을 만드는 일을 말한다. 프로그램은 컴퓨터에게 내리는 명령어의 모음을 말하고, 명령어 모음을 만드는 일을 프로그래밍이라고 한다. 그리고 이 프로그램이 모여서 소프트웨어가 된다. 즉, 프로그래밍은 소프트웨어를 만드는 과정이고, 이러한 소프트웨어를 만들 때 사용하는 도구를 ‘프로그래밍 언어(Programming Language)’라고 한다.
▲ 프로그램과 프로그래밍의 개념
▲ 컴퓨터는 어떤 방법으로 사람과 대화할 수 있을까?
안타깝게도 컴퓨터는 사람들이 쓰는 말을 바로 이해 할 수 없다. 컴퓨터가 이해할 수 있는 말인 프로그래밍 언어가 필요하다. 프로그래밍 언어는 대부분 영어 알파벳과 같은 문자, 숫자, 기호, 문장부호의 모음으로 이루어져 있다. 프로그래밍으로 명령어를 입력하면 컴퓨터에 컴퓨터의 하드웨어가 이해할 수 있는 ‘0’과 ‘1’로 이루어진 기계어로 전달된다. 프로그래밍 언어는 이것을 이때 컴퓨터에게 내릴 명령어를 사람이 이해할 수 있는 명령어 형태로 만들어 놓은 것이다.
이와 같은 프로그래밍 언어의 문자나 숫자를 코드(code)라고 한다. 그래서 프로그램을 실행하기 위하여 프로그래밍 언어로 명령어를 만드는 과정, 즉 코드를 만드는 것이라는 의미에서 프로그래밍을 코딩(coding)이라고 한다. 1)
나. 프로그래밍으로 할 수 있는 일
① 문제해결능력을 키우는 프로그래밍
프로그램을 써서 우리는 컴퓨터를 직접 우리 마음대로 쓸 수 있다. 해결해야 할 문제와 해야 할 일들이 있을 때, 프로그램을 사용하면 효율적으로 쉽게 할 수 있다. 이미 갖고 있는 프로그램으로 해결되지 않을 때, 프로그래밍으로 새로운 것을 만들어내면 더 많은 것을 할 수 있게 된다.
MS의 빌게이츠나 페이스북을 만든 마크 저커버그, 구글을 창업한 래리 페이지는 모두 어려서부터 프로그래밍을 통해 여러 가지를 만들어봤다고 한다. 우리는 프로그래밍 언어로 문제를 해결하고자 할 때 추상화를 통해 문제를 단순화하여 해결하기 좋은 형태로 만들고, 순서와 방법에 따라 알고리즘을 설계한다. 이렇게 설계한 알고리즘이 프로그래밍 언어로 표현되면 컴퓨터가 그 언어를 해석하여 그 다음부터 자동으로 문제를 해결할 수 있게 된다. 이렇게 프로그래밍을 하다 보면 논리적 사고, 계획 및 문제 분석 능력, 문제해결능력이 향상된다.
▲ 어렵거나 반복해서 해야 하는 일을 자동화할 수 있는 방법이 있을까?
② 아이디어를 현실로
좋은 아이디어가 있어도 그것을 현실화 할 수 있는 도구나 방법을 찾지 못한다면 아무 소용이 없게 된다. 프로그래밍을 할 수 있다면 아이디어가 실제적으로 대략 어떻게 나타날지 예상되는 모습을 알 수 있고, 검토하며 다른 사람과 의견을 나누어 볼 수 있다. 프로그래밍은 우리 아이디어를 현실로 만드는 멋진 방법이다. 예를 들어 예전에는 버스 도착 시간을 알지 못해 버스정류장에서 무작정 기다려야 했지만 요즘은 버스의 위치를 인터넷과 스마트폰 애플리케이션으로 확인해서 어디서든 버스 도착 시간을 확인하고 도착시간에 맞추어 버스정류장으로 움직일 수 있다. 생활에서 불편함을 느끼고, 버스의 위치정보와 교통정보 등을 모으고 전달하는 소프트웨어를 만들어 내어 많은 사람들이 편리한 생활을 할 수 있게 된 것이다.
즉, 프로그래밍은 자신의 생각을 나타낼 수 있는 창의적인 활동이다. 프로그래밍 언어를 활용해 프로그램을 만드는 프로그래머는 사람들이 편리하게 사용할 수 있는 소프트웨어를 개발한다. 그리고 다양한 문제를 해결하고, 게임, 컴퓨터그래픽, 웹사이트, 어플리케이션 등을 만들어 쓸 수 있게 해준다.
다. 소프트웨어 만들 때는 프로그래밍!
우리가 해결해야 하는 문제들은 쉽게 해결되기도 하고 해결이 어렵고 복잡할 때도 있다. 복잡한 문제일수록 해결을 위한 시간이 많이 걸리고, 결과에 대해서도 실수나 오류가 발생하기 쉽다. 그리고 비슷한 문제를 계속해서 해결해야 할 때에는 같은 순서를 매번 똑같이 반복해야 하므로 비효율이기도 한다. 하지만 어떤 경우는 컴퓨터를 사용하면 쉽게 그 문제를 해결할 수 있다.
우리는 일상생활에서 컴퓨터와 스마트폰으로 소프트웨어를 다양하게 활용하고 있다. 이를 어떻게 활용하느냐에 따라 우리의 생활은 더 편해질 수 있다. 소프트웨어 만들기도 마찬가지다. 어떤 문제 상황에서 그 문제를 해결하기 위한 방법을 생각해보고 이 방법을 눈으로 볼 수 있게 표현하는 코드를 작성한다. 어떤 재료를 쓸 것 인지, 어떤 순서로 할 것인지, 어떤 방법으로 할 것인지 준비한다. 그리고 프로그래밍 언어로 이것을 나타낸다. 프로그래밍이 끝나면 테스트를 해보고, 잘못된 부분이 있으면 수정(디버깅)하면 된다.
라. 컴퓨터에게 말하는 프로그래밍 언어
우리가 사는 세계에는 한국어, 영어, 중국어 등 다양한 말, 즉 언어가 있다. 우리는 이러한 여러 가지 언어를 써서 다른 나라의 사람들과 대화한다. 바로 언어가 다양한 문화를 이어 주는 역할을 하는 것이다. 그렇다면 우리가 컴퓨터와 대화하거나 컴퓨터에게 명령을 내리려면 어떻게 해야 할까? 바로 사람과 컴퓨터가 서로 대화하고 서로의 말을 이해할 수 있는 언어가 필요하다. 그것이 바로 프로그래밍 언어이다. 프로그래밍 언어를 쓴다는 것은 외국어를 익히는 것과 비슷하다.
이러한 프로그래밍 언어는 종류가 매우 많다. 프로그래밍 언어는 발전하는 단계나 실행하는 방법에 따라 여러 가지가 있다. 그중에 기계 중심, 즉 컴퓨터 중심의 언어는 작성 및 수정이 어렵고 기계마다 명령어가 다르고 하드웨어에 대해 알아야 할 것도 필요하다. 그렇지만 장점으로 실행 속도가 빠르다. 기계 중심 언어는 기계어, 어셈블리어와 같은 언어가 있다. 그리고 반대로 우리가 일상생활에서 쓰는 대화 같이 자연스런 말과 비슷하게 되어 있어 배우기 쉽고, 기계 중심 언어에 비해 개발하는 시간이 짧고, 프로그램을 유지하고 고치기가 쉬우며, 컴퓨터의 종류가 달라도 적용하기 편한 C언어, 자바, 파이선 등의 언어가 있다. 또한 프로그램은 사람이 쓰기 편한 프로그래밍 언어로 만든 것을 컴퓨터가 이해할 수 있는 언어로 바꾸어야 실행될 수 있다. 즉 프로그래머가 프로그래밍 언어로 만든 원시 프로그램(Source Program, Source Code)을 목적 프로그램으로 바꾸어 주기 위해서는 한국어를 영어로 바꿔주는 것처럼, 언어 번역 프로그램이 필요하다. 언어 번역 프로그램에는 어셈블러, 컴파일러, 인터프리터가 있다.
▲ 프로그래밍 과정
예를 들어 어셈블리어는 복잡한 기계어 명령을 사람이 이해할 수 있는 기호나 단어로 바꿔 만든 것이다. 예를 들면 '01001100 00001000 10000001 10010000'같은 기계어 명령을 어셈블리어에서는 ‘MOV'라고 표현한다. 물론 컴퓨터는 ’MOV'를 바로 이해하지 못한다. 컴퓨터는 0과 1만 알아듣기 때문이다. 그래서 이 어셈블리어는 컴파일이라는 번역 과정을 거쳐 컴퓨터가 이해할 수 있게 바꾸어 준다. 프로그래머가 어셈블리어로 코드를 만든 후 ‘컴파일러’로 실행하는데 이 컴파일러 실행파일이 바로 프로그램이다. 그리고 인터프리터는 프로그래밍 언어로 적은 코드를 실시간으로 바로바로 기계어로 해석해서 실행해 준다. 인터프리터 방식은 오류를 발견해서 수정하면 바로 즉시 실행할 수 있기 때문에 컴파일 방식에 비해 개발 속도가 빠르다. 우리가 공부할 ‘파이선’도 인터프리터 방식의 프로그래밍 언어다. 2)
[생각해 보기]
프로그래밍 언어로 명령어를 만드는 과정, 즉 코드를 만드는 것을 이라고 한다.
<참고문헌>
1) EBS(2016). Hello EBS 소프트웨어. 서울: EBS한국교육방송공사.
2) 박상현(2016). 뇌를 자극하는 파이선 3. 서울: 한빛미디어.