Python: лучше один раз увидеть...

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


Питон? Пэйтон? Пэйсон?

Конечно, в одной статье рассказать всё о каком-либо языке программирования невозможно - не считая, конечно, таких экзотических языков, как Brainfuck или Whitespace (см. статью "Лосиные губы в яблочном уксусе"). Но, честно говоря, я и не ставлю задачу рассказать вам что-то экстраординарное - наверное, если вы хорошо знаете Python, эта заметка покажется вам скучной. Для остальных же попытаюсь приоткрыть дверь в мир этого удивительного языка программирования.

Python сегодня используется во множестве проектов, начиная с сайтов и заканчивая вполне серьёзными коммерческими web-приложениями. Активно применяется Python и в области администрирования, где теснит даже Bash.

Начнём с того, что разберёмся, как произносится название этого языка по-русски. На самом деле вариантов несколько. Чаще всего говорят просто "Питон". Хотя в английском произношении название ближе всего к "Пэйсону". Думаю, если вы будете говорить "Питон", то все с лёгкостью поймут, что вы имеете в виду, и при этом не нужно будет путаться в нюансах произношения по-английски.


И чем же он такой особенный?

Этот вопрос - в общем-то, довольно закономерный, - возникает при знакомстве с любым языком программирования. И действительно, зачем понадобился ещё один язык, если есть уже сотни самых разных на любой вкус и цвет?

Разработчики этого языка во главу угла поставили несколько основополагающих принципов, которые, в общем-то, и делают этот язык программирования именно таким, каков он есть. Эти принципы громко называют "Дзеном Питона". Дословно формулировку каждого из них я здесь воспроизводить не буду, но, в целом, они таковы: простота синтаксиса, удобочитаемость кода, ориентация на модульность и возможность повторного использования кода. Вооружившись таким нехитрым набором ориентиров, создатель языка Гвидо ван Россум сумел сделать действительно популярный в широких кругах инструмент.

Python - это универсальный язык программирования. Кроме того, он интерпретируемый и мультипарадигменный. То есть, Python реализует в себе одновременно несколько различных парадигм программирования: объектно-ориентированную, императивную и функциональную. Думаю, о первых двух вы знаете не понаслышке, а о третьей я когда-то рассказывал на страницах "Компьютерных вестей" ("Знакомьтесь: функциональное программирование"). Конечно, сочетание этих трёх парадигм в одном языке может показаться непривычным тому, кто привык к Java, C# и прочим подобным языкам, но его, в случае Python, сложно назвать неудачным.

Одна из главных особенностей Python, к которой не сразу привыкают те, кто раньше имел дело с компилируемыми языками, - динамическая типизация. Тип переменной определяется в "Питоне" только в тот момент, когда ей присваивается некоторое значение. Один мой знакомый говорит о языках с динамической типизацией, что в них переменные имеют "плавающий тип". Пожалуй, это очень точная формулировка. При всём при этом в Python каждый тип данных является объектным, будь то строка, число, коллекция или же что-либо иное. К объектам при этом относятся и функции, и модули, и методы, что, безусловно, вносит некоторую сумятицу, но местами бывает очень даже удобным и полезным. Объекты бывают ссылочные и атомарные. Первые при присваивании копируют свои значения, вторые просто ставят ссылку на себя. Расширяются типы данных либо путём описания пользовательских классов на самом "Питоне", либо путём создания модуля расширения на другом языке. При этом, в отличие от большинства популярных объектно-ориентированных языков, Python поддерживает множественное наследование объектов - то есть, здесь, как и в C++, у каждого класса может быть множество классов-предков. С одной стороны, это хорошо, потому что даёт возможность строить развитую иерархию классов, но, как известно, у каждой медали есть и обратная сторона: с множественным наследованием нужно работать предельно аккуратно.

Операторы в "Питоне", в общем-то, достаточно стандартны и включают в себя знакомые каждому условные операторы, операторы циклов, обработчики исключительных ситуаций... Есть и интересные операторы: например, pass, который... не делает ничего. Впрочем, это не значит, что он не нужен: иногда его очень даже удобно вставить туда, где программа, вроде бы, ничего и не должна делать, но при этом синтаксически требуется присутствие хоть какого-нибудь оператора.


Кодинг "по-питоновски"

Что интересно, на самом деле название языка не имеет никакого отношения к рептилиям. То есть, не то чтобы совсем никакого, но, скажем так, довольно-таки опосредованное. Этот язык назван в честь шоу "Летающий цирк Монти Пайтона" (Monty Python's Flying Circus) на BBC, хотя сейчас, конечно, даже на официальном сайте (www.python.org) можно увидеть логотип со змеями.

Впрочем, я собирался рассказать об особенностях написания кода на "Питоне". Первая и самая главная из них звучит примерно следующим образом: "забудьте о точках с запятой". На самом деле, если вы попытаетесь вспомнить языки программирования, где этот простой символ (";") не имеет смысла разделителя операторов, то ваш список, могу поручиться, будет достаточно коротким. В тех языках, которые застолбили современный "Олимп программирования", точка с запятой используется самым что ни на есть активным образом. Но Python не относится к их числу. Кстати, программируя на "Питоне", вместе с точкой с запятой можете смело исключать из своего арсенала и все виды операторных скобок, будь то "сишные" фигурные скобки или "паскалевские" begin-end'ы. Здесь вам это всё совершенно не понадобится.

Но, можете спросить вы, как же быть без скобок? Если без точек с запятой тот же Visual Basic прекрасно обходится, то без скобок приходится туго. Однако, на самом деле, подход, который применяется в "Питоне", прост до гениальности. Вместо скобок используются отступы, которые, в общем-то, и определяют степень вложенности кода. Если в "нормальных" языках программирования отступы - нечто вроде правила хорошего тона, то в Python они становятся суровой жизненной необходимостью. А потому написать на этом языке код, который будет неправильно структурирован, но при этом правильно работающий, скажем прямо, затруднительно.

Есть и другие интересные моменты. Например, неудобоваримая для большинства языков программирования конструкция, сравнивающая одновременно три операнда (что-то вроде "a < b < c"), является совершенно нормальным явлением в "Питоне".

Отдельно стоит коснуться документирования кода. Как и во многих других современных языках программирования, в Python есть встроенный механизм документирования кода, который называется pydoc. Это мощный и удобный механизм, к которому наверняка несложно будет привыкнуть тем, кто пользовался средствами документирования кода в таких языках, как Java и C#.


Орудия труда

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

Самое известное из "орудий труда" Python-программиста - это, безусловно, плагин для Eclipse под названием pyDev (pydev.sourceforge.net). Думаю, что о среде Eclipse знает большинство наших читателей, а потому особенно подробно рассказывать о pyDev'е, который даёт возможность работать с "Питоном" в этой среде, вряд ли имеет смысл. Ещё один достаточно популярный вариант интегрированной среды разработки для "Питона" - pyScripter (www.mmm-experts.com). Сложно сказать, какой из этих вариантов более предпочтителен - наверное, здесь всё-таки стоит решать самому, поработав с каждой из сред.

Если же полноценной среды разработки вам не требуется (при изучении "Питона", например, некоторое время можно обойтись и без неё), то вполне достаточно редактора с подсветкой синтаксиса, коих, платных и бесплатных, существует великое множество.


Резюмируем

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

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

Вадим СТАНКЕВИЧ,
[email protected]

Версия для печатиВерсия для печати

Номер: 

23 за 2009 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя mike
Да, теснит баш. Но не столько в администрировании, сколько в написании фронтендов к движкам с консольным интерфейсом, коих в Линуксе уйма. Очень неплох фронтенд к Wine под именем PlayOnLinux. Парни, может сделаете о нём статью? Я пас.
Аватар пользователя Narthex
Java, C++, C# тоже реализуют несколько парадигм: ООП, императивное программирвание, обобщенное программирование (generic). С# также полностью реализует функциональное и атрибутное программирование.
Аватар пользователя Вадим Станкевич
Да, пардон, насчёт C# погорячился. Мне в память врезалась вторая его версия, на более поздних не программировал, вот и на в курсе был, что там из функционального программирования есть.
Аватар пользователя mike
Вот за что мне автор нравится -- не задирает нос. В отличие от некоторых. Хотя я не думал, что после М.Астапчика ещё кто-то о Питоне напишет. "Мастхэв", у кого Линукс. А Винда ИМХО и без него проживёт.
Аватар пользователя Вадим Станкевич
>>Винда ИМХО и без него проживёт.

+1