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

LXF128:Interview

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(викификация, оформление, иллюстрация)
 
м (исправлены ошибки, добавлены категории)
 
Строка 17: Строка 17:
 
'''''LXF:''' Какие части проекта вам особенно интересны?''
 
'''''LXF:''' Какие части проекта вам особенно интересны?''
  
'''ДжКМ:''' Моя любимая часть в этом проекте – дизайн API, выяснение того, что составляет хороший UI. Я имею в виду не тот интерфейс, который видят конечные пользователи, а другой, который применяют разработчики – хороший интерфейс прикладного программирования. Наш подход к разработке – сначала установить, как должен работать API, затем продумать его техническую реализацию. Конечно, есть искушение зая вить «Ну, я выбрал этот способ, потому что мне так проще; пусть API на выходе будет менее ясным, зато его легче сделать», но мы стараемся так не поступать. Я часто пишу документацию для новых функций до написания самого кода, что бы осознать, как люди будут с ним взаимодействовать.
+
'''ДжКМ:''' Моя любимая часть в этом проекте – дизайн API, выяснение того, что составляет хороший UI. Я имею в виду не тот интерфейс, который видят конечные пользователи, а другой, который применяют разработчики – хороший интерфейс прикладного программирования. Наш подход к разработке – сначала установить, как должен работать API, затем продумать его техническую реализацию. Конечно, есть искушение заявить «Ну, я выбрал этот способ, потому что мне так проще; пусть API на выходе будет менее ясным, зато его легче сделать», но мы стараемся так не поступать. Я часто пишу документацию для новых функций до написания самого кода, что бы осознать, как люди будут с ним взаимодействовать.
  
 
'''''LXF:''' Получается, «мы хотим, чтобы оно работало так – теперь давайте заставим его это делать…»''
 
'''''LXF:''' Получается, «мы хотим, чтобы оно работало так – теперь давайте заставим его это делать…»''
Строка 23: Строка 23:
 
'''ДжКМ:''' Верно. Я всегда ставлю себя на место пользователя и трачу намного больше времени на использование ''Django'', чем на его разработку. И, помоему, то же относится ко всем остальным. Главная наша цель – создать инструмент, удобный для пользования, и я не думаю, что это экзотика: это типично для Open Source.
 
'''ДжКМ:''' Верно. Я всегда ставлю себя на место пользователя и трачу намного больше времени на использование ''Django'', чем на его разработку. И, помоему, то же относится ко всем остальным. Главная наша цель – создать инструмент, удобный для пользования, и я не думаю, что это экзотика: это типично для Open Source.
  
'''''LXF:''' Вы раньше говорили: вам нравится, что '''Django''' работа ет подобно web. Какова зависимость между созданием '''Django''' webподобным и «питоновидным» — когда проект получает статус идиоматического кода '''Python'''?''
+
'''''LXF:''' Вы раньше говорили: вам нравится, что '''Django''' работает подобно web. Какова зависимость между созданием '''Django''' webподобным и «питоновидным» — когда проект получает статус идиоматического кода '''Python'''?''
  
'''ДжКМ:''' Я думаю, что связь тут довольно близкая. ''Python'' ценит простоту, четкость и единообразие. Способ создания вещей REST (REpresentational State Transfer) – делать все через один и тот же интерфейс, а в'' Python'' и есть только один способ делать все. HTTP… полная спецификация состоит гдето из 50 печатных страниц – она короткая, ее можно прочитать за один вечер. И я думаю, что у канонов ''Python'' и видения, основанного на множестве web-технологий, ценности схожи.
+
'''ДжКМ:''' Я думаю, что связь тут довольно близкая. ''Python'' ценит простоту, четкость и единообразие. Способ создания вещей REST (REpresentational State Transfer) – делать все через один и тот же интерфейс, а в'' Python'' и есть только один способ делать все. HTTP… полная спецификация состоит где-то из 50 печатных страниц – она короткая, ее можно прочитать за один вечер. И я думаю, что у канонов ''Python'' и видения, основанного на множестве web-технологий, ценности схожи.
  
 
'''''LXF:''' То есть вы имеете в виду, что Django во многом обязан '''Python'''?''
 
'''''LXF:''' То есть вы имеете в виду, что Django во многом обязан '''Python'''?''
Строка 33: Строка 33:
 
'''''LXF:''' Угу, это отличная черта Open Source — можно просто написать ему и задать вопросы!''
 
'''''LXF:''' Угу, это отличная черта Open Source — можно просто написать ему и задать вопросы!''
  
'''ДжКМ:''' Да; и более того, все обсуждения открыты. Я слежу за списком рассылки разработчиков ''Python'' почти 10 лет, наблюдал все дискуссии и знаю, какая философия свидетельствует о принятии решения, так что когда наши споры в сообществе ''Django'' похожи на те, с какими мы уже сталкивались гдето раньше, мы можем делать те выводы, к которым приходили другие люди.
+
'''ДжКМ:''' Да; и более того, все обсуждения открыты. Я слежу за списком рассылки разработчиков ''Python'' почти 10 лет, наблюдал все дискуссии и знаю, какая философия свидетельствует о принятии решения, так что когда наши споры в сообществе ''Django'' похожи на те, с какими мы уже сталкивались где-то раньше, мы можем делать те выводы, к которым приходили другие люди.
  
 
'''''LXF:''' Получается, вы поете по тем же нотам.''
 
'''''LXF:''' Получается, вы поете по тем же нотам.''
Строка 47: Строка 47:
 
'''ДжКМ:''' Ну, на раннем этапе Саймон Виллисон [Simon Willison] и Адриан Головаты [Adrian Holovaty] [создатели ''Django''] начали писать web-приложения на ''Python'', и они писали все вручную. А когда вы создаете web-приложения своими руками, то замечаете, что делаете одни и те же вещи снова и снова – ох, мне нужно написать этот слой для обращения к базам данных, а я напишу несколько видов, а мне нужно связать представления с моими шаблонами URL, а мне бы не помешал интерфейс администратора.
 
'''ДжКМ:''' Ну, на раннем этапе Саймон Виллисон [Simon Willison] и Адриан Головаты [Adrian Holovaty] [создатели ''Django''] начали писать web-приложения на ''Python'', и они писали все вручную. А когда вы создаете web-приложения своими руками, то замечаете, что делаете одни и те же вещи снова и снова – ох, мне нужно написать этот слой для обращения к базам данных, а я напишу несколько видов, а мне нужно связать представления с моими шаблонами URL, а мне бы не помешал интерфейс администратора.
  
Первым решением для подобных повторяющихся действий был генератор кода: вы пишете описание данных, затем запускаете генератор, и он выдает большой кусок кода за вас. Вот это и есть «строительные леса» [scaffolding]. Возможно, мы делали это неправильно или была другая причина, но в любом случае для нас такой вариант не сработал. Была даже расхожая шутка: «Не редактируйте этот файл, его сгенерировала программа», потому что подобное выдавал генератор. В какойто момент мы ушли от такого подхода, а наш опыт оставил нам действительно здоровую нелюбовь к генерации кода. Так вот, когда я вижу чтото типа «строительных лесов», у меня срабатывает коленный рефлекс: «у нас это рухнуло, проходили». Может, ктото знает о генерации кода такое, чего не знаю я, но при каждом столкновении с этим я думаю «Хорошим оно быть не может».
+
Первым решением для подобных повторяющихся действий был генератор кода: вы пишете описание данных, затем запускаете генератор, и он выдает большой кусок кода за вас. Вот это и есть «строительные леса» [scaffolding]. Возможно, мы делали это неправильно или была другая причина, но в любом случае для нас такой вариант не сработал. Была даже расхожая шутка: «Не редактируйте этот файл, его сгенерировала программа», потому что подобное выдавал генератор. В какой-то момент мы ушли от такого подхода, а наш опыт оставил нам действительно здоровую нелюбовь к генерации кода. Так вот, когда я вижу что-то типа «строительных лесов», у меня срабатывает коленный рефлекс: «у нас это рухнуло, проходили». Может, кто-то знает о генерации кода такое, чего не знаю я, но при каждом столкновении с этим я думаю «Хорошим оно быть не может».
  
 
'''''LXF:''' Можно, однако, предположить, что общих идей довольно много… все это — один большой ком, не так ли?''
 
