※ 이 글은 이상한모임에서 lemonade(현지환)님과 수다를 떨다가 "이런 내용의 책, 재밌지 않을까?" 라는 이야기가 나와서 쓰기 시작한 글입니다. 시리즈물로 제가 생각한 앞 부분만 살짝 연재해볼 생각입니다. 책으로 내보자는 이야기도 있었는데 제가 실력이 없으므로 안될겁니다. 근데 이 글이 계속 연재될진 알 수 없...



프로그래밍은 왜 어려울까?

정답부터 말하자면 익숙하지 않아서 그렇습니다. 프로그래밍에서 적는 코드는 컴퓨터와의 대화입니다. 그런데 컴퓨터는 할 일을 정확하게 알려주지 않으면 일을 할 수 없어서 해야할 일을 아주 세부적으로 말해주어야만 합니다. 또한, 사람은 할 수 있지만 컴퓨터는 할 줄 모르는 것은 사람이 하는 방식을 컴퓨터가 따라하게 해야만 가능합니다.

가령 가위바위보를 생각해봅시다. 사람은 가위바위보를 "내가 이길 것 같은 손 모양을 내고 이겼는지 확인한다." 정도로만 생각할 수 있습니다. 하지만 컴퓨터는 저 말 뒤에 배경으로 깔려있는 지식을 단 하나도 알고 있지 않습니다. 하나하나 다 알려주어야만 합니다.

손의 종류는 가위, 바위 보가 있고 이 중 1가지를 골라서 내야하는데 가위는 보에게는 이기지만 바위에게는 지고..

그러기 위해서는 컴퓨터와 대화하는 것에 익숙해질 필요성이 있습니다. 하지만 우리에겐 또 하나의 악몽이 있습니다. 바로 C언어입니다. 정말 안타깝게도 2015년 현재에도 수많은 학교와 학원 등지에서 프로그래밍 입문 언어로써 C를 채택하고 있습니다. 하지만 C는 매우 어려운 언어입니다. 현실세계의 언어로 치면 라틴어 같은 존재입니다. 학교에서 "영어의 기초는 라틴어니까 라틴어를 배웁시다" 라고 하진 않잖아요? 처음 시작하는 언어가 C인 현재의 커리큘럼이 이상한 것이고, 처음 배우면서 C로도 잘 하는 사람들이 이상한 겁니다. 기 죽지 마세요.

C가 어렵지만 필요해요, 그럼 어떻게 하죠?

이 글을 읽는 사람들은 대부분 수강 내지는 재수강을 위해 C가 필요할 수 있습니다. 아무리 어려워도 익혀야할 필요성이 있다면 그나마 쉽게 배우는 과정이 필요합니다.

저는 이 문제에 대해 이런 생각을 가지고 있습니다.

Python을 먼저 배우고 C로 바꿔쓰기를 해봅시다!

C를 배워야 한다는데 Python이란 것까지 들고 나와서 배우라고 합니다. 참 한심하고 이상한 소리같이 들리겠지만 제 설명을 봐주세요. 만약 당신이 6인치 렌즈를 가진 망원경을 만들어야 한다고 칩시다. 당신은 6인치를 바로 만들려고 하고, 당신의 친구는 그 이전에 4인치 짜리 망원경을 먼저 만들겠다고 합니다. 어이없다고 생각하겠지만, 당신의 친구가 먼저 6인치 망원경을 완성할 것입니다. 왜 일까요? 4인치 망원경을 만드는 것은 6인치 망원경을 만드는 것보다는 쉬울 것입니다. 하지만 망원경을 만들면서 필요한 지식은 4인치를 만들면서도 많이 얻을 수 있죠. 나중에 6인치를 만드는 것은 훨씬 수월할 것입니다. (이 이야기는 실화입니다. 이에 대한 자세한 이야기는 애자일 블로그 - 더 많은 일을 하면서 더 빨리 하기를 참조해주세요.)

우리도 동일한 전략을 쓸 것입니다. Python은 비교적 배우기 쉽습니다. Python을 통해 쉽고 간단하게 프로그래밍이라는 것이 어떤 느낌인지 느낀 후에 C를 해도 늦지 않습니다. 급할수록 돌아가야 합니다. 공부할 때 필요한 것은 조바심보다는 집중이라고 생각합니다.

언어를 배운다는 것

자, Python을 배워야 한다고 했는데, 언어를 배운다는 것은 어떤 것일까요?

예를 들어 영어를 배운다고 생각해봅시다. 처음에는 알파벳을 외워야하지만 그 이후에 영어를 다른 사람과 사용하기 위해서는 듣고 말하는 방법을 알아야 합니다. 영어를 하기 위해서는 단어를 알고, 숙어를 알고, 문법을 알아야합니다. 하지만 그것 이상으로 중요한 것이 영어의 문화를 아는 것입니다. 자신이 쓴 영어 표현이 아무리 문법적으로 탈이 없다고 해도 영미권 사람들이 듣기에 "저런 표현은 이상해" 라고 느껴진다면 그것은 소통에 좋은 영어가 아닐 것입니다.

