Life is too short, You need Python
파이썬이 인기다. 입문하기 쉬울 뿐만 아니라, 여러 강력한 라이브러리가 제공되고 있어 중요도가 높아지고 있다. 특히나 데이터 사이언스, 머신러닝, 딥러닝이라는 키워드에서 파이썬은 거의 빼놓을 수 없다. 필자도 scikit-learn이나 tensorflow를 많이 쓰지만, 그만큼 파이썬을 제대로 익힐 필요성에 대해 이해하고 있으면서도, 다른 공부를 하느라 파이썬 공부를 소홀히 하곤 했다. 파이썬이 쉬운 언어라고 하는 만큼 대충 배워도 대충 쓸 수 있어서.. 이번에 기본기의 중요성을 조금 깨닫고, 다시 제대로 파이썬을 익혀본 경험을 글로 남겨보려고 한다.
코딩 배울 때 많이들 책이나 강의보고 시작한다. 필자도 예전에 C 배울 때는 진득하게 열혈강의 책 붙잡고 공부하기도 했지만, 결국 내가 제대로 이해하게 된 건 직접 학교에서 나오는 코딩 과제를 해보면서였다. 일단 뭐라도 직접 손으로 짜 보면서 이해하는 게 편한 스타일인가.. 이런 관점에서 직접 코딩을 해보면서 파이썬을 배울 수 있는 방법이 없을까? 꽤 도움이 되는 여러 사이트가 있다.
https://www.codecademy.com/ko/tracks/python-ko
파이썬 입문자에게 정말 좋다. 왼쪽의 설명 창에는 주요 개념에 대해 간결하게 설명되어 있으며, 오른쪽 창에서는 주어진 문제를 직접 짜보며 파이썬을 익힐 수 있다. 컴파일을 하면 결과를 확인하여 틀린 부분을 찾아주는데, 사이트가 잘 되어 있어 배우는데 상당히 도움이 된다. UI도 좋고 한글로 되어 있어 쉽고 빠르게 파이썬을 익힐 수 있다.
비슷한 사이트로는 바로 실행해보면서 배우는 파이썬이 있다. 그럭저럭 좋아 보이는데, 직접 하다 보면 느끼겠지만 여기는 사이트가 다소 불안정하다..
https://www.hackerrank.com/domains/python
이곳도 마찬가지로 먼저 설명을 훑어보고, 아래에 나오는 문제를 풀어보며 파이썬 코딩을 익힐 수 있는 사이트이다. 난이도를 직접 고를 수 있을 뿐만 아니라, 공부할 주제도 다양해서 원하는 주제를 선택해서 공부하기 좋다. 필자의 경우 평소에 Numpy 라이브러리를 쓸 일이 많은데, 여기서 Numpy 문제들을 풀어보며 꽤 감을 익힐 수 있었다. 사실 파이썬 자체의 문법뿐만 아니라 이렇게 여러 라이브러리들에 익숙해지는 것도 중요하지 싶다.
https://app.codility.com/programmers/
사실 여기는 파이썬이라기보다는 알고리즘 연습 사이트이다. 꽤 어렵다. 문제 보고 "어 이거 대충 이렇게 하면 돌아가네?"하고 제출하면 낮은 점수에 당황하게 될 것이다. 그냥 단편적인 결과를 내는 코드가 아니라, 다양한 조건에서 정확한 결과를 낼 수 있도록 해야 한다. 뿐만 아니라 time complexity도 고려하여, 효율적인 알고리즘이 되도록 코딩해야 한다. 프로그래머가 알고리즘이나 수학을 잘해야 한다는 게 이런 문제를 잘 풀기 위함이 아닐까 싶다.. 때로는 진행하면서 가끔 맞닥뜨리는 어려운 문제에 좌절하기도 하지만, 문제를 풀수록 실력이 늘어나는 자신을 발견할 수 있다.
그럼에도 불구하고 더 실력을 키우기 위해서는, 역설적이지만 어느 정도 서적을 참고해야 할 필요가 있다. 대체로 중고급 수준의 파이썬을 익히는 데는 "Effective Python 이펙티브 파이썬 : 파이썬 코딩의 기술", "파이썬 완벽 가이드(Python Essential Reference)", "처음 시작하는 파이썬(Introducing Python)", "전문가를 위한 파이썬(Fluent Python)" 등의 서적이 추천된다. 필자의 경우 이펙티브 파이썬을 보고 있는데, 파이썬도 아무렇게나 코딩하는 것이 아니라 나름의 룰이 있으며, 그러한 "Better Way"를 전달하는 내용이다. 이것도 쉽지만은 않다. 파이썬이 대충 알면 쉽지만, 자세히 보다 보면 꼭 쉽지만은 않은 언어가 아닐까 싶다.