Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Ikemefula, Вы писали:
E>>>Ну, например, локализован точностью до стони строк. Скажем, что такой-то алгоритм, вернее такая-то его реализация работает не так, как ожидалось. E>>>Что делаем дальше?
I>>Дальше нужно отследить все зависимости в этом коде и разобраться с каждой из них. Не бывает проблем без проблемных зависимостей. E>Это очень сильное утверждение ,его не плохо бы доказать...
E>Но давай вернёмся к нашим примерам. E>1) Взрыв QSort'а. E>Алгоритм совершенно замкнут в себе. Зависимостей нет никаких. Мы подогнали какие-то данные и получили на них не O(N log N), а O( N*N ). E>Данные -- массив чисел типа double. E>Что делаем дальше?
E>2) Сжатие RLE картинки. Опять же замкнутый в себе алгоритм. Чё за зависимости нам надо выявить?
I>>Ну чиркай себе на бумаге. У меня обычно с собой блокнот есть для такого, и карандаш и нож для заточки карандаша E>Ну на распечатке можно писать камменты к коду, а не просто камменты к бумажке...
...
Сорри что влезаю но меня подобные вопросы вполне интересуют я просто не заметил что народ от скобочек перешел к чему-то полезному.
Для начала я не вижу никакой пользы в распечатке кода. Совсем. Пробовал — не помогает. Много рисунков на бумажке с конфигурациями и как они влияют на части алгоримов — да. Я даже искренне жалею что в код нельзя вставить картинку. Щас работа связана с 2Д геометрией и 2Д картинка поясняющая случай, который в данном месте обрабатывается видеть было бы очень неплохо. Юнит-тест используется как маленький int main() чтобы быстро зайти отладчиком внутрь алгоритма и посмотреть как оно там. Если сложность склепать тест превышает некоторую или есть более легкий способ загнать нужный кейс в отладчик то юниттест идет лесом.
Чего вы там с распечаткой делаете ?
Видел реальный случай — чел ползал по простыне кода 3 месяца. Расрисовал ascii псевдографикой и комментариями весь файл и ... ничего. То есть совсем.
Здравствуйте, vladimir.vladimirovich, Вы писали:
VV>Потому что 80 символов — это ограничение на уровень говнокодовости написаного.
На С++ с шаблонами и тамошними template, typename очень сложно бывает въехать в 80 символов.
Здравствуйте, Pzz, Вы писали:
I>>Я ж сказал — компьютер один на троих-четверых.
Pzz>Я так понял по твоему изначальному рассказу, что там target один на троих-четверых, а не host.
Там было сказано про компьютер и про разрабатываемую станцию
Pzz>У вас что, писюков в достаточном количестве не было? Круто.
Не было и это ни разу не общага.
Pzz>Написать эмулятор под конкретную задачу заметно проще, чем универсальный эмулятор. I>>На то время, это было более 10 лет назад, подобные эмуляторы были только как внутренний софт у контор вроде Intel. Pzz>Я работал в чиподельческой конторе (значительно более мелкой, чем Интел), в которой был эмулятор ихнего железа. Собственно, сначала был написан эмулятор чипа, потом софтварий, потом уже и чип появился. Я даже embedded linux на этом эмуляторе запустил, было прикольно
Сколько бы тебе времени пришлось писать эмулятор, на котором можно будет отлаживать биос и софт для диагностики целого семейства многопроцессорных систем ?
Re[33]: Перешёл на личности -- сам знаешь, что значит ;)
Здравствуйте, Pzz, Вы писали:
I>>У Егора задача простая — доказать, что для вычисления инвариантов цикла обязательно нужна бумажка с распечатаным на ней кодом.
Pzz>Я согласен с Егором. Вообще, на бумажке думать можно, на компьютере — нет. Его электромагнитное излучение парализует мозги
Я уже заметил, что у тебя мозг парализован.
Думать можно только головой, а не на бумажке.
Егор ни мало ни много, утверждает, что распечатка кода есть необходимое условие решения задачи
Re[34]: Перешёл на личности -- сам знаешь, что значит ;)
Здравствуйте, Ikemefula, Вы писали:
I>Сколько бы тебе времени пришлось писать эмулятор, на котором можно будет отлаживать биос и софт для диагностики целого семейства многопроцессорных систем ?
От трех дней до нескольких лет. Это очень зависит от того, сколь сложна архитектура системы и сколько всего полезного должен уметь делать эмулятор помимо возможности просто запускать на нем софтварий
Здравствуйте, Pzz, Вы писали:
I>>Скажи честно, для чего по твоему используется юнит-тестирование ?
Pzz>Для того, чтобы размазать ответственность за провал проекта по неопределенному кругу лиц.
Покажи, какую ответственность этот чел размазывает и обозначь круг лиц.
Юнит-тесты решают четко обозначеный перечень задач. Ликбез находится в книге автора, которого я указал. Более того, книгу можно глянуть в гугле и даже почитать значительную часть.
"размазывание ответсвенности" у тебя в голове. Удивляюсь, из какого махрового заповедника ты вылез ?
Re[35]: Перешёл на личности -- сам знаешь, что значит ;)
Здравствуйте, Pzz, Вы писали:
I>>Егор ни мало ни много, утверждает, что распечатка кода есть необходимое условие решения задачи
Pzz>Егор утверждает не более того, что существует класс людей, для которых распечатка полезна, и он принадлежит этому классу.
Здравствуйте, Pzz, Вы писали:
I>>Сколько бы тебе времени пришлось писать эмулятор, на котором можно будет отлаживать биос и софт для диагностики целого семейства многопроцессорных систем ?
Pzz>От трех дней до нескольких лет. Это очень зависит от того, сколь сложна архитектура системы и сколько всего полезного должен уметь делать эмулятор помимо возможности просто запускать на нем софтварий
Нужна эмуляция процессора, портов, памяти + все устройства, вроде ЦАП, АЦП и тд. Кроме того, нужна эмуляция сбоев на каждом из устройств. Еще нужно учитывать примерно десяток различных конфигураций на разные модули системы, всего модулей не более десятка. Каждый модуль это однопроцессорная система. Модулей в системе может быть до ста штук примерно.
Здравствуйте, Ikemefula, Вы писали:
I>Нужна эмуляция процессора, портов, памяти + все устройства, вроде ЦАП, АЦП и тд. Кроме того, нужна эмуляция сбоев на каждом из устройств. Еще нужно учитывать примерно десяток различных конфигураций на разные модули системы, всего модулей не более десятка. Каждый модуль это однопроцессорная система. Модулей в системе может быть до ста штук примерно.
Процессоры разные бывают, ровно как и ЦАП, АЦП и т.д.
Здравствуйте, Ikemefula, Вы писали:
E>>Не понял, что гуглишь? Вот у тебя есть массив из 10 000 чисел и какая-то реализация QSort, как ты понимаешь, QSort, это на самом деле целое семейство алгоритмов.
I>Сначала был Qsort, щас уже конкретная модификация, чуть позже у тебя появятся еще какие то уточнения в условии
Ну ты же всегда имеешь дело с конкретной реализацией? I>Гуглишь сначала по своей модификации, ищешь реализацию. Нет своей — ищешь подходящую. Проверяешь, сравниваешь результаты. I>Не можешь гуглить — поищи код, например в crtl, главное что бы этот код был оттестирован и мог являться эталоном.
Ну я же тебе сказал, что для простоты считаем, что у нас код реализации QSort полностью доступен. Зачем что-то гуглить-то I>На это уйдет от силы час.
Ха, за час можно уже всё отладить...
I>Дальше тебе нужно взять отладчик, раскрыть дамп в каком редакторе и проверить, что не так.
А вот с этого места начинается интересное. Что именно ты планируешь делать с дампом и что именно в редакторе?
I>То есть, проанализировать код и найти ошибку.
Ну так вот место-то и есть самое интересное. Как анализировать-то? Я, например, именно для такого анализа распечатки и использую...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[41]: Перешёл на личности -- значит таки слил... ;)
Здравствуйте, Ikemefula, Вы писали:
I>Опаньки, снова изменение условия задачи.
Я тебе с самого начала пишу, что мы знаем последовательность на которой взорвались и код реализации...
E>>ЧТО ДЕЛАЕМ ДАЛЬШЕ?
I>Дальше см. другое сообщение. Но ты понмаешь, что изменил условие по ходу задачи ?
Ну то, что нужно делать ДО этапа "анализируем код и находим ошибку" просто и линейно... Чего там обсуждать-то?
I>Анализируешь код и исправляешь. Не помогло — анализируешь дальше и так до победы. По ходу анализа у тебя обязательно появятся новые тесты. I>Естественно, тесты не должны вносить доп. сложность.
А вот как процесс анализа-то происходит?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[41]: Перешёл на личности -- значит таки слил... ;)
Здравствуйте, Ikemefula, Вы писали:
I>Предикаты, пред и пост условия отлично вставляются в редакторе кода.
Правда, что ли? И как ты вставляешь знак интеграла, например? Или, хотя бы знак суммы? А кванторы?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Pzz, Вы писали:
I>>Нужна эмуляция процессора, портов, памяти + все устройства, вроде ЦАП, АЦП и тд. Кроме того, нужна эмуляция сбоев на каждом из устройств. Еще нужно учитывать примерно десяток различных конфигураций на разные модули системы, всего модулей не более десятка. Каждый модуль это однопроцессорная система. Модулей в системе может быть до ста штук примерно.
Pzz>Процессоры разные бывают, ровно как и ЦАП, АЦП и т.д.
Здравствуйте, Erop, Вы писали:
I>>Сначала был Qsort, щас уже конкретная модификация, чуть позже у тебя появятся еще какие то уточнения в условии E>Ну ты же всегда имеешь дело с конкретной реализацией?
И что с того? Если есть алгоритм на С++ какой то, вроде qsort, я не знаю где ждать ошибки.
Процедура стандарная — найти выборку, выделить алгоритм и выборку в тест, подменить алгоритм после чего точно будет видно, где именно ошибка.
I>>Гуглишь сначала по своей модификации, ищешь реализацию. Нет своей — ищешь подходящую. Проверяешь, сравниваешь результаты. I>>Не можешь гуглить — поищи код, например в crtl, главное что бы этот код был оттестирован и мог являться эталоном. E>Ну я же тебе сказал, что для простоты считаем, что у нас код реализации QSort полностью доступен. Зачем что-то гуглить-то
Ты много чего говорил и менял условие
I>>Дальше тебе нужно взять отладчик, раскрыть дамп в каком редакторе и проверить, что не так. E>А вот с этого места начинается интересное. Что именно ты планируешь делать с дампом и что именно в редакторе?
Дамп нужно представить в читаемом виде. Я не умею читать даблы в hex. Дальше код запускается в отладчике и проверяешь все что тебе нужно.
I>>То есть, проанализировать код и найти ошибку. E>Ну так вот место-то и есть самое интересное. Как анализировать-то? Я, например, именно для такого анализа распечатки и использую...
Ну используй, тебе разве ктото мешает ? Ты ведь рассказываешь, что без бумажки никуда.
И при этом, как выяснилось, тебе нужны и полуавтоматические средства и некое более удобное представление нежели код и все только для того, что бы бумажка с кодом помогать начала.
Re[42]: Перешёл на личности -- значит таки слил... ;)
Здравствуйте, Erop, Вы писали:
I>>Опаньки, снова изменение условия задачи. E>Я тебе с самого начала пишу, что мы знаем последовательность на которой взорвались и код реализации...
Это враньё. Вот твое условие — " борьба со взрывами QSort на каких-то специфичных данных"
E>>>ЧТО ДЕЛАЕМ ДАЛЬШЕ?
I>>Анализируешь код и исправляешь. Не помогло — анализируешь дальше и так до победы. По ходу анализа у тебя обязательно появятся новые тесты. I>>Естественно, тесты не должны вносить доп. сложность.
E>А вот как процесс анализа-то происходит?
Походу, надо ждать вопросов вроде "а ты знаешь, что такое инвариант цикла ?"
Вобщем, сходи погуляй ?
Re[42]: Перешёл на личности -- значит таки слил... ;)
Здравствуйте, Erop, Вы писали:
I>>Предикаты, пред и пост условия отлично вставляются в редакторе кода. E>Правда, что ли? И как ты вставляешь знак интеграла, например? Или, хотя бы знак суммы? А кванторы?
Опаньки ! Тебе снова нужно нечто отличное чем код
Нет никакой необходимости все это писать на бумажке с кодом.
Не нужна для этого распечатка вообще.
Формулы, диаграмы — что угодно, нужны, распечатка — не нужна.
Re[39]: Перешёл на личности -- значит таки слил... ;)
Здравствуйте, SleepyDrago, Вы писали:
SD>Сорри что влезаю но меня подобные вопросы вполне интересуют я просто не заметил что народ от скобочек перешел к чему-то полезному. SD>Для начала я не вижу никакой пользы в распечатке кода. Совсем. Пробовал — не помогает. Много рисунков на бумажке с конфигурациями и как они влияют на части алгоримов — да. Я даже искренне жалею что в код нельзя вставить картинку.
Ну и вообще много чего нельзя вставить без геморра.
Но в любом случае писать картинки/заметки в коде или в данных — это примерно одно и то же. Мне просто удобнее непосредственно код комментировать.
SD>то юниттест идет лесом.
Суть тестов не в этом. Это некая гарантия того, что код всё ещё выполняет свой контракт. Полезно при рефакторинге, например.
SD>Чего вы там с распечаткой делаете ?
Ну я доказываю про код разные факты. Обычно есть конкретная задача. Ну, например, найти причину какого-то поведения. Ну вот и доказываем разные факты про код, пока не докажем нужный
SD>Видел реальный случай — чел ползал по простыне кода 3 месяца. Расрисовал ascii псевдографикой и комментариями весь файл и ... ничего. То есть совсем.
Это, скорее всего, не то. Обычно ползать надо не по простыне, и недолго
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
I>Процедура стандарная — найти выборку, выделить алгоритм и выборку в тест, подменить алгоритм после чего точно будет видно, где именно ошибка.
Интересно. Положим я заменю один qsort на другой. И на жругой реализации qsort на ЭТОЙ КОНКРЕТНОЙ выборке взрыва не будет.
Что делаем дальше?
I>Ты много чего говорил и менял условие
1) Это тут не важно
2) У нас, похоже, было некое взаимное непонимание. Я под отладкой взрыва имел в виду именно поиск особенности алгоритма, а ты всякие предшествующие шаги. Предшествующие шаги тут понятны и тривиальны. Их я обсуждать вообще не собирался.
I>Дамп нужно представить в читаемом виде. Я не умею читать даблы в hex. Дальше код запускается в отладчике и проверяешь все что тебе нужно.
Ну данные -- это 10 000 чисел double, или int, не важно.
Итак, у тебя есть код в отладчике, данные из 10 000 чисел и алгоритм, который выполняет 100 000 000 итераций, вместо 150 000 ожидаемых
Что делаем дальше?
I>Ну используй, тебе разве ктото мешает ? Ты ведь рассказываешь, что без бумажки никуда.
Нет, я утверждаю другое. Есть задачи такого сорта, где работа с распечаткой кода -- самый эффективный метод...
I>И при этом, как выяснилось, тебе нужны и полуавтоматические средства и некое более удобное представление нежели код и все только для того, что бы бумажка с кодом помогать начала.
Ну это всё рутина же. А "более удобное представление" нужно редко. Обычно достаточно начать смтроить формальное доказательство алгоритма и ограничивающие функции циклов...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[43]: Перешёл на личности -- значит таки слил... ;)
Здравствуйте, Ikemefula, Вы писали:
I>Это враньё. Вот твое условие — " борьба со взрывами QSort на каких-то специфичных данных"
Так это и есть борьба. Сначала мы детектируем проблему. Что программа не просто зависла, а взорвался такой-то алгоритм.
А потом нам надо как-то понять что такое сделать, чтобы представить гарантии того, что больше не взорвётся...
I>Походу, надо ждать вопросов вроде "а ты знаешь, что такое инвариант цикла ?"
Я надеюсь, что знаешь. Я тебе уже писал про то что
1) надеюсь, что ты знаешь
2) Если паки чаяния нет, то давал ссылку где посмотреть.
Ну я тебе объяснил уже много раз, что нетривильные алгоритмы МНЕ удобно доказывать, работая с распечаткой.
А как это делаешь ты?
I>Вобщем, сходи погуляй ?
Зачем грубить-то?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском