История Python - знаменитого языка программирования

автор рубрика
История Python - знаменитого языка программирования

Кто и где разработал язык Python, почему он был так назван, были ли у него вдохновители? В этой статье рассмотрим историю зарождения и развития Python, а также поговорим про его будущее с точки зрения Data Science и не только.

Родина Python – Нидерланды

Середина 80-хх, Амстердам. Ученые исследовательского центра CWI трудятся над разными проектами в области математики и компьютерных наук. Совсем скоро будет испытываться протокол TCP/IP – первый в Европе интернет [1]. Здесь же в одной из лабораторий пишет программы на языке ABC [2] Гвидо ван Россум, будущий великодушный пожизненный диктатор проекта. Он нашел язык программирования ABC очень элегантным. Взглянем мельком на его синтаксис:

HOW TO RETURN words document:
   PUT {} IN collection
   FOR line IN document:
      FOR word IN split line:
         IF word not.in collection:
            INSERT word IN collection
   RETURN collection

Ничего не напоминает? Это программа для извлечения уникальных слов в документе с последующим хранением их в коллекции. В Python эта же программа выглядит так:

def split_by_word(document):
    collection = []
        for line in document:
            for word in line.split():
                if word not in collection:
                    collection.append(word)
    return collection

Именно язык ABC будет вспоминать Гвидно ван Россум, как изначальную идею для Python.

Python не про змей

На рождественские каникулы в 1989 году Гвидо ван Россум думал, каким бы хобби себя занять и решил разработать новый скриптовый язык, который возьмет в себя лучшее из ABC и будет поддерживаться на многих операционных системах [3]. Какое же название придумать новому языку? Да что-нибудь такое невпопад и немножко с юмором, например, из любимого комедийного ТВ-шоу – Monty Python’s Flying Circus (Летающий цирк Монти Пайтона) [4]. После этого началась работа над интерпретатором.

Python теперь доступен каждому желающему

В феврале 1991 Ван Россум публикует Python в alt.source на всеобщее обозрение [5]. В языке поддерживаются основные типы данные list, dict, str и т.д., исключения, классы с поддержкой наследования. Была заимствована из языков Modula-2 и Modula-3 идея модульной системы [6]. Эти концепты до сих пор присутствуют.

В 1994 году выходит версия 1.0. Были добавлены особенности функционального программирования: lambda, filter, map, reduce – функции, навеянные языком Lisp [7].

В сентябре 2000 года выходит версия 1.6 – последняя из серии 1.x. В следующем месяце этого года появится новый релиз Python – 2.0.

От Python 2 до 3

Во второй версии присутствовали следующие нововведения:

  • предложены list comprehension (обсуждали тут), заимствованные из языка Haskell [8];
  • улучшена работа сборщика мусора в циклах;
  • добавлена возможность вызывать методы строковых объектов явно, без импортирования специального модуля string
  • и многое другое.

Серия 2.х закончилась на версии 2.7 и больше не будет поддерживаться с января 2020 [9].

В декабре 2008 вышла версия 3.0 с лозунгом “уменьшение дублирующейся функциональности путем устранения устаревших способов сделать это”. И вот что было сделано в третьей версии:

  • print стал функцией вместо оператора
    раньше: print "The answer is", 2*2
    сейчас: print("The answer is", 2*2)
    
  • reduce переместили в модуль functools, а map и filter возвращают iterator (о них говорили тут)
  • range ведет cебя как xrange в 2.х, поэтому нет нужды запоминать поведение обиох объектов. К тому же при индексировании range все равно возвращается объект range:
    >>> range(30)[:10]
    range(0, 10)
    >>> type(range(30)[:10])
    <class 'range'>
    
  • list.sort, sorted больше не принимают аргумент cmp, вместо него используется key (key был также добавлен в версию 2.4).
  • long заменен на int
  • Четкое различение между текстовыми (str) и бинарными (bytes) данными вместо Юникода и 8-битные строк.
  • Новый синтаксис для наследования метаклассов:
    Раньше: Сейчас:
    class C:
        __metaclass__ = M
        ...
    
    class C(metaclass=M):
        ...
        ...
    
  • Знак “не равно” <> был заменен на !=.
  • и многое другое [10].

Все эти изменения направлены на унификацию процесса программирования, чтобы разработчики старались писать одинаково.

Настоящее время

Проект, который начался одним рождественским днем, не закончился для нас его пользователей, но закончился для великодушного пожизненного диктатора. В июле 2018 Гвидо ван Россум оставил этот пост, а в октябре 2019 ушел из Dropbox, где работал с 2013, и вышел на пенсию в возрасте 63 лет. Однако развитие Python продолжается. Сейчас имеется стабильная версия 3.8.3, а в октябре 2020 года выходит стабильная 3.9.0, бета-версию уже можно скачать и протестировать. Серия 3.9 закончит свою полную поддержку в 2023. С мая 2020 года ведутся разработка версии 3.10.

Кроме того, в 2004 году был сформирован дзен Python, который можно посмотреть, написав следующее:

>>> import this

Язык настолько развит и популярен, что 10 мая 2020 года Barry Warsaw [12] написал музыку, посвященную дзену Python. С ней можно ознакомиться в youtube.

 

Узнать об особенностях Python 3 и его применении в практических проектах Data Science и технологиях Big Data вы сможете на наших курсах в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.

Источники
  1. https://ru.wikipedia.org/wiki/Центр_математики_и_информатики
  2. https://ru.wikipedia.org/wiki/ABC_(язык_программирования)
  3. https://www.python.org/doc/essays/foreword/
  4. https://ru.wikipedia.org/wiki/Летающий_цирк_Монти_Пайтона
  5. https://raw.githubusercontent.com/python/cpython/master/Misc/HISTORY
  6. https://www.artima.com/intv/python.html
  7. https://www.artima.com/weblogs/viewpost.jsp?thread=98196
  8. https://web.archive.org/web/20091214142515/http://www.amk.ca/python/2.0
  9. https://www.python.org/dev/peps/pep-0373/
  10. https://docs.python.org/3/whatsnew/3.0.html
  11. https://www.mail-archive.com/python-committers@python.org/msg05628.html
  12. https://wefearchange.org/author/barry-warsaw.html
Комментировать

Ваш адрес email не будет опубликован. Обязательные поля помечены *