프로그래밍도 마찬가지입니다. 프로그래밍 언어의 문화를 아는 것이 상당히 중요하고, 많은 도움이 될 것입니다. 하지만 대부분의 경우 이런 문화적인 부분까지 다루는 책은 많지 않습니다. 저는 이 글을 통해 그런 부분을 어떤 방식으로 느껴야 하는지 알려드리고자 합니다.

Python 혼자서 설치해보기

아쉽게도 이 글은 시중에 많이 있는 프로그래밍 도서처럼 이것은 무엇이고 저것은 무엇에 쓴다 등등을 단순히 알려주는 것만이 목적은 아닙니다. 여러분에게 지금 필요한 것은 컴퓨터와 친해지는 것입니다. 저는 설치법을 미리 알려주는 것으로써 컴퓨터와 친해질 기회를 빼앗지 않고자 합니다. 실제로 많은 수의 독자 여러분들은 이미 필요할 때 마다 동영상 플레이어나 게임 등을 설치해서 사용하지 않으셨던가요? Python 설치도 마찬가지로 프로그램 설치일 뿐입니다. 일단은 Python을 어떻게 설치해야하는지는 하나하나 알려드리지 않을 것입니다.1 나중에 설치법을 설명은 드리겠지만, 일단 혼자 해보는 연습이라고 생각하고 도전해주세요.

컴퓨터와 대화하기 위한 최소 조건은 개발환경을 꾸리는 것입니다. 대부분의 독자는 Windows 환경일텐데, Python 공식 홈페이지에 이미 exe 파일이 존재하므로 그것을 설치하면 됩니다.

Python의 버전은 3 이상의 버전을 설치하시면 됩니다.2 설치하실때 Path에 Python 경로를 append할 것인지 체크하는 부분이 있는데 유의깊게 보다가 체크해주세요. 설치 과정이 영어로 나오긴 하지만 이 정도의 영어는 어느 언어를 쓰건 조우할 평상시 수준의 영어입니다. 저도 영어를 잘 하는건 아니지만 적응이 필요한 영역입니다.

에디터로는 Atom을 추천하겠습니다. 구글에 Atom으로 검색해서 나오는 에디터를 설치해주세요. 여기서 주의할 점은 구글에 검색하는 것입니다. 개발 관련 내용의 검색에 다른 어떤 국산 검색 엔진도 사용하지 마세요. 국내 자료만으로 한정지어져있는 국산 검색 엔진에선 좋은 자료가 나오지 않습니다. 앞으로 개발을 해나감에 있어서 그것은 명백하게 나쁜 습관입니다.

설명이 없는 부분을 지나치면 설명을 따로 해드리긴 하겠지만, 만약 이 글의 설명이 너무 불친절하다고 생각되면 다른 Python 책도 같이 병행해서 읽는 것을 추천드립니다.

Python과 인사하기

그 다음엔 cmd창을 띄워야 합니다. cmd의 사용법은 추후 다른 글에서 다루도록 하겠습니다.3 Atom도 같이 열어놓습니다. 그리고 다음과 같은 소스를 직접 받아 적고, helloworld.py 란 이름으로 저장해주세요. 복사해서 붙여넣으면 전혀 학습이 되지 않으므로 꼭 타이핑 하도록 합시다.

print("Hello, World!")

cmd에서 해당 파일의 위치로 이동한 후 python helloworld.py라고 입력해보세요. 매 프로그래밍 강의 첫 시간에 매번 하던 지긋지긋한 문구가 여러분을 반겨주고 있나요?

이 프로그램은 괄호 안에 있는 "Hello, World!"라는 것을 출력해주는 단순한 프로그램입니다. 보이는 그대로, Python은 매우 직관적이기 때문에 학습하기 좋습니다.

다만, 이것은 첫 한 걸음에 지나지 않습니다. 첫 술에 배 부를 수 없듯, 지금 걷는 이 첫 걸음에서 멈춰서지 말고 계속 걷는 것이 중요합니다.


수정 안내

  • 글의 컨셉 변경에 따라 챕터명을 일부 변경했습니다.

3장 이어서 보기


  1. 따로 OS별 설치법을 글로 만들어야 정상이지만 게시물로는 만들지 아니할 예정

  2. 프로그래밍을 입문하는 입장이라면 언어적으로 Python 2보다 3이 더 낫다고 생각합니다.

  3. 부록의 형태로 별도 내용이 필요할 것으로 예상