Python 빠른 튜토리얼(보완 04): Python의 간략한 역사

黄舟
풀어 주다: 2016-12-21 17:22:09
원래의
1051명이 탐색했습니다.

파이썬의 기원

파이썬의 저자 귀도 폰 로섬(Guido von Rossum)은 그야말로 네덜란드인이다. 1982년에 Guido는 암스테르담 대학교에서 수학과 컴퓨팅 석사 학위를 받았습니다. 그러나 그는 일종의 수학자였지만 컴퓨터를 더욱 좋아했습니다. 그의 말에 따르면, 그는 수학과 컴퓨터의 이중 자격을 가지고 있음에도 불구하고 항상 컴퓨터 관련 작업을 하는 경향이 있으며 프로그래밍과 관련된 모든 일에 열중하고 있습니다.

Python 빠른 튜토리얼(보완 04): Python의 간략한 역사

Guido von Rossum

당시 그는 Pascal, C, Fortran과 같은 언어를 접하고 사용했습니다. 등. 이러한 언어의 기본 설계 원칙은 기계를 더 빠르게 실행하는 것입니다. 1980년대에는 IBM과 Apple이 개인용 컴퓨터의 물결을 일으켰지만 이러한 개인용 컴퓨터의 구성은 (오늘날 기준으로) 매우 낮았습니다. 예를 들어 초기 매킨토시는 CPU 주파수가 8MHz에 불과했고 RAM은 128KB에 불과했습니다. 모든 컴파일러의 핵심은 프로그램이 실행될 수 있도록 최적화하는 것입니다. 효율성을 높이기 위해 언어는 프로그래머가 컴퓨터처럼 생각하도록 강제하여 기계의 취향에 더 맞는 프로그램을 작성할 수 있도록 합니다. 그 시대에 프로그래머들은 손으로 컴퓨터의 모든 능력을 쥐어짜내고 싶어했습니다. 어떤 사람들은 C 언어 포인터가 메모리 낭비라고 생각하기도 합니다. 동적 타이핑, 자동 메모리 관리, 객체 지향 등은 생각하지 마십시오. 컴퓨터가 마비될 것입니다.

그런데 이런 생각이 귀도를 괴롭힌다. Guido는 C로 함수를 작성하는 방법을 알고 있지만 전체 작성 과정에는 많은 시간이 걸립니다(그는 이미 함수 구현 방법을 정확히 알고 있음에도 불구하고). 그의 또 다른 옵션은 껍질입니다. Bourne Shell은 오랫동안 UNIX 시스템용 인터프리터(interPReter)로 존재해 왔습니다. UNIX 관리자는 정기적인 백업, 파일 시스템 관리 등과 같은 일부 시스템 유지 관리 작업을 수행하기 위해 쉘을 사용하여 몇 가지 간단한 스크립트를 작성하는 경우가 많습니다. 쉘은 UNIX의 많은 기능을 함께 연결하는 접착제와 같을 수 있습니다. 수백 줄의 C 언어로 구성된 많은 프로그램을 셸에서 단 몇 줄만으로 완료할 수 있습니다. 그러나 셸의 핵심은 명령을 호출하는 것입니다. 그것은 실제로 언어가 아닙니다. 예를 들어, 쉘에는 숫자 데이터 유형이 없으며 추가 작업이 매우 복잡합니다. 즉, 쉘은 컴퓨터의 기능을 완전히 동원할 수 없습니다.

(셸의 경우 Linux 아키텍처와 Linux 명령줄 및 명령을 참조할 수 있음)

Guido는 C 언어처럼 완전히 컴퓨터의 기능적 인터페이스를 호출하고 쉘처럼 쉽게 프로그래밍할 수 있습니다. ABC 언어는 Guido에게 희망을 줍니다. ABC는 네덜란드의 CWI(Centrum Wiskunde & Informatica, 수학 및 컴퓨터 연구소)에서 개발했습니다. Guido는 CWI에서 근무하며 ABC 언어 개발에 참여하고 있습니다. ABC 언어는 교육 목적으로 사용됩니다. 당시 대부분의 언어와 달리 ABC 언어의 목표는 "사용자의 기분을 좋게 만드는 것"이었습니다. ABC Language는 읽기 쉽고, 사용하기 쉽고, 기억하기 쉽고, 배우기 쉬운 언어를 만들어 프로그래밍 학습에 대한 사람들의 관심을 자극하는 것을 목표로 합니다. 예를 들어 다음은 Wikipedia의 ABC 프로그램입니다. 이 프로그램은 텍스트에 나타나는 총 단어(Word) 수를 계산하는 데 사용됩니다.

