City Rat ([info]city_rat) wrote,
@ 2007-10-20 11:37:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Ракетнопромежуточное
Рассмотреть варианты решений по задачке опять не успеваю, простите. Будет позже, как и продолжение про баллистику, как и метро (может быть). Запар.

Пока только несколько мыслей по поводу "кодерского подхода". Никого из комментаторов не хочу обижать, это нормальное такое мышление для того мира, в котором мы живем, а люди, которых вообще могут заинтерсовать такие задачки, по определению вызывают мои уважение и симпатию, но...

Вот типичные проблемы:

1. Чтение ТЗ по диагонали. Из десятка человек, решивших поучаствовать, целиком задачу не прочитал, похоже, никто. Без комментариев.

2. Домысливание ТЗ (ТЗ: "взять число" - Кодер: "скорее всего, тут подойдет INT", "цель движется" - "это, наверное, танк"). Особенно пикантно в сочетании с п. 1: часть требований не прочитана, а потом восполнена "из головы". В результате кто-то вместо ПТУР пытается конструировать баллистическую ракету, кто-то зенитную, 80% игроков пытается решать задачи стабилизации и т.п.

3. "Дайте мне данные, и я переверну мир". Кодеры почему-то редко задумываются над тем, откуда берутся данные, с которыми они работают. В жизни это приводит к мутанстким формам ввода, а в задачках типа моей к ответам вида "а чего тут сложного? берем отклонение по вертикали, вычитаем его из заданного направления - и все!"

4. Библиотечное мышление. Самый сложный момент, который и по жизни вызывает постоянные споры. "Зачем заново кодить то, что уже написано?". В общем-то, правильная мысль. Но многократно наблюдал, как вместо написания программки из двух строк программер мучительно ищет библиотеку с нужной функцией, находит примерно похожую, пишет здоровенный оверхед, чтобы заставить ее делать не примерно то, что нужно, а именно то, что нужно, потом борется с чужими багами - и получает в конце концов тяжелого уродца, который все равно делает не совсем то, что нужно, и юзеру приходится делать поправки.

А при решении задач типа нашей "ракетной" это выражается еще в одной забавной форме. "О, нужно чем-то рулить? Это решается с помощью черного ящика под названием "декапустный мандулятор", я видел такой на сорсфорже. Все данные подадим в него, а он нам выдаст команды на рули!". В сочетании с пп.1 и 3 - получается бесподобно.

5. Закапывание в несущественные детали. Решение задач, которые понятны и/или интересны вместо тех, что нужно решать. Превосходно сочетается с пп. 1 и 2. Кодер может часами и днями писать модуль, который проигрывает туш по завершении заполнения формы - а бизнес-логику формы будет писать за час до дедлайна, когда поседевший менеджер на него наорет, доведя обоих до нервного срыва.


(Post a new comment)


[info]andrews_answer
2007-10-20 08:28 am UTC (link)
Вы знаете, я недавно взял на работу двух разработчиков. На интервью интересовался теми предметами, которые им читали. Так вот, теории алгоритмов или аналога там не было в принципе, ни в каком виде. Вроде и не сильно стар, но иногда себя динозавром чувствую.
А в дискуссии не участвую т.к. знаю ответ, но с интересом присматриваю.

(Reply to this)(Thread)


[info]city_rat
2007-10-20 03:56 pm UTC (link)
Ответов много :)

(Reply to this)(Parent)


[info]amarao_san
2007-10-20 09:45 am UTC (link)
Сделай поправку на жж. Врят ли тут кто-то серьёзно садился и решал проблему.

(Reply to this)(Thread)


[info]city_rat
2007-10-20 03:55 pm UTC (link)
Ну, ясное дело. Я и не предлагал схемы рисовать. Но замеченные особенности заметны уже на уровне общего подхода.

(Reply to this)(Parent)


[info]city_rat
2007-10-20 03:56 pm UTC (link)
Пардон за тавтологию :)

(Reply to this)(Parent)


