프로그래밍이 무엇인가요?
프로그래밍(Programming)이란 흔히 개발이라고 부르기도 하며, 말 그대로 프로그램을 만드는 행위입니다. 이러한 프로그래밍을 하는 전문가를 프로그래머(Programmer) 또는 개발자라고 부르는데요. 즉, 프로그램(Program)을 만드는 사람입니다. 프로그래머와 프로그래밍에 공통적으로 사용되는 단어, 프로그램이란 무엇일까요?
프로그램은 우리 주변에서 충분히 찾아볼 수 있습니다. 지금 세상에서 프로그래밍과 관련되지 않은 것들을 찾아보는 게 더 어려울 정도입니다. 컴퓨터 게임이나 카카오톡, 라인과 같은 메신져, 페이스북, 인스타그램, 트위터 같은 SNS 는 물론, 일상 생활에서 사용하고 있는 에어컨, 냉장고, 오디오, 핸드폰, 컴퓨터와 같은 전자 제품에도 프로그램이 이용되고 있습니다. 프로그램은 한 마디로 특정한 목적을 위해 컴퓨터에게 내리는 명령의 묶음이며, 위에 나열한 다양한 사례들처럼 어떤 목적을 수행하는 프로그램을 만드느냐에 따라서 전혀 다른 종류의 프로그램을 만들 수 있습니다. 메신저 프로그램이라면 채팅을 목적으로, 냉장고에 쓰이는 프로그램은 냉각기능을 효율적으로 가동하는 목적으로 사용됩니다.
이제 프로그램이 무엇인지 막연히나마 알 수 있고, 이제 프로그래머가 어떤 사람인지, 프로그래밍이 어떤 것인지 이해할 수 있습니다.
프로그래밍...어렵지 않나요?
프로그래밍(Programming)은 어렵고 난해한 것이라고 대부분의 사람들이 생각합니다. 또한 그런 생각처럼 처음 프로그래밍을 접하면 감을 잡기까지 적지 않은 시간이 걸립니다. 가장 큰 이유는 컴퓨터 소프트웨어의 작동원리에 대해 이해하지 못하고 있기 때문입니다.
프로그래머들이 공감하는 유머 하나를 예시로 들어 설명 해보겠습니다.
개발자 : 여보 나 지금 퇴근했어. 집에 가는 길에 마트 들를 건데 뭐 사다줄까?
아내 : 우유 두 개 사와.
개발자 : 그리고?
아내 : 만약 마트에 달걀이 있으면 여섯 개 사다 줘.
귀가한 개발자 아내에게 우유 6 개를 건낸다.
아내 : 왜 이렇게 우유를 많이 샀어?
개발자 : 마트에 달걀이 있길래.
일반적으로 생각하면 개발자의 행동이 잘 이해가 되지 않습니다.
아내의 의도는 우유 2개 그리고 달걀이 있을 경우 달걀 6개였지만, 실제로 개발자가 아내에게 건내준 건 우유 6 개 뿐이었습니다. 전자(우유 2, 달걀 6)는 사람이 일을 처리하는 방식이고, 후자(우유 6)는 컴퓨터가 일을 처리하는 방식입니다. 윗 글에 나온 개발자의 행동 방식은 컴퓨터의 행동 방식과 동일합니다.
이 글을 보는 대부분의 사람들이 그렇듯이, 보통 사람은 컴퓨터보다 훨씬 융통성 있게 생각합니다. 아내가 달걀을 언급한 것에서 '달걀을 사오길 원하는 구나'라고 짐작하거나, 우유를 여섯 통이나 필요로 하진 않을 것이라고 짐작하여 '달걀 여섯개를 사오라는 거구나'라고 짐작할 것입니다. 그래서 만약 마트에 달걀이 있으면 (달걀을) 여섯 개 사다 줘라고 해석할 수 있습니다.
반면 컴퓨터는 융통성 없이 주어진 명령대로만 행동합니다. 컴퓨터처럼 행동하는 이 개발자가 알맞게 물품을 사오게 하려면 만약 마트에 달걀이 있으면 여섯 개 사다 줘가 아니라 만약 마트에 달걀이 있다면 <달걀> 여섯 개를 사다줘 -라고 콕 집어 알려주어야 하는 것입니다. 명령이 가리키는 것이 매우 명확하지 않으면 이 사례처럼 원하지 않는 결과물이 나오는 오류가 발생할 수 있습니다.
프로그래밍에 익숙해지려면 명령을 내렸을 때 컴퓨터가 일을 처리하는 방식과 사람이 일을 처리하는 방식의 차이점에 대해 이해하고 있어야 합니다. 윗 글을 개발자가 아닌 사람들이 본다면 조금 의문을 품을 수도 있지만, 개발자라면 단번에 이해하고 납득했을 것입니다. 컴퓨터와 같은 행동 방식에 대해 잘 이해하고 있고 익숙하기 때문이죠.
다시 한 번 처음으로 돌아와서 프로그래밍이 어렵지 않나요? -라는 질문에 답해보겠습니다. 프로그래밍은 천재들만 할 수 있다든지, 특출난 재능이 있어야 한다든지 그런 거창한 것이 아닙니다. 프로그래밍이란 결국 컴퓨터가 행동하는 방식을 이해하고 컴퓨터가 알아 들을 수 있도록 명령을 짜주는 것 뿐입니다. 위의 유머를 이해할 수 있다면 프로그래밍을 시작하는 데에는 그것만으로도 충분합니다.
왜 프로그래밍을 배워야 하나요?
왜 프로그래밍을 배워야 할까요? 재밌는 게임을 만들기 위해? 세계적인 서비스를 만들기 위해? 프로그래밍을 배우는 사람마다 다양한 목적을 갖고 있을 것입니다. 어떤 목적을 가졌든, 프로그래밍을 배우는 사람 모두가 얻을 수 있는 것은 바로 사고하는 법입니다. 어떤 문제가 주어졌을 때 효율적으로, 체계적으로, 창의적으로 해결하는 사고를, 판단력을 길러줍니다. 문제에 다양한 관점에서 접근할 수 있게 되고, 생각의 폭을 넓혀줍니다. 프로그래밍을 통해서 세상을 보는 눈이 달라질지도 모릅니다. 프로그래밍을 배우기 이전과 배운 후로 경계가 나눠질 정도로요.
굳이 프로그래머가 되지 않아도 좋습니다. 프로그래밍을 통해서 배운 이것들은 어떤 분야에서도 활용할 수 있습니다.
초등학생 때 일기를 쓰고 읽었던 것이 작가가 되기 위함이 아닌 것처럼 프로그래밍 또한 마찬가지입니다.
컴퓨터가 없는 일상은 생각조차할 수 없는 지금의 세상에서 컴퓨터가 어떻게 움직이는지 알고, 이해하고, 그에 맞는 사고를 기르는 것은, 우리 주변의 수 많은 것들을 이해하는 데 도움을 줍니다. 당신의 꿈이 프로그래머가 아니더라도, 프로그래밍은 당신의 꿈을 현실로 만드는 데에 힘을 보태줄 수 있습니다. 아이디어가 있다면 그 아이디어를 구체적으로 실현시켜주는 가장 빠른 방법은 프로그래밍입니다.
프로그래밍을 왜 배워야 한다고 묻는다면, 자신의 꿈을, 미래를 위해서라고 답할 수 있습니다.
프로그래밍으로 할 수 있는 것에는 무엇이 있나요?
머리 속으로 생각하고 있는 대부분의 것들을 구현할 수 있습니다.