HOW TO RETURN 단어 문서:

PUT {} IN 컬렉션

FOR line IN 문서:

FOR word IN 분할 라인:

IF 단어 not.in 컬렉션:

INSERT word IN collection

RETURN collection

HOW TO는 함수를 정의하는 데 사용됩니다. Python 프로그래머는 이 프로그램을 쉽게 이해해야 합니다. ABC 언어는 콜론(:)과 들여쓰기를 사용하여 프로그램 블록을 나타냅니다. C 언어는 {}를 사용하여 프로그램 블록을 나타냅니다. 줄 끝에는 세미콜론이 없습니다. for 및 if 구조에는 괄호()도 없습니다. HOW TO를 def로, PUT 라인을 collection = []로, INSERT 라인을 collection.append(word)로 변경하면 이는 거의 표준 Python 함수입니다. 위의 함수는 자연스러운 텍스트처럼 읽혀집니다.

좋은 가독성과 사용 용이성에도 불구하고 ABC 언어는 결국 대중화되지 못했습니다. 당시 ABC 언어 컴파일러를 실행하려면 상대적으로 고급형 컴퓨터가 필요했습니다. 이러한 컴퓨터의 사용자는 일반적으로 컴퓨터에 능숙하며, 학습의 어려움보다 프로그램의 효율성을 더 고려합니다. 하드웨어적인 어려움 외에도 ABC 언어의 디자인에는 몇 가지 치명적인 문제가 있습니다.

확장성이 좋지 않습니다. ABC 언어는 모듈형 언어가 아닙니다. 그래픽 지원 등 ABC 언어에 기능을 추가하려면 여러 곳을 변경해야 합니다.

IO를 직접 수행할 수 없습니다. ABC 언어는 파일 시스템을 직접 운영할 수 없습니다. 텍스트 스트림과 같은 방법을 통해 데이터를 가져올 수 있지만 ABC는 파일을 직접 읽고 쓸 수 없습니다. 입출력의 어려움은 컴퓨터 언어에 치명적이다. 문이 열리지 않는 스포츠카를 상상할 수 있나요?

과도한 혁신. ABC는 위 프로그램의 HOW TO와 같이 자연어를 사용해 프로그램의 의미를 표현합니다. 그러나 프로그래머의 경우 함수를 정의하기 위해 함수를 사용하거나 정의하는 데 더 익숙합니다. 마찬가지로 프로그래머는 변수를 할당하기 위해 등호(=)를 사용하는 데 익숙합니다. 이로 인해 ABC 언어가 특별해 보이지만 실제로는 프로그래머가 배우기가 더 어렵습니다(대부분의 프로그래머는 둘 이상의 언어를 알고 있습니다).

전파가 어렵습니다. ABC 컴파일러는 크기가 커서 테이프에 저장해야 했습니다. Guido가 방문했을 때 그는 다른 사람들을 위해 ABC 컴파일러를 설치하기 위해 큰 테이프를 가지고 있어야 했습니다. 이런 식으로는 ABC 언어가 빠르게 확산되기 어렵습니다.

Python 빠른 튜토리얼(보완 04): Python의 간략한 역사

IBM 테이프 드라이브: 테이프 읽기 및 쓰기

1989년, 크리스마스를 보내기 위해 휴가, Guido Python 언어용 컴파일러/인터프리터 작성을 시작하세요. Python은 Guido가 사랑한 TV 시리즈 Monty Python's Flying Circus(당시 영국 생활을 바탕으로 1960년대와 1970년대 BBC에서 방송한 실내 시트콤)에서 유래되었습니다. 그는 Python이라는 새로운 언어가 자신의 개념(C와 셸 간의 포괄적이고 배우기 쉽고 사용하기 쉽고 확장 가능한 언어)을 실현할 수 있기를 바라고 있습니다. 언어 디자인에 열광하는 Guido는 이미 언어 디자인에 대한 시도를 했습니다(별로 성공적이지는 않았습니다). 이번에는 순수한 해킹 행위에 지나지 않았습니다.

파이썬의 탄생

1991년, 최초의 파이썬 컴파일러(역시 인터프리터)가 탄생했습니다. C 언어로 구현되었으며 C 라이브러리(.so 파일)를 호출할 수 있습니다. Python은 탄생 이후 클래스, 함수, 예외 처리, 목록 및 사전을 포함한 핵심 데이터 유형, 모듈 기반 시스템을 확장했습니다.

Python 빠른 튜토리얼(보완 04): Python의 간략한 역사

