Новости сайта
Меню сайта

Календарь новостей
«  Ноябрь 2006  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930

Форма входа

Поиск по новостям

Друзья сайта
    Форум читателей журнала МК
    Журнал root@ua

Наш опрос
Какая ОС у вас стоит?
Всего ответов: 83


» 2006 » Ноябрь » 8 » Гвидо ван Россум о паттернах в Питоне
Гвидо ван Россум о паттернах в Питоне
Приглашенные докладчики на академических конференциях обычно люди именитые. Пользуясь возможностью сделать доклад о чем им хочется, они обычно рассказывают о собственном пути к успеху или о своих "детищах". Гвидо ван Россум не был исключением, и рассказал участникам конференции Foundations of Software Engineering о паттернах в Питоне.

Доклад получился чересчур сложным для большинства людей, не знакомых с Питоном близко. Но тем не менее, достаточно интересным. Сам Гвидо предстал перед публикой с густой бородой, "Маком" под мышкой и футболкой с надписью "Google" спереди и "Python: Programming as Guido indented it to be" сзади. Кстати, к верхней крышке Мака был прикреплена очень похожая на калькулятор штука в прозрачном пакете. Я сначала так и написал - калькулятор. Но знающие люди просвятили, что это криптокарта ;)

Сначала г-н ван Россум провел небольшую рекламную кампанию Питону, рассказав о нем как о "выполняемом псевдокоде", о легкости интеграции с другими решениями, с полиморфизмом а-ля "duck typing", с широкими и узкими интерфейсами и другими особенностями языка. И только после этого перешел к самим паттернам.

Так, он упомянул, что много паттернов выглядят в Питоне по-иному, чем, например, в Java. Некоторые вообще исчезли за ненадобностью или уже встроены в язык (как factories, iterators). Такая особенность языка, как dynamic dispatch значительно упрощает множество паттернов, таких как, к примеру proxy и visitor.

Factory pattern: при отсутствии "new" в языке всякий вызов равносилен созданию нового объекта. Таким образом, всякий класс является своим собственным factory.

Singleton pattern: на логичный вопрос о том, как же создать тогда singleton, если любой вызов делает новый объект, Гвидо указал два возможных решения. Первый - переписывание __new__ и второй - создание модуля, так как модули - это класс и инстанциированная копия объекта одновременно. А при работе с __new__ можно также возвращать класс другого типа.

Proxy pattern: был продемонстрирован на примере создания класса, который не должен разрешать доступ к записи в файл, а только чтение. В таком случае можно просто создать класс, создав свой __init__ и переопределив write, чтобы он возвращал исключение. А потом приравнять другие операции с файлами к нему writelines = truncate = write. Переопределить все остальные методы класса можно двумя строчками с использованием def __getattr__

Далее Гвидо перешел на динамические атрибуты и свойства, рассказав об особенностях __getattr__, __getattribute__, и __setattr__. Свойства могут переписывать get/set аттрибуты для отдельных имен.

Iterators - итераторы встроены в Питон. Итераторы реализованы для разных типов данных и работают с каждым из них по-разному. Можно также писать собственные итераторы, через def __init__ и __iter__

У итераторов есть и своя алгебра, itertools, chain, izip, imap, ifilter, repeat, tee и т. д., которые могут быть комбинированы вместе.

Memento, или восстановление состояния объекта. В Питоне имеется собственный протокол pickle, для большинства типов данных можно использовать Memento.

State - или изменение класса объекта в зависимости от состояния. В Питоне можно изменить класс как таковой, но нужно убедиться, что заменяющий класс сделан для этого. Интерпретатор Питона в случае чего защитит только от segfaultов, а от съехавшей с катушек программы - нет.

Отдельным моментом Гвидо с гордостью сказал о функциях высшего порядка, как о "фиче" языка. Хотя потом, при вопросах-ответах, все-таки сделал упор на объектную основу Питона.

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

* * *

Уже вечером мне представилась возможность в непринужденной обстановке задать Гвидо еще несколько вопросов персонально. В частности:

Вопрос: работая теперь в Гугле, все ли время Вы проводите над Питоном?

Ответ: примерно 50 на 50. Половину времени работаю над Питоном, другую половину - над проектами Гугла, использующим Питон.

Вопрос: как Вы относитесь к тому, что варианты Питона встраиваются в java и .net?

Ответ: я думаю, что это здорово! Это свидетельствует о популярности языка и его успехе. К тому же, я довольно много беседовал с авторами Iron Python и Jython на предмет соответствия последних стандартным юнит-тестам Питона.

Вопрос: Вы упомянули о необходимости эволюции языков программирования. Где находится Питон? Как скоро ли он перестанет эволюционировать, как, например, С?

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

Просмотров: 511 | Добавил: linux | Рейтинг: 0.0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Конструктор сайтов - uCoz