Re[10]: Методология дворника.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.05.05 09:34
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, eao197, Вы писали:


E>>Если уже созданное решение требуется сопровождать и развивать, то наступает момент, когда проще перевести старый код на использование нового инструмента. Это напоминает историю с программированием под Windows -- сначала самописные классы, затем MFC, затем WTL. Функциональность продукта вроде не меняется, а начинка -- в значительной степени.


IT>Можнет это называется портированием?


Да, вероятно, так будет правильнее. Хотя когда речь идет о смене одного своего инструмента на другой, но лучше , то потрирование -- это слишком громко сказано.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[11]: Методология дворника.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.05.05 09:34
Оценка: 45 (8) +3
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, eao197, Вы писали:


E>>У меня такая же история. Только я обязательно первую реализацию сложного алгоритма делаю именно на бумаге. Бывает, что уже на бумаге готовый результат получается только с третьей-четвертой попытки. А затем переписываю на компьютер, причем стараюсь делать это на свежую голову или хотя бы через пару часов после написания кода на бумаге -- сразу видны ошибки и промахи. Хотя не все. Бывает, что при "вылизывании" быстродействия/ресурсоемкости приходится что-то переделывать.


MS>Чисто любопытно. А что мешает использовать редактор заместо бумаги для написания кода? Чисто привычка? Но ведь на бумаге писать код гораздо более трудоемко! Лично я использую бумагу и ручку для формул, геометрических построений, диаграмм и т.д. Что ни говори, но никакой графический редактор не сравнится по эффективности с бумажным листом А вот текстовый — вполне.

MS>Блок-схемы алгоритмов канули в лету вместе с GOTO. А выписывать на бумаге строчки кода — как-то оно очень трудоемко. Я предпочитаю редактор и компилятор . При этом у меня только около 10-20% написанного кода идет в production, остальное в конечном итоге — в мусорку.

Я сам иногда удивляюсь, почему мне проще писать на бумаге. Здесь есть, имхо, ряд факторов:

Субъективный:
Привычка. Когда я начинал учиться программировать, машинного времени нам давали три пары на две недели (т.е. всего 6 часов). Естественно, что ничего путного в таких условиях при программировании прямо на машине не получалось. Вот и привык сначала всю программу на бумаге расписывать. Затем весь код писать на бумаге стало уже невозможно физически, но вот самые сложные и/или ответственные куски продолжаю так разрабатывать.

Объективные (имхо):
Навыки письма нам прививают в раннем детстве и для нас они становятся чуть ли не безусловными рефлексами. Я вот совершенно не задумываюсь, как писать карандашом или как вычеркнуть несколько написанных от руки слов или предложений. С редакторами все не так. Набирая текст в редакторе по неволе приходится отвлекаться на разные вспомогательные вещи. Вот как, например, удалить строку текста в редакторе? Если это Turbo C или редактор Far-а -- то ^Y, если Vi -- dd (а перед этим, возможно, ESC), если Emacs (могу ошибиться) -- ^KK, если нотепад -- Home,Shift+Down,Del. Или запись текста (хотя бы не забывать это делать, если autosave нет). Или вот как удалить или заменить неверно написанное слово? На бумаге все очень просто -- берешь и вычеркиваешь не задумываясь. А в редакторе нужно как-то переместиться на нужно слово (мышкой или клавиатурой). Далее нужно как-то решить как слово удалять. Либо просто backspace-ом, либо просто Del-ом, либо Shift+Control+Left(Right) и Del, либо Ctrl+Del, либо Ctrl+Backspace, либо (Vim) dw (dw) или db (dB). Даже если мы не думаем об этом, подсознание все равно отвлекается на такие мелочи от основной работы -- придумывания решения.

Обозримость. На кране, даже с моим разрешением 1400x1050 я могу видеть только ограниченное количество строк всего нескольких файлов. Если же у меня есть решение на бумаге, причем, обязательно написанных только на одной строне листа, то я могу заложить листами весь письменный стол и легко переключаться с одного фрагмента кода на другой, держа при этом в поле зрения большое количество фрагментиков. Особенно это удобно при работе с диаграмами (a-la UML). Здесь получается так же, как с обычными книжками vs. электронными: в обычной книге я могу заложить сразу несколько мест книги и легко смотреть то на одну страницу, то на другую. А вот в элетронной (на Palm-е, скажем) это значительно труднее.

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

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

Есть еще один фактор, который я не знаю к чему отнести. И вообще, многие не будут считать его достоинством. Когда пишешь на бумаге, то, естественно, нет никакого intelisence и autocomplite. Поэтому никто не подсказывает ни названий классов, ни названий методов, ни порядка аргументов. За всем этим нужно обращаться к документации. А это приводит к двум важным следствиям. Во-первых, проблемы несовместимости интерфейсов или недостатка информации для вызова какого-то метода выявляется тогда, когда еще не было введено ни одной строчки кода. На бумаге все так легко поправить, нужно только уметь пользоваться ластиком . Во-вторых, лучше узнаешь все, что используешь. И лучше ориентируешься в собственной программе, что позволяет существенно экономить на отладке.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Методология дворника.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.05.05 09:34
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, McSeem2, Вы писали:


