파이썬이란

파이썬 맛보기

 

파이썬 창시자 - 귀도 반 로섬

네덜란드의 귀도 반 로섬은 1989년 회사에 출근을 할 수 없었던 크리스마스를 심심하지 않게 보내기 위해 재미 삼아 프로그램 언어를 만들었습니다. 그리고 만든 언어의 이름은 그가 평소에 즐겨 보던 '몬티 파이썬의 날아다니는 서커스 (Monty Python's Flying Circus)'에서 파이썬의 이름을 따오게 되었습니다.

 

파이썬을 구글에서 영문으로 python으로 이미지 검색을 해보시면 비단뱀 종류가 검색되는 것을 확인하실 수 있습니다. 뱀을 싫어하시는 분들이 대다수 이기에 이 블로그에서 비단뱀 사진을 캡처하지는 않겠습니다. 파이썬 공식 사이트의 파이썬 심벌 모양과 파이썬 서적에서 뱀 이미지를 확인하실 수 있는데 그 이유가 바로 파이썬이 비단뱀 이기 때문입니다. 그렇다면 파이썬을 창시한 창시자는 어떻게 생겼을 까요? 그래서 잠시 구글링 한 귀도 반 로섬의 사진을 보겠습니다.

 

귀도 반 로섬 (Guido van Rossum)

 

구글링 한 귀도 반 로섬의 사진은 크리스마스에 산타클로스 분장을 해도 어울릴 만한 인상을 갖고 있다고 생각합니다. 만일 그가 1989년 산타클로스 분장을 하여 크리스마스를 재미있게 보냈다면 아마도 지금의 멋진 파이썬은 탄생되지 않았을지도 모를 일입니다.

 

이 글을 포스팅하는 2019년 그의 나이는 63세가 되었습니다. 나이도 나이지만 작년 귀도 반 로섬이 파이썬 개발 진영에서 사임한다는 기사글을 보았습니다. 논란의 제안 PEP 572와 함께 말이죠. 혹시나 파이썬의 철학이 흔들리는 것은 아닌지 앞으로의 파이썬 행보의 귀추가 주목됩니다.

 

 

왜 파이썬인가?

파이썬 이외에도 많은 컴퓨터 프로그래밍 언어가 존재합니다. 그 언어들은 대부분 저마다 고유한 목적이 있으며 최적으로 수행될 수 있는 플랫폼에서 개발자들에 의해 프로그램이 개발되어 열심히 수행되고 있습니다. 즉, 프로그래밍 언어들은 대부분 수행되는 조건들이 좀 까탈스럽다고 할 수 있습니다.

 

그에 반해 파이썬의 경우에는 범용적인 목적으로 파이썬이 설치되어 있는 플랫폼이라면 어디서 개발한 코드이던지 상관없이 원활히 수행 가능합니다. 때문에 상당히 생산적이고 코드 작성의 심플함과 많은 기능 기원으로 2019년 현재 TIOBE랭킹 3위에 올라 있습니다.

 

출처 : https://www.tiobe.com/tiobe-index/

사실 파이썬은 몇 년 전까지만 해도 자바의 성지라 할 수 있었던 국내에서 그다지 빛을 보지 못했습니다. 하지만 TIOBE랭킹 3위에 오를 정도로 이미 전 세계 프로그래머들에게 사랑받고 있는 파이썬은 이제 국내에서도 점점 그 영역을 확대되고 있습니다. 아직 파이썬이 정복하지 못한 모바일 플랫폼만 점령한다면 아마 세계 최강의 언어가 되지 않을까 싶습니다.

 

 

파이썬 버전

파이썬 버전은 2019년 현재 파이썬 2와 파이썬 3 두 가지 버전이 공존하고 있습니다. 파이썬 2 버전과 파이썬 3 버전은 서로 호환 불가능합니다. 기존 파이썬 2에서 파이썬 3으로 넘어가지 못한 이유는 몇 가지가 있겠으나 파이썬 2에서 사용하던 패키지가 파이썬 3에 없는 경우가 있어서가 대부분 일 것입니다.

 

물론 문법적으로도 파이썬 2와 파이썬 3가 조금 다릅니다. 2020년을 기점으로 파이썬 2의 공식 지원 중단을 앞두고 있는 현재에는 파이썬 2에 있던 패키지들이 대부분 파이썬 3에서도 존재합니다. 패키지명이 조금 다를 수 있습니다. 때문에 처음 파이썬을 시작하시는 독자분 중 버전 선택이 고민이시라면 더 이상 고민하지 마시고 파이썬 3을 사용하실 것을 적극 권장합니다.

 

 

 

파이썬 속도

