программистское: посмотрите и сравните
Oct. 6th, 2009 03:08 pmПитер Норвиг, автор (помимо множества прочих заслуг) знаменитых книг об 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.
Все всегда звучит очень заманчиво. Все всегда звучат очень убедительно. Все полемики и манифесты можно просто не читать, а если читать, то ни в коем случае не воспринимать всерьез. Читайте код. Или, если есть время и желание, пробуйте сами. А манифесты и методологические книги - пусть себе скрипит губерния.
Рон Джеффриз, один из изобретателей системы 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.
Все всегда звучит очень заманчиво. Все всегда звучат очень убедительно. Все полемики и манифесты можно просто не читать, а если читать, то ни в коем случае не воспринимать всерьез. Читайте код. Или, если есть время и желание, пробуйте сами. А манифесты и методологические книги - пусть себе скрипит губерния.
добавлю свои 5 копеек
Date: 2009-10-07 03:06 pm (UTC)Отметил для себя, что в первом примере про Судоку, чем отличаются представленные решения.
Да ведь тем, что первое решение написано тем человеком, который не поленился изучить эту самую головоломку (по тексту там чувствуется что у него есть некоторый уровень эрудиции по этому вопросу), отлично знает правила и выигрышные стратегии игры. А сама статья, это окончательный и выверенный результат работы, которая вообще-то осталась за кадром.
Второй же случай -- практически прямая противоположность.
Человек с самого начала признается что ни в одном глазу о Судоку. Только правила прочитал.
И вот, на основе этих правил, пробует хоть и методично, но все равно с большой долей случайности двигаться по новой для него местности.
То есть, выражаясь прямо -- это два примера которые некорректно сравнивать, тем более без оговорок.
Почему я обратил на это внимание?
Потому что раз было сталкивался на своем личном опыте с таким подходом.
Когда передо мной была поставлена задача в области в принцыпе мне не особо известной.
И где я был вынужден двигатся вот такими маленькими шажками как в примере.
А в результате, используя выше примененную логику, мою работу забраковал -- мол "видиш как мало ты сделал, и как намного больше можно было бы сделать по-другому", глупо игнорируя тот факт, что времени прошло недостаточно для результата, независимо от того какую кто методологию использует.
Еще.
Есть у Гаррисона такая повесть. http://ru.wikipedia.org/wiki/Фантастическая_сага
Где сценариста отправляют машиной времени куда-то в мезозой, и он там несколько месяцев пишет сценарий фильма.
А по времени студии проходит всего один час, и директор студии на радостях, порывается оплатить не несколько месяцев работы над сценарием, а только этот один час, на что режисер ему аргументировано отвечает --
http://lib.web-malina.com/getbook.php?bid=1438&page=9
""- Сценарий за час! - на лице Л.М. появилась счастливая улыбка. - Да
это же настоящая революция в кинопромышленности! Давай не будем скупиться,
Барни. Дадим этому парню самую высокую ставку, какая у нас есть, а затем
увеличим ее в два раза! Я не скупердяй. Мне хочется поступить по
справедливости, и уж я позабочусь о том, чтобы Чарли Чанг получил самую
высокую почасовую оплату, которая когда-либо была выплачена сценаристу за
один час его времени!
- Вы не совсем поняли меня, Л.М. Может быть, это с вашей точки зрения
прошел всего один час, но Чарли Чанг трудился как ишак над этим сценарием
более двух месяцев, включая субботы и воскресенья, и ему придется
заплатить за все это время.
- Он не сможет этого доказать! - Л.М. сделал свирепую гримасу.
- Нет, сможет. Каждый день он пробивал карточку на часах-табеле, и к
сценарию приложены все его карточки.
- Тогда пусть обращается в суд! На работу потребовался один час, и я
заплачу ему за один час.
- Сэм, - взмолился Барни, - поговорите с ним. Скажите ему, что в этом
мире ничего нельзя получить даром. Ведь деньги за восемь недель работы -
это гроши за такой великий сценарий!
- Мне больше нравится одночасовой сценарий, - заметил Сэм.
- Нам всем они больше нравятся, только одночасовых сценариев на свете
не бывает. Это просто новый метод работы, однако нам придется платить ту
же самую сумму за работу, что бы ни случилось.""