IT>>>Дело не в методике, дело в здравом смысле, который очень часто бывает трудно найти в судьбоносных решениях наших коллег. Вот что действительно странно, так это то, что автору нравится работа ассенизатора. Это уже смахивает на извращеньице.


MS>>А так же противоречит первой заповеди программиста, "не навреди".


ГВ>Э... заповедь плохого программиста, однако.


Я бы сказал осторожного (читай опытного) программиста. Имхо, однако
... << RSDN@Home 1.1.4 beta 6a rev. 436>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[12]: Методология дворника.
От: WolfHound  
Дата: 20.05.05 09:58
Оценка:
Здравствуйте, eao197, Вы писали:

Уррраа! Новый холивар! Бумага VS редактор.

E> Привычка. Когда я начинал учиться программировать, машинного времени нам давали три пары на две недели (т.е. всего 6 часов). Естественно, что ничего путного в таких условиях при программировании прямо на машине не получалось. Вот и привык сначала всю программу на бумаге расписывать.

Это главный фактор.

E>Объективные (имхо):

E> Навыки письма нам прививают в раннем детстве
Нк знаю кому как, а мне эти навыки так толком и не привили. А если учесть что я последние несколько лет к ручке почти не прикосаюсь(за исключанием какихто расчетов и диаграмок)то...
E>и для нас они становятся чуть ли не безусловными рефлексами.
Для меня таже фигна с клавиатурой. Ну не замечаю я ее. И на шорткаты жму автоматическии.

E> Обозримость. На кране, даже с моим разрешением 1400x1050 я могу видеть только ограниченное количество строк всего нескольких файлов. Если же у меня есть решение на бумаге, причем, обязательно написанных только на одной строне листа, то я могу заложить листами весь письменный стол и легко переключаться с одного фрагмента кода на другой, держа при этом в поле зрения большое количество фрагментиков.

Лично для меня важнее скорость поиска. А в этом с контекстным поиском никакая бумага тягаться не может. Про инструменты типа ReSharper'а я вобще молчу.

E> Мобильность . Когда у меня часть кода написана на бумаге, я могу продолжить с ним работать даже не имея под рукой компьютера.

Ну не знаю. Както таких проблем не испытываю.

E> Работа над кодом проходит в две итерации.

А я сначало делаю прототип, а потом его мутирую в конечный код. Выбрасывая и переписывая все что не нравится. Причем во время переписывания инструменты типа ReSharper'а очень сильно помогают.
Также я все ключевые моменты заливаю в SVN и имею полную историю того что делал. Иногда экономит кучу времени если вдруг снес что-то лишнее.

E>Во-первых, проблемы несовместимости интерфейсов или недостатка информации для вызова какого-то метода выявляется тогда, когда еще не было введено ни одной строчки кода.

Сомнительно. Код всеравно надо набирать. А подрехтовать его в случае проблем не проблема.
E>На бумаге все так легко поправить, нужно только уметь пользоваться ластиком . Во-вторых, лучше узнаешь все, что используешь. И лучше ориентируешься в собственной программе, что позволяет существенно экономить на отладке.
Еще болие сомнительно. Править в редакторе еще легче. Плюс мощная навигация. Плюс контекстная справка.
Кстати, а документация у тебя в каком виде? Электронном или ты весь MSDN распечатал?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Методология дворника.
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 20.05.05 13:12
Оценка: 1 (1)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, eao197, Вы писали:


WH>Уррраа! Новый холивар! Бумага VS редактор.


Это вряд ли, я просто разсказал как делаю я. У меня совершенно нет желания никому ничего по этому поводу доказывать (в отличии, скажем, от C++, объектных баз данных и моих велосипедов ).

E>> Работа над кодом проходит в две итерации.

WH>А я сначало делаю прототип, а потом его мутирую в конечный код. Выбрасывая и переписывая все что не нравится. Причем во время переписывания инструменты типа ReSharper'а очень сильно помогают.

А вот мне нравится писать так, чтобы не выбрасывая. А на создание прототипов обычно времени нет

WH>Также я все ключевые моменты заливаю в SVN и имею полную историю того что делал. Иногда экономит кучу времени если вдруг снес что-то лишнее.


Сам SVN использую. Только это немного из другой области.

WH>Кстати, а документация у тебя в каком виде? Электронном или ты весь MSDN распечатал?


Вот документацию (MSDN, Unix man, Unix info, doxygen-generated) использую исключительно в электронном виде, т.к. тут действительно поиск и быстрая навигация с бумажными вариантами просто не сравнится.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.