'''''LXF:''' Можно, однако, предположить, что общих идей довольно много… все это — один большой ком, не так ли?''
  
'''ДжКМ:''' Я не настолько знаком с основами ''Rails'', чтобы утверждать, что они сдирают его с нас, но мыто взяли от них многое. Сначала в ''Django'' мы обходились без тестового инструментария, а начав баловаться с тестовым инструментарием ''Rails'', отметили: «Эй, а это и правда здорово – это укрепляет культуру тестирования». Мы взяли эту идею и внедрили ее у себя.
+
'''ДжКМ:''' Я не настолько знаком с основами ''Rails'', чтобы утверждать, что они сдирают его с нас, но мы то взяли от них многое. Сначала в ''Django'' мы обходились без тестового инструментария, а начав баловаться с тестовым инструментарием ''Rails'', отметили: «Эй, а это и правда здорово – это укрепляет культуру тестирования». Мы взяли эту идею и внедрили ее у себя.
  
 
'''''LXF:''' Даже при учете совместного использования идей, считаете ли вы, что для успешного развития '''Django''' нужна какая-то другая система?''
 
'''''LXF:''' Даже при учете совместного использования идей, считаете ли вы, что для успешного развития '''Django''' нужна какая-то другая система?''
  
'''ДжКМ:''' Вы знаете, раньше я был помешан на чемто вроде «Мы победим, мы разрастемся, у нас будет больше пользователей, мы станем лучше, станем круче!» Но сам к этому особорук не прикладывал; и в какойто момент сказал «А зачем?» Если вы пользователь ''Rails'', а я пытаюсь убедить вас перейти на ''Django'', какой от этого прок нам обоим? И я уже не занимаюсь такими проповедями. Мой тон сменился с «Вам следует использовать ''Django'', потому что…» на «Я использую ''Django'', потому что…» И меня начал расстраивать тон соперничества в сообществе Open Source. «Аа, вы ''Vi'' пользуетесь? Убил бы!» Это игра с нулевой суммой, а настоящаято битва, с моей точки зрения, идет между открытым и закрытым кодом. И пока мы все используем открытый код, мы все в выигрыше.�
+
'''ДжКМ:''' Вы знаете, раньше я был помешан на чемто вроде «Мы победим, мы разрастемся, у нас будет больше пользователей, мы станем лучше, станем круче!» Но сам к этому особорук не прикладывал; и в какой-то момент сказал «А зачем?» Если вы пользователь ''Rails'', а я пытаюсь убедить вас перейти на ''Django'', какой от этого прок нам обоим? И я уже не занимаюсь такими проповедями. Мой тон сменился с «Вам следует использовать ''Django'', потому что…» на «Я использую ''Django'', потому что…» И меня начал расстраивать тон соперничества в сообществе Open Source. «Аа, вы ''Vi'' пользуетесь? Убил бы!» Это игра с нулевой суммой, а настоящая-то битва, с моей точки зрения, идет между открытым и закрытым кодом. И пока мы все используем открытый код, мы все в выигрыше.�
 +
 
 +
[[Категория:Интервью]]
 +
[[Категория:Джейкоб Каплан-Мосс]]

Текущая версия на 16:05, 24 июня 2011

Интервью Джейкоб Каплан-Мосс

[править] Танго 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 пользуетесь? Убил бы!» Это игра с нулевой суммой, а настоящая-то битва, с моей точки зрения, идет между открытым и закрытым кодом. И пока мы все используем открытый код, мы все в выигрыше.�

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