История Python

редактировать

Старый логотип Python, 1990-е – 2006 гг. Новый логотип Python, 2006-настоящее время

Язык программирования Python был задуман в конце 1980-х годов, а его реализация началась в декабре 1989 года Гвидо ван Россум в CWI в Нидерландах в качестве преемника ABC, способного обрабатывать исключения и взаимодействовать с операционной системой Amoeba. Ван Россум - главный автор Python, и его неизменная центральная роль в определении направления Python отражена в титуле, присвоенном ему сообществом Python: Благожелательный диктатор на всю жизнь (BDFL). (Тем не менее, ван Россум ушел с поста лидера 12 июля 2018 г.) Python был назван в честь телешоу BBC Летающий цирк Монти Пайтона.

Python 2.0 был выпущен 16 октября 2000 г. с множеством важных новых функций, включая обнаруживающий цикл сборщик мусора (в дополнение к подсчету ссылок ) для управления памятью и поддержку Unicode. Однако наиболее важным изменением стал сам процесс разработки с переходом к более прозрачному и поддерживаемому сообществом процессу.

Python 3.0, крупный, обратно несовместимый выпуск, был выпущен 3 декабря 2008 г. после длительного периода тестирования. Многие из его основных функций также были перенесены в обратно совместимые, но пока не поддерживаются Python 2.6 и 2.7.

Содержание
  • 1 Ранняя история
  • 2 Версия 1
    • 2.1 BeOpen
  • 3 Версия 2
  • 4 Версия 3
    • 4.1 Совместимость
    • 4.2 Характеристики
  • 5 Таблица версий
    • 5.1 Поддержка
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Ранняя история

В феврале 1991 года Ван Россум опубликовал код (помеченный как версия 0.9.0) для alt.sources. На этом этапе разработки уже находились классы с наследованием, обработкой исключений, функциями и основными типами данных list, dict, strи так далее. Также в этом первоначальном выпуске была модульная система, заимствованная из Modula-3 ; Ван Россум описывает модуль как «одну из основных программных единиц Python». Модель исключений Python также похожа на модель Modula-3 с добавлением предложения else. В 1994 г. был сформирован comp.lang.python, основной форум для обсуждения Python, что стало важной вехой в росте пользовательской базы Python.

Версия 1

достигнута версия 1.0 в январе 1994 года. Основными новыми функциями, включенными в этот выпуск, были инструменты функционального программирования lambda , map , filter и reduce . Ван Россум заявил, что «Python приобрел lambda, reduce (), filter () и map () благодаря хакеру Lisp, который пропустил их и представил рабочие патчи».

Последняя версия выпущенный, когда Ван Россум был в CWI, был Python 1.2. В 1995 году Ван Россум продолжил свою работу над Python в Corporation for National Research Initiatives (CNRI) в Рестоне, Вирджиния, откуда он выпустил несколько версий.

К версии 1.4 Python получил несколько новых функций. Среди них выделяются ключевые аргументы , основанные на Modula-3 (которые также похожи на аргументы ключевых слов Common Lisp ), и встроенная поддержка комплексных чисел.. Также включена базовая форма сокрытия данных посредством искажения имени, хотя это легко обойти.

Во время пребывания Ван Россума в CNRI он запустил (CP4E) Инициатива, направленная на то, чтобы сделать программирование более доступным для большего числа людей, с базовой «грамотностью» в языках программирования, аналогичной базовой английской грамотности и математическим навыкам, необходимым большинству работодателей. Python сыграл в этом центральную роль: из-за его ориентации на чистый синтаксис он уже был подходящим, а цели CP4E имели сходство с его предшественником, ABC. Проект финансировался DARPA. По состоянию на 2007 год проект CP4E неактивен, и хотя Python пытается быть легко обучаемым и не слишком запутанным в своем синтаксисе и семантике, отправка электронной почты непрограммистам не является активной проблемой.

BeOpen

В 2000 году команда разработчиков ядра Python переехала в команду BeOpen под руководством одного из первых выпускников Google. CNRI потребовала, чтобы была выпущена версия 1.6, в которой подведены итоги разработки Python до момента, когда команда разработчиков покинула CNRI. Следовательно, графики выпуска 1.6 и 2.0 в значительной степени совпадали. Python 2.0 был единственным выпуском от BeOpen.com. После того, как на BeOpen.com был выпущен Python 2.0, Гвидо ван Россум и другие разработчики PythonLabs присоединились к Digital Creations.

Версия Python 1.6 включала новую лицензию CNRI, которая была значительно длиннее, чем лицензия CWI, которая использовалась ранее. выпускает. В новую лицензию был включен пункт о том, что лицензия регулируется законами штата Вирджиния. Фонд свободного программного обеспечения утверждал, что пункт о выборе закона несовместим с Стандартной общественной лицензией GNU. BeOpen, CNRI и FSF договорились об изменении лицензии на свободное программное обеспечение Python, которое сделало бы его совместимым с GPL. Python 1.6.1 по сути такой же, как Python 1.6, с небольшими исправлениями ошибок и с новой лицензией, совместимой с GPL.

