2020.04.20

파이썬 개발이 순조롭다는 것을 알려주는 8가지 신호

Serdar Yegulalp | InfoWorld
개발을 제대로 못 할 때를 알아차리기는 쉽다. 곳곳에서 튀어나오는 버그, 굼벵이처럼 느린 코드, 뒤죽박죽인 프로젝트 구조는 개발이 잘못되고 있음을 알리는 대표적인 3가지 신호다. 반면 개발을 제대로 하고 있을 때를 알아차리기는 그만큼 쉽지 않다. 좋은 프로그래밍 습관은 영화로 치면 잘 만들어진 특수효과와 같다. 눈에 거슬리지 않으므로 그게 특수효과임을 알아차리지 못한다.
 
ⓒ Getty Images Bank

파이썬 프로그래밍을 제대로 하고 있음을 나타내는 3가지 신호는 무엇일까? 좋은 파이썬 개발 습관이 무엇인지 알고 싶은 초보 파이썬 개발자 또는 자신의 습관이 좋은 것인지 궁금한 개발자를 위해 몇 가지 지표를 정리했다. 다음 8가지 모범사례를 따르고 있다면 파이썬을 제대로 하고 있는 것이다.
 

가상 환경과 프로젝트 관리 툴을 사용하고 있다

소규모의 단발성 파이썬 프로젝트에서도 가상 환경과 적절한 프로젝트 구조는 유용하다. 포에트리(Poetry)와 같은 툴은 모든 설정 프로세스를 자동으로 해준다. 소소한 venv만 사용해도 비교적 간단히 가상 환경으로 프로젝트를 설정해 가상 환경의 혜택을 얻을 수 있다.

버전 제어도 중요한 프로젝트 관리 툴이다. 요즘 버전 제어라고 하면 보통 깃(Git)을 의미한다. 파일 하나만으로 구성되는 간단한 프로젝트에서도 깃을 활용하는 것이 좋다. 언제든 이전 버전으로 되돌려야 할지 모르기 때문이다. 파이썬을 지원하는 대부분의 IDE 역시 venv와 깃을 기본적으로 지원하므로 손쉽게 활용할 수 있다.
 

헛심 쓰지 않고 파이썬에 내장된 기능을 활용하고 있다

능숙한 파이썬 프로그래머는 일반적인 활용 사례 대부분을 파이썬의 내장 함수와 표준 라이브러리를 이용해 처리한다. 파일 조작, 정규식, 웹 브라우저 작업 등 일반적으로 필요한 작업은 거의 다 파이썬에 있는 기능으로 할 수 있다.

경험이 부족한 파이썬 개발자가 흔히 하는 질문은 표준 라이브러리의 내용을 몽땅 기억하지 않고 그 안에 내 사용 사례에 맞는 뭔가가 있는지 어떻게 아느냐는 것이다. 간단히 팁을 공개하면, 표준 라이브러리 인덱스와 내장 함수 개요 페이지를 북마크한 다음 일상적인 프로그래밍 문제에 맞닥뜨릴 때마다 이 페이지를 둘러보는 것이다. 파이썬 내에 있는 툴을 지속적으로 접하는 것이 가장 효과적인 학습법이다.
 

작업에 맞는 모듈을 사용한다

내장 및 표준 라이브러리와 마찬가지로 파이썬의 방대한 서드 파티 모듈은 업무량을 줄이는 데 큰 도움이 된다. 예를 들어 파이파이(PyPI)의 웹 프론트 엔드를 통해 궁금한 문제를 검색하면, 대부분 바로 사용할 수 있는 모듈을 찾을 수 있다. 다시 강조하면, 그냥 pip install을 사용하면 되는데 굳이 새로 만드느라 헛심을 쓸 필요가 없다. 또한 파이썬 모듈 중에는 C 가속 기능이 있는 경우가 많으므로 개발 속도와 프로그램 실행 속도도 높일 수 있다.

하나의 사례에도 사용할 수 있는 모듈이 여러 개 있는 경우 무엇을 사용해야 하는지도 자주 나오는 질문 중 하나다. 쉬운 답은 사람들이 가장 많이 사용하는 프로젝트, 가장 인기가 있는 프로젝트부터 시작하는 것이다. 깃허브 별점이나 포크를 보면 알 수 있다. 이렇게 시작해도 괜찮은 이유는, 내가 맞닥뜨린 문제는 다른 많은 사람과 같은 사례일 가능성이 높기 때문이다.
 

OOP에 과하게 집착하지 않고 있다

객체 지향 프로그래밍(OOP)은 데이터 구조와 이 구조를 조작하는 데 사용되는 방법을 하나로 묶어 고수준 코드를 쉽게 쓸 수 있게 해준다. 실제로 OOP는 파이썬과 같은 고수준 언어와 잘 맞는다. 그러나 모든 파이썬 코드가 객체 지향일 필요는 없다. 숙련된 파이썬 개발자는 반드시 OOP 방식이 필요하지 않으면 20라인(또는 200라인도 마찬가지)의 단조로운 코드가 객체 지향 코드보다 더 시간을 절약할 수 있음을 잘 알고 있다. 전체적으로 크고 복잡한 프로젝트는 객체 지향의 혜택을 얻을 수 있지만 프로젝트에 OOP가 필요하지 않다면 규칙을 좀 느슨하게 풀어도 괜찮다.
 

코드를 테스트하고 있다

현명한 파이썬 개발자는 테스트의 가치를 잘 안다. 테스트를 만드는 과정은 지루하고 피곤하지만 프로젝트의 복잡성이 특정 수준을 넘어서는 시점부터 그 유용성이 크게 높아진다. 여기서 한 단계 더 성숙한 개발자는 나중에 별도로 테스트하지 않고 새로운 기능을 만드는 것과 동시에 테스트를 만드는 습관을 갖고 있다. 테스트의 난관을 빨리 넘어갈수록 더 일찍부터 코드 개선을 시작할 수 있기 때문이다. 첫 번째 기능이 구현되는 순간부터 테스트를 시작하면 나중에 스스로 잘했다고 칭찬하게 될 것이다.
 

파이썬 2를 사용하지 않는다

작년에도 그랬고 올해는 두 배로 그렇다. 파이썬 2는 오랜 시간 멋진 활약을 했지만, 공식 파이썬 개발팀의 지원은 완전히 중단됐다. 따라서 현명한 파이썬 개발자는 이미 파이썬 3으로 프로젝트를 이전했거나 이전하는 중이다.
 

최신 버전의 파이썬도 사용하지 않는다

파이썬 3.8은 파이썬의 가장 좋은 최신 버전일 수 있지만, 그렇다고 꼭 이 버전을 사용해야 하는 것은 아니다. 사실 현명한 소프트웨어 개발자는 어느 것이든 최신 버전을 쓰는 것이 일종의 도박임을 잘 안다. 파이썬도 예외가 아니다. 똑똑한 파이썬 프로그래머는 서드 파티 모듈과의 호환성을 폭넓게 보장하기 위해 최신 버전이 아닌 그 이전 버전을 고수한다. 파이썬을 사용하는 주된 이유 중 하나가 온갖 종류의 유용한 모듈에 있음을 상기하라.
 

다른 프로그래밍 언어도 함께 사용한다

파이썬에 대해 말할 때 사람들은 거의 모든 일에서 '차선의' 프로그래밍 언어라고 표현한다. 가끔은 최선과 차선 사이의 간격이 넓을 때도 있다. 현명한 파이썬 개발자는 파이썬도 많은 툴 중 하나일 뿐이고 당면한 작업에 가장 적합한 툴을 사용해야 한다는 사실을 잘 안다.

최대한의 런타임 속도가 필요한 애플리케이션을 만들 때 순수하게 파이썬만 사용하는 것은 바람직하지 않다. 그럴 때는 C나 러스트(Rust), 고(Go)를 선택해야 한다. 물론 성능 중심의 프로그래밍이라고 해서 파이썬을 완전히 배제해야 한다는 의미는 아니다. 넘파이(Numpy)나 판다스(Pandas) 같은 C 기반 라이브러리를 사용하거나 C 또는 C 호환 코드를 파이썬 셸로 래핑하거나 사이썬(Cython)을 사용해 파이썬을 C로 변환하는 것도 좋은 대안이 될 수 있다. editor@itworld.co.kr


2020.04.20

파이썬 개발이 순조롭다는 것을 알려주는 8가지 신호

Serdar Yegulalp | InfoWorld
개발을 제대로 못 할 때를 알아차리기는 쉽다. 곳곳에서 튀어나오는 버그, 굼벵이처럼 느린 코드, 뒤죽박죽인 프로젝트 구조는 개발이 잘못되고 있음을 알리는 대표적인 3가지 신호다. 반면 개발을 제대로 하고 있을 때를 알아차리기는 그만큼 쉽지 않다. 좋은 프로그래밍 습관은 영화로 치면 잘 만들어진 특수효과와 같다. 눈에 거슬리지 않으므로 그게 특수효과임을 알아차리지 못한다.
 
ⓒ Getty Images Bank

파이썬 프로그래밍을 제대로 하고 있음을 나타내는 3가지 신호는 무엇일까? 좋은 파이썬 개발 습관이 무엇인지 알고 싶은 초보 파이썬 개발자 또는 자신의 습관이 좋은 것인지 궁금한 개발자를 위해 몇 가지 지표를 정리했다. 다음 8가지 모범사례를 따르고 있다면 파이썬을 제대로 하고 있는 것이다.
 

가상 환경과 프로젝트 관리 툴을 사용하고 있다

소규모의 단발성 파이썬 프로젝트에서도 가상 환경과 적절한 프로젝트 구조는 유용하다. 포에트리(Poetry)와 같은 툴은 모든 설정 프로세스를 자동으로 해준다. 소소한 venv만 사용해도 비교적 간단히 가상 환경으로 프로젝트를 설정해 가상 환경의 혜택을 얻을 수 있다.

버전 제어도 중요한 프로젝트 관리 툴이다. 요즘 버전 제어라고 하면 보통 깃(Git)을 의미한다. 파일 하나만으로 구성되는 간단한 프로젝트에서도 깃을 활용하는 것이 좋다. 언제든 이전 버전으로 되돌려야 할지 모르기 때문이다. 파이썬을 지원하는 대부분의 IDE 역시 venv와 깃을 기본적으로 지원하므로 손쉽게 활용할 수 있다.
 

헛심 쓰지 않고 파이썬에 내장된 기능을 활용하고 있다

능숙한 파이썬 프로그래머는 일반적인 활용 사례 대부분을 파이썬의 내장 함수와 표준 라이브러리를 이용해 처리한다. 파일 조작, 정규식, 웹 브라우저 작업 등 일반적으로 필요한 작업은 거의 다 파이썬에 있는 기능으로 할 수 있다.

경험이 부족한 파이썬 개발자가 흔히 하는 질문은 표준 라이브러리의 내용을 몽땅 기억하지 않고 그 안에 내 사용 사례에 맞는 뭔가가 있는지 어떻게 아느냐는 것이다. 간단히 팁을 공개하면, 표준 라이브러리 인덱스와 내장 함수 개요 페이지를 북마크한 다음 일상적인 프로그래밍 문제에 맞닥뜨릴 때마다 이 페이지를 둘러보는 것이다. 파이썬 내에 있는 툴을 지속적으로 접하는 것이 가장 효과적인 학습법이다.
 

작업에 맞는 모듈을 사용한다

내장 및 표준 라이브러리와 마찬가지로 파이썬의 방대한 서드 파티 모듈은 업무량을 줄이는 데 큰 도움이 된다. 예를 들어 파이파이(PyPI)의 웹 프론트 엔드를 통해 궁금한 문제를 검색하면, 대부분 바로 사용할 수 있는 모듈을 찾을 수 있다. 다시 강조하면, 그냥 pip install을 사용하면 되는데 굳이 새로 만드느라 헛심을 쓸 필요가 없다. 또한 파이썬 모듈 중에는 C 가속 기능이 있는 경우가 많으므로 개발 속도와 프로그램 실행 속도도 높일 수 있다.

하나의 사례에도 사용할 수 있는 모듈이 여러 개 있는 경우 무엇을 사용해야 하는지도 자주 나오는 질문 중 하나다. 쉬운 답은 사람들이 가장 많이 사용하는 프로젝트, 가장 인기가 있는 프로젝트부터 시작하는 것이다. 깃허브 별점이나 포크를 보면 알 수 있다. 이렇게 시작해도 괜찮은 이유는, 내가 맞닥뜨린 문제는 다른 많은 사람과 같은 사례일 가능성이 높기 때문이다.
 

OOP에 과하게 집착하지 않고 있다

객체 지향 프로그래밍(OOP)은 데이터 구조와 이 구조를 조작하는 데 사용되는 방법을 하나로 묶어 고수준 코드를 쉽게 쓸 수 있게 해준다. 실제로 OOP는 파이썬과 같은 고수준 언어와 잘 맞는다. 그러나 모든 파이썬 코드가 객체 지향일 필요는 없다. 숙련된 파이썬 개발자는 반드시 OOP 방식이 필요하지 않으면 20라인(또는 200라인도 마찬가지)의 단조로운 코드가 객체 지향 코드보다 더 시간을 절약할 수 있음을 잘 알고 있다. 전체적으로 크고 복잡한 프로젝트는 객체 지향의 혜택을 얻을 수 있지만 프로젝트에 OOP가 필요하지 않다면 규칙을 좀 느슨하게 풀어도 괜찮다.
 

코드를 테스트하고 있다

현명한 파이썬 개발자는 테스트의 가치를 잘 안다. 테스트를 만드는 과정은 지루하고 피곤하지만 프로젝트의 복잡성이 특정 수준을 넘어서는 시점부터 그 유용성이 크게 높아진다. 여기서 한 단계 더 성숙한 개발자는 나중에 별도로 테스트하지 않고 새로운 기능을 만드는 것과 동시에 테스트를 만드는 습관을 갖고 있다. 테스트의 난관을 빨리 넘어갈수록 더 일찍부터 코드 개선을 시작할 수 있기 때문이다. 첫 번째 기능이 구현되는 순간부터 테스트를 시작하면 나중에 스스로 잘했다고 칭찬하게 될 것이다.
 

파이썬 2를 사용하지 않는다

작년에도 그랬고 올해는 두 배로 그렇다. 파이썬 2는 오랜 시간 멋진 활약을 했지만, 공식 파이썬 개발팀의 지원은 완전히 중단됐다. 따라서 현명한 파이썬 개발자는 이미 파이썬 3으로 프로젝트를 이전했거나 이전하는 중이다.
 

최신 버전의 파이썬도 사용하지 않는다

파이썬 3.8은 파이썬의 가장 좋은 최신 버전일 수 있지만, 그렇다고 꼭 이 버전을 사용해야 하는 것은 아니다. 사실 현명한 소프트웨어 개발자는 어느 것이든 최신 버전을 쓰는 것이 일종의 도박임을 잘 안다. 파이썬도 예외가 아니다. 똑똑한 파이썬 프로그래머는 서드 파티 모듈과의 호환성을 폭넓게 보장하기 위해 최신 버전이 아닌 그 이전 버전을 고수한다. 파이썬을 사용하는 주된 이유 중 하나가 온갖 종류의 유용한 모듈에 있음을 상기하라.
 

다른 프로그래밍 언어도 함께 사용한다

파이썬에 대해 말할 때 사람들은 거의 모든 일에서 '차선의' 프로그래밍 언어라고 표현한다. 가끔은 최선과 차선 사이의 간격이 넓을 때도 있다. 현명한 파이썬 개발자는 파이썬도 많은 툴 중 하나일 뿐이고 당면한 작업에 가장 적합한 툴을 사용해야 한다는 사실을 잘 안다.

최대한의 런타임 속도가 필요한 애플리케이션을 만들 때 순수하게 파이썬만 사용하는 것은 바람직하지 않다. 그럴 때는 C나 러스트(Rust), 고(Go)를 선택해야 한다. 물론 성능 중심의 프로그래밍이라고 해서 파이썬을 완전히 배제해야 한다는 의미는 아니다. 넘파이(Numpy)나 판다스(Pandas) 같은 C 기반 라이브러리를 사용하거나 C 또는 C 호환 코드를 파이썬 셸로 래핑하거나 사이썬(Cython)을 사용해 파이썬을 C로 변환하는 것도 좋은 대안이 될 수 있다. editor@itworld.co.kr


X