avva: (Default)
[personal profile] avva
Питер Норвиг, автор (помимо множества прочих заслуг) знаменитых книг об 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.

Все всегда звучит очень заманчиво. Все всегда звучат очень убедительно. Все полемики и манифесты можно просто не читать, а если читать, то ни в коем случае не воспринимать всерьез. Читайте код. Или, если есть время и желание, пробуйте сами. А манифесты и методологические книги - пусть себе скрипит губерния.
Page 1 of 4 << [1] [2] [3] [4] >>

Date: 2009-10-06 05:30 pm (UTC)
From: [identity profile] nm-work.livejournal.com
:) Agile и XP имеют свои преимущества, но я считаю что эти процессы нужно адаптировать к команде/продукту.

в одной из систем у нас, например, несколько критически важных классов были вообще вне тестов. сознательно :) потому что писать тесты на них заолбаешься, а если что в них поломать - слетает вся система, так как ими пользуются ВСЕ оставшиеся ;)

Date: 2009-10-06 05:39 pm (UTC)
From: [identity profile] xfyre.livejournal.com
никакая, даже самая хорошая методология не может сделать хорошего программиста из плохого, и vice versa. методологии - они про организацию производства, а не про организацию мозгов :)

Date: 2009-10-06 05:44 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
TDD — он не про то ведь, как написать красивый и эффективный код. Он про то, как контролировать для себя корректность кода.
Agile — не про то, как [...]. Он про то, как всегда иметь прототип для показа заказчику и последовательно его рихтовать и оживлять.

Могу вообразить, что хороший системный программист напишет решение судоку на ассемблере коротко, понятно и легко читаемо, а плохой программист на хаскеле — длинно, непонятно и медленно. Но точно так же может выйти наоборот; всё зависит от того, на какой стороне окажется хороший программист.

Date: 2009-10-06 05:45 pm (UTC)
From: [identity profile] quappa.livejournal.com
«Поскольку наш кузнец Вася, как выпьет, может забить гвоздь в бревно кулаком, давайте объявим молотки вредным карго-культом»

Date: 2009-10-06 05:47 pm (UTC)
From: [identity profile] french-man.livejournal.com
Я, собственно, не совсем понимаю, причем тут язык. Если есть алгоритм, то он более-менее должен реализовываться на любом языке. А если нет, то и самый прекрасный язык бесполезен.

Date: 2009-10-06 05:49 pm (UTC)
From: [identity profile] avva.livejournal.com
Язык совершенно ни при чем, я просто указывал его для полноты информации.

Date: 2009-10-06 05:49 pm (UTC)
From: [identity profile] meshko.livejournal.com
Речь не о языке, а о подходе и философии. То, что в одном случае это Руби, а в другом Питон, показательно лишь отчасти.

Date: 2009-10-06 05:50 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Кстат, если "семантическая мощность" у питона и руби примерно одинаковая, то Джованнини легко побеждает тем, что в OCaml есть pattern matching, а в лиспе нет.

Date: 2009-10-06 05:53 pm (UTC)
From: [identity profile] meshko.livejournal.com
Очень смешно, но дело-то на самом деле не в XP, а только в том, что Норвиг очень умный, а Мартин менее. Можно порассуждать о том, что методология, придуманная средними программистов для средних программистов имеет право на существование.
Хотя сам-то я считаю, что всех, кто любит любые методологии, нужно заставлять выучивать "Нет серебряной пули" Брукса наизусть, окраплять святой водой и отпускать с миром.

Date: 2009-10-06 05:56 pm (UTC)
From: [identity profile] pingva.livejournal.com
ну, ты сравнил Норвига (!), пишущего заметку для себя и других умных людей c, кхм, "профессиональным евангелистом", пишущим заметку для "профессиональных разработчегофф". Да еще и про sudoku! (т.е., trivial for the former, virtually insurmountable for the latter)

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

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

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

Date: 2009-10-06 05:59 pm (UTC)
From: [identity profile] mikhail-t.livejournal.com
Вы просто слишком умный (без иронии и подначек) и не работали в конторах для средних программистов среди средних программистов и также менеджеров, иначе причины стоящие за агиле были бы вам понятны

Date: 2009-10-06 05:59 pm (UTC)
From: [identity profile] msh.livejournal.com
При всем моем скептицизме по отношению к Agile, TDD, XP т.д. должен заметить, что при разговоре о технологиях/методологиях программирования примеры меньше 6 человеко-месяцев неинтересны.

Date: 2009-10-06 06:00 pm (UTC)

