본문 바로가기

Programmer.cpp

'첫 프로그래밍 언어로서 왜 Python인가?' 라는 글을 읽고

(원문링크) '첫 프로그래밍 언어로서 왜 Python인가?' : http://ces.yonsei.ac.kr/?p=1576


미안하게도 이 글에는 매우 반대합니다. 글이 길어질듯 하니 경어는 생략하겠습니다.




첫 프로그래밍 언어의 선택은 중요한 문제다. 그러나, 이 글에서 언급한 '수업을 위한 프로그래밍 언어'의 요구조건 (구문, 구조 간단. 표현 용이. 현대적 접근법 지원. 실용성)은 파이썬만의 특징이 아니다. 첫 언어로 가장 기피되고 있는 C++를 예로 들어보자. 실용성과 현대적 접근법의 지원은 물론 되지만, 간단하거나 쉽지는 않다. 하지만, 관점을 돌려볼 필요가 있다.
두 가지 질문을 던져보겠다.

1. 첫 프로그래밍 언어를 배우는데 그 언어의 100%를 배울 필요가 있는가?
2. 정말 배우려는건 '프로그래밍'인가 '언어'인가?

나는 개인적으로 프로그래밍을 완전 처음 배우는 동생에게 C++을 가르친 적이 있다. 물론, C++는 단지 도구였고, 실제로 가르친 것은 '프로그래밍'이었다. 처음 가르쳐준 프로그램 코드는 C++ 프로그래머라면 누구에게나 친숙한 cout << "Hello" << endl; 이었다. 단지, 저 한 줄 뿐이었다. 위에 붙는 include 라던지 main 이라던지 이딴건 없었다. 그런 것들은 내가 미리 만들어줬고, 늘 '이 위치에 적고, 컴파일하면 실행된다' 라는걸 알려줬을 뿐이다. 그렇게 시작했고, 길지 않은 시간 안에 C++의 깊은 부분까지 배워서 실무에 써먹을 수준이 되었었다.

그렇다면, 내가 왜 그 동생에게 C++를 첫 언어로 가르쳤을까? 내게 가장 익숙한 언어가 C++이었던 이유도 있었겠지만, 그 보다 더 큰 이유는 그 녀석의 목표가 '언어의 습득'이 아니라 '최고의 프로그래머'였기 때문이다. 내게 한 첫 질문이 '어떤 언어가 가장 좋은가요?' 였고, 나는 서슴없이 C++이라고 대답했기에 선택된 언어였다.

다시, 앞서 던졌던 두 가지 질문으로 돌아가보면, 첫 언어를 배우는데 처음부터 그 언어의 100%를 배울 필요는 없다. 누구나 시작은 있고, 그 시작은 한 걸음부터 시작한다. 아무리 어려운 언어라도, 어려운 부분 걷어내면 쉽게 시작할 수 있다. 그렇게라도 언어의 선택에 자유로움을 둘 수 있는 이유는 배우고자 하는 것이 '언어'가 아닌 '프로그래밍'이기 때문이다.

프로그래밍은 흔히 '컴퓨터와의 대화' 라는 아름다운 해석을 하는 사람들이 있던데, 틀렸다. 프로그래밍은 '명령'이다. 대화를 하고 싶은 사람이 있다면 아이폰 사서 시리랑 대화해라. 명령이기 때문에 명령하는 방법을 알아야 하고, 그 결과에 대한 책임은 모두 프로그래머의 몫이다. 프로그래밍 언어란 그 '명령하는 방법'중 하나이다. (옆에 동시통역사 세워두고 명령하면 인터프리터 언어를 쓰는거고, 명령메뉴얼을 만들어서 던지면 컴파일러 언어를 쓰는거고, 누가 만들어놓은 작전A, 작전B 중에 골라서 던지면 스크립트 언어를 쓰는거다) 어떤 방법이든 명령은 할 수 있고, 명령받은 컴퓨터는 행동한다. 단지, 방법에 따라 행동할 수 있는 범위와 효율이 바뀔 뿐이다.

언어를 선택한다는건 그 방법의 내용보다 그것을 통해 앞으로 무엇을 하고 싶은지를 먼저 생각해서 결정할 문제다. 그냥 단순히 프로그래밍의 원리를 이해하고 논리적인 사고를 배우고 싶다면 스크래치만 배워도 충분하다. 교양으로 배우는 사람에게 언어의 실용성을 따지는건 쓸데없는 짓이다. 언어마다 용도와 한계가 분명히 있다. 또한, 어떤 언어라도 논리에 대한 부분은 거기서 거기다. 더 어렵거나 쉽거나 한 수준이 아니다. 배우는 사람들을 너무 과소평가 한거다. 언어가 쉽고 어렵고는 그걸 아는 사람의 입장에서 판단하는 오만일 뿐이다. 직접 물어보기 바란다.

'어떤 프로그래머가 되고 싶으십니까?'

그리고, 그 목표에 맞는 언어를 골라주는게 언어를 추천해줄 사람이 할 일이다.

ps. 세미콜론 빠뜨리는게 '쓸데없이' 신경써야할 부분이라고? 어차피 파싱과정까지 가야할 학생의 경우라면 첫 언어 배우면서 그걸 지겹도록 겪어보는게 이득이다.

'Programmer.cpp' 카테고리의 다른 글

Word Alignment 이야기  (0) 2013.09.21