|
|
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
Допустим. Есть просто алгоритм, который проходит все значения в Массиве А и сравнивает со всеми значениями в Векторе Б. То есть для каждого элемента из А, ищет похожий в Б, и так далее. Удаляет, модифицирует, не важно. (теперь забудьте о терминах). 1. Как доказать аналитически что данный алгоритм работает так, как предполагается? (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива") 2. Может в таких ситуациях и нужен JUnit, Mockito в Java? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 16:35:41 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
Mockito здесь вообще не нужен. Ну просто ни разу не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 17:41:05 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
Правильный ответ на этот вопрос - показать набора продуманных модульных тестов. Здесь как применяется JUnit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 18:02:57 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
Если очень хочется, можно применить какой-нибудь анализатор тестового покрытия и показать - вот дескать, у меня проверяются все if! https://github.com/cobertura/cobertura - вроде бы она умеет делать такой анализ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 18:04:58 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
eldarkaa 1. Как доказать аналитически что данный алгоритм работает так, как предполагается? (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива") Не существует аналитического доказательства которое-бы подтвердило что произвольный алгоритм работает правильно. Модульные тесты лишь охватывают некое подмножество входных данных и УТВЕРЖДАЮТ что для них этот алгоритм даёт верный ответ. Эти штуки покрывают 99% запросов бизнеса по юнит-тестированию. Попытка-же втолкнуть в утверждения формулу или более сложное выражение порождает новую проблему а именно - как проверить проверяющего и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 18:10:56 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
eldarkaaлогика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива"Попросите его указать, в каких частях массива не работает "мало сравнений". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 18:23:58 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
eldarkaa 1. Как доказать аналитически что данный алгоритм работает так, как предполагается? "Аналитически" это путём вычислений и умозаключений. "Допустим массив имеет длинну N..." и понеслась. Доказательство правильности алгоритма не гарантирует правильность его реализации и работы на отдельно взятом языке программирования в отдельно взятой среде выполнения. eldarkaa (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива") "много" и "все работает" - не технические термины. "много" может быть достаточно велико, что никаких накопителей не хватит. Конечно не будет работать. "все" не есть результат работы алгоритма. eldarkaa 2. Может в таких ситуациях и нужен JUnit, Mockito в Java? Нет. Юнит-тесты проверяют ограниченые единицы кода, позволяя выявлять проблемы, вызваные изменениями, но не обнаруживаемые компилятором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 18:35:55 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
Может быть речь о формальной верификации алгоритмов, там смутно припоминается что то предусловие, постусловие, инвариант вместе с фамилиями типо Дейкстры :-) Или не то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2013, 20:21:50 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
eldarkaaДопустим. Есть просто алгоритм, который проходит все значения в Массиве А и сравнивает со всеми значениями в Векторе Б. То есть для каждого элемента из А, ищет похожий в Б, и так далее. Удаляет, модифицирует, не важно. (теперь забудьте о терминах). 1. Как доказать аналитически что данный алгоритм работает так, как предполагается? (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива") Доказать правильность алгоритма возможно для любого алгоритма. Гуглить по словам "Доказательное программирование". Только время на доказательство правильности алгоритма уйдет гораздо больше, чем на сам алгоритм. Грубо говоря - "Проще сделать, чем доказать, что сделано правильно" eldarkaa 2. Может в таких ситуациях и нужен JUnit, Mockito в Java? Э-э-э скажем так: Область определения и область значений функции это не одно и то же что и функция. Аналогично с Юнит-тестами. Вы определяете только "область определения" и "область значения" алгоритма. Верность или не верность алгоритма вы определить не можете. Т.е. то что у вас нужная "функция" вы не знаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2013, 08:08:23 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
Ахахаха! Формальная Верификация(wiki) - по ссылкам от Доказательного программированияДоказательство может быть автоматизировано полностью лишь для очень небольшого круга простых теорий , поэтому важное значение получает его автоматическая проверка и для этого преобразование к проверяемому виду. Для поддержания строгости при проверке доказательства верификатором следует проверить ещё и верификатор, для чего нужен ещё один верификатор и так далее. Получившуюся бесконечную цепь верификаторов можно было бы свернуть, построив верифицирующий себя верификатор, обладающий способностью развернуться до применимого на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2013, 12:07:49 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
да спасибо тем, кто отвечал, думал тема утонет. Сегодня утром пробежал по ссылкам и понял, что для моей мини-программы писать верификторы или воспользоваться автоматическим доказательством — доказательство, реализованное программно,в основе лежит аппарат математической логики и теория ИИ, не вариант. Пожалуй пойду поучу JUnit (и еще одного найденного зверя Java PathFinder), может этого будет достаточно для решения вопроса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2013, 12:25:23 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
Забей в кальян в ebook JUnit. Покури и будет тебе щастьте. Реально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2013, 13:05:36 |
|
||
|
Простой алгоритм.
|
|||
|---|---|---|---|
|
#18+
eldarkaaда спасибо тем, кто отвечал, думал тема утонет. Сегодня утром пробежал по ссылкам и понял, что для моей мини-программы писать верификторы или воспользоваться автоматическим доказательством — доказательство, реализованное программно,в основе лежит аппарат математической логики и теория ИИ, не вариант. Пожалуй пойду поучу JUnit (и еще одного найденного зверя Java PathFinder), может этого будет достаточно для решения вопроса... Об чем и речь ;-) Доказательное программирование умерло не успев родиться. TDD и в частности JUnit "повеселее", но не гарантирует "правильности" программы. Только то, что программа проходит тесты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2013, 13:48:40 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38371077&tid=2128779]: |
0ms |
get settings: |
18ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
45ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 379ms |
| total: | 583ms |

| 0 / 0 |
