Python это: Что такое Python? — Облачное руководство для начинающих по Python — AWS

Подробнее о Python | Python: Настройка окружения

Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Чтобы глубже погрузиться в настройку окружения Python, нам нужно вспомнить теоретические основы этого языка. Они помогут глубже разобраться в окружении и работе с ним.

Язык программирования

Что такое язык программирования? За этим понятием скрываются две связанных, но независимых темы.

С одной стороны, языком программирования называют синтаксические и семантические правила, по которым записывается и работает исходный код.

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

Например, в Python нельзя написать my name = 5 с пробелом в имени переменной. Эти правила существуют не только в книгах, но и в головах конкретных программистов и разработчиков языка.

Часто весь свод правил существует в виде отдельного специального документа и называется спецификацией.

С другой стороны, языком программирования называют программу, которая запускает и компилирует наш код. Обычно ее называют средой выполнения.

Среда выполнения — это конкретное воплощение спецификации, поэтому ее иногда называют реализацией.

У конкретного языка может существовать несколько реализаций, в том числе эталонная реализация, на которую равняются все остальные. Различные реализации могут разрабатываться разными людьми и компаниями.

У Python нет выделенной спецификации, но есть эталонная реализация. Она называется CPython — это интерпретатор Python, реализованный на языке C. Если вы слышите разговоры про Python, то скорее всего имеется в виду именно эталонная реализация CPython.

Прочие варианты обычно имеют свои названия. Например, реализация языка для запуска программ на платформе .NET называется IronPython.

Python

Python — интерпретируемый язык программирования с сильной динамической типизацией. Разберем эти слова по отдельности.

Интерпретируемый язык программирования

Существуют языки программирования, в которых есть стадия компиляции в машинный код. Например, компиляция есть у языков C, Rust, Go. Это компилируемые языки.

Python работает по-другому. Программа исполняется интерпретатором шаг за шагом, а не запускается напрямую на процессоре компьютера. Поэтому для запуска программы на Python всегда нужна среда исполнения (интерпретатор). Только она может выполнять Python-программы.

Строго говоря, и у Python есть фаза компиляции, но при этом внешне он ведет себя именно как интерпретируемый язык программирования:

  • Вы запускаете программу
  • Интерпретатор открывает файлы программы и загружает из них исходный код
  • Затем интерпретатор преобразует исходный код в байткод, проверяет ошибки синтаксиса и начинает исполнять по шагам

Динамическая типизация

Есть языки, в которых интерпретатор производит проверку типов, доступности функций и переменных во время выполнения кода.

Такие языки называются динамически типизированными. Если мы случайно ошиблись и вызвали несуществующую функцию, то ошибка всплывет только во время вызова этой функции.

В статически типизированных языках подобные ошибки отслеживаются раньше — на этапе анализа исходного текста без запуска кода на выполнение. Слово «статический» как раз означает, что программа не выполняется.

Обычно статическими проверками занимаются компиляторы, но существуют и специальные инструменты — статические анализаторы кода. Для некоторых языков с динамической типизацией такие анализаторы тоже существуют, но отслеживают значительно меньшее число ошибок.

Сильная типизация

язык программирования, созданный сообществом / Хабр

Это перевод доклада с голландского TED Talks, прочитанного Гвидо Ван Россумом, «великодушным пожизненным диктатором» языка программирования Python. Много автобиографии и немного про значение языков программирования и основную идею Python.

Позвольте представиться — я нерд, гик. И я постоянно медлю. Я закончил университет в 26, мне было 45, когда я женился, сейчас мне 60, и у меня четырнадцатилетний сын. Может, мне просто трудно даются решения: я прожил в США больше 20 лет, но всё ещё имею вид на жительство.

Я не Стив Джобс или Марк Цукерберг. Но в возрасте 35 лет я создал язык программирования, который нашёл своих последователей. То, что произошло после этого, невероятно. Но об этом позже.

В 10 лет родители подарили мне образовательный набор электроники, выпущенный Philips, и он был крут. По началу я просто следовал инструкциям, и всё работало. Позже я начал пробовать создавать собственные цепи: в наборе было целых три транзистора!

Я взял одну из моих моделей, мигающую лампочку, в школу. Но в моём пятом классе всем было всё равно, никто не осознал важности этой конструкции. Я думаю, тогда я впервые понял, что я гик: до этого я просто был умным тихоней.