파이썬과 컴파일 언어의 속도 비교 글들을 심심치 않게 볼 수 있습니다. 때에 따라서 파이썬의 속도가 빠르다는 재미있는 결과물의 글도 확인할 수 있습니다.

 

최적화된 코드와 컴파일된 바이너리 처리속도를 제 아무리 최적화되어 있는 인터프리터 언어라 할지라도 가 그 속도를 따라갈 수 없다고 생각합니다. 그리고 프로그래밍의 속도는 루틴을 작성하는 프로그래머의 재능과 센스에 많은 영향을 받습니다.

 

즉, 같은 기능을 하는 프로그램이라 할 지라도 누가 프로그래밍했는지 처리 루틴은 최적화되었는지에 따라 인터프리터 언어가 빠른 결과를 충분히 가져올 수 있다는 것입니다.

 

우리는 슬프게도 프로그램의 속도를 생각해야 하는 시대가 아닌 프로그래밍 결과물을 빨리 만들어 내야 하는 시대에 살고 있습니다. 인터프리터 언어로 한 줄이면 충분한 코드를 컴파일러 언어로는 3줄 5줄 그 이상도 작성해야 하는 경우도 있습니다.

 

그렇다면 어떤 기능을 하는 프로그램을 작성하는데 컴파일러 언어로는 3일이 걸리고 파이썬 언어로는 1일이 걸린다면 여러분은 어떤 언어를 선택하시겠습니까? 이에 대한 대답을 생각하게 하는 파이썬 슬로건이 있습니다. 그것은 바로

 

Life is too short, You need Python.

 

파이썬 철학

파이썬 철학은 파이썬 이스터 에그로 확인할 수 있습니다. 만약 파이썬이 설치되어 있다면 파이썬 인터프리터 대화 모드에서 import this를 입력하시면 파이썬 철학이 출력됩니다. 이는 PEP 20 공식 문서에서도 확인할 수 있습니다.

 

>>> import this

The Zen of Python, by Tim Peters

 

Beautiful is better than ugly.

(아름다운 것이 못생긴 것보다 낫다.)
Explicit is better than implicit.

(명시적으로 말하는 것이 암묵적인 것보다 낫다.)

(명확한 것이 함축적인 것보다 낫다.)

Simple is better than complex.

(단순한 것이 복잡한 것보다 낫다.)
Complex is better than complicated.

(복잡함이 꼬인 것보다 좋다.)

(복잡한 것이 난해한 것보다 낫다.)

Flat is better than nested.

(수평이 계층보다 좋다.)

(단조로운 것이 뒤엉킨 것보다 낫다.)
Sparse is better than dense.

(여유로운 것이 밀집한 것보다 좋다.)

(분포 되어 있는 것이 밀집한 것보다 낫다.)

Readability counts.

(가독성은 중요하다.)
Special cases aren't special enough to break the rules.

(특별한 경우라는 것은 규칙을 어겨야 할 정도로 특별한 것이 아니다.)

Although practicality beats purity.

(실용성은 순수성을 능가한다.)

(비록 실용성이 순수함을 앞선다 할지라도)

Errors should never pass silently.

(오류는 절대 지나치면 안 된다.)

Unless explicitly silenced.

(의도적으로 침묵하는 것이 아니라면.)

(분명하게 조용하지 않는 한)
In the face of ambiguity, refuse the temptation to guess.

(모호한 상황에서, 이를 추측하겠다는 유혹을 버려라.)
There should be one-- and preferably only one --obvious way to do it.

(추측하는 데 있어 오직 한 가지 방법밖에 없어야 한다.)

(그것은 할 수 있는 분명한 한 가지 방법이 있어야 하며 그 방법이 유일하다면 더 좋다.)
Although that way may not be obvious at first unless you're Dutch.

(비록 당신이 네덜란드 인이 아니라면 처음에는 그 방법이 분명하지 않을 수 있다.)

(파이썬 창시자가 아니라면, 처음 그 방법이 분명하지 않을 수도 있다.)

Now is better than never.

(지금 하는 게 전혀 안 하는 것보다 낫다.)
Although never is often better than *right* now.

(전혀 안 하는 것이 지금 *당장*보다 나을 때도 있지만.)
If the implementation is hard to explain, it's a bad idea.

(로직을 설명하기 어렵다면, 그 아이디어는 나쁘다.)
If the implementation is easy to explain, it may be a good idea.

(로직을 설명하기 쉽다면, 그 아이디어는 좋은 아이디어일 것이다.)
Namespaces are one honking great idea -- let's do more of those!

(네임스페이스는 아주 좋은 아이디어다 -- 더 많이 사용하자!)

 

MORE