Версия 2

Python 2.0, выпущенный в октябре 2000 г., представлен понимание списков, функция, заимствованная из языков функционального программирования SETL и Haskell. Синтаксис Python для этой конструкции очень похож на синтаксис Haskell, за исключением предпочтения Haskell символов пунктуации и предпочтения Python алфавитных ключевых слов. Python 2.0 также представил систему сборки мусора, способную собирать ссылочные циклы.

Python 2.1 был близок к Python 1.6.1, а также Python 2.0. Его лицензия была переименована в Python Software Foundation License. Весь код, документация и спецификации, добавленные с момента альфа-версии Python 2.1, принадлежат Python Software Foundation (PSF), некоммерческой организации, созданной в 2001 году по образцу Фонд программного обеспечения Apache. В выпуске было внесено изменение в спецификацию языка для поддержки вложенных областей видимости, как и других языков со статической областью действия. (Эта функция была отключена по умолчанию и не требовалась до Python 2.2.)

Python 2.2 был выпущен в декабре 2001 г.; Основным нововведением было объединение типов Python (типов, написанных на C) и классов (типов, написанных на Python) в одну иерархию. Это единственное объединение сделало объектную модель Python чисто и последовательно объектно-ориентированной. Также были добавлены генераторы , которые были вдохновлены Icon.

Python 2.5 был выпущен в сентябре 2006 года и представил оператор with, который включает блок кода в диспетчере контекста ( например, получение блокировки перед запуском блока кода и снятие блокировки после этого или открытие файла с последующим его закрытием), что позволяет Resource Acquisition Is Initialization (RAII) -подобное поведение и замена общей идиомы try / finally.

Python 2.6 был выпущен одновременно с Python 3.0 и включал некоторые функции из этого выпуска, а также режим «предупреждений», в котором подчеркивалось использование функций, которые были удалены в Python 3.0. Точно так же Python 2.7 совпал и включал функции из Python 3.1, который был выпущен 26 июня 2009 года. Параллельные выпуски 2.x и 3.x затем прекратили свое существование, и Python 2.7 был последним выпуском в серии 2.x. В ноябре 2014 года было объявлено, что Python 2.7 будет поддерживаться до 2020 года, но пользователям было рекомендовано как можно скорее перейти на Python 3. Поддержка Python 2.7 закончилась 1 января 2020 года, вместе с замораживанием кода ветки разработки 2.7. Последний выпуск 2.7.18 вышел 20 апреля 2020 г. и включал исправления критических ошибок и средства блокировки выпуска. Это знаменует собой конец жизни Python 2.

Версия 3

Python 3.0 (также называемый «Python 3000» или «Py3K») был выпущен в декабре. 3, 2008. Он был разработан для исправления фундаментальных недостатков дизайна языка - требуемые изменения не могли быть реализованы при сохранении полной обратной совместимости с серией 2.x, что потребовало нового номера основной версии. Руководящий принцип Python 3 был: «уменьшить дублирование функций, удалив старые способы работы».

Python 3.0 был разработан с той же философией, что и в предыдущих версиях. Однако, поскольку Python накопил новые и избыточные способы программирования одной и той же задачи, Python 3.0 сделал акцент на удалении дублирующих конструкций и модулей в соответствии с принципом «Должен быть один - и желательно только один - очевидный способ сделать это».

Тем не менее, Python 3.0 оставался многопарадигмальным языком. Программисты по-прежнему могут следовать парадигмам объектно-ориентированного, структурированного и функционального программирования, среди прочего, но в рамках такого широкого выбора детали должны были быть более очевидными в Python 3.0, чем в Python 2.x.

Совместимость

Python 3.0 нарушил обратную совместимость, и большая часть кода Python 2 не выполняется без изменений на Python 3. Динамическая типизация Python в сочетании с планирует изменить семантику некоторых методов словарей, например, сделать совершенный механический перевод с Python 2.x на Python 3.0 очень сложным. Инструмент под названием «2to3» выполняет те части перевода, которые могут выполняться автоматически. При этом 2to3 оказался довольно успешным, хотя ранний обзор показал, что есть аспекты перевода, с которыми такой инструмент никогда не справится. До развертывания Python 3 для проектов, требующих совместимости с сериями 2.x и 3.x, рекомендовалось иметь один источник (для серии 2.x), а выпускать выпуски для платформы Python 3.x с использованием 2to3. Редактировать код Python 3.x не рекомендуется до тех пор, пока код должен работать на Python 2.x. Это больше не рекомендуется; с 2012 года предпочтительным подходом было создание единой базы кода, которая может работать как под Python 2, так и под Python 3 с использованием модулей совместимости.

Возможности