В старшей школе я всё больше становился нердом — я тусовался с несколькими детьми, также интересовавшимися электроникой, и на уроках физики мы сидели сзади и обсуждали штрих Шеффера, пока все остальные разбирались с законом Ома.

К счастью, наш учитель физики заметил нас, и занял созданием цифрового таймера, который он использовал для объяснения законов гравитации остальному классу. Это был замечательный проект, который показал, что наши умения полезны. Остальные дети всё ещё считали нас странными: в семидесятых многие были бунтарями или курителями «дудки»; остальные уже готовились к успешной карьере докторов, или адвокатов, или менеджеров. Но они меня не трогали, я не трогал их тоже, и в итоге выпустился одним из лучших учеников.

После старшей школы я поступил в Амстердамский университет: он был близко от дома, и для подростка, выросшего в Нидерландах в семидесятых, Амстердам был единственным крутым городом (да, студенческие протесты 1968-го слегка меня зацепили). К большому удивлению моего школьного учителя физики я выбрал математику, но, оглядываясь назад, я не думаю, что была какая-нибудь разница.

В подвале научного корпуса был мейнфрейм, и я полюбил его с первого взгляда. Карточные перфораторы! Построчные принтеры! Пакетная обработка! Я быстро научился программировать на языках вроде Алгола, Фортрана и Паскаля. Сейчас эти названия почти забыты, но они имели большое влияние тогда. Вскоре я снова сидел в конце аудитории, игнорируя лекции и исправляя свои компьютерные программы. А почему?

В подвале, вокруг мейнфрейма, творилось нечто невообразимое. Там была сплоченная группа студентов и сотрудников со схожими интересами, которая обменивалась трюками и секретами. Мы делились процедурами и программами. Мы объединялись в альянсы против обслуживающего персонала мейнфрейма, особенно в играх в кошки-мышки за свободное дисковое пространство (свободное место на диске было действительно священным тогда).

Но главный урок, который я усвоил, был про обмен знаниями: хотя большинство трюков, которые я выучил тогда, умерли вместе с эрой больших компьютеров, идея о ПО, которым необходимо делиться, жива как никогда. Сейчас мы называем это “open source”, и это целое движение. Отметьте это!

Группа разработчиков ОС мейнфрейма набирала нескольких студентов. Они разместили вакансию, я откликнулся, и получил работу. Это было событие, изменившее жизнь! Внезапно у меня появился полный доступ к мейнфрейму (без войн за свободное место или терминалы) и доступ к исходникам его операционной системы, а так же куча коллег, которые объяснили мне, как всё это работает.

У меня была работа мечты: программировать целый день, с настоящими заказчиками — другими программистами и пользователями машины. Моя учёба застопорилась, и я почти бросил колледж, но меня вытянули мой менеджер и профессор, который не отказался от меня. Они подтолкнули меня к завершению нескольких курсов, и в конце концов, с большим опозданием, я стал выпускником.

Я немедленно перешёл на новую работу мечты, которая была закрыта для меня без диплома. Я никогда не терял интерес к языкам программирования, и в целях изучения вступил в команду, разрабатывавшую новый язык программирования — такое не каждый день увидишь. Дизайнеры надеялись, что их язык захватит мир и заменит Basic.

Были восьмидесятые, и Бейсик был выбором для нового поколения программистов-любителей, писавших под микрокомпьютеры вроде Apple II и Commodore 64. Наша команда считала Бейсик вредителем, от которого следует избавиться. Наш новый язык, ABC, должен был “искоренить Basic” — такой у нас был девиз.

Но к сожалению, с маркетингом (или сроками) у нас всё было не очень хорошо, и после четырёх лет ABC был заброшен. С тех пор я убил много часов, пытаясь понять почему проект провалился, хотя и был в нужном месте в нужное время. За исключением того, что язык был слегка избыточным, я пришёл к выводу, что ABC умер просто потому, что тогда не было интернета. Не было обратной связи между создателями языка и его пользователями. Дизайн ABC изначально был дорогой с односторонним движением.

Пять лет спустя, когда я копался в остатках ABC в поисках идей для моего собственного языка программирования, я решил устранить недостаток обратной связи. Моим девизом стал “выпускай рано, выпускай часто” (как у чикагских демократов — “голосуй рано, голосуй часто”). И интернет, маленький и медленный в 1990, позволил это сделать.

