?

Log in

No account? Create an account
программистское: посмотрите и сравните - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программистское: посмотрите и сравните [окт. 6, 2009|03:08 pm]
Anatoly Vorobey
Питер Норвиг, автор (помимо множества прочих заслуг) знаменитых книг об AI и Лиспе, автор эссе Teach Yourself Programming in Ten Years, которое следует прочитать каждому программисту, рассказывает, как написать программу, решающую любую задачу Судоку. 100 строк на Питоне.

Рон Джеффриз, один из изобретателей системы XP Programming, один из духовных отцов движения Agile и авторов Agile Manifesto, пытается написать программу для решения Судоку: раз, два, три, четыре, пять. На Руби, с использованием TDD (test-driven development).

Прочитайте эти два описания двух разных попыток - включая все пять записей Джеффриза, не поленитесь, чтобы как следует их оценить - сравните, и вы будете знать все, что вам надо знать, об XP и Agile.

Бонус:

Роберт Мартин ("Uncle Bob Martin"), один из главных создателей Agile, специалист по Agile, XP и UML, автор книг обо всех этих методологиях, пишет код на Clojure, с помощью TDD, вычисляющий результат игры Bowling Game, простого варианта боулинга. Вот его код.

Матиас Джованнини пишет код на OCaml, без TDD, для решения той же проблемы. Вот его код.

Сравните, и вы будете знать все, что следует знать об XP, Agile и TDD.

Все всегда звучит очень заманчиво. Все всегда звучат очень убедительно. Все полемики и манифесты можно просто не читать, а если читать, то ни в коем случае не воспринимать всерьез. Читайте код. Или, если есть время и желание, пробуйте сами. А манифесты и методологические книги - пусть себе скрипит губерния.
СсылкаОтветить

Comments:
Страница 1 из 2
<<[1] [2] >>
[User Picture]From: nm_work
2009-10-06 05:30 pm
:) Agile и XP имеют свои преимущества, но я считаю что эти процессы нужно адаптировать к команде/продукту.

в одной из систем у нас, например, несколько критически важных классов были вообще вне тестов. сознательно :) потому что писать тесты на них заолбаешься, а если что в них поломать - слетает вся система, так как ими пользуются ВСЕ оставшиеся ;)
(Ответить) (Thread)
From: 9000
2009-10-06 05:44 pm
TDD — он не про то ведь, как написать красивый и эффективный код. Он про то, как контролировать для себя корректность кода.
Agile — не про то, как [...]. Он про то, как всегда иметь прототип для показа заказчику и последовательно его рихтовать и оживлять.

Могу вообразить, что хороший системный программист напишет решение судоку на ассемблере коротко, понятно и легко читаемо, а плохой программист на хаскеле — длинно, непонятно и медленно. Но точно так же может выйти наоборот; всё зависит от того, на какой стороне окажется хороший программист.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: xfyre
2009-10-06 05:39 pm
никакая, даже самая хорошая методология не может сделать хорошего программиста из плохого, и vice versa. методологии - они про организацию производства, а не про организацию мозгов :)
(Ответить) (Thread)
[User Picture]From: quappa
2009-10-06 05:45 pm
«Поскольку наш кузнец Вася, как выпьет, может забить гвоздь в бревно кулаком, давайте объявим молотки вредным карго-культом»
(Ответить) (Thread)
[User Picture]From: french_man
2009-10-06 05:47 pm
Я, собственно, не совсем понимаю, причем тут язык. Если есть алгоритм, то он более-менее должен реализовываться на любом языке. А если нет, то и самый прекрасный язык бесполезен.
(Ответить) (Thread)
[User Picture]From: avva
2009-10-06 05:49 pm
Язык совершенно ни при чем, я просто указывал его для полноты информации.
(Ответить) (Parent) (Thread)
From: 9000
2009-10-06 05:50 pm
Кстат, если "семантическая мощность" у питона и руби примерно одинаковая, то Джованнини легко побеждает тем, что в OCaml есть pattern matching, а в лиспе нет.
(Ответить) (Thread)
[User Picture]From: meshko
2009-10-06 05:53 pm
Очень смешно, но дело-то на самом деле не в XP, а только в том, что Норвиг очень умный, а Мартин менее. Можно порассуждать о том, что методология, придуманная средними программистов для средних программистов имеет право на существование.
Хотя сам-то я считаю, что всех, кто любит любые методологии, нужно заставлять выучивать "Нет серебряной пули" Брукса наизусть, окраплять святой водой и отпускать с миром.
(Ответить) (Thread)
[User Picture]From: object
2009-10-08 05:11 am
Да и то, говоря о том, что Мартин менее умен, стоит, видимо, выделить, в чем он менее умен. Потому что в методологии он очень даже умен.
(Ответить) (Parent) (Thread)
[User Picture]From: pingva
2009-10-06 05:56 pm
ну, ты сравнил Норвига (!), пишущего заметку для себя и других умных людей c, кхм, "профессиональным евангелистом", пишущим заметку для "профессиональных разработчегофф". Да еще и про sudoku! (т.е., trivial for the former, virtually insurmountable for the latter)