Некоторые из основных изменений, включенных в Python 3.0:

  • Изменение printтак, чтобы это была встроенная функция, а не инструкция. Это упростило изменение модуля для использования другой функции печати, а также упорядочило синтаксис. В Python 2.6 и 2.7 print ()доступен как встроенный, но маскируется синтаксисом оператора печати, который можно отключить, введя из __future__ import print_functionв верхней части файла.
  • Удаление функции Python 2 inputи переименование функции raw_inputв input. Функция Python 3 inputведет себя так же, как функция Python 2 raw_input, в том смысле, что входные данные всегда возвращаются как строка, а не оцениваются как выражение
  • Moving уменьшить(но не mapили filter) из встроенного пространства имен в functools(обоснованием является код, использующий reduceменее читабелен, чем код, в котором используется цикл for и переменная-аккумулятор)
  • Добавление поддержки дополнительных аннотаций функций, которые могут использоваться для объявлений неформальных типов или других целей
  • Объединение типов str/ unicode, представляющих текст, и введение отдельного неизменяемого типа bytes; и в основном соответствующий изменяемый тип bytearray, оба из которых представляют собой массивы байтов
  • Удаление функций обратной совместимости, включая классы старого стиля, строковые исключения и неявный относительный импорт
  • Изменение функции целочисленного деления : в Python 2 5/2равно 2; в Python 3 5/2равно 2.5. (Как в Python 2 (начиная с версии 2.2), так и в Python 3 существует отдельный оператор, обеспечивающий старое поведение: 5 // 2равно 2)

Последующие выпуски в серии Python 3.x включали дополнительные, существенные новые функции; все текущие разработки языка выполняются в серии 3.x.

Таблица версий

Выпуски до пронумерованных версий:

ВерсияПоследняя микроверсияДата выпускаОкончание полной поддержкиКонец исправлений безопасности
0.90.9.91991-02-20Старая версия, больше не поддерживается: 1993-07 -29
1.01.0.41994-01-26Старая версия, больше не поддерживается: 1994-02-15
1.11.1.11994-10-11Старая версия, больше не поддерживается: 1994-11-10
1.21995-04-13Старая версия, больше не поддерживается: не поддерживается
1.31995-10-13Старая версия, больше не поддерживается: не поддерживается
1.41996-10-25Старая версия, больше не поддерживается: не поддерживается
1,51,5.21998-01-03Старая версия, больше не поддерживается: 1999-04-13
1.61.6.12000-09-05Старая версия, больше не поддерживается: 2000-09
2.02.0.12000-10-16Старая версия, больше не поддерживается: 2001-06-22
2.12.1.32001-04-15Старая версия, больше не поддерживается: 2002-04-09
2.22.2.32001-12-21Старая версия, больше не поддерживается: 2003-05-30
2.32.3.72003-06-29Старая версия, больше не поддерживается: 2008-03-11
2.42.4.62004-11-30Старая версия, больше не поддерживается: 2008-12-19
2.52.5.62006-09-19Старая версия, больше не поддерживается: 2011-05-26
2.62.6.92008-10-01Старая версия, больше не поддерживается: 24.08.2010Старая версия, больше не поддерживается: 2013-10-29
2.72.7.182010-07-03Старая версия, больше не поддерживается: 2020-01-01
3.03.0.12008-12-03Старая версия, больше не поддерживается: 2009-06-27
3.13.1.52009-06-27Старая версия, больше не поддерживается: 2011-06-12Старая версия, больше не поддерживается: 2012-06
3.23.2.62011-02-20Старая версия, больше не поддерживается: 2013-05-13Старая версия, больше не поддерживается: 2016-02-20
3.33.3.72012-09-29Старая версия, больше не поддерживается: 2014-03-08Старая версия, больше не поддерживается: 2017-09-29
3.43.4.102014-03- 16Старая версия, больше не поддерживается: 2017-08-09Старая версия, больше не поддерживается: 2019-03-18
3.53.5.102015-09-13Старая версия, больше не поддерживается: 2017-08-08Старая версия, больше не поддерживается: 2020-09-30
3,63.6.122016-12-23Старая версия, больше не поддерживается: 2018-12-24Старая версия, но все еще поддерживается : 2021-12
3,73.7.92018-06-27Старая версия, больше не поддерживается: 2020-06-27Более старая версия, но все еще поддерживается: 2023-06
3.83.8.62019-10-14Старая версия, но все еще поддерживается: 2021 -04Более старая версия, но все еще поддерживается: 2024-10
3.93.9.02020-10-05Текущая стабильная версия: 2022-05Текущая стабильная версия: 2025-10
3.102021-10-25Будущий выпуск: 2023-05Будущий выпуск: 2026-10 гг.
Условные обозначения: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущая версия
Курсив - это последняя микроверсия поддерживаемых в настоящее время версий по состоянию на 2020-10-03.

Примечания к таблице:

Поддержка

См. Также
Ссылки
Внешняя ссылка s
Последняя правка сделана 2021-05-23 14:21:26
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте