Кто и где разработал язык 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 вы сможете на наших курсах в лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.
- https://ru.wikipedia.org/wiki/Центр_математики_и_информатики
- https://ru.wikipedia.org/wiki/ABC_(язык_программирования)
- https://www.python.org/doc/essays/foreword/
- https://ru.wikipedia.org/wiki/Летающий_цирк_Монти_Пайтона
- https://raw.githubusercontent.com/python/cpython/master/Misc/HISTORY
- https://www.artima.com/intv/python.html
- https://www.artima.com/weblogs/viewpost.jsp?thread=98196
- https://web.archive.org/web/20091214142515/http://www.amk.ca/python/2.0
- https://www.python.org/dev/peps/pep-0373/
- https://docs.python.org/3/whatsnew/3.0.html
- https://www.mail-archive.com/python-committers@python.org/msg05628.html
- https://wefearchange.org/author/barry-warsaw.html