Date: 2009-10-06 06:11 pm (UTC)
From: [identity profile] cema.livejournal.com
А я подумал, что просто Норвиг хороший программист. Но последний абзац, конечно, ключевой (в твоём посте).

Date: 2009-10-06 06:14 pm (UTC)

Date: 2009-10-06 06:38 pm (UTC)
From: [identity profile] xfyre.livejournal.com
мне вообще не очень понятно, зачем сравнивать теплое с мягким

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

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

p.s. второй пример вообще некорректен: текст на clojure честно предваряется замечанием "I’m trying to learn Clojure, and I’m finding the effort challenging. Perhaps you can help me."

Date: 2009-10-06 07:08 pm (UTC)
From: [identity profile] kanishchev.livejournal.com
А какая сложность предложенного алгоритма решения судоку? Спасибо!

Date: 2009-10-06 07:18 pm (UTC)
From: [identity profile] astoon.livejournal.com
Тоже спорили с другом, XP улудшает програмирование или нет...
Насчет того, что XP - это вариант для средних программистов в средних конторах - это просто бред, конечно. Это показывает и опыт, и логика. XP также хорош и для сильных, чтобы под этим не подразумевали.
Просто здесь нужно рассуждать в другом контексте. Т.е., говоря о эффектах XP, нужно иметь ввиду не код и не архитектуру, а процесс разработки и деланья бизнеса. Как-то так.

Date: 2009-10-06 07:20 pm (UTC)
From: [identity profile] yacpdb.livejournal.com
Экспоненциальная от числа пустых квадратов, вроде. Constraint handling сильно разрежает дерево перебора, но ассимптотически это по-прежнему перебор.

Date: 2009-10-06 07:30 pm (UTC)
From: [identity profile] nikto.livejournal.com
Пожалуй, это уже оффтопик, но, раз уж возникла тема "язык - алгоритм", вставляю цитату из статьи (http://vinnik.info/index.php?id=dijk00.html) авторитетного программиста (http://ru.wikipedia.org/wiki/%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D0%B0,_%D0%AD%D0%B4%D1%81%D0%B3%D0%B5%D1%80_%D0%92%D0%B8%D0%B1%D0%B5) :

Теперь переходим к пятому аргументу. Он относится к влиянию инструментов, которые мы пытаемся использовать, на наш образ мышления. Я наблюдаю культурную традицию, которая, по всей вероятности, уходит корнями в эпоху Возрождения: игнорировать это влияние и рассматривать человеческую мысль как первичную и главенствующую над тем, что ей создано. Но когда я начинаю анализировать свои собственные мыслительные привычки и привычки моих друзей, я прихожу, нравится мне это или нет, к совершенно иному заключению, а именно: инструменты, которые мы пытаемся использовать, и язык и обозначения, которые мы используем для выражения или записи наших мыслей, являются основным фактором, который определяет, о чем мы вообще можем мыслить и что можем выразить!

Date: 2009-10-06 07:42 pm (UTC)
From: [identity profile] nikto.livejournal.com
Т.е. я смотрю на свой код, на код коллег, какие они используют абстракции для описания, в сущности, окружающего мира (сиречь "предметной области") в своем коде, и мне кажется, что Дейкстра тут сказал важную вещь. Не знаю уж, общеочевидную, или нет.

Date: 2009-10-06 08:42 pm (UTC)
From: [identity profile] kobak.livejournal.com
"Die Grenzen meiner Sprache sind die grenzen meiner Welt"

("Границы моего языка -- это границы моего мира")

Date: 2009-10-06 08:52 pm (UTC)
From: (Anonymous)
ну, судоку довольно-таки затруднительно решить быстрее, чем за экспоненциальное время, потому что задача NP-полная. медленнее решить можно, но нужно постараться :)

Date: 2009-10-06 08:54 pm (UTC)
From: [identity profile] eoai.livejournal.com

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

Разработчики пишут письмо Э. Гамма: "Мы реализовали в нашей системе уже двадцать шаблонов, а теперь думаем, как нам еще впихнуть в нее оставшиеся три. Уже весь мозг сломали, пытаясь придумать. Может вы взглянете на архитектуру и чего-нибудь посоветуете?"

Date: 2009-10-06 08:56 pm (UTC)
From: [identity profile] gruimed.livejournal.com
Прочитайте код кернела линукса и gcc и возможно уверенность в том что вы знали все о XP станет несколько менее непоколебимой. "Читайте код" (С).
Page 1 of 4 << [1] [2] [3] [4] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 07:26 pm
Powered by Dreamwidth Studios