Краткий экскурс в историю

Гвидо ван Россум (нидерл. Guido van Rossum) — нидерландский программист, прежде всего известный как автор языка программирования Python. Среди разработчиков Python Гвидо известен как «великодушный пожизненный диктатор» (BDFL) проекта, что означает, что он продолжает наблюдать за процессом разработки Python, принимая окончательные решения, когда это необходимо.

Биография

Ван Россум родился и вырос в Нидерландах, где он закончил Амстердамский университет по специальности «математика и информатика» в 1982 году. Затем он работал в различных исследовательских институтах, в том числе Голландском центре математики и информатики (Амстердам), Национальном Институте Стандартов (США) и Corporation for National Research Initiatives (США).

В 2001 году ван Россум получил премию Free Software Award, а в 2002 году — премию Нидерландской ассоциации профессионалов UNIX (NLUUG). В 2006 он был признан Ассоциацией вычислительной техники «выдающимся инженером».

В декабре 2005 года ван Россум был принят на работу в Google, где он разработал на Python веб-приложение для рецензирования кода (code-review) Mondrian. Также принимал активное участие в разработке компанией Google сервиса хостинга сайтов и web-приложений Google App Engine. 7 декабря 2012 года был последним днём работы в Google. C 1 января 2013 приступил к работе в Dropbox.

История языка программирования Python началась в конце 1980-х. Гвидо ван Россум задумал Python в 1980-х годах, а приступил к его созданию в декабре 1989 года в центре математики и информатики в Нидерландах. Язык Python был задуман как потомок языка программирования ABC, способный к обработке исключений и взаимодействию с операционной системой Амёба. Ван Россум является основным автором Python и по сей день продолжает выполнять центральную роль в принятии решений относительно развития языка.

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

Первая обратно-несовместимая версия Python 3.0 была выпущена 3 декабря 2008 года после длительного периода тестирования. Многие её функции были портированы в обратно совместимые Python 2.6 и Python 2.7.

Развитие языка Python происходит согласно чётко регламентированному процессу создания, обсуждения, отбора и реализации документов PEP. PEP - Python Enhancement Proposal - это предложения по развитию питона https://www.python.org/dev/peps/ Процесс PEP является основным механизмом для предложения новых возможностей и для документирования проектных решений, которые прошли в Python.

В Python успешно начали вставлять асинхронность.

Асинхронные операции — операции, при которых мы просим совершить некоторую операцию и можем каким-либо образом отслеживать процесс/результат её выполнения. Когда она будет выполнена — неизвестно, но мы можем продолжить заниматься другими делами.

Это изменило синтаксис языка. Стало очевидно, что поддержка параллелизма не нужна.

Проект PyPy

PyPy был задуман как реализация Python, написанная на Python. Тот факт, что PyPy реализован на языке высокого уровня, делает его более гибким и позволяет легче экспериментировать с новыми возможностями, чем CPython, а также легко определить области, где он может быть улучшен. Он также призван обеспечить совместимость, гибкость и быстроту реализации языка программирования Python и позволяет реализовывать новые возможности без необходимости программирования на языке низкого уровня.

Современное состояние языка

На данный момент существует и Python2 и Python3 . На Python 2 продолжают программировать, но дополнения уже не вносят.

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

Основные изменения в Python 3.0: замена оператора print встроенной функцией, улучшение способа деления целых чисел и продвинутая поддержка Unicode.

Стоит отметить, что количество пакетов в Python 3 составляет 117 612. (Посмотрим как через пол года эта цифра значительно увеличится)

Область применения Python - повсеместно.

Важный плюс Python - свободная лицензия (которая так же распространяется на модули).

  1. Право использовать программу без ограничений
  2. Право изучать программу и вносить в неё изменения (требуется исходный код)
  3. Право распространять программу без ограничений
  4. Право распространять изменённую версию программы без ограничений (требуется исходный код)

Но если мы не хотим, чтобы некто использовал наш код, но наложил на его свою запретительную лицензию, мы защищаем свою лицензию т. н. «копилефтом» — дополнительным пунктом, запрещающим ухудшать условия распространения.

  1. Лицензия, под которой будет распространяться изменённая программа, должна включать в себя все 5 пунктов

    -- FrBrGeorge

Что умеет Python?

Python - это интерпретатор. Разница заключается лишь в исполнителе.

Первая ошибка, которую можно совершить:

С точки зрения Python w345 - это идентификатор.

Python можно использовать как калькулятор

Одно забавное свойство - вещественных чисел не существует.

Что касаемо строк…

>>> "ER"+'erwer'
'ERerwer'
>>> "Boo"*8
'BooBooBooBooBooBooBooBoo'
>>> "Q  K R    Q!".split()
['Q', 'K', 'R', 'Q!']
>>> "--".join("Q  K R    Q!".split())
'Q--K--R--Q!'

Строки можно складывать друг с другом и умножать на число

Вызываем математические функции

В пиотне есть помощь по любому объекту, включая саму функцию помощи)

Замечание: большинство курсов по Python у строено по одной из двух схем:

Мы же будем честно читать авторский tutorial, по возможности дополняя и комментируя его.

-- FrBrGeorge

Есть документация ко всем 200 модулям.

Рекомендация: Standard Library

Для зануд: Language Reference

Если мы выполняем обычное сложение, то при этом происходит 6 вещей.

>>> 123+234
357
>>>
  1. Синтаксический анализ строки. Она разобрана на лексемы.
  2. Создание объекта 123
  3. Создание объекта 234
  4. Операция сложения, создаётся объект 357
  5. Объект выводится.
  6. Объект уничтожается.

А что если этот элемент нужен?

Дело в том, что в Python нет переменных, а есть имена объектов.

Можно создать объект с 3-мя именами

Мы не можем удалить объект, мы можем удалить одно из имен.

(в примере количество связей у объекта на 1 больше, потому что сама функция getrefcount тоже на него внутри себя ссылается -- FrBrGeorge)

Еще несколько примеров

Если написать:

>>> a = 100500
>>> id(a)
139655860545936
>>> a += 1
>>> id(a)
139655860069200

то именем a будет связан уже новый объект 100501, а объект 100500 будет потерян, если на него больше нет ссылок (он больше не связан именами)

TODO

LecturesCMC/PythonIntro2017/01_Commandline/Conspect (последним исправлял пользователь AslanAshabokov 2017-09-24 13:56:46)