Если посмотреть на 30 лет назад, то интернет и Open Source (a. k.a Free Software) действительно многое поменяли. Ну и конечно же закон Мура, согласно которому компьютеры становились всё быстрее из года в год. В совокупности всё это изменило взаимодействие между создателями и пользователями компьютерного ПО. Я считаю, что эти события (и то, как я их использовал) привнесли больше в успех “моего” языка программирования, чем мой опыт и навыки программирования.

Также не повредило то, что я назвал свой язык Python — немного невольного маркетингового гения с моей стороны. Я назвал его так в честь комедийного шоу Monty Python’s Flying Circus, и в 1990-м это не повлекло никаких последствий. Сегодня, я уверен, куча фирм по исследованию брендов были бы счастливы выписать большой штраф за то, какие сложные ассоциации такое название может вызывать в подсознании клиента. Но я был просто легкомысленным.

Я обещал не загружать вас технической речью на тему достоинств различных языков программирования. Но я хочу сказать несколько вещей про то, что языки программирования значат для людей, которые их используют — для программистов. Если попросить программиста объяснить простому человеку что такое язык программирования, он ответит, что это способ заставить компьютер делать то, что тебе нужно. Но если это всё, почему программисты так яро обсуждают языки между собой?

В реальности, языки программирования определяют то, как программисты выражают свои идеи и обмениваются ими. Причина: компьютер обработает всё, что угодно, а вот программисты работают с другими программистами, и плохо переданная идея может стать причиной дорогостоящего провала. Фактически, идеи выраженные в языке программирования часто достигают конечных пользователей программы.

Подумайте о невероятном успехе компаний вроде Google или Facebook. В их корне лежат идеи — идеи насчёт того, что компьютеры могут сделать для людей. Чтобы быть эффективной, идея должна быть выражена в компьютерной программе с использованием языка программирования. И язык, который позволит лучше всего выразить идею, даст команде ключевое преимущество, потому что даёт членам команды — людям! — ясность идеи. Идеи в недрах Google и Facebook настолько различны, насколько возможно, и на самом деле избранные этими компаниями языки программирования находятся на противоположных концах спектра дизайна языков программирования.

True story: первая версия Google была написана на Python. Причина: Python был правильным языком для выражения оригинальных идей Ларри Пейджа и Сергея Брина про индексацию веба и организацию результатов поиска. И они смогли реализовать свои идеи на компьютере!

Итак, в 1990-м, задолго до Google и Facebook, я создал собственный язык программирования, и назвал его Python. Но в чём его идея? Почему он настолько успешен? Чем он отличается от других языков программирования? (Почему вы все на меня так смотрите? 🙂

У меня много ответов, некоторые технические, некоторые из моего многолетнего опыта и навыков, некоторые просто вроде “был в нужное время в нужном месте”. Но я верю что главная идея — это то, что язык разрабатывался в интернете, изначально открыто, сообществом волонтёров (но не любителей!), которые страстно привязаны к нему.

И это как раз то, о чём раньше была речь в части про подвал научного корпуса.

Сюрприз: как и у любой хорошей мотивационной речи, цель этого доклада — это радость!

Я больше всего счастлив когда чувствую себя частью сообщества. Мне повезло, что я могу чувствовать это и в ежедневной работе (я ведущий инженер в Dropbox). И если я не могу испытывать это чувство, я перестану чувствовать себя живым. Это чувство заразно, и поэтому члены нашего сообщества есть во всём мире.

Сообщество пользователей Python — это миллионы людей, которые сознательно используют его, и им это нравится. Многие активно участвуют в организации конференций — PyCon — в таких удалённых местах как Намибия, Ирак и даже Огайо!

Моя любимая история: год назад я провёл 20 минут на видеоконференции с классом, полным преподавателей и сотрудников Babylon University в Ираке, отвечая на их вопросы по Python. Благодаря усилиям смелой женщины, которая огранизовала такое мероприятие даже в охваченной войной стране, студенты в Вавилонском унивеситете в настоящее время изучают введение в программирование с использованием Python. В своих самых смелых мечтах я никогда не ожидал, что буду влиять на жизни столь далёкие и столь сильно отличающиеся от моей.

И на этой ноте я вас покидаю: язык программирования, созданный сообществом, способствует счастью своих пользователей. В следующем году я, возможно, поеду на кубинский PyCon!

Сравнение объектов в Python — Real Python