![](https://grm-project-template-bucket.s3.ap-northeast-2.amazonaws.com/lesson/les_lMqGQ_1472211582374/c37d5ee258c44b78b97c7c8f7af1fd10ab9dbd1b6d2e33948301234eb4cc0075.png)
프로그래밍(Programming)이란 프로그램을 만드는 행위, 간단히 개발이라고 말해도 좋습니다. 그리고 프로그래머(Programmer)는 프로그래밍하는, 즉 프로그램(Program)을 만드는 사람입니다. 프로그래머와 프로그래밍에 공통으로 사용되는 단어, 프로그램이란 무엇일까요? 프로그램은 우리 주변에서 충분히 찾아볼 수 있습니다. 지금 세상에서 프로그래밍과 관련되지 않은 것들을 찾아보는 게 더 어려울 정도입니다. 컴퓨터 게임, 온라인 메신저, SNS뿐만 아니라 일상 생활에서 사용하고 있는 생활 가전 제품에도 프로그램이 탑재되어 있습니다. 프로그램은 특정 목적을 위해 컴퓨터에 내리는 명령의 집합으로 목적을 무엇으로 삼느냐에 따라서 전혀 다른 종류의 프로그램이 될 수 있습니다. 예를 들어 컴퓨터 게임은 여러 사람이 이야기할 수 있는 채팅 기능, 몬스터를 때리는 공격 기능, 사람들과 물건을 사고 팔 수 있는 거래 기능 등 다양한 기능을 가지고 있는 복합프로그램인 반면, 냉장고는 사람이 설정한대로 냉장고 내의 온도를 설정하는 비교적 단순한 프로그램이 내장되어 있습니다. (요즘 점점 가전 제품도 기능이 많아지고 있지만 필수 기능을 위주로 든 예시입니다.)
이제 프로그램이 무엇인지, 프로그래머가 어떤 사람인지, 프로그래밍이 어떤 것인지 간단하게나마 이해가 되시나요?
프로그래밍... 어렵지 않나요?
프로그래밍(Programming)이라는 단어를 들었을 때, 어렵고 난해한 것이라고 대부분의 사람들이 생각합니다. 프로그래밍은 어려운게 맞습니다. 처음 프로그래밍을 시작한다면 프로그래밍에 대한 감을 잡기까지 적지 않은 시간이 걸리기에 더욱 쉽지 않습니다. 그 이유는 우리가 컴퓨터에 대해 이해하고 있지 않기 때문입니다. 게임을 즐기거나 램(RAM), 하드디스크, 그래픽카드 같은 컴퓨터 부품이 어떤게 좋은지 관심을 가져본 적은 있으나 정작 우리는 컴퓨터에 대해 이해하고 있는 것이 매우 적습니다.
인터넷에 돌아다니는 유머 글 하나를 예시로 들어볼까요?
개발자 : 여보 나 지금 퇴근했어. 집에 가는 길에 마트 들를 건데 뭐 사다줄까?
아내 : 우유 두 개 사와.
개발자 : 그리고?
아내 : 만약 마트에 달걀이 있으면 여섯 개 사다 줘.
귀가한 개발자, 아내에게 우유 6개를 건넨다.
아내 : 왜 이렇게 우유를 많이 샀어?
개발자 : 마트에 달걀이 있길래.
일반적으로 생각하면 개발자의 행동이 잘 이해가 되지 않습니다. 대부분의 여러분이 생각했듯이 아내의 의도는 우유 2개 그리고 달걀이 있을 경우 달걀 6개를 구매해오라는 것이었지만, 실제로 개발자가 아내에게 건내준 건 우유 6개 뿐이었습니다. 전자(우유 2, 달걀 6)는 사람이 일을 처리하여 얻은 결과이고, 후자(우유 6)는 컴퓨터가 일을 처리하여 얻은 결과입니다.
![](https://grm-project-template-bucket.s3.ap-northeast-2.amazonaws.com/lesson/les_lMqGQ_1472211582374/efcae3721767260d1bfed52ce5d0fbdae07fbd1c3b699a35a012725a834524bc.png)
그렇다면 왜 컴퓨터와 위의 개발자는 여섯 개의 우유를 구매했을까요? 사람은 어느 정도 융통성이 있어 상황에 맞춰 행동하지만, 컴퓨터는 융통성 없이 주어진 명령대로만 행동합니다. 컴퓨터처럼 행동하는 이 개발자가 알맞게 물품을 사오게 하려면 "만약 마트에 달걀이 있으면 여섯 개 사다 줘"가 아니라 "만약 마트에 달걀이 있다면 달걀 여섯 개를 사다줘"라고 말했어야 합니다. 참 사소하지만 컴퓨터에게는 매우 중요한 문제입니다. 이렇듯 프로그래밍에 익숙해지려면 명령을 내렸을 때 컴퓨터가 일을 처리하는 방식과 사람이 일을 처리하는 방식의 차이점에 대해 이해해야 합니다. 윗 글을 개발자가 아닌 사람들이 본다면 조금 의문을 품을 수도 있지만, 개발자라면 단번에 이해하고 납득했을 것입니다. 컴퓨터와 같은 행동 방식에 대해 잘 이해하고 있고 익숙하기 때문이죠.
다시 한 번 원점으로 돌아와서 "프로그래밍이 어렵지 않나요?"라는 질문에 답해보겠습니다. 프로그래밍은 천재들만 할 수 있다든지, 특출난 재능이 있어야 한다든지 그런 거창한 것이 아닙니다. 프로그래밍이란 결국 컴퓨터가 행동하는 방식을 이해하고 컴퓨터가 알아 들을 수 있도록 명확한 명령을 작성해주는 것 뿐입니다. 윗 글을 이해할 수만 있다면 프로그래밍을 시작하는 데 그것만으로도 충분합니다.
![](https://grm-project-template-bucket.s3.ap-northeast-2.amazonaws.com/lesson/les_lMqGQ_1472211582374/33e8f70030cb68f0c632ac77985449e6312b5fb53ad3dbd0100d24f88e424784.png)
왜 프로그래밍을 배워야 하나요?
왜 프로그래밍을 배워야 할까요? 재밌는 게임을 만들기 위해? 세계적인 서비스를 만들기 위해? 그런 것들도 하나의 답이 될 수 있겠지만, 저는 사고하는 법을 배울 수 있기 때문에 프로그래밍을 배워야 한다고 생각합니다. 프로그래밍은 주어진 문제를 효율적으로, 체계적으로, 창의적으로 해결할 사고력와 판단력을 길러줍니다. 문제에 다양한 관점에서 접근할 수 있게 되고, 생각의 폭을 넓혀주죠. 프로그래밍을 통해서 세상을 보는 눈이 달라질지도 모릅니다. 프로그래밍을 배우기 이전과 이후로 생각의 경계가 나눠질 정도로 말이죠.
컴퓨터 없는 일상을 생각조차 못 할 지금의 세상에서 컴퓨터가 어떻게 움직이는지 알고, 이해하고, 그에 맞는 사고를 기르는 것은 몇 번을 강조해도 모자라지 않습니다. 당신의 꿈이 프로그래머가 아니더라도, 프로그래밍은 당신의 꿈을 현실로 만드는 데에 힘을 보태주리라 생각합니다. 아이디어가 있다면 그 아이디어를 구체적으로 실현시켜주는 가장 빠른 방법은 프로그래밍이니까요.
프로그래밍을 왜 배워야 한다고 묻는다면, 자신의 꿈을, 미래를 위해서라고 자신있게 대답하세요!
프로그래밍으로 할 수 있는 것에는 무엇이 있나요?
머리 속으로 생각하고 있는 대부분의 것들을 구현할 수 있습니다. 게임, 메신저나 SNS뿐만 아니라 다양한 웹 사이트도 만들 수 있습니다. 스마트폰의 어플도 만들 수 있겠지요.
물론 이 강의를 통해 C언어를 배우고 난 뒤 당장 저런 대단한 결과물을 만들 수는 없을 겁니다. 사실 이 강의를 끝날 때까지 흰 배경과 까만 글씨 혹은 까만 배경과 알록달록한 글씨만 보시게 될 거에요. 웹 프로그래밍은 자바스크립트나 html/css 등을 배워야 하고, 게임을 만드려면 C++이나 unity를 알아야 합니다. 안드로이드 앱은 자바나 코틀린, IOS 앱은 스위프트나 Objective-c를 이용해야 하고요.
하지만 이 강의를 통해 C언어를 배우며 컴퓨팅적 사고력을 키운다면, 강의가 끝난 후 다른 프로그래밍 언어를 배우더라도 훨씬 쉽게 접근할 수 있습니다. 그렇게 프로그래밍에 한발짝씩 다가간다면 여러분들이 원하는 프로그램을 만드는 것도 그렇게 먼 미래는 아닐 것입니다.