Oct. 30th, 2007

yigal_s: (Default)
Видимо, написание самодокументируемого кода в принципе невозможно (а казалось ведь, что да).

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

2. Некоторые вещи пишутся для того, чтобы другие вещи (в другом куске кода) не падали или просто могли работать. Не в смысле написания каких-то дурацких заплаток. Вот например, "сейчас мы посчитаем вот это, потому, что это надо нам в другом месте, а там мы это посчитать уже не сможем". А тут мы возьмём критическую секцию потому, что если мы её не возьмём, то в другом месте обломаемся, хотя и факт того, что такая ситуация возможна сразу не очевиден. Без комментариев тут не обойтись.

3. Мало того, некоторые вещи можно, на первый взгляд, сделать разными способами, но выбираешь именно "вот этот способ", потому, что более очевидный приведёт к каким-то неочевидным сразу проблемам. И причину этого выбора придется комментировать, увы.

Смешно, что ранее этого четко не сознавал.
yigal_s: (Default)
Где ООП явно не в тему - это ГУИ (пример правильного построения гуя - Fudgets).

[link]

Я так-сяк повертел это заявление (и прочие, прочитанные на sql.ru), вспомнил некоторые почему-то не получившиеся для написания задачи из своей практики, равно как и некоторые "гениальные ООП решения", и сформулировал супер-радикальный тезис:

Объектно ориентированное программирование менее всего подходит для отображения объектов реального мира (включая сюда и объекты - элементы GUI) в объекты (в терминологии OOP/D) программы.

Пожалуй, истиннонсть этого тезиса мне пока трудно всерьез обосновать (ложность же напрашивается). Но что-то в этом есть. По крайней мере, стоит об этом тезисе вспоминать, прежде чем бросаться всё и вся выражать в виде объектов и протокола их взаимодействия, а потом тупо думать - что ж оно всё никак не выражается?

Почитать, что ли Симулу какую... Для избавления от ереси неверия в то, во что верил последние 14 лет.
yigal_s: (Default)
Иногда вдруг начинаешь услышишь где-то или прочитаешь что-то о предмете, который изучал раньше - будь то что-то по физмату, или по программированию - и какие-то вещи, до того разрозненные, вдруг соединяются в монолитные конструкции. Начинаешь понимать не только "что", но и "зачем", "как" и "почему". Самому-то не всегда хватало интеллекта в своё время до этих вопросов добраться, да и присутствовала куча отвлекающих факторов - нагрузка (необходимость изучить что-то в ограниченное время и необходимость сосредотачиваться на изучении нескольких предметах параллельно), нечестный пиар тех или иных вещей - в той же институской математике и физике даже имелось. Не хватило и понимания того, что надо себе вот такие вопросы задавать постоянно (интуитивно я очень даже ориентирован на такие вопросы, но надо и осознанно такими вопросами задаваться). Самому не хватило интеллекта, но и преподаватели это не развивали и не поощряли, пожалуй. А ведь порой и намёка было бы достаточно. И книги не всегда были те, что стимулируют мысль, а не подавляют её напрочь. И жутко обидно, что в голове только сейчас укладываются правильно те вещи, которые могли бы легко совершенно уложиться и 5-10-15-20 лет назад. Жутко обидно.

Однако же, на это можно посмотреть и с другой стороны. Имеется знание некоторых фактов, умений, методик. Далее формируется некоторое метазнание относительно того, как все эти вещи между собой сочетаются. Метазнание - тоже знание в некотором роде.

Получается, что в принципе никогда невозможно уложить правильно ВСЕ те вещи, о которых знаешь. Всегда что-то будет более-менее осознано на достаточную глубину, а некоторые вещи будешь знать поверхностно, хаотично. И впоследствие, когда они уложатся првильно, будешь поражаться, "почему же не раньше?". Но иначе, по большому счету, нельзя.
yigal_s: (Default)
я тaм сo свечкoй стoял через нескoлькo чaсoв пoсле терaктa. Все этo oружие пoд кoврaми в мечети - пoстфaктумный плoд вoспaленных мoзгoв хеврoнских лунaтикoв. Ничегo, крoме двух мешкoв брoшеннoй oбуви тaм не сoбрaли.

http://avva.livejournal.com/1824031.html?thread=45632031#t45632031