Журнал LinuxFormat - перейти на главную

LXF128:Interview

Материал из Linuxformat
Версия от 16:05, 24 июня 2011; Ewgen (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Интервью Джейкоб Каплан-Мосс

Танго c Django

LXF128 29 1.jpg Джейкоб Каплан-Мосс

Джейкоб Каплан-Мосс, один из основных разработчиков проекта Django, рассказывает о принятии идей от Rails, почему ясность — это хорошо и повинны ли смерти пользователи Vi

Django — открытый каркас для разработки web-приложений с самыми понятными, самыми простыми программными интерфейсами, а также огромным и растущим сообществом грамотных специалистов, используемый на сайтах вроде WashingtonPost.com. Кстати, он написан на Python, что облегчает его освоение.

Джейкоб Каплан-Мосс [Jacob Kaplan-Moss] — один из ведущих разработчиков Django, активный конечный пользователь Django; он также имеет публикации по... ну, вы уже догадались: Django. Мы встретились с ним за чашкой кофе и спросили, почему этот проект столь замечателен…

Linux Format: Со стороны создается впечатление, что вы занимаетесь в Django абсолютно всем. Но в чем именно заключается ваша роль?

Джейкоб Каплан-Мосс: В сообществе Django я своего рода универсал – я недостаточно толков, чтобы понимать все до самого дна, зато освоил основы любой части! Вот я и делаю то, что нужно в данный момент. У меня есть дурацкая склонность к волонтерству.

LXF: Какие части проекта вам особенно интересны?

ДжКМ: Моя любимая часть в этом проекте – дизайн API, выяснение того, что составляет хороший UI. Я имею в виду не тот интерфейс, который видят конечные пользователи, а другой, который применяют разработчики – хороший интерфейс прикладного программирования. Наш подход к разработке – сначала установить, как должен работать API, затем продумать его техническую реализацию. Конечно, есть искушение заявить «Ну, я выбрал этот способ, потому что мне так проще; пусть API на выходе будет менее ясным, зато его легче сделать», но мы стараемся так не поступать. Я часто пишу документацию для новых функций до написания самого кода, что бы осознать, как люди будут с ним взаимодействовать.

LXF: Получается, «мы хотим, чтобы оно работало так – теперь давайте заставим его это делать…»

ДжКМ: Верно. Я всегда ставлю себя на место пользователя и трачу намного больше времени на использование Django, чем на его разработку. И, помоему, то же относится ко всем остальным. Главная наша цель – создать инструмент, удобный для пользования, и я не думаю, что это экзотика: это типично для Open Source.

LXF: Вы раньше говорили: вам нравится, что Django работает подобно web. Какова зависимость между созданием Django webподобным и «питоновидным» — когда проект получает статус идиоматического кода Python?

ДжКМ: Я думаю, что связь тут довольно близкая. Python ценит простоту, четкость и единообразие. Способ создания вещей REST (REpresentational State Transfer) – делать все через один и тот же интерфейс, а в Python и есть только один способ делать все. HTTP… полная спецификация состоит где-то из 50 печатных страниц – она короткая, ее можно прочитать за один вечер. И я думаю, что у канонов Python и видения, основанного на множестве web-технологий, ценности схожи.

LXF: То есть вы имеете в виду, что Django во многом обязан Python?

ДжКМ: Ну, конечно, мы в первую очередь разработчики Python. Я часто говорю, что лучшая черта Django в том, что он написан на Python, потому что это значит, что можно использовать Python и все его библиотеки. При обсуждении возможностей, целый «дзен Python» появляется – например, «Что бы тут сделал Гвидо [Guido van Rossum, автор Python]?»

LXF: Угу, это отличная черта Open Source — можно просто написать ему и задать вопросы!

ДжКМ: Да; и более того, все обсуждения открыты. Я слежу за списком рассылки разработчиков Python почти 10 лет, наблюдал все дискуссии и знаю, какая философия свидетельствует о принятии решения, так что когда наши споры в сообществе Django похожи на те, с какими мы уже сталкивались где-то раньше, мы можем делать те выводы, к которым приходили другие люди.

LXF: Получается, вы поете по тем же нотам.

ДжКМ: И это отличная черта в Open Source: открыт не только код, но и сообщество. Вы получаете новую информацию не только по коду, который написан другими людьми, но и по обсуждениям, которые они вели.

LXF: А на самом деле компетентный программист Python должен легко начать работать в Django — у него ведь не будет большого культурного шока?

ДжКМ: Я думаю, не будет. Django был бы весьма иным, если бы его писали не на Python: язык определяет то, что на нем будет написано. Rails таков, какой он есть, потому что таков Ruby. Сообщество Ruby ценит лаконичность, Rails принимает это и говорит: «ОК, я хочу уметь создавать web-приложение как можно меньшим количеством строк кода». Сообщество Python ценит внятность, и иногда задачи реализуются немного более многословно, чтобы обеспечить полное понимание происходящего. Вы знаете, мы любим поругать PHP, но то, к чему я возвращаюсь периодически, что отталкивает меня от PHP – это их культура: они смотрят свысока на модульное тестирование, смеются над проектированием ПО, об объектно-ориентированном программировании вспоминают после…

LXF: Одно из сравнений, которое делается между Django и Rails, заключается в том, что Django — не просто «строительные леса», это целое «здание»…

ДжКМ: Ну, на раннем этапе Саймон Виллисон [Simon Willison] и Адриан Головаты [Adrian Holovaty] [создатели Django] начали писать web-приложения на Python, и они писали все вручную. А когда вы создаете web-приложения своими руками, то замечаете, что делаете одни и те же вещи снова и снова – ох, мне нужно написать этот слой для обращения к базам данных, а я напишу несколько видов, а мне нужно связать представления с моими шаблонами URL, а мне бы не помешал интерфейс администратора.

Первым решением для подобных повторяющихся действий был генератор кода: вы пишете описание данных, затем запускаете генератор, и он выдает большой кусок кода за вас. Вот это и есть «строительные леса» [scaffolding]. Возможно, мы делали это неправильно или была другая причина, но в любом случае для нас такой вариант не сработал. Была даже расхожая шутка: «Не редактируйте этот файл, его сгенерировала программа», потому что подобное выдавал генератор. В какой-то момент мы ушли от такого подхода, а наш опыт оставил нам действительно здоровую нелюбовь к генерации кода. Так вот, когда я вижу что-то типа «строительных лесов», у меня срабатывает коленный рефлекс: «у нас это рухнуло, проходили». Может, кто-то знает о генерации кода такое, чего не знаю я, но при каждом столкновении с этим я думаю «Хорошим оно быть не может».

LXF: Можно, однако, предположить, что общих идей довольно много… все это — один большой ком, не так ли?

ДжКМ: Я не настолько знаком с основами Rails, чтобы утверждать, что они сдирают его с нас, но мы то взяли от них многое. Сначала в Django мы обходились без тестового инструментария, а начав баловаться с тестовым инструментарием Rails, отметили: «Эй, а это и правда здорово – это укрепляет культуру тестирования». Мы взяли эту идею и внедрили ее у себя.

LXF: Даже при учете совместного использования идей, считаете ли вы, что для успешного развития Django нужна какая-то другая система?

ДжКМ: Вы знаете, раньше я был помешан на чемто вроде «Мы победим, мы разрастемся, у нас будет больше пользователей, мы станем лучше, станем круче!» Но сам к этому особорук не прикладывал; и в какой-то момент сказал «А зачем?» Если вы пользователь Rails, а я пытаюсь убедить вас перейти на Django, какой от этого прок нам обоим? И я уже не занимаюсь такими проповедями. Мой тон сменился с «Вам следует использовать Django, потому что…» на «Я использую Django, потому что…» И меня начал расстраивать тон соперничества в сообществе Open Source. «Аа, вы Vi пользуетесь? Убил бы!» Это игра с нулевой суммой, а настоящая-то битва, с моей точки зрения, идет между открытым и закрытым кодом. И пока мы все используем открытый код, мы все в выигрыше.�

Персональные инструменты
купить
подписаться
Яндекс.Метрика