.. _introduction: Введение ======== Python -- один из тех редких языков программирования, которые одновременно претендуют на звание *простых* и *мощных*. Вас приятно удивит то, как легко можно сосредоточиться на решении поставленной задачи, а не на синтаксисе и структуре языка, на котором вы программируете. Официально Python представляют так: Python -- это простой в освоении и мощный язык программирования. Он предоставляет эффективные высокоуровневые структуры данных, а также простой, но эффективный подход к объектно-ориентированному программированию. Его элегантный синтаксис и динамическая типизация наряду с тем, что он является интерпретируемым, делают его идеальным языком для написания сценариев и быстрой разработки приложений в различных областях и на большинстве платформ. В следующем разделе мы рассмотрим эти особенности более детально. История названия Гвидо ван Россум, создатель языка Python, назвал его так в честь телешоу на BBC под названием "Летающий цирк Монти Пайтона"[1]_, а вовсе не потому, что он любит змей, убивающих животных обвиванием своего длинного тела вокруг них и задавливанием. Особенности Python ------------------ Простой ~~~~~~~ Python -- простой и минималистичный язык. Чтение хорошей программы на Python очень напоминает чтение английского текста, хотя и достаточно строгого! Такая псевдо-кодовая природа Python является одной из его самых сильных сторон. Она позволяет вам сосредоточиться на решении задачи, а не на самом языке. Лёгкий в освоении ~~~~~~~~~~~~~~~~~ Как вы увидите, на Python чрезвычайно легко начать программировать. Python обладает исключительно простым синтаксисом, как уже отмечалось выше. Свободный и открытый ~~~~~~~~~~~~~~~~~~~~ Python -- это пример свободного и открытого программного обеспечения -- *FLOSS* (Free/Libré and Open Source Software). Проще говоря, вы имеете право свободно распространять копии этого программного обеспечения, читать его исходные тексты, вносить изменения, а также использовать его части в своих программах. В основе свободного ПО лежит идея сообщества, которое делится своими знаниями. Это одна из причин, по которым Python так хорош: он был создан и постоянно улучшается сообществом, которое просто хочет сделать его лучше. Язык высокого уровня ~~~~~~~~~~~~~~~~~~~~ При написании программы на Python вам никогда не придётся отвлекаться на такие низкоуровневые детали, как управление памятью, используемой вашей программой, и т.п. Портируемый ~~~~~~~~~~~ Благодаря своей открытой природе, Python был портирован на много платформ (т.е. изменён таким образом, чтобы работать на них). Все ваши программы смогут запускаться на любой из этих платформ без каких-либо изменений, если только вы избегали использования системно-зависимых функций. Python можно использовать в GNU/Linux, Windows, FreeBSD, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE и даже на PocketPC! Вы можете даже использовать такую платформу, как `Kivy `_ для создания игр для iOS (iPhone, iPad) и Android. Интерпретируемый ~~~~~~~~~~~~~~~~ Это требует некоторого пояснения. Программа, написанная на компилируемом языке программирования, как например, C или C++, преобразуется из исходного языка (т.е. C или C++) в язык, понятный компьютеру (бинарный код, т.е. нули и единицы) при помощи компилятора с применением разнообразных флагов и параметров. Когда вы запускаете такую программу, компоновщик/загрузчик копирует программу с диска в оперативную память и запускает её. Python же, напротив, не требует компиляции в бинарный код. Программа просто *выполняется* из исходного текста. Python сам преобразует этот исходный текст в некоторую промежуточную форму, называемую байткодом, а затем переводит его на машинный язык и запускает. Всё это заметно облегчает использование Python, поскольку нет необходимости заботиться о компиляции программы, подключении и загрузке нужных библиотек и т.д. Вместе с тем, это делает программы на Python намного более переносимыми, так как достаточно их просто скопировать на другой компьютер, и они работают! Объектно-ориентированный ~~~~~~~~~~~~~~~~~~~~~~~~ Python поддерживает как процедурно-ориентированное, так и объектно-ориентированное программирование. В *процедурно-ориентированных* языках программы строятся на основе процедур или функций, которые представляют собой просто-напросто многократно используемые фрагменты программы. В *объектно-ориентированных* языках программирования программы строятся на основе объектов, объединяющих в себе данные и функционал. Python предоставляет простые, но мощные средства для ООП, особенно в сравнении с такими большими языками программирования, как C++ или Java. Расширяемый ~~~~~~~~~~~ Если вам нужно, чтобы некоторая критическая часть программы работала очень быстро или вы вынуждены скрыть часть алгоритма, вы можете написать эту часть программы на C или C++, а затем вызывать её из программы на Python. Встраиваемый ~~~~~~~~~~~~ Python можно встраивать в программы на C/C++, чтобы предоставлять возможности написания сценариев их пользователям. Обширные библиотеки ~~~~~~~~~~~~~~~~~~~ Стандартная библиотека Python просто огромна. Она может помочь в решении самых разнообразных задач, связанных с использованием регулярных выражений, генерированием документации, проверкой блоков кода, распараллеливанием процессов, базами данных, веб-браузерами, CGI, FTP, электронной почтой, XML, XML-RPC, HTML, WAV файлами, криптографией, GUI (графическим интерфейсом пользователя) и другими системно-зависимыми вещами. Помните, что всё это доступно абсолютно везде, где установлен Python. В этом заключается философия Python "Всё включено". Кроме стандартной библиотеки, существует множество других высококачественных библиотек, которые можно найти в `Каталоге пакетов Python `_ Резюме Python -- очень увлекательный и мощный язык. Он имеет хорошее соотношение производительности и возможностей, что делает написание программ на нём одновременно интересным и лёгким. .. _python-2-versus-3: Python 2 против 3 ----------------- Если вас не интересует разница между Python 2 и Python 3, вы можете пропустить этот раздел. Но в любом случае помните, какую версию вы используете. В 2008 году эта книга была переписана для Python 3. Это была одна из первых книг, посвящённых Python 3. Однако, к сожалению, это привело к путанице среди пользователей, пытавшихся изучать Python 2 по версии книги для Python 3 и наоборот. Тем не менее, мир понемногу мигрирует на Python 3. Так что да, в этой книге вы будете учиться программировать на Python 3, даже если в конечном счёте планируете использовать Python 2. *Помните, что как только вы как следует усвоите и научитесь пользоваться любым из них, вы также сможете легко освоить разницу между ними и адаптироваться. Самое сложное заключается в обучении программированию и понятии основной части языка Python. Это и будет нашей целью в настоящей книге, а как только вы её достигнете, вы сможете запросто использовать Python 2 или Python 3 в зависимости от конкретной ситуации.* Изучить разницу между Python 2 и Python 3 в деталях можно на `странице Ubuntu wiki, посвящённой Python 3 `_. Что говорят программисты ------------------------ Интересно, что такие великие хакеры, как Эрик Рэймонд, говорят о Python: 1. *Эрик С. Рэймонд* -- автор работы "Собор и Базар", а также человек, который ввёл термин "Open Source". Он говорит, что `Python стал его любимым языком программирования `_. Эта статья и вдохновила меня на пробу пера в Python. 2. *Брюс Экель* -- автор знаменитых книг "Думаем на Java" и "Думаем на С++". Он утверждает, что ни на одном языке программирования его работа не была столь эффективной, как на Python. Кроме того, он считает, что Python -- это, пожалуй, единственный язык, стремящийся облегчить жизнь программисту. Подробнее можно прочитать в `его полном интервью `_. 3. *Питер Норвиг* -- широко известный автор Lisp, а также директор по качеству поиска в Google (спасибо Гвидо ван Россуму за это замечание). Он говорит, что Python всегда был неотъемлемой частью Google. Вы можете убедиться в этом, заглянув на страницу `Google Jobs `_, на которой владение Python указано как требование для разработчиков программного обеспечения. Примечания ---------- .. [1] "Monty Python’s Flying Circus" (*прим.перев.*)