원래 Python 로고: Guido의 형제 Just von Rossum이 디자인함

많은 Python 구문이 C에서 유래했지만 또한 ABC의 영향을 받습니다. 언어의 강한 영향을 받습니다. 강제 들여쓰기와 같은 ABC 언어의 일부 규칙은 오늘날까지도 논란의 여지가 있습니다. 그러나 이러한 구문 규칙을 사용하면 Python을 쉽게 읽을 수 있습니다. 반면에 Python은 일부 규칙(특히 C 언어의 규칙)을 영리하게 선택합니다. 예를 들어 등호를 사용하여 값을 할당하고 def를 사용하여 함수를 정의합니다. 귀도는 어떤 것이 "상식"에 기초하여 확립되면 그것에 너무 매달릴 필요가 없다고 믿습니다.

파이썬은 처음부터 확장성에 각별히 신경을 썼습니다. Python은 여러 수준으로 확장될 수 있습니다. 높은 수준에서는 .py 파일을 가져올 수 있습니다. 내부적으로는 C 라이브러리를 참조할 수 있습니다. Python 프로그래머는 Python을 사용하여 .py 파일을 확장 모듈로 빠르게 작성할 수 있습니다. 그러나 성능을 고려해야 할 중요한 요소인 경우 Python 프로그래머는 하위 계층에 깊이 들어가서 C 프로그램을 작성하고 이를 .so 파일로 컴파일한 다음 Python에 도입하여 사용할 수 있습니다. Python은 강철을 사용하여 집을 짓는 것과 같습니다. 먼저 큰 프레임을 정의합니다. 프로그래머는 이 프레임워크에서 매우 자유롭게 확장하거나 변경할 수 있습니다.

원래 Python은 전적으로 Guido가 직접 개발했습니다. Python은 Guido의 동료들 사이에서 인기가 높습니다. 그들은 빠른 피드백을 제공하고 Python 개선에 참여합니다. Guido와 몇몇 동료들은 Python의 핵심 팀을 구성합니다. 그들은 대부분의 여가 시간을 Python을 해킹하는 데 보냅니다(Python을 업무에 사용하기 때문에 업무 시간 포함). 그 후 Python은 CWI를 넘어 확장되었습니다. Python은 많은 기계 수준의 세부 사항을 숨기고 컴파일러가 처리하도록 남겨두고 논리적 수준의 프로그래밍 사고를 강조합니다. Python 프로그래머는 구체적인 구현 세부 사항보다는 프로그램의 논리에 대해 생각하는 데 더 많은 시간을 할애할 수 있습니다(Guido에는 다음과 같은 티셔츠가 있습니다: 인생은 짧습니다. 저는 Python을 사용합니다). 이 기능은 많은 프로그래머의 관심을 끌고 있습니다. 파이썬이 인기를 얻었습니다.

이때 Python 시간을 잠시 멈추고 컴퓨터 개요를 살펴보아야 합니다. 1990년대 초, 개인용 컴퓨터가 일반 가정에 들어오기 시작했습니다. 인텔은 486 프로세서를 출시했고, 윈도우는 윈도우 3.0부터 일련의 윈도우 시스템을 출시했다. 컴퓨터 성능이 크게 향상되었습니다. 프로그래머들은 컴퓨터의 사용 편의성(예: 그래픽 인터페이스)에 주목하기 시작했습니다.

Python 빠른 튜토리얼(보완 04): Python의 간략한 역사

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 자체가 더 좋습니다.

(Guido는 많은 결정을 내려야 했기 때문에 자비로운 종신 독재자라고 불립니다.)

Python은 Python과 해당 표준 라이브러리를 지칭하여 "Battery Included"라고 불립니다. 이는 전체 커뮤니티의 기여입니다. Python 개발자는 다양한 분야에서 왔으며 다양한 분야의 장점을 Python에 적용합니다. 예를 들어 Python 표준 라이브러리의 정규 표현식은 Perl을 참조하는 반면, 람다, 맵, 필터 및 감소 함수는 Lisp를 참조합니다. Python 자체의 일부 기능과 대부분의 표준 라이브러리는 커뮤니티에서 제공됩니다. Python 커뮤니티는 계속해서 확장되고 있으며 자체 뉴스 그룹, 웹 사이트(python.org) 및 재단(Python Software Foundation)을 보유하고 있습니다. Python 2.0부터 Python도 메일리스트 개발 방식에서 완전한 오픈 소스 개발 방식으로 변경되었습니다. 커뮤니티 분위기가 형성되었고, 커뮤니티 전체가 작업을 공유하며 Python의 개발 속도도 빨라졌습니다.

