В современном мире, когда компьютер может поместиться в мобильный телефон, не больше вашей ладони, мы можем сами писать и дорабатывать программы под свои нужды, не ожидая очередного релиза. Для этого не нужно специального образования или оборудования. Достаточно скачать среду разработки и изучить несколько обучающих материалов в Интернете. Часто в техникуме, проходя курс «Дискретной математики» в первом полугодии 2 курса, сталкиваются с проблемой быстрого перевода чисел в разные системы счисления. Стоит создать для себя инструмент, выполняющий данную задачу. Следующим шагом становится выбор языка. Многие языки уходят на второй план, не отвечая тем высоким требованиям, которые диктует технический прогресс. И тут на помощь приходит язык Python, так как он достаточно современный, постоянно развивается, используется многими успешными проектами, и существует много реализаций, которые можно выбрать под установленные требования.
Python– высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минимизирован. В то же время стандартная библиотека включает большой объём полезных функций.
История
Разработка языка Python началась в конце 1980-х годов сотрудником голландского института CWI Гвидо ван Россумом [4]. Для распределённой ОС Amoeba требовался расширяемый скриптовый язык, и Гвидо начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). В начале 1991 года Гвидо опубликовал первоначальный текст в группе новостей alt.sources. С самого начала Python проектировался как объектно-ориентированный язык.
Название языка произошло вовсе не от вида пресмыкающихся. Автор назвал язык в честь популярного британского комедийного телешоу 1970-х «Летающий цирк Монти Пайтона». Хотя, всё равно название языка чаще связывают именно со змеёй, чем с передачей – пиктограммы файлов в KDE или в Microsoft Windows и даже эмблема на сайте python.org (до выхода версии 2.5) изображают змеиные головы.
Наличие дружелюбного, отзывчивого сообщества пользователей считается наряду с дизайнерской интуицией Гвидо одним из факторов успеха Python. Развитие языка происходит согласно чётко регламентированному процессу создания, обсуждения, отбора и реализации документов PEP (англ.Python Enhancement Proposal) – предложений по развитию Python.
3 декабря2008 года, после длительного тестирования, вышла первая версия Python 3000 (или Python 3.0, также используется сокращение Py3k). В Python 3000 устранены многие недостатки архитектуры с максимально возможным (но не полным) сохранением совместимости со старыми версиями Python. На сегодня поддерживаются обе ветви развития (Python 3.x и 2.x).
Влияние других языков на Python
Появившись сравнительно поздно, Python создавался под влиянием множества языков программирования:
- ABC – отступы для группировки операторов, высокоуровневые структуры данных (map) (Python фактически создавался как попытка исправить ошибки, допущенные при проектировании ABC);
- Modula-3 – пакеты, модули, использование else совместно с try и except, именованные аргументы функций (на это также повлиял Common Lisp);
- С, C++ – некоторые синтаксические конструкции (как пишет сам Гвидо ван Россум – он использовал наиболее непротиворечивые конструкции из С, чтобы не вызвать неприязнь у С-программистов к Python);
- Smalltalk – объектно-ориентированное программирование;
- Lisp – отдельные черты функционального программирования (lambda, map, reduce, filter и другие);
- Fortran – срезы массивов, комплексная арифметика;
- Miranda – списочные выражения;
- Java – модули logging, unittest, threading (часть возможностей оригинального модуля не реализована), xml.sax стандартной библиотеки, совместное использование finally и except при обработке исключений, использование @ для декораторов;
- Icon – генераторы.
Большая часть других возможностей Python (например, байт-компиляция исходного кода) также была реализована ранее в других языках.
Сравнение с другими языками
Наиболее часто Python сравнивают с Perl и Ruby [2]. Эти языки также являются интерпретируемыми и обладают примерно одинаковой скоростью выполнения программ. Как и Perl, Python может успешно применяться для написания скриптов (сценариев). Как и Ruby, Python является хорошо продуманной системой для ООП.
Средства функционального программирования частично позаимствованы из Scheme и Icon.
В среде коммерческих приложений скорость выполнения программ на Python часто сравнивают с Java-приложениями.
Несмотря на то, что Python обладает достаточно самобытным синтаксисом, одним из принципов дизайна этого языка является принцип наименьшего удивления.
Философия
Разработчики языка Python придерживаются определённой философии программирования, называемой «The Zen of Python» («Дзен Питона», или «Дзен Пайтона») [4]. Её текст выдаётся интерпретатором Python по команде import this (работает один раз за сессию). Автором этой философии считается Тим Петерс (Tim Peters).
Вот идеи философии:
- Красивое лучше, чем уродливое.
- Явное лучше, чем неявное.
- Простое лучше, чем сложное.
- Сложное лучше, чем запутанное.
- Плоское лучше, чем вложенное.
- Разреженное лучше, чем плотное.
- Читаемость имеет значение.
- Особые случаи не настолько особые, чтобы нарушать правила.
- При этом практичность важнее безупречности.
- Ошибки никогда не должны замалчиваться.
- Если не замалчиваются явно.
- Встретив двусмысленность, отбрось искушение угадать.
- Должен существовать один – и, желательно, только один – очевидный способ сделать это.
- Хотя он поначалу может быть и не очевиден, если вы не голландец.
- Сейчас лучше, чем никогда.
- Хотя никогда зачастую лучше, чем прямо сейчас.
- Если реализацию сложно объяснить – идея плоха.
- Если реализацию легко объяснить – идея, возможно, хороша.
- Пространства имён – отличная штука! Будем делать их побольше!
Язык обладает чётким и последовательным синтаксисом, продуманной модульностью и масштабируемостью, благодаря чему исходный код написанных на Python программ легко читаем. При передаче аргументов в функции Python использует вызов по соиспользованию (call-by-sharing).
Возможности
- Интерактивныйрежим
Подобно Лиспу и Прологу в режиме отладки, интерпретатор Python имеет интерактивный режим работы, при котором введённые с клавиатуры операторы сразу же выполняются, а результат выводится на экран (REPL). Этот режим интересен не только новичкам, но и опытным программистам, которые могут протестировать в интерактивном режиме любой участок кода, прежде чем использовать его в основной программе, или просто использовать как калькулятор с большим набором функций.
Так выглядит общение с Python в интерактивном режиме [3]:
>>>2**100# возведение 2 в степень 100
1267650600228229401496703205376L
>>>frommathimport*# импорт математических функций
>>>sin(pi*0.5)# вычисление синуса от половины пи
1.0
>>>help(sorted)# помощьпофункции sorted
Helponbuilt-infunctionsortedinmodule__builtin__:
sorted(...)
sorted(iterable,cmp=None,key=None,reverse=False)-->newsortedlist
В интерактивном режиме доступен отладчикpdb и система помощи (вызывается по help()). Система помощи работает для модулей, классов и функций, только если те были снабжены строками документации [1].
- Объектно-ориентированноепрограммирование
- Модулиипакеты
Программное обеспечение (приложение или библиотека) на Python оформляется в виде модулей, которые в свою очередь могут быть собраны в пакеты.
- Интроспекция
Это означает, что для любого объекта можно получить всю информацию о его внутренней структуре.
- Обработкаисключений
- Итераторы
- Генераторы
функции, сохраняющие внутреннее состояние: значения локальных переменных и текущую инструкцию
Управление контекстом выполнения
- Декораторы
Минусы языка
Низкое быстродействие
Классический Python, как и многие другие интерпретируемые языки, не применяющие, например, JIT-компиляторы, имеют общий недостаток – сравнительно невысокую скорость выполнения программ [5].
Существуют реализации языка Python, вводящие высокопроизводительные виртуальные машины (ВМ) в качестве бэк-энда компилятора. Примерами таких реализаций может служить PyPy, базирующийся на LLVM; более ранней инициативой является проект Parrot. Ожидается, что использование ВМ типа LLVM приведёт к тем же результатам, что и использование аналогичных подходов для реализаций языка Java, где низкая вычислительная производительность в основном преодолена.
Невозможность модификации встроенных классов
Глобальная блокировка интерпретатора (GIL)
GIL (GlobalInterpreterLock) – особенность, присущая CPython, Stackless и PyPy, но отсутствующая в Jython и IronPython. При своей работе основной интерпретатор Python постоянно использует большое количество потоко-небезопасных данных.
Программные среды разработки
Unladen Swallow – начатый Google проект по разработке высокоэффективного, максимально совместимого с CPython JIT-компилятора на базе LLVM. Согласно планам по развитию Python, планировалось перенести исходный код Unladen Swallow в CPython в версии 3.3. Но PEP-3146 был отменён в связи с отсутствием интереса к Unladen Swallow со стороны Google, основного спонсора разработки.
Одна из самых популярных – PyPy – реализация Python, написанная на Python. Позволяет легко проверять новые возможности. В PyPy кроме стандартного CPython включены возможности Stackless, Psyco, модификация AST «на лету» и многое другое. В проект интегрированы возможности анализа Python кода и трансляция в другие языки и байткоды виртуальных машин (Си, LLVM, Javascript, .NET с версии 0.9.9). Начиная с 0.9.0, возможна полностью автоматическая трансляция интерпретатора на Си, в результате чего достигается скорость, приемлемая для использования (в 2–3 раза медленнее чем CPython при отключённом JIT для версии 0.9.9).
Какие программы написаны на Python?
Давайте пройдемся для начала по программам, которыми пользуются обычные люди, не являющиеся специалистами в области информационных технологий [6].
BitTorrent
Все версии до 6 этого торрент-клиента были написаны на Python. Версия 6 была переписана на C++.
Ubuntu Software Center
Центр приложений Ubuntu (Ubuntu Software Center) – свободное программное обеспечение для поиска, установки и удаления пакетов в системе Ubuntu Linux. в последних версиях возможна покупка журналов о Linux и Ubuntu, также можно приобретать платные игры и софт. Приложение разработано на языке Python + Vala с использованием библиотек GTK+ и является графической оболочкой для Advanced Packaging Tool.
Blender
Blender – свободный, профессиональный пакет для создания трёхмерной компьютерной графики, включающий в себя средства моделирования, анимации, рендеринга, постобработки видео, а также создания интерактивных игр. В настоящее время пользуется наибольшей популярностью среди бесплатных 3D редакторов в связи с его быстрым и стабильным развитием, которому способствует профессиональная команда разработчиков.
Python используется как средство создания инструментов и прототипов, системы логики в играх, как средство импорта/экспорта файлов (например, COLLADA), автоматизации задач.
GIMP
GIMP («Гимп») – растровый графический редактор, программа для создания и обработки растровой графики и частичной поддержкой работы с векторной графикой.
Python используется для написания дополнительных модулей, например, фильтров.
DropBox
Сервис разработан на языке Python. Не случайно сам автор языка Python, Гвидо ван Россум, работает в DropBox.
В каких областях применяется Python?
Web-разработка
В этой области Python, пожалуй, используется больше всего. Веб-фреймворк Django продолжает набирать обороты, пополняя армию своих фанатов. Многие начинающие программисты даже думают, что Python больше нигде не используется. Но на Python написаны многие другие веб-фреймворки: Pylons, TurboGears, CherryPy, Flask, Pyramid и другие.
Есть и CMS на базе Django, она так и называется DjangoCMS.
Очень часто на Python пишут и парсеры сайтов. Обычно для этого используют Requests, aiohttp, BeautifulSoup, html5lib. Есть и более высокоуровневые инструменты для парсинга сайтов: Scrapy, Grab.
Системное администрирование
Python - это отличный язык для автоматизации работы системного администратора. Он установлен по умолчанию на все Linux-сервера. Он простой, понятный. Код на Python легко читается. Некоторые любят Perl за удобную работу с регулярными выражениями, но они обычно ненавидят Perl за его синтаксис. Bash удобен для относительно небольших и средних скриптов, но Python мощнее и в некоторых случаях позволяет писать намного меньше кода.
Встроенные системы (embeddedsystems)
Очень часто Python используется для программирования встроенных систем. Самый известный проект, который использует Python - это Raspberry Pi. Но он не единственный:
- Embedded Python
- Raspberry Pi
- Python Embedded Tools
- The Owl Embedded Python System
Разработка прикладного ПО, в том числе игр
Python часто используется как вспомогательный язык при разработке прикладного программного обеспечения.
Научные исследования
Физики и математики очень любят Python за его простоту. Кроме того, для Python существует огромное количество библиотек, облегчающих жизнь ученому. Например:
SciPy – это открытая библиотека высококачественных научных инструментов для языка программирования Python. SciPy содержит модули для оптимизации, интегрирования, специальных функций, обработки сигналов, обработки изображений, генетических алгоритмов, решения обыкновенных дифференциальных уравнений и других задач, обычно решаемых в науке и при инженерной разработке.
Matplotlib – библиотека на языке программирования Python для визуализации данных двумерной (2D) графикой (3D графика также поддерживается). Получаемые изображения могут быть использованы в качестве иллюстраций в публикациях.
NumPy – это расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами.
Обучение
Очень часто в качестве первого языка программирования советуют именно Python.
У некоторых российских школ есть успешный опыт обучения школьников программированию на языке Python.
Кстати, Гвидо ван Россум находился под впечатлением от языка ABC, когда писал Python. А язык ABC предназначался для обучения и прототипирования.
Язык программирования Python – это доступный для каждого программиста любого уровня подготовки многофункциональный мощный инструмент для проектирования и разработки программ самого разнообразного назначения. С помощью этого языка можно и обучаться азам алгоритмизации и программирования, и участвовать в разработке популярных открытых проектов, коды для которых полностью или частично предоставляются на официальных сайтах или разработчиками.
И самое главное: программируя на языке Python, разработчик может ощущать широту мысли по просторам возможностей, глубину творчества в недрах понимания и свободу использования бесконечной доступности.
Литература:
- HOW-TO: Программа на Python, Часть 1 Гpэг Валтерс [Электронный ресурс]:// http://help.ubuntu.ru/fullcircle/27/python_%D1%87_1.
- Pythonic Way Образовательный портал [Электронный ресурс]:// http://pythonicway.com/.
- Python 3 для начинающих. [Электронный ресурс]:// http://pythonworld.ru/
- Википедия. Свободная энциклопедия. [Электронный ресурс]:// https://ru.wikipedia.org/.
- Всё о Python. Сайт для разработчиков. [Электронный ресурс]:// http://pep8.ru/
- Где применяется Python? Какое программное обеспечение написано на Python? Блог Михаила Воронина [Электронный ресурс]:// https://www.mvoronin.pro/en/blog/post-75.
- Учимся программировать вместе с Питоном (Start with Python) [Электронный ресурс]: электрон. учеб. пособие / А.Н. Чаплыгин, 2011 // http://slav0nic.org.ua/static/books/python/start_with_pythonRU.pdf.
- Форум для обсуждения AllNokia/Обсуждаем здесь программирование на Python! [Электронный ресурс]:// http://forum.allnokia.ru/viewtopic.php?t=13921.