Python은 제가 가장 좋아하는 언어입니다. 간단하고 아름답고 사용하기 쉽습니다. 이틀 전에 저는 매우 신난다 파이썬의 장점을 친구들에게 알리기
“그래, 파이썬 좋은 건 인정하는데 왜 파이썬이라고 부르지? "
"아, TV 시리즈 이름인 것 같아요. "
"그럼 당신이 말하는 귀도는 미국인인가요? "
"Google에서 Dropbox로 옮겼는데 이름이 네덜란드 사람 같네요. "
"파이썬에 대해 잘 아시나요? ”
그래서 부끄러운 마음을 달래기 위해 파이썬의 역사를 알아보는 시간을 가져서 파이썬의 여러 기능의 유래와 파이썬의 디자인 철학을 알아보고 프로그래밍 언어 Python의 진화 역사와 Python과 오픈 소스 운동의 놀라운 연관성을 통해 Python의 역사에서 오픈 소스 개발의 개념과 성과를 엿볼 수 있습니다.
이는 제가 작성한 Python 빠른 튜토리얼의 서문으로도 사용할 수 있습니다.
Python의 저자인 Guido von Rossum은 실제로 1982년에 석사 학위를 받았습니다. 그는 암스테르담 대학에서 수학과 컴퓨터 과학 학위를 취득했지만 컴퓨터의 즐거움을 더 즐긴다고 합니다. 그는 수학과 컴퓨터 분야의 이중 자격을 갖고 있음에도 불구하고 항상 컴퓨터 관련 작업을 하는 경향이 있으며 일에 열중하고 있습니다.
그때 귀도는 파스칼, C, 포트란 등의 언어를 접하고 사용하게 되었는데, 이러한 언어의 기본 디자인 원칙을 만드는 것이었습니다. Apple은 개인용 컴퓨터의 물결을 일으켰지만 이러한 개인용 컴퓨터의 구성은 매우 낮습니다. 예를 들어 초기 Macintosh는 8MHz CPU 주파수와 128KB RAM만 갖추고 있습니다. .프로그램이 실행될 수 있도록 최적화합니다. 언어는 또한 프로그래머가 기계의 취향에 더 맞는 프로그램을 작성할 수 있도록 컴퓨터처럼 생각하도록 강요합니다. 그 시대에는 프로그래머들이 컴퓨터의 모든 부분을 손으로 쥐고 싶어했습니다. 어떤 사람들은 C 언어의 포인터가 메모리 낭비라고 생각하기도 했습니다. 메모리 관리, 객체 지향... 생각하지 마세요.
이러한 프로그래밍 문제 Guido는 C 언어로 함수를 작성하는 방법을 알고 있습니다. 그러나 구현 방법을 이미 정확히 알고 있음에도 불구하고 전체 작성 과정에는 많은 시간이 소요됩니다. Bourne Shell은 오랫동안 UNIX 시스템의 해석기로 사용되어 왔습니다. 정기적인 백업과 같은 몇 가지 간단한 스크립트를 작성하는 쉘. >파일 시스템 관리 등 쉘은 UNIX에서 많은 기능을 연결하는 접착제와 같을 수 있습니다. 그러나 쉘의 본질은 명령을 호출하는 것입니다. 예를 들어 쉘에는 숫자 데이터 유형이 없으며 간단히 말해서 쉘은 기능을 완전히 동원할 수 없습니다. >귀도는 C언어처럼 컴퓨터의 기능적 인터페이스를 완벽하게 호출할 수 있고, 쉘처럼 쉽게 프로그래밍할 수 있는 언어를 갖고 싶어합니다. ABC 언어는 Guido에게 희망을 줍니다. ABC는 네덜란드의 수학 및 컴퓨팅 연구소에서 개발되었습니다. Guido는 연구소에서 근무하며 ABC 언어 개발에 참여했습니다. ABC 언어는 교육 목적으로 사용됩니다. 당시 대부분의 언어와 달리 ABC 언어의 목표는 "사용자의 기분을 좋게 만드는 것"이었습니다. ABC Language는 읽기 쉽고, 사용하기 쉽고, 기억하기 쉽고, 배우기 쉬운 언어를 만들어 사람들의 프로그래밍 학습에 대한 관심을 자극하는 것을 목표로 합니다. 예를 들어, 다음은 Wikipedia의 ABC 프로그램입니다. 이 프로그램은 텍스트에 나타나는 총 단어 수를 계산하는 데 사용됩니다.
HOW TO
RETURN단어하는 데 사용됩니다. Python 프로그래머는 이 프로그램을 쉽게 이해해야 합니다. ABC 언어는 콜론과 들여쓰기를 사용하여 프로그램 블록을 나타냅니다. 줄 끝에는 세미콜론이 없습니다. for 및 if 구조에는 괄호()도 없습니다. 할당에서는 보다 일반적인 등호 대신 PUT을 사용합니다. 이러한 변경으로 인해 ABC 프로그램이 텍스트처럼 읽혀집니다.문서: PUT {} IN 컬렉션FOR 라인 IN 문서:FOR 단어 IN 분할 라인:
함수를 정의
IF
단어 not.in 컬렉션:
INSERT word IN 컬렉션RETURN 컬렉션
HOW TO는
좋은 가독성과 사용 용이성에도 불구하고 ABC 언어는 결국 대중화되지 못했습니다. 당시 ABC 언어 컴파일러를 실행하려면 상대적으로 고급형 컴퓨터가 필요했습니다. 이러한 컴퓨터의 사용자는 일반적으로 컴퓨터에 능숙하며, 학습의 어려움보다 프로그램의 효율성을 더 고려합니다. 하드웨어적인 어려움 외에도 ABC 언어의 디자인에는 몇 가지 치명적인 문제가 있습니다.
확장성이 좋지 않습니다. ABC 언어는 모듈형 언어가 아닙니다. 그래픽 지원 등 ABC 언어에 기능을 추가하려면 여러 곳을 변경해야 합니다.
IO를 직접 수행할 수 없습니다. ABC 언어는 파일 시스템을 직접 운영할 수 없습니다. 텍스트 스트림과 같은 방법을 통해 데이터를 가져올 수 있지만 ABC는 파일을 직접 읽고 쓸 수 없습니다. 입출력의 어려움은 컴퓨터 언어에 치명적이다. 문이 열리지 않는 스포츠카를 상상할 수 있나요?
과도한 혁신. ABC는 위 프로그램의 HOW TO와 같이 프로그램의 의미를 자연어를 사용하여 표현합니다. 그러나 프로그래머의 경우 함수를 정의하기 위해 함수를 사용하거나 정의하는 데 더 익숙합니다. 마찬가지로 프로그래머는 등호를 사용하여 변수 를 할당하는 데 더 익숙합니다. ABC 언어는 매우 특별하지만 배우기도 매우 어렵습니다.
전파가 어렵습니다. ABC 컴파일러는 크기가 커서 테이프에 저장해야 합니다. 당시 Guido가 방문했을 때 그는 다른 사람들을 위해 ABC 컴파일러를 설치하기 위해 큰 테이프를 가지고 있어야 했습니다. 이런 식으로는 ABC 언어가 빠르게 확산되기 어렵습니다.
1989년, 크리스마스 휴가를 보내기 위해 귀도는 파이썬 언어용 컴파일러를 작성하기 시작했습니다. Python이라는 이름은 Guido가 사랑한 TV 시리즈 Monty Python's Flying Circus에서 따왔습니다. 그는 Python이라는 새로운 언어가 C와 셸 사이에서 포괄적이고, 배우기 쉽고, 사용하기 쉽고, 확장 가능한 언어를 만드는 그의 이상을 충족할 수 있기를 바라고 있습니다. 언어 디자인에 열광하는 Guido는 이미 언어 디자인을 시도한 적이 있습니다. 이번에는 순수 해킹 행위에 불과했습니다.
1991년, 최초의 Python 컴파일러가 탄생했습니다. C언어로 구현되어 C언어 라이브러리 파일을 호출할 수 있습니다. Python은 탄생 이후 클래스, 함수, 예외 처리, 테이블과 사전을 포함한 핵심 데이터 유형, 모듈 기반 확장 시스템을 갖추고 있습니다.
많은 Python 구문은 C에서 유래했지만 ABC 언어의 영향도 많이 받았습니다. 강제 들여쓰기와 같은 ABC 언어의 일부 규칙은 오늘날까지도 논란의 여지가 있습니다. 그러나 이러한 구문 규칙을 사용하면 Python을 쉽게 읽을 수 있습니다. 반면에 Python은 등호 할당 회귀와 같은 일부 규칙, 특히 C 언어의 규칙을 따르는 것을 현명하게 선택합니다. 귀도는 어떤 것이 "상식"에 기초하여 확립되면 그것에 너무 매달릴 필요가 없다고 믿습니다.
Python은 처음부터 확장성에 특별한 관심을 기울였습니다. Python은 여러 수준으로 확장될 수 있습니다. 높은 수준에서는 .py 파일을 직접 가져올 수 있습니다. 내부적으로는 C 라이브러리를 참조할 수 있습니다. Python 프로그래머는 Python을 사용하여 .py 파일을 확장 모듈로 빠르게 작성할 수 있습니다. 그러나 성능을 고려해야 할 중요한 요소인 경우 Python 프로그래머는 하위 계층에 깊이 들어가서 C 프로그램을 작성하고 이를 .so 파일로 컴파일한 다음 Python에 도입하여 사용할 수 있습니다. Python은 강철을 사용하여 집을 짓는 것과 같습니다. 먼저 큰 골조가 정의됩니다. 프로그래머는 이 프레임워크에서 매우 자유롭게 확장하거나 변경할 수 있습니다.
원래 Python은 전적으로 Guido가 직접 개발했습니다. Python은 Guido의 동료들 사이에서 인기가 높습니다. 그들은 빠른 피드백을 제공하고 Python 개선에 참여합니다. Guido와 몇몇 동료들은 Python의 핵심 팀을 구성합니다. 그들은 여가 시간의 대부분을 Python을 해킹하는 데 보냅니다. 그 후 Python은 연구소를 넘어 확장되었습니다. Python은 많은 기계 수준의 세부 사항을 숨기고 컴파일러가 처리하도록 남겨두고 논리적 수준의 프로그래밍 사고를 강조합니다. Python 프로그래머는 구체적인 구현 세부 사항 대신 프로그램의 논리에 대해 생각하는 데 더 많은 시간을 할애할 수 있습니다. 이 기능은 많은 프로그래머의 관심을 끌고 있습니다. 파이썬이 인기를 얻었습니다.
인생은 짧다, 나는 파이썬을 쓴다
파이썬 시간을 멈추고 Look을 봐야 한다 급변하는 컴퓨터 산업에서 1990년대 초, 개인용 컴퓨터가 일반 가정에 들어오기 시작했습니다. 인텔은 486 프로세서를 출시했고, 윈도우는 윈도우 3.0부터 일련의 윈도우 시스템을 출시했다. 컴퓨터 성능이 크게 향상되었습니다. 프로그래머들은 그래픽 인터페이스와 같은 컴퓨터의 사용 편의성에 주목하기 시작했습니다.
Windows 3.0
컴퓨터 성능이 향상되면서 소프트웨어의 세계도 변화하기 시작합니다. 하드웨어는 많은 개인용 컴퓨터에 충분합니다. 하드웨어 제조업체는 하드웨어 업그레이드를 추진하기 위해 수요가 많은 소프트웨어의 출현을 열망하고 있습니다. C++와 Java가 차례로 인기를 얻었습니다. C++ 및 Java는 객체 지향 프로그래밍 패러다임과 풍부한 객체 라이브러리를 제공합니다. C++와 Java는 어느 정도의 성능을 희생하면서 프로그램 출력을 크게 향상시켰습니다. 언어 사용의 용이성이 새로운 차원으로 향상되었습니다. 또한 ABC가 실패한 중요한 이유는 하드웨어의 성능 제한이었다는 것을 기억합니다. 이런 점에서 Python은 ABC보다 훨씬 운이 좋습니다.
조용히 일어나고 있는 또 다른 변화는 바로 인터넷이다. 1990년대는 여전히 개인용 컴퓨터의 시대였습니다. 윈도우와 인텔은 PC로 세계를 장악하며 한동안 큰 인기를 끌었습니다. 인터넷 기반의 정보 혁명은 아직 도래하지 않았지만, 많은 프로그래머와 숙련된 컴퓨터 사용자는 이미 이메일, 뉴스그룹 등을 사용하여 통신하기 위해 인터넷을 자주 사용하고 있습니다. 인터넷은 정보 교환 비용을 크게 줄였습니다. 새로운 소프트웨어 개발 모델인 오픈 소스가 인기를 얻기 시작했습니다. 프로그래머는 여가 시간을 사용하여 소프트웨어 및 오픈 소스 코드를 개발합니다. 1991년 Linus는 comp.os.minix 뉴스 그룹에 Linux 커널 소스 코드를 공개하여 수많은 해커들의 관심을 끌었습니다. Linux와 GNU는 함께 작동하여 활발한 오픈 소스 플랫폼을 형성합니다.
하드웨어 성능이 병목 현상이 되지 않고, 파이썬이 사용하기 쉬워서 많은 사람들이 파이썬으로 눈을 돌리고 있습니다. Guido는 메일 목록을 관리하고 Python 사용자는 이메일을 통해 통신합니다. Python 사용자는 다양한 분야 출신이고 배경도 다르며 Python에 대한 요구도 다릅니다. Python은 상당히 개방적이고 확장이 용이하므로 사용자가 기존 기능에 만족하지 못할 경우 Python을 확장하거나 변환하기가 쉽습니다. 그런 다음 이러한 사용자는 Python 또는 표준 라이브러리에 새로운 기능을 추가할지 여부를 결정하는 Guido에게 변경 사항을 보냅니다. 코드가 Python 자체나 표준 라이브러리에 통합될 수 있다면 큰 영광이 될 것입니다. 귀도의 최고 의사결정권으로 인해 그는 "평생 자비로운 독재자"로 알려져 있습니다.
Python은 "Battery Included"라고 하는데, 이는 Python과 해당 표준 라이브러리가 강력하다는 것을 의미합니다. 이는 전체 커뮤니티의 기여입니다. Python 개발자는 다양한 분야에서 왔으며 다양한 분야의 장점을 Python에 적용합니다. 예를 들어 Python 표준 라이브러리의 정규식은 Perl을 참조하고, 람다, map, 필터, 축소 등의 함수는 Lisp를 참조합니다. Python 자체의 일부 기능과 대부분의 표준 라이브러리는 커뮤니티에서 제공됩니다. Python 커뮤니티는 계속해서 확장되고 있으며 자체 뉴스 그룹, 웹 사이트 및 기금을 보유하고 있습니다. Python 2.0부터 Python도 메일리스트 개발 방식에서 완전한 오픈 소스 개발 방식으로 변경되었습니다. 커뮤니티 분위기가 형성되었고, 커뮤니티 전체가 작업을 공유하며 Python의 개발 속도도 빨라졌습니다.
오늘 Python의 프레임워크가 확립되었습니다. Python 언어는 객체를 핵심으로 하여 코드를 구성하고, 여러 프로그래밍 패러다임을 지원하고, 동적 유형을 사용하고, 자동으로 메모리를 재활용합니다. Python은 해석된 실행을 지원하고 확장을 위해 C 라이브러리를 호출할 수 있습니다. Python에는 강력한 표준 라이브러리가 있습니다. 표준 라이브러리 시스템이 안정화된 이후 Python 생태계는 타사 패키지로 확장되기 시작했습니다. Django, web.py, wxpython, numpy, matplotlib 및 PIL과 같은 패키지는 Python을 다양한 종의 열대 우림으로 업그레이드합니다.
Python은 아름다움, 명확성, 단순성을 옹호하며 우수하고 널리 사용되는 언어입니다. Python은 TIOBE 순위에서 8위를 차지하고 있으며 Google의 세 번째 개발 언어이자 Dropbox의 기본 언어이며 Douban의 서버 언어입니다. Python의 개발 이력은 대표적으로 활용될 수 있으며 나에게 많은 영감을 줍니다.
Python 개발 과정에서 커뮤니티는 중요한 역할을 합니다. Guido는 자신이 만능 프로그래머가 아니기 때문에 프레임워크 공식화에만 책임이 있다고 생각합니다. 문제가 너무 복잡하면 그는 그 문제를 우회하는 것, 즉 모퉁이를 자르는 것을 선택할 것입니다. 이러한 문제는 궁극적으로 커뮤니티의 다른 사람들에 의해 해결됩니다. 커뮤니티의 재능은 매우 풍부합니다. 웹사이트를 만들고 자금을 모으는 등 개발과 조금 거리가 있는 일이라도 기꺼이 처리하려는 사람들이 있습니다. 오늘날의 프로젝트 개발은 점점 더 복잡해지고 규모가 커지고 있습니다. 협력과 열린 마음이 프로젝트의 궁극적인 성공의 열쇠가 되었습니다.
파이썬은 역사에 들어간 ABC부터, 아직도 사용되고 있는 C와 Perl 등, 목록에 없는 많은 언어들로부터 많은 것을 배웠습니다. Python의 성공은 Python이 파생하는 모든 언어의 성공을 의미한다고 할 수 있습니다. 마찬가지로 Ruby는 Python에서 차용한 것이며, Ruby의 성공은 어떤 측면에서는 Python의 성공을 의미하기도 합니다. 모든 언어는 강점과 약점을 지닌 하이브리드입니다. 동시에, 언어의 "좋음과 나쁨"에 대한 판단은 플랫폼, 하드웨어, 시대 등과 같은 외부 요인에 따라 달라지는 경우가 많습니다. 프로그래머는 많은 언어 전쟁을 경험합니다. 실제로 다양한 언어를 열린 마음으로 받아들이면 언젠가는 프로그래머도 귀도처럼 자신의 언어를 섞어 쓸 수도 있을 것이다.
파이썬의 미래 운명이 어떻게 되든, 파이썬의 역사는 이미 매우 흥미로운 소설이다
위 내용은 Python 프로그래밍 언어 개발 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!