.. _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" (*прим.перев.*)