[info]wolk_off
2007-10-20 09:51 am UTC (link)
Ряд предложенных здесь тезисов гораздо шире, чем описание одного только кодинга - и, конечно же, автор это знает. Засим на автора ставим ссылочку, а вердикт выносим "АФФТАР, ПЕЙШЫ ЭСЧО".

(Reply to this)


[info]zvantsev
2007-10-20 10:34 am UTC (link)
Всё совершенно верно. И было точно так же верно тридцать лет тому назад.

(Reply to this)


[info]gray_bird
2007-10-20 03:09 pm UTC (link)
Если народ не решает задачу, может она некорректно сформулирована? :)
Потому как решить ее цифровыми средствами тех лет было невозможно, а современные средства и обсуждать неинтересно. Есть набор готовых устройств требуемого функционала.
Придумать аналоговую систему управления на каком-нибудь физическом эффекте, пусть и нереализуемую "в железе", можно, но при чем здесь программисты?

(Reply to this)(Thread)


[info]city_rat
2007-10-20 03:54 pm UTC (link)
Не поверите, но задача превосходно решалась и цифровыми, и аналоговыми средствами "тех лет". Хотя, собственно, в условиях никаких ограничений на средства для первого решения не содержится. Попробуйте решить цифровыми сегодняшними. Просто не в абстрактном виде ("пусть в ячейке памяти 1 у нас лежит координата X, которую мы передадим библиотеке Y"), а целиком. Там два четко сформулированных вопроса. Хинт: самый интересный из них - первый. То самое получение данных, п. 3.

А уже потом предлагалось попробовать решить ту же задачу аналоговыми средствами. Собственно говоря, задача-то не в алгоритмике, алгоритмика тут одинаково проста в реализации что для аналога, что для цифры. То, что многие ринулись решать задачи распознавания объектов и т.п. (кстати, для них тоже есть кое-какие аналоговые решения) - всего лишь свидетельство сугубой справедливости п.1.

При чем здесь программисты - ну, может быть, кому-то из них интересно расширить кругозор? Радиотехники-то готовые решения знают, им эта задача, скорее всего, будет не интересна. Точно так же программисту, наверное, не особо интересно решать задачу по пузырьковой сортировке.

(Reply to this)(Parent)(Thread)


[info]sam_buddy
2007-10-21 02:50 pm UTC (link)
Я никогда и не отрицал того факта, что я туповпат.:( Да, если связь потеряна, ее нужно восстановить по косвенным признакам. Блин, все уже придумали задолго до нас. Отсутствие от шпиона условленного сообщения - это тоже сообщение.
"Тетя роза приехала в Одессу" - "Атомные боеголовки были загружены в Транспортно-пусковые контейнеры." Сообщения нет - "В данном секторе внимательность повышена", тут что-то творится.

(Reply to this)(Parent)(Thread)


[info]city_rat
2007-10-21 03:14 pm UTC (link)
А это тоже цифровое мышление. Да-нет, наличие-отсутствие.

Я завтра расскажу про одно чисто аналоговое решение этой задачки, от которого меня до сих пор прет. Не сам придумал - в институте рассказали. Сам бы не додумался, ей-богу - у меня мышление тоже цифровое.

(Reply to this)(Parent)(Thread)


[info]sam_buddy
2007-10-21 03:27 pm UTC (link)
Ну, "Тетя Роза" передаст один бит. Можно передать байт. Восемью битами. Поставить утюг на подоконник, протелеграфировать "Мойша все" и причалить лодку слева от причала.

(Reply to this)(Parent)(Thread)


[info]sam_buddy
2007-10-21 03:30 pm UTC (link)
Дальше будут "48 утюгов".

(Reply to this)(Parent)


[info]city_rat
2007-10-21 04:08 pm UTC (link)
Да не важно, сколько бит. Вот удивительно - хотя человек - довольно аналоговое существо - но мышление у него все-таки довольно дискретное. Бувы, цифры, ограниченное колчество вариантов выбора.

(Reply to this)(Parent)(Thread)


[info]sam_buddy
2007-10-21 04:16 pm UTC (link)
Крыс. Не подумай, что ахтунг, ибо я гомофоб. Я уважух)

(Reply to this)(Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…