Здравствуйте, IT, Вы писали:
IT>Здравствуйте, eao197, Вы писали:
E>>Если уже созданное решение требуется сопровождать и развивать, то наступает момент, когда проще перевести старый код на использование нового инструмента. Это напоминает историю с программированием под Windows -- сначала самописные классы, затем MFC, затем WTL. Функциональность продукта вроде не меняется, а начинка -- в значительной степени.
IT>Можнет это называется портированием?
Да, вероятно, так будет правильнее. Хотя когда речь идет о смене одного своего инструмента на другой, но лучше

, то потрирование -- это слишком громко сказано.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Здравствуйте, 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>>
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Здравствуйте, McSeem2, Вы писали:
IT>>>Дело не в методике, дело в здравом смысле, который очень часто бывает трудно найти в судьбоносных решениях наших коллег. Вот что действительно странно, так это то, что автору нравится работа ассенизатора. Это уже смахивает на извращеньице.
MS>>А так же противоречит первой заповеди программиста, "не навреди".
ГВ>Э... заповедь плохого программиста, однако.
Я бы сказал осторожного (читай опытного) программиста. Имхо, однако

... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Здравствуйте, 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>>
Здравствуйте, 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>>