Это даже как-то нечестно.

(у Рона отвратный Руби)

Бонус про дядю Боба вообще убойный, кошмар.

(Ответить) (Thread)
[User Picture]From: avva
2009-10-06 09:02 pm
ясно, что сравнение неправомерно, но в этом и заключается мессидж :)
(Ответить) (Parent) (Thread)
(Удалённый комментарий)
From: sdt78
2009-10-06 06:14 pm
+1
(Ответить) (Parent) (Thread)
[User Picture]From: msh
2009-10-06 05:59 pm
При всем моем скептицизме по отношению к Agile, TDD, XP т.д. должен заметить, что при разговоре о технологиях/методологиях программирования примеры меньше 6 человеко-месяцев неинтересны.
(Ответить) (Thread)
[User Picture]From: xfyre
2009-10-06 06:38 pm
мне вообще не очень понятно, зачем сравнивать теплое с мягким

любые методологии (хоть agile, хоть iso, хоть черт в ступе) предназначены для организации производственного процесса и снижения рисков, связанных с человеческим фактором.

профессиональный уровень программиста, в свою очередь, зависит исключительно от самого программиста (и в меньшей степени от его окружения), но уж никак не от методологии, которую его заставляет использовать начальник.

p.s. второй пример вообще некорректен: текст на clojure честно предваряется замечанием "I’m trying to learn Clojure, and I’m finding the effort challenging. Perhaps you can help me."
(Ответить) (Parent) (Thread)
[User Picture]From: cema
2009-10-06 06:11 pm
А я подумал, что просто Норвиг хороший программист. Но последний абзац, конечно, ключевой (в твоём посте).
(Ответить) (Thread)
[User Picture]From: kanishchev
2009-10-06 07:08 pm
А какая сложность предложенного алгоритма решения судоку? Спасибо!
(Ответить) (Thread)
From: yacpdb
2009-10-06 07:20 pm
Экспоненциальная от числа пустых квадратов, вроде. Constraint handling сильно разрежает дерево перебора, но ассимптотически это по-прежнему перебор.
(Ответить) (Parent) (Thread) (Развернуть)
(Удалённый комментарий)
[User Picture]From: eoai
2009-10-06 08:54 pm

Напоминает грустный анекдот о паттернах проектирования.

Разработчики пишут письмо Э. Гамма: "Мы реализовали в нашей системе уже двадцать шаблонов, а теперь думаем, как нам еще впихнуть в нее оставшиеся три. Уже весь мозг сломали, пытаясь придумать. Может вы взглянете на архитектуру и чего-нибудь посоветуете?"
(Ответить) (Thread)
[User Picture]From: avva
2009-10-06 09:00 pm
Ага, все это было бы смешно...
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: gruimed
2009-10-06 08:56 pm
Прочитайте код кернела линукса и gcc и возможно уверенность в том что вы знали все о XP станет несколько менее непоколебимой. "Читайте код" (С).
(Ответить) (Thread)
[User Picture]From: avva
2009-10-06 08:59 pm
Да читал я код линукса. И gcc. И даже gdb. И выжил, хотя до сих пор иногда просыпаюсь в холодном поту, с криком, застрявшим в горле.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: vvs2002
2009-10-06 09:06 pm
специалист по Agile, XP и UML, автор книг обо всех этих методологиях, пишет код на Clojure,

Матиас Джованнини пишет код на OCaml, без TDD, для решения той же проблемы.


По-моему, у Вас тут передергивание. Мартин изучает Clojure (I’m trying to learn Clojure) и сомневается в своем решении (tests, especially, look bizzare and backwards to me).

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

(Ответить) (Thread)
[User Picture]From: avva
2009-10-06 09:41 pm
Да, тут есть некоторая натяжка. Проблема в том, что у Мартина нет вообще почти никакого кода, по которому его мастерство можно было бы как-то оценить.
(Ответить) (Parent) (Thread)
Страница 1 из 2
<<[1] [2] >>