ninazino: (Default)
[personal profile] ninazino

На днях прикрепили ко мне интерна (ну, стажера, по-нашему). У нас залежалого материала, где уже много лет конь не валялся, навалом, поэтому я ему и поручила поваляться (к-хм, пардон за непроизвольную и не совсем продуманную аллитерацию).

В общем, говорю, посмотри там, что к чему и где улучшить можно.

Он первым делом почитал код, а вторым -- комменты к нему. И бежит такой довольный, вот, говорит, эврика!: здесь комменты обещают to "Estimate the full covariance matrix", а на самом деле оценивают только диагональ матрицы, то есть, грубо говоря, "variance".

Я посмотрела -- и правда, только значения [i][i] подсчитываются, никаких тебе [i][j]. Ну, думаю, и как же оно все работает? Стала рыть. Оказывается, из всей этой матрицы в программе используется только ее (матрицы) детерминант, а он-то как раз по диагонали и считается. Так что в комментариях пургу пускали, а программу писали по жизни.

Мальчик расстроился, но я ему попыталась как-то объяснить, что это как раз и есть грамотное применение теоретических знаний на практике. Надеюсь, что помогло.

А мораль сей басни такова: не читайте только комментарии к коду -- читайте еще и код. Коммертарии иногда пургу пускают, а иногда просто устаревают. Все как в жизни.

Ну-ка, а когда вы в последний раз обновляли комментарий после того, как обновили код?

Вот признаюсь честно, я лично комментирую только когда пишу изначально. А потом, когда баги чищу, в комменты даже и не заглядываю.

Date: 2008-07-10 10:08 pm (UTC)
From: [identity profile] alextr98.livejournal.com
а я обязательно комментарии исправляю.
Иначе потом сам же и напорешься.

Date: 2008-07-10 10:30 pm (UTC)
From: [identity profile] ninazino.livejournal.com
Да? А я уж свой-то код всегда прочту. И когда читаю чужое творчество, тоже в первую очередь в код гляжу. Если понимаю, то и ладно -- чего больше-то? А уж если не понимаю, с тоской иду читать комментарии.

А ты оптимистка.

Date: 2008-07-11 12:08 am (UTC)
From: [identity profile] wamana.livejournal.com
На самом деле все зависит от времени последнего обращения к коду. Если это текущий проект, то ориентироваться не проблема. А если это сопровождение и возникает необходимость работы с кодом трех-пятилетней давности, да еще и неоднократно модифицированным, то без четкого комментирования не обойтись.

Самая неудобная ситуация когда в систему с какого-то момента вводится новый расчетный механизм с необходимостью сохранения и предыдущего механизма. Тут уж без комментирования и модификации комментариев вовсе никак.

Date: 2008-07-10 10:23 pm (UTC)
From: [identity profile] dumart.livejournal.com
То есть остальные элементы матрицы неинициализированны? Нехорошо это. Хоть бы занулили, что ли.
А вообще-то грамотные комментарии помогают другим программистам. То, что многие их не пишут, не есть хорошая практика. Так что молодых нужно учить идеалу, тогда хоть что-то будут делать правильно.

Date: 2008-07-10 10:28 pm (UTC)
From: [identity profile] ninazino.livejournal.com
Не, занулили, как же. Все же на С написано, там без инициализации -- никак. То есть, память просто и нагло впустую гоняют. А в комментах гордо говорят, что full covariance matrix, а по жизни она...

Да нет, я в теории тоже за комментарии, а на практике -- всегда код читаю. То ли мозг так устроен, что мне он легче дается, то ли просто быстрее, не знаю.

Либо...

Date: 2008-07-11 12:19 am (UTC)
From: [identity profile] wamana.livejournal.com
...объем кода невелик.

В идеале кроме комментирования необходимо еще и документирование кода. Только так можно получить сопровождаемый технологичный проект.

Я помню, что стандартизационный подход к ведению проекта тебе претит.

Re: Либо...

Date: 2008-07-11 12:30 am (UTC)
From: [identity profile] ninazino.livejournal.com
Я помню, что стандартизационный подход к ведению проекта тебе претит.

Нет, совсем не претит. Просто кодт у нас "научный"ученый, а что это такое, в двух словах не объяснить :))
Что же касается объема, то с начала 90-х никто не рискнул все переписать. Отдельные модули обновляются, а так чтоб все -- не-а.


Полное...

Date: 2008-07-11 12:54 am (UTC)
From: [identity profile] wamana.livejournal.com
...переписывание - это уже экстремизм. Ибо как для революции тут необходима революционная ситуация.

Ну и кроме того, препятствием для реинжениринга проекта может быть как раз недостаточная комментированность и документированность. Ибо отдельные места работают, но как - уже никто не знает.

Кстати, я что-то не помню: ваша контора какой-нибудь RAD использует или все на коленке пишется? Вроде мы этот вопрос поднимали, но уж очень давно это было...

Re: Полное...

Date: 2008-07-11 11:57 am (UTC)
From: [identity profile] ninazino.livejournal.com
Я даже не знаю, что такое RAD, так что сказать не могу.

Это просто.

Date: 2008-07-11 12:57 pm (UTC)
From: [identity profile] wamana.livejournal.com
RAD (http://ru.wikipedia.org/wiki/RAD) (от англ. rapid application development — быстрая разработка приложений)

Date: 2008-07-11 05:49 am (UTC)
From: [identity profile] dr-tambowsky.livejournal.com
Как это - детерминант по диагонали считается????
Или матрица диагональна, типа прямое произведение независимых гауссовских процессов? Тогда коммент прав, все недиагональные элементы обнулены - значит "посчитаны" :)
А вообще комменты сильно помогают, даже в собственном коде. :)

Date: 2008-07-11 11:56 am (UTC)
From: [identity profile] ninazino.livejournal.com
Нет ну правильно, по факту матрица была диагональной, хотя по комментарию -- вовсе нет. И в коде все делалось для диагональной, а к комментариях -- все для полной.

Profile

ninazino: (Default)
ninazino

May 2025

S M T W T F S
     1 2 3
45678910
111213141516 17
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2025 12:10 am
Powered by Dreamwidth Studios