(Guido는 절대적인 중재권을 누리고 있기 때문에 Python의 메일리스트 개발 초기에는 많은 열광적인 지지자들이 Guido의 삶에 대해 상당히 걱정했습니다. 그들은 심지어 Guido가 죽으면 Python에 무슨 일이 일어날지 가정하기까지 했습니다. Guido가 맞았는지 확인하세요. 버스로)

현재까지 Python의 프레임워크가 확립되었습니다. Python 언어는 객체를 핵심으로 하는 코드를 구성하고(모든 것이 객체임) 다중 프로그래밍 패러다임(다중 패러다임)을 지원하며 동적 타이핑을 사용하고 자동으로 메모리 재활용(가비지 수집)을 수행합니다. Python은 해석을 지원하며 확장을 위해 C 라이브러리를 호출할 수 있습니다. Python에는 강력한 표준 라이브러리가 있습니다(배터리 포함). 표준 라이브러리 시스템이 안정화된 이후 Python 생태계는 타사 패키지로 확장되기 시작했습니다. Django, web.py, wxpython, numpy, matplotlib 및 PIL과 같은 패키지는 Python을 종이 풍부한 열대 우림으로 업그레이드합니다.

오늘날 Python 3.0 시대에 들어섰습니다. Python 3.0은 이전 버전과 호환되지 않기 때문에 2.0에서 3.0으로 전환하는 것이 쉽지 않습니다. 반면 Python의 성능은 여전히 ​​개선될 가치가 있으며 Python의 컴퓨팅 성능은 C++ 및 Java보다 낮습니다(Google 토론 참조). Python은 아직 개발 중인 언어입니다. Python의 미래가 어떻게 될지 기대됩니다.

Python Revelation

Python은 우아함, 명확성, 단순성을 표방하는 우수하고 널리 사용되는 언어입니다(TIOBE는 언어 중 8위, Google에서 세 번째로 큰 개발자 언어입니다. , Douban의 서버 언어인 Dropbox의 기본 언어). 세상에는 훌륭한 언어가 부족하지 않습니다. 하지만 대표적으로 Python의 개발 역사는 저에게 많은 영감을 주었습니다.

Python 개발 과정에서 커뮤니티는 중요한 역할을 합니다. Guido는 자신이 만능 프로그래머가 아니기 때문에 프레임워크 공식화에만 책임이 있다고 생각합니다. 문제가 너무 복잡하면 그는 그 문제를 우회하는 것, 즉 모퉁이를 자르는 것을 선택할 것입니다. 이러한 문제는 궁극적으로 커뮤니티의 다른 사람들에 의해 해결됩니다. 커뮤니티의 재능은 매우 풍부합니다. 웹사이트를 만들고 자금을 모으는 등 개발과 조금 거리가 있는 일이라도 기꺼이 처리하려는 사람들이 있습니다. 오늘날의 프로젝트 개발은 점점 더 복잡해지고 규모가 커지고 있습니다. 협력과 열린 마음이 프로젝트의 궁극적인 성공의 열쇠가 되었습니다.

파이썬은 역사에 들어간 ABC부터, 아직도 사용되고 있는 C와 Perl 등, 목록에 없는 많은 언어들로부터 많은 것을 배웠습니다. Python의 성공은 Python이 파생하는 모든 언어의 성공을 의미한다고 할 수 있습니다. 마찬가지로 Ruby는 Python에서 차용한 것이며, Ruby의 성공은 어떤 측면에서는 Python의 성공을 의미하기도 합니다. 모든 언어는 강점과 약점을 지닌 하이브리드입니다. 동시에, 언어의 "좋음과 나쁨"에 대한 판단은 플랫폼, 하드웨어, 시대 등과 같은 외부 요인에 따라 달라지는 경우가 많습니다. 프로그래머는 많은 언어 전쟁을 경험합니다. 열린 마음과 객관적인 분석으로 각 언어의 구체적인 장단점을 구별하고, 내부 요인과 외부 요인을 구별하면 어떨까 하는 생각이 들었습니다. 어쩌면 언젠가는 내가 좋아하지 않는 언어가 내가 필요한 것을 정확히 담고 있다는 것을 알게 될 것입니다.

파이썬의 미래 운명이 어떻게 되든, 파이썬의 역사는 이미 흥미로운 소설이다.


위 내용은 Python Quick Tutorial(Supplement 04): A Brief History of Python의 내용입니다. PHP 중국어 홈페이지(www.php.cn)!



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!