안녕하세요 @stunstunstun 입니다. 지난 포스팅에서 파이썬을 프로그래밍을 위한 환경을 준비하고 파이썬 인터프리터와의 첫 만남을 가져보았습니다.
우리가 외국인과 소통을 위해 영어의 문법을 배우는 것과 같이 앞으로 우리는 파이썬 인터프리터가 이해할 수 있도록 파이썬 문법을 차차 학습하는 시간을 갖습니다.
>>> Hi
Traceback (most recent call last):
File "python", line 1, in <module>
NameError: name 'Hi' is not defined
이전 글에서 나는 위와 같이 파이썬 인터프리터에게 첫 인사를 건네 보았다. 당신은 어떠했나? 우리는 처음으로 프로그래밍을 통해 우리의 생각을 표현한다는 것이 낯설고 쉽지 않은 일이라는 것을 알게 되었다.
여기에서 한 번쯤 우리는 왜 프로그래밍을 배워야 하는가에 대한 질문을 했으면 하는데 당신의 생각은 어떠한가? 혹은 우리가 프로그래밍을 통해 얻을 수 있는 긍정적인 경험은 무엇일까?
언어를 활용해 상상하고 표현하는 즐거움은 인간만이 가진 선물과도 같은 일이다. 그리고 당신은 자신을 표현하는 새로운 기술로 프로그래밍 언어를 활용하기 위해 지금 이 글을 읽고 있을지도 모르겠다. 지금은 타계한 스티브 잡스(Steve Jobs)는 자국민의 모든 사람들이 프로그래밍을 배워야 한다고 말했는데 그 이유를 이렇게 덧붙였다. 프로그래밍을 통해 컴퓨터와 같이 사고하는 법을 배울 수 있다고 말이다.
문자 그대로 프로그래밍은 컴퓨터적 사고(Computational Thinking)를 할 수 있도록 도와준다.
컴퓨터적 사고란 무엇일까? 우리가 어떤 복잡한 문제에 직면할 때 효율적으로 해결하기 위한 방법은 무엇이 있을까? 문제를 작게 분리하고 구조화하거나 과정은 어떨까? 과거의 경험을 통해 반복되는 문제를 해결해 왔던 패턴을 활용하는 방법도 좋아 보인다. 사실 지금 이야기하고 있는 해결 방법들은 직접 경험하기 전에는 사실 추상적으로 보일 뿐이다.
하지만 프로그래밍을 하는 과정은 우리를 지금까지는 쉽게 경험하지 못한 다양한 문제에 노출되게 만든다. 결국 컴퓨터적 사고 방식을 기르기 위해서 무엇보다 중요한 것은 다양한 문제에 노출되는 것을 시작으로 주도적으로 문제를 해결해 나아가는 과정을 경험하는 것이다. 마치 갓난 아이가 누군가에게 배우지 않아도 스스로 수 많은 시행착오를 거쳐 언어를 습득하는 것과 마찬가지로 말이다.
이러한 이유로 난 당신이 프로그래밍을 학습하기 위해 파이썬의 문법을 그저 책을 보며 따라 하는 습관에서 벗어나기를 바란다. 다행히도 파이썬 인터프리터는 우리가 실수해도 잘못된 것이라고 불평하지 않는다. 단지 아래와 같이 SyntaxError와 함께 난 단지 너의 표현을 이해하지 못할 뿐이라고 말할 뿐이다.
>>> Please let me know about you!
File "<stdin>", line 1
Please let me know about you!
^
SyntaxError: invalid syntax
우리에게 익숙한 수식을 표현해 보는 것은 어떨까?
>>> 1 + 2
3
유레카(Eureka)! 아르키메데스가 목욕탕에서 부력의 법칙을 발견했을 때의 기쁨이 이랬을까! 파이썬 인터프리터가 우리가 작성한 표현을 이해하는 행복한 일이 벌어졌다. 그뿐만 아니라 수식을 계산해 3이라는 결과도 출력해주고 있다.
우리는 지금까지 1부의 내용을 통해 상상하는 습관을 시작으로 프로그래밍 언어라는 새로운 도구를 활용해 무엇인가를 표현하는 경험을 해보았다. 작은 시작이었지만 무엇인가를 시작한다는 첫 걸음은 매우 위대한 일이다.
2부에서는 다양한 예제를 프로그래밍을 통해 구현하고 그 과정에서 만나는 문제를 지속적으로 개선하는 시간을 갖는다. 앞으로 파이썬 인터프리터가 이해할 수 있는 다양한 기본 요소들을 살펴보도록 하자.
다음 포스팅에서는 우리에게 익숙한 비만도 계산기를 직접 구현하면서 파이썬 문법의 핵심이 되는 기본 요소에 대한 이야기를 이어 나아갑니다.
다음 포스팅도 기대하겠습니다! ㅎㅎ
감사합니다 :D