( #01 [공통] 프로그래밍 언어 - 01 파이썬 소개 _ 1. 파이썬 탄생 )
1. 파이썬 탄생
1.1. 등장 배경과 역사
1) 창시자
귀도 반 로섬
귀도 반 로섬(네덜란드어: Guido van Rossum, 1956년 1월 31일 ~)은 네덜란드 출신의 소프트웨어 엔지니어이다. 프로그래밍 언어인 파이썬을 개발한 것으로 유명하다. 2005년부터 2012년까지 구글에서 일했으며, 2013년부터 2019년 10월까지 드롭박스에서 일하고 있었다. 은퇴하였다가 2020년 11월 13일 MS에 다시 입사하였다.
2) 프로그래밍 언어명
파이썬이라는 이름은 귀도 반 로섬이 즐겨 보던 코미디 프로그램인 '몬티 파이썬'의 날아다니는 써커스(Monty Python's Flying Circus)에서 따온 것 이다.
'몬티 파이썬'은 영국 코미디 팀으로 각종 코믹 영화와 TV 프로그램을 만들었다. ( 파이썬의 로고가 뱀 모양인 이유는 python의 원래 뜻이 비단뱀이라서 그렇다. )
[참고] 이 영화( 몬티 파이튼의 성배 )는 몬티 파이선 팀에서 만든 유명 코믹 영화이다.
3) 개발 과정 및 일화
1989년 크리스마스 주에, 연구실이 닫혀있어서 심심한 김에 취미로 만든 프로그래밍 언어이다. ( 하지만 하루 만에 뚝딱 만든 것은 아니고 그 전에 ABC 등 여러 언어 개발을 거친 것으로 보인다. )
최초 버전은 1991년 발표 되었으며 90년대 이 시기에는 다양한 언어( 자바, 자바스크립트, 루비, PHP 등 )들이 탄생했다.
1.2. 목적
1) 개발 목표
고등학생 및 비전공자 등이 사용할 수 쉬운 언어를 만드는 것이 목표였다.
2) 철학 및 사상
'가장 아름다운 하나의 답이 존재한다'를 기본으로 한다. there should be one—and preferably only one—obvious way to do i ( 발산 진화가 아닌 수렴 진화이다. )
예를 들어 팩토리얼 함수는 다음과 같이 간결히 나타낼 수 있다.
def factorial(x):
return 1 if x == 0 else x * factorial(x - 1)
def factorial: return 1 if x == 0 else x * factorial(x - 1)
factorial = lambda x: 1 if x == 0 else x * factorial(x - 1)
이 예시는 입문자들을 헷갈리게 하는 3항 연산자(Ternary operator)도 쉽게 읽혀 "실행할 수 있는 의사 코드"라는 별명을 실감하게 한다.
Python스러움(pythonic)이라는 '복잡하지 않으면서 의미가 명확하고, 코드의 축약보다 뚜렷하게 보이는 흐름을 중시' 하는 Python의 철학을 지칭하는 독특한 개념도 나오게 된다.
- Python 기본 철학 ( The Zen of Python )
오랜 시간 파이토니어 팀 피터스는 파이썬의 디자인에 대한 BDFL의 지침 원칙을 20개의 격언으로 간결하게 전달했으며, 그 중 19개만 기록되었다. ( Long time Pythoneer Tim Peters succinctly channels the BDFL’s guiding principles for Python’s design into 20 aphorisms, only 19 of which have been written down. )
- 아름다운 것이 추한 것보다 낫다. (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!)
[출처] PEP 20
PEP란?
PEP : Python Enhance Proposal (파이썬 개선 제안서)
파이썬 창시자 귀도를 중심으로 수많은 사람들이 기여해서 발전해온 언어입니다.
귀도라는 최종 결정권자 혹은 그리고 결정을 하는데 가장 큰 영향력을 끼치는 독재자가 존재합니다. 하지만 파이썬은 수많은 사람들이 의견을 수용하고, 서로 토론하며 발전해온 언어입니다.
언어 발전을 위해 논의된 주제를 PEP( Python Enhancement Proposal ) 이라는 이름으로 문서화해왔습니다.
[ 대표적인 PEP ]
- PEP 20 -- The Zen of Python : 파이썬 철학
- PEP 8 -- Style Guide for Python Code : 파이썬 스타일
3) 개발 기업 및 주체
Python 소프트웨어 재단 (PSF)
파이썬 프로그래밍 언어에 헌신하는 비영리 단체로서, 2001년 3월 6일 런칭했다. 이 단체의 임무는 파이썬 공동체의 개발을 발전시키고, 코어 파이썬 배포판 개발, 지식재산권 관리, 그리고 PyCon을 포함한 개발자 콘퍼런스, 기금 모으기를 포함한 파이썬 공동체 내의 다양한 프로세스를 책임진다.
4) 업데이트 방향
- Pytho 버전 2와 3 차이
- 유니코드 사용, 소수점 계산, 까다로운 문법 규칙 적용 등이 두드러지는 특징이다.
- 대중적인 사용 지향, 빅데이터를 고려한 소수점 계산, 실수를 방지하기 위한 문법 규칙 적용이라 할 수 있다.
- 현재 업데이트 방향
Python의 편의성과 태생적인 속도 문제를 해결하기 위한 업데이트가 진행하고 있다. 최근에 나온 3.11버전 만 하더라도 상당한 속도 향상을 진행할 것ㅇ르 볼 수 있다.
- 최초 버전 발표 : 1991년
- Python 2 : 2000년
- Python 3 : 2008년
( Python 3.11 - 2023년 4월 5일 출시 )
이 배너는 쿠팡파트너스 활동의 일환으로, 일정액의 수수료를 제공 받을 수도 있습니다.
'Programming Language > Python' 카테고리의 다른 글
[python] 4강. 프로그래밍 네이밍 (0) | 2023.06.13 |
---|---|
[python] 3강. 환경설정 - 설치 및 실행 (1) | 2023.06.12 |
[python] 2강. 특징 및 장단점 (0) | 2023.03.22 |