InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Предисловие для "Программирование на Python"


Гвидо ван Россум, Foreword for "Programming Python"
Перевод: С.Тезадов


Это предисловие к книге Марка Лутза (Mark Lutz) "Программирование на Python", выпущенной издательством O'Reilly.

Как создатель Python, мне бы хотелось высказать несколько слов о его истоках, добавив немного личной философии.

Свыше шести лет назад, в декабре 1989 г., я искал "хобби", программистский проект, который занял бы меня в течение недели накануне Рождества. Мой офис (правительственная исследовательская лаборатория в Амстердаме) была бы закрыта, но у меня был домашний компьютер и больше ничего под рукой. Я решил написать интерпретатор нового скриптового языка о котором я думал в последнее время: потомок ABC, который понравился бы Unix/C хакерам. Я выбрал "Python" в качестве рабочего названия проекта, находясь в немного непочтительном настроении (и будучи большим фанатом Monty Python's Flying Circus).

Сегодня я могу с уверенностью сказать, что Python изменил мою жизнь. Я переехал на другой континент. Я провожу свои рабочие дни в разработке больших систем на Python, когда не занят ответом на электронную почту, касающуюся Python. Существует Python T-shirts, мастерские, списки рассылки, телеконференция, а теперь и книга. Откровенно говоря, мое единственное невыполненное желание - это увидеть свою фотографию на первой странице New York Times. Но прежде чем пуститься в мечтания, я приведу здесь несколько эпизодов из прошлого Python.

Все началось с ABC, прекрасного языка для обучения, в создании которого я принимал участие в начале восьмидесятых. Это был невероятно элегантный и мощный язык, нацеленный на непрофессиональных программистов. Несмотря на всю свою элегантность и мощь и доступность бесплатной реализации, ABC никогда так и не стал популярен в мире Unix/C. Я могу лишь размышлять о причинах этого, но вот одна из самых вероятных: трудность добавления новых "примитивных" операций к ABC. Он был монолитной, "закрытой системой", только с базовыми операциями ввода-вывода: чтение строки с консоли, вывод строки на консоль. Я решил не повторять этой ошибки в Python.

Кроме интенсивности, у меня было несколько других идей насчет улучшения ABC, и стремился их испробовать. К примеру, мощные типы данных ABC оказались менее эффективны чем мы надеялись. Слишком много акцента было сделано на теоритически оптимальных алгоритмах и недостаточно настроенных на наиболее общие случаи. Я так же чувствовал, что некоторые характеристики ABC, нацеленные на начинающих программистов, были менее желательны для последующей предпологаемой аудитории испытанных Unix/C программистов. Например: особенный синтаксис ABC (только заглавные буквы в ключевых словах!); часть терминологии (напр., "how-to" вместо "procedure"); и интегрированный структурный редактор, который его пользователи ненавидели почти везде. Python больше пологается на инфраструктуру и соглашения Unix, не являясь Unix-связанной. И, фактически, первая реализация была осуществлена на Mac.

Как оказалось, Python в высшей степени свободен от многих комплексов стандартных языков программирования. И это, возможно, благодаря моему выбору примеров: кроме ABC, наибольшее влияние оказал Modula-3. Это еще один язык с замечательной элегантностью и силой, разработанной маленькой, волевой командой (с большинством членов которой я встретился в течении летней стажировки в DEC's Systems Research Center в Palo Alto). Представьте на что был бы похож Python, если бы я моделлировал его после shell-а Unix и C! (Да, я и у C тоже позаимствовал, но только наименее спорные характеристики, желая угодить Unix/C аудитории.)

Любое индивидуальное создание имеет свои особенности, и изредка его создателю приходится их оправдывать. Возможно самой спорной особенностью Python является использование абзацного отступа для группировки операторов, что унаследовано прямо от ABC. Это одна из особенностей языка, которая более всего дорога моему сердцу. Это делает код Python более удобочитаемым по двум причинам. Во-первых, использование сдвига уменьшает визуальное загромождение и делает программу, таким образом, уменьшение диапазона внимания требуется чтобы воспринять базовую часть кода. Во-вторых, при этом у программиста остается больше свободы для форматирования, и тем самым возможен более единообразный стиль, делающий чтение чужого кода проще. (Сравните, например, с тремя или четырьмя различными соглашениями для размещения фигурных скобок в C, каждое из которых имеет своих ярых приверженцев.)

Такая забота о читаемости вовсе не случайна. Как объектно-ориентированный язык, Python стремится способствовать созданию многократно используемого кода. Даже если мы все будем все время писать прекрасную документацию, код едва ли будет считаться пригодным для многократного использования, если он не удобочитаем. Многие особенности Python, в добавление к использованию отступа, сговорились делать код Python очень удобочитаемым. Это отражает философию ABC, который предпологался для обучения программированию в самой его чистой форме, и поэтому обладал высоким уровнем ясности.

Удобочитаемость часто расширена уменьшением необязательной изменчивости. Насколько возможно, существует простой, очевидный способ кодирования конкретных конструкций. Это уменьшает количество альтернатив, встающих перед программистом, пишущим код, и увеличивает вероятность того, что это окажется знакомо второму программисту, читающему код. Еще другой вклад в удобочитаемость Python заключается в выборе использования пунктуации, главным образом, в консервативном, стандартном стиле. Большинство операторных символов знакомы любому, даже со смутными воспоминаниями математики средней школы, и нет никакой необходимости в изучении новых значений для комической полосы проклятых значков вроде @&$!.

Я охотно допускаю, что Python не самый быстрый скриптовый язык. Тем не менее, он может держать хорошее второе место. Со всевозростающей аппаратной скоростью, время выполнения программы, накапливающееся в течение ее жизни часто незначительно сравнимо со временем, потребовавшимся программисту для написания и отладки программы. Вот здесь, безусловно, может быть сделана реальная экономия. Хотя трудно оценивать объективно, Python считается победителем в отношении времени кодирования большинством людей, его опробовавших. В дополнение, многие считают использование Python приятным -- трудно представить более лучшие рекомендации.

Я исключительно ответственнен за возможности и недостатки Python, даже в том случае, если часть кода написана другими. Однако, его успех является результатом работы общественности, начиная с самых ранних "приемных родителей", которые подхватили его когда я впервые опубликовал Python в сети, и которые распространили известие о нем в своем окружении. Они прислали мне свою похвалу, критику, предложения, свой вклад в код, и личные открытия посредством электронной почты. Они добровольно обсуждали все аспекты Python в списках рассылки, который я вскоре установил, и обучали или подталкивали меня в правильном направлении, когда моя начальная интуиция меня подводила. Было слишком много участников, чтобы поблагодарить каждого индивидуально. Но я сделаю одно исключение: автор этой книги был одним из самых ранних "усыновителей" и евангелистов. С этой публикацией, его давнее желание (и мое!) иметь более доступное описание Python нежели стандартный набор руководств, выполнено.

Но достаточно ходить вокруг да около. Я настоятельно рекомендую эту книгу каждому, кто заинтересован в изучении Python, то ли для личного совершенствования, то ли для карьеры. Убери это прочь, Эрик, руководитель оркестра! (Если вы не поняли последнее предложение, значит вы смотрели недостаточно повторов Monty Python.)

Guido van Rossum
Reston, VA, May 1996

[Содержание]


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua