2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 10  След.
 
 
Сообщение12.02.2006, 11:37 
Экс-модератор


12/06/05
1595
MSU
Цитата:
Я бы не очень доверял всяким Lingvo...

Лингво - это не переводчик. Ему нельзя дать некий текст, чтобы он его переводил туда-сюда.
Лингво - это огромного размера электронный словарь, включающий в себя кучу других (оцифрованных бумажных) словарей, в частности
"Англо-русский словарь по вычислительной технике и программированию (The English-Russian Dictionary of Computer Science): 52 тыс. статей. — 5-е изд., испр. и доп.
© ABBYY Software Ltd, Масловский Е.К., 2004"
Именно отсюда и взята статья с переводом literate programming как "грамотное программирование". Мне кажется, этому переводу вполне можно доверять.

 Профиль  
                  
 
 
Сообщение12.02.2006, 11:38 
Заслуженный участник
Аватара пользователя


23/07/05
17976
Москва
Cube писал(а):
bekas писал(а):
...Если хотите повеселиться, попробуйте
через Lingvo или любой другой переводчик выполнить двойной перевод:
с русского на английский, а потом этот же текст с английского на русский.
Для примера можно взять незабвенные строки Некрасова:
"Однажды в студеную зимнюю пору я из лесу вышел..." и так далее еще строк 15...

Если 2 человека-переводчика не будут знакомы с этими "незабвенными строками", то результат двойного перевода будет отличаться от оригинала. Особенно, если
Цитата:
усилить цепочку


Я когда-то читал о подобных экспериментах с высококвалифицированными переводчиками. После цепочки из десятка переводов фраза "плоть слаба, но дух крепок" превратилась в"пиво крепкое, а мясо протухло". Но подробностей я уже не помню.

 Профиль  
                  
 
 кошмарная ошибка в С++
Сообщение17.02.2006, 15:41 


02/08/05
55
если смотришь на монитор вполоборота, а клавиша залипает, набить == вместо = . правда нашел быстро.

 Профиль  
                  
 
 
Сообщение20.02.2006, 08:55 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Вспомнил проблему, с которой боролся три дня -- упорно и всерьез. Надо было построить пересечение ломанных. Есть достаточно стадартный алгоритм построения пересечения семейства отрезков (см., например, Препарата Ф., Шеймос М. — Вычислительная геометрия: введение). Честно выписал, все работает -- ну просто замечательно. Я, как человек честный, продолжаю тестировать. Поставил 101-угольник (через пятую вершину). Бум -- не работает. Сталю 15-угольник -- все класс. И так -- три дня подряд. А с 101 угольником разбираться ой как не хочется, там и отрезков, и отрезков в пересечении -- до полного удовольствия. И все таки пришлось. Оказалось, что существенным являются ошибки округления. Если брать идеальные вещественные числа -- алгоритм из книжки работает на ура. Но в жизни... а тем более если все приводить к целочисленной сетке, -- приходиться думать головой, и аккуратно выписывать каждый шаг алгоритма с учетом оных ошибок.

 Профиль  
                  
 
 
Сообщение14.03.2006, 01:58 
Аватара пользователя


13/03/06
36
Урал
bekas писал(а):
to Debiloid:

Есть классическое определение отлаженной программы: это программа, для которой
не наступили еще условия, при которых она не работает. А то, что такие условия
наступят - будьте уверены, это как приход налогового инспектора.

Это следует из простого подсчета всевозможных логических путей прохождения алгоритма,
число которых в случае достаточно нетривиального алгоритма практически
бесконечно, а следовательно такой алгоритм нельзя протестировать на все 100 процентов.
Тому есть много примеров, как, например, космические корабли улетали в никуда
из-за элементарных ошибок программирования, вовремя не оттестированных.

И тут не помогут никакие методы a-la автоматического доказательства
правильности программ. Мы можем только надеяться, что наша программа будет
работать только в ОПРЕДЕЛЕННЫХ УСЛОВИЯХ.

:idea: Можно, можно написть программу свободную от ошибок, конечно, если не учитывать за ошибки сам код (кто-то даже денег предлогал, если програма проанализированная их анализатором окажется идиальной), в смысле - рельную прогу, и вероятность ошибки свести к ничтожно малой величине, т.е. свести её в разряд теоретических. Речь идёт именно о программной реализации, а не о способе трансляции алгоритма системой.

 Профиль  
                  
 
 ОТЛАЖЕННАЯ ПРОГРАММА
Сообщение06.04.2006, 13:02 
Заблокирован


06/04/06

14
WDU
ОТЛАЖЕННАЯ ПРОГРАММА

В УЧЕБНИКАХ по ИНФОРМАТИКЕ [url]http://bak2.narod.ru/tests/infogl.htm[/url] имеется определение "ОТЛАЖЕННЫХ" программ. :oops:

ПРОГРАММА - СОДЕРЖИТ ОШИБКИ, если она дает сбои, отказы либо неправильные результаты Для утверждений о наличии ошибок в программе нужно указать тест, на котором программа выдаст сбой, отказ либо направильный результат. :!:

ПРОГРАММА - НЕ СОДЕРЖИТ ОШИБОК, если она дает только правильные результаты для любых допустимых исходных данных. Для обоснования таких утверждения нужно предоставлять доказательства.

ПРОГРАММА ПОЛНОСТЬЮ ОТЛАЖЕНА, если она более НЕ СОДЕРЖИТ ОШИБОК. Есть люди, которые умеют проводить отладку программ до конца, и есть люди, которые не умеют проводить отладку до конца.

ПРИМЕРЫ ПРОГРАММИСТОВ, умеющих проводить отладку программ до конца - СТУДЕНТЫ МЕХМАТА МГУ, побеждающих в четвертьфиналах и финалах Чемионатов по Программированию.

В ЧЕМПИОНАТАХ по Программированию засчитываются только полностью отлаженные программы. Программы, которые дает сбои, отказы либо неправильные результаты автоматически отклоняются.

ШУРА-БУРА в Чемпионатах по Программированию никогда не участвовал. Не понятно - за что ему дали Ленинскую Премию, если в его пакетах все программы содержали ошибки :?:

ПРАВДА, в ту пору учебников по информатике не читали, поскольку их начали писать и издавать только после 1985г.

ПЕРВЫЙ ИЗ УЧЕБНИКОВ по "ИНФОРМАТИКЕ" написан мехматянином А.П.Ершовым, предложившим концепцию "ДОКАЗАТЕЛЬНОГО ПРОГРАММИРОВАНИЯ" - написания программ с доказательствами их правильности.

ПИСАТЬ ПРОГРАММЫ одновременно с доказательствами могут только математики. Они и побеждают в Чемпионатах по Программированию в Москве, России и Европе. :lol:

 Профиль  
                  
 
 
Сообщение06.04.2006, 17:00 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Вы не откажете в любезности уточнить приоритеты? Кто все-таки предложил концепцию доказательного программирование -- Ершов или Дейкстра? И в каких именно работах?

Кстати, лично я предпочитаю другое определение ошибки в программе -- когда программа выдает результат, не соответствующий ожиданиям пользователя. Из книжки Myers G.J. — Art of Software Testing. Есть и ее русский перевод (Майерс -- "Искусство тестирования программ").

 Профиль  
                  
 
 ДОКАЗАТЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
Сообщение07.04.2006, 13:03 
Заблокирован


06/04/06

14
WDU
ДОКАЗАТЕЛЬНОЕ ПРОГРАММИРОВАНИЕ

ТЕРМИН "Доказательное Программирование" в оборот ввел А.П.Ершов, опубликовав доклад на эту тему в трудах Академии Наук СССР в 1984г.и провел в Леннграде первый семинар по "Доказательному Программированию" в декабре 1984г.

Э.ДИЙКСТРА ввел в оборот термин "СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ" в 1969г, показав, что для структурированых программ можно систематическим образом составлять доказательства правильности.

ПЕРВОЙ КНИГОЙ по доказательному программированию можно назвать "ДИСЦИПЛИНУ ПРОГРАММИРОВАНИЯ", в которой Э.Дийкстра представил целую серию алгоритмов и программ с доказательствами их правильности.

ШУРА-БУРА присутствовал на Семинаре А.П.Ершова в Ленниграде в 1984г и наверняка читал статьи и книги Дийкстры, а, следовательно, знаком с программами, для которых имеются доказательства их правильности.

УТВЕРЖДЕНИЕ "Все Программы содержит ошибки" легко опровергается. Это демонстрируют студенты МГУ, побеждающие на чемпионатах по программированию. Математик такое утверждение себе позволить не может.

Программист может, но цена программисту, пишущему программы с ошибками, не высока. Поэтому крупнейшие фирмы на перебой сражаются за победителей чемпионатов по программированию.

Первая Книга "ОСНОВЫ ДОКАЗАТЕЛЬНОГО ПРОГРАММИРОВАНИЯ" был написана в МИЭМ одновременно с рукописью нашего первого учебника по информатике по подсказке А.А.Ершова.

А.П.Ершов на Первом Семинаре по "Доказательному Программированию" задал вопрос - когда студентов нужно учить писать программы без ошибок и когда - с ошибками?

Ответы Лаврова С.С. и других ведущих ученых были "Нужно сразу учить писать программы без ошибок" и мы были обречены писать школьный учебник на базе Ершовского определения доказательного программирования.

ПИСАТЬ ПРОГРАММЫ без ошибок можно. Это не так уж и сложно. Быстрее всех это осваивают математики, поскольку они обучены составлять доказательства.

НА ФАКУЛЬТЕТЕ Прикладной Математики МИЭМ все студенты писали все свои программы вместе с доказательствами правильности по завершении отладки на ЭВМ с 1982 по 1988гг.

ПЕРВЫЙ УЧЕБНИК по информатике с обязательным составлением структурированных алгоритмов и доказательств правильности программ был издан в МИЭМ в 1985г и разошелся по всем московским школам.

В 1987г. это учебное пособие победило на конкурсе школьных учебников и в 1989г. он разошелся по всему Советскому Союзу.

УЧЕБНИК МГУ по информатике А.Г.Кушниренко также содержал изложение элементов техники доказательства правильности программ.

ИТОГИ: все учебники информатики в соответствии со стандартами образования содержат изучение основ алгоритмизации и структурного программирования.

ОТСЮДА не нужно удивляться, все наши студенты-программисты превосходят американских студентов, которые не изучаюли основ информатики по А.П.Ершову

В.А.Каймин, профессор, доктор наук, автор
школьных и вузовскх учебников информатики
http://bak2.narod.ru/inform.html

 Профиль  
                  
 
 
Сообщение07.04.2006, 17:40 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Итого: Идея принадлежит Дейкстре (Dijkstra E.W.: Guarded Commands, nondeterminancy and the formal derivation of programs, 1975; Discipline of Programming, 1976), учебник -- Грису (Gries D.: The Science of Programming, 1981), термин -- Ершову... Ну, а приоритет, понятное дело, России, как же без этого. Кстати, роль Андрея Петровича была очень велика в популяризации, демократизации программирования. Он, например, выступил с програмным лозуногом "Программрование -- вторая грамотность" в 1980 (более поздние версии этой статьи есть в Квант №2, 1983, но прозвучало это впервые как доклад в 1980 в Ленинграде), и редактировал перевод Гриса, вышедшего в 1984 -- как видите, еще до семинара... Человек действительно сделавший удивительно много.

Что же касается того, что в доказанных программах нет ошибок, то это, увы, не вполне корректное утверждение. Их меньше. Но, сходите на соседнний форум, и Вы увидите количество ошибок в доказательствах математических фактов. Почему же в доказательствах программ их должно быть меньше? Программы больше, они сложнее. Их пишут зачастую десятки и сотни людей многие годы (это не олимпиадные задачи на 3-6 часов). Кроме того, они функционируют в изменяющихся условиях эксплуатации. Попробуйте доказать теорему, условия которой меняются! Поэтому аксиомы Шура-Буры верны и сейчас, и в России:

1) в каждой программе есть хотя бы одна ошибка.
2) если ошибки нет, то неверен алгоритм.
3) если и алгоритм верен, то программа никому не нужна.

Откуда у Вас, кстати, такая резкость по отношению к М.Р. Шура-Бура? ("""за что премию дали?""") Михаил Романович сделал ТА-2М еще до того, как Вы, Виталий Адольфович, кончили институт. Думаю, что многие его пакеты были написаны и до Дейкстры, и до Гриса.

 Профиль  
                  
 
 ДОКАЗАТЕЛЬСТВА и ОПРОВЕРЖЕНИЯ ПРАВИЛЬНОСТИ ПРОГРАММ
Сообщение10.04.2006, 13:57 
Заблокирован


06/04/06

14
WDU
ОПРОВЕРЖЕНИЯ И ДОКАЗАТЕЛЬСТВА ПРАВИЛЬНОСТИ ПРОГРАММ

ИСКАТЬ ОШИБКИ в доказательствах или в программах. Вот в чем вопрос :?:

ОШИБКИ в доказательствах ищут математики. ВОПРОС: можно ли автоматизировать поиск ошибок в доказательствах :roll: :?:

ОШИБКИ в программах обычно ищут тестированием на ЭВМ. В Microsoft и IBM процессы тестирования программ автоматизирован. С их помошью автоматизирован процесс поиска ошибок на чемпионатах по программированию.

НА ФИРМЕ MICROSOFT используется мощнейший тестирующий комплекс. В книгах по технологии разработок MICROSOFT предложена оригинальная типология ошибок. В том числе "НЕИСПРАВЛЕННЫЕ" и "НЕИСПРАВИМЫЕ" :!: :?:

В КОРПОРАЦИИ IBM использется не только тестирование программ на ЭВМ, но и их аттестация исходных текстов программ на соответствие проектной документации (технология Clean Room).

ТЕХНОЛОГИЯ Clean Room была поставлена в IBM в начале 70-ых годов после провала план-графика и огромного числа ошибок в OS/360, которую глубокоуважэаемый М.Р. локализован в НИЦЭВТ, за что и был удостоин высокой награды. 8-)

СОГЛАСНО СТАТИСТИКИ корпорации IBM технология Clean Room - это технология коллективной разработки, при которой число ошибок снижается до 2-3 на 1000 операторов вместо 2-3 ошибок на 100 операторов при обычной практике.

ЕСТЕСТВЕННО, что на первых Чемпионатах мира по программированию американские команды студентов-программистов побеждали студентов из других стран. Но вот уже более 5 лет российские команды явно переигрывают американских студентов. Почему :?:

СПЕЦИФИКАЦИИ ПРОГРАММ - основной инструмент для анализа правильности программ. В корпорации IBM роль спецификаций выполняет проектная документация. На чемпионатах - математические постановки задач, позволяющие оценить правильность результатов.

ОТСУТСТВИЕ СПЕЦИФИКАЦИЙ не дает возможности оценить правильность результатов и как следствие - правильность алгоритмов и программ. Оценка ошибок становится субъективной (о чем и говорил Майерс).

МАТЕМАТИКОВ обучают писать доказательства, а ИНЖЕНЕРОВ - писать специафикации и проектную документацию. Их Соединение - ИНЖЕНЕРЫ-МАТЕМАТИКИ, которых учат писать и доказательства и проектную документацию. :roll:

КОНЕЧНО ОШИБКИ проникают и в программы и в доказательства их правильности. Здесь и помогает разделение труда - одни пишут, другие проверяют, третьи утверждают.

ВОПРОС в том - кто умеет писать спецификации - тот и прав. Спецификации - это эталон для проверки правильности программ. :idea:

КНИГ О "ДОКАЗАТЕЛЬНОМ ПРОГРАММИРОВАНИИ" на английском языке автору не известно. О "СТРУКТУРНОМ ПРОГОРАММИРОВАНИИ" известны, о "ДИСЦИПЛИНЕ ПРОГРАММИРОВАнИЯ" известны.

ТАК ПОЧЕМУ студенты мехмата МГУ побеждают на последних олимпиадах и чемпионатах по программированию :?:

В.А.Каймин, профессор, доктор компьютерных наук, автор учебного пособия "Основы Доказательного Программирования", М, МИЭМ, 1987.

Вам замечание за чрезмерное употребление жирного шрифта и больших букв. Пожалуйста, делайте ваши сообщения более пригодными для чтения.
Dan_Te

 Профиль  
                  
 
 
Сообщение12.04.2006, 07:04 


27/03/06
24
На мой взгляд ,нужно рассматривать две ветви данной проблемы :
1) правильность изложения алгоритма на каком-либо языке (я считаю,что это вполне возможно);
2) определение множества входных данных ,на которых программа будет работать корректно.
(напр. метод Гаусса может перестать работать на плохо обусловленных системах,
что связано не с фатальными дефектами самого алгоритма , а с конечностью разрядной сетки)

А из ошибок в программах мне вспоминаются две самые кошмарные.
В операторе SET COLOR TO ... я пропустил TO .Компилятор проглотил это ,при выполнении
пошли ошибки типа :файл не открыт,или цикл не закрыть и еще какие то.

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

 Профиль  
                  
 
 ОШИБКА ОШИБКЕ РОЗНЬ
Сообщение12.04.2006, 13:05 
Заблокирован


06/04/06

14
WDU
ОШИБКА ОШИБКЕ РОЗНЬ

СПАСИБО за коментарии. Читать с экрана телевизора очень тяжело. Шрифтовые выделения и короткие абзацы в Интернет-публикациях используются для выделения главной мысли.

Одна из главных идея Ершова в языке Алгол, а затем в алгоритмическом языке первого школьного учебника информатики, - язык публикации алгоритмов. на родном русском языке.

В технологии IBM это язык называется "псевдокод" - язык для записи структурировованных алгоритмов в лексике родного языка.

Запись программ на инородном языке трудно читать, еще более сложнее понять и еще более сложнее исправлять ошибки в записях на чужеродном языке.

Лозунг "Программирование - вторая грамотность
" из-за этого пришлось снять. Программирование на Бейсике никакого отношения к грамотности не имеет.

Документирование программ на псевдокоде - основное средство для аттестации программ у фирм-разработчиков программной продукции.

Использование "псевдокода" на фирме ИБМ привело к технической революции - к резкому снижению числа ошибок в программной продукции ИБМ

Запись алгоритмов на русском языке) была основной психолого- педагогической идей школьных учебников по информатике. :roll:

Следствие: массовое освоение основ алгоритмизации и элементов программироваия в отечественной общеобразовательной школе .

Побочный эффект использования "псевдокода" в школьных учебниках - победы наших школьников в международных олимипиадах по информатике и программированию.

Записи на языке РАЯ (русском "алгоритмическом языке") вместо записей на языке Basic или языке Ada дало понимание русскими основ программирования.

ИГРА СЛОВ. :roll: Русские и русскоязычные понимают о чем идет речь. Все остальное - это интертрепации. :?: (В смысле М.Задорновва)

А КАК ЕЩЕ объяснить- почему отечественная школа программирования систематически побеждает на Чемпионатах и Олимпиадах по Программированию :?:

Кстати. Сегодня 12 апреля 2006г. наши российские студенты опять должны переиграть американских студентов, но уже на их площадке. :oops: :?:

 Профиль  
                  
 
 
Сообщение12.04.2006, 23:45 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
От Ваших выделений (главных мыслей) -- лично у меня просто резь в глазах. А все Ваши сообщения мне напоминают слайды с лекции -- набор тезисов и несвязанных слов, требующих разъяснения и доказательства. Повтор "российские студенты выигрывают олимпиады по программированию" и витиеватый список Ваших званий и должностей таковыми не являются. """были когда-то и мы рысаками""", спорили когда-то и мы с академиками (например, с А.П. Ершовым).


1) олимпиады
A.Эйнштен писал(а):
лишь теория объясняет, что же мы ухитряемся наблюдать

Давайте рассмотрим альтернативную теорию побед российской команды. Программирование -- дисциплина прикладная. Это не астрофизика, где больших денег не сделать. Хороший программист и в России получает одну-две тысячи долларов, что совсем не плохо, не правда ли. Студента, выигравшего олимпиаду, приглашают западный фирмы на большие деньги -- это я уже Вас цитирую. То есть, начиная заниматься программированием, российский студент понимает, что светлое будущее ему обеспечено. И умные молодые люди идут заниматься программированием, готовяться к олимпиаде и т.п. Не то в Америке. Там образование рассматривается как вклад денег в будущую карьеру. И кто же будет вкладывать 50-150 тысяч доларов в образование в отрасли, которая все больше перемещается в Индию и Россию? Умные идут заниматься молекулярной биологией или физикой. Выигрыш олимпиады не дает американскому студенту практически ничего. Мораль -- вместо подготовки к олимпиаде лучше подготовиться к экзамену. Это -- конкретная отметка, средний бал, шанс найти лучшую работу и выторговать большую зарплату. Вот и побеждают лучшие русские посредственных американцев. Что ровно ничего не говорит о доказательном программировании.

2) доказательное программирование
Интересно, что в западной литературе термин такой не употребляется. Поэтому было бы социально ценно, если бы Вы дали определение, что такое "доказательное программирование". Желательно также, чтобы из него было бы сразу понятно, чем оно отличается от структурного (в понимании Гриса, Дейкстры и Хоара). Без определения термин -- это пустой звук. Написание же программ, которые можно доказывать -- это отдельная тема. Традиционные языки типа Java или С для этого подходят плохо. Лучше бы конечно, Haskell или Eiffel. На каком из них учат в России? Кстати, исследования по доказательству правильности программ на Западе ведутся, а термин "доказательное программирование" не употребляется -- с чего бы это?

3) РАЯ и иже с ней
Была такая теория у А.П. Ершова, но большого распространения не получила. Из причин я выделю три. Первая -- почти все приличные программисты худо-бедно читают по-англицки (хотя бы в объеме ОС ЕС). И поэтому запомнить два-три десятка ключевых слов для них не великая проблема. (Пользуемся же мы латинским и греческим алфавитами в математике. И ничего, никто не плачет -- а попробуйте готику от руки на лекциях пописать. :D) Вторая -- это циркуляция программ. Если Вы пишете для себя -- нет проблем, пишите хоть на амхарском или тохарском-Б. Если же Вы публикуете программу -- Вам нужно, чтобы Вас поняли носители многих языков. Поэтому я видел очень мало программ на Java с русскими идентификаторами -- хотя язык это позволяет (Java позволяет и такую экзотику, как неарабские цифры.) Третья причина связана непосредственно с особенностями русского языка. Для него характерна флексия, видоизменение слов для согласования. Почему-то многие авторы ЯП об этом забывают. В результате вместо предложений мы имеем поток слов и убогих сокращений (типа УБИСДУ -- УБрать ИСходящие ДУги). Мое мнение -- дохлая эта идея.

4) фирмы (здесь и там)
Программирование, как уже говорилось, занятие прикладное. Посему фирмы деньги счиатют. Вот и получается, что пока-что доказанная программа стоит в несколько раз дороже. И поэтому доказательство правильности программ применяется там, где это необходимо. Например, в медицине. А MS доказательством своих программ не занимается -- незачем. Автоматизация же тестирования -- необходимый, но не достаточный инструмент. Я работал с несколькими пакетами IBM в разное время, и багов там хватало. Про MS и говорить-то неинтересно -- как лежал народ под столами корчась от смеха, когда MS объявило, что из-за переполнения счетчика Win95 может повиснуть через 49 дней неперывной работы. Про то, как заставить Win95 проработать 49 дней MS предусмотрительно не сообщал. Были и другие учителя -- например "три кореша" из Rational Software. Народная мудрость рекомендавала сохраняться раз в минуту при использовании их пакетов, чтобы данные не потерять. И работали они с одним типом мыши -- авторам, по-видиммому, было неизвестно о других. Хорошо хоть, не только на компе авторов -- хотя до этого недалеко было. Зато в России -- класс. И программисты классные. Осталось только назвать крупные фирмы и заметные програмные продукты. Я готов назвать две -- Параграф (если еще независим) и ABBYY. Где же работают эти великолепные прораммисты, затыкающие за пояс всех и вся? Похоже, мало правильность программ доказывать. И олимпиады выигрывать. (Между прочим, FineReader признан едва ли не лучшим пакетом OCR -- на Западе. Я знаю и другие удачные примеры. Но их очень и очень мало.)

5) спецификации
Quis custodiet ipsos custodes? Вы можете говорить, что программа правильна, коли она соотвествует спецификации, но тогда встает вопрос о доказательстве правильности и непротиворечивости спецификации. И как это делать? И что делать, когда спецификация меняется -- а это происходит ежедневно, это нормальная часть живого бизнеса. Меняются законы (государства), меняется оборудование, появляются новые идеи, как больше продать -- и что же, ждать по году, теряя деньги? Между прочим, я умею из условия вывести программу (доказательно), но так и не понял, как из спецификации доказательно вывести структуру объектов системы. Или алгоритм. Так что спецификация, опять-таки, необходимый но не достаточный инструмент. И еще -- как Вы думаете, что Вам скажет клиент, если программа работает не так, как ему надо, а Вы ему покажете спецификацию? Пошлет Вас вместе со спецификацией... в лучшем случае -- переделывать программу. И у Вас будет четкий и недвусмысленный выбор -- переделать или забыть об этом клиенте (и многих других клиентах, любят, заразы, общаться) навсегда. """А вы толкуете о четвертом измерении"""

 Профиль  
                  
 
 
Сообщение13.04.2006, 00:04 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
КАЗАКОВ писал(а):
2) определение множества входных данных ,на которых программа будет работать корректно.

А может, лучше все-таки определить множество данных, на котором программа должна работать, а потом писать программу, которая работает правильно на нужном множестве? А то впрямь как в анекдоте -- "это гвоздь не от этой стенки!". В жизни редко дают задание "обратить матрицу методом Гаусса". В лучшем случае скажут -- обратить, и чтоб работало. А дальше -- как хочешь, так и крутись -- за минимальное время и с минимальными ресурсами, с максимальной точностью и стабильностью.

КАЗАКОВ писал(а):
1) правильность изложения алгоритма на каком-либо языке;

А кто Вам сказал, что алгоритм корректен? Хорошо, когда численные методы. А если что-либо другое? Составление программы -- это, в значительной степени, разработка алгоритма. Попробуйте найти где-нибудь, скажем, алгорифм русского переноса. Или хотя бы образования окончаний (для проверки орфографии). Между прочим, весьма актуальные задачи, за которые можно и бабки получить.

 Профиль  
                  
 
 ОТВЕТ "НЕЗВАННОМУ ГОСТЮ"
Сообщение13.04.2006, 10:53 
Заблокирован


06/04/06

14
WDU
СПАСИБО "НЕЗВАННОМУ ГОСТЮ"

СПАСИБО за информацию об отсутствии исследований по "Доказательному программированию" на английском языке.

ДОКАЗАТЕЛЬНОЕ ПРОГРАММИРОВАНИЕ согласно учебникам по информатике,
рекомендованных Мниобразом для вузов и школ, имеет следующее определение:

Доказательное программирование - это составление алгоритмов и программ для ЭВМ с доказательством отсутствия в них ошибок.

ПРОГРАММЫ БЕЗ ОШИБОК бывают. Они известны. Их можно найти в книгах и учебниках с доказательствами их правильности.

УТВЕРЖДАЮЩИЕ ОБРАТНОЕ книг Э.Дийкстры и учебников по информатике не читали. Программ без ошибок не видели. Это плохо.

СОТРУДНИКИ MS на своих конференциях прямо заявили, что доказательное программирование им не нужно. Как они писали прораммы, так и будут продолжать.

НА ОЛИМПИАДАХ и ЧЕМПИОНАТАХ победить могут только те студенты, которые могут писать программы без ошибок, либо доводить отладку программ до конца.

ПОСМОТРИТЕ ИТОГИ Полуфинала Чемпионата мира по программированию: http://neerc.ifmo.ru/regional/standings/standings-with-time.html
ПОБЕДИТЕЛИ ПОЛУФИНАЛА половину программ написали сразу без ошибок и сдали жюри с первого пуска.

ЛИЧНО У МЕНЯ было шесть программных проектов, которые были сданы после 1-2 пуска на ЭВМ.

ДЛЯ ЗНАКОМСТВА с теорией и практикой доказательного программирования откройте учебник по информатике для студентов вузов:
http://bak2.narod.ru/inform.html

В УЧЕБНИКЕ Вы найдете примеры алгороитмов и программ с ошибками, без ошибок и с доказательствами правильности, а также с тестами для проверки на ЭВМ.

ГЛАВНОЕ изобретение было сделано не мной, а студентами-математиками МИЭМ: они стали писать доказательства на языке "матанализа", изучавшимся на первом курсе, после отладки своих программ на ЕС ЭВМ.

ОТЛАДКА ПРОГРАММ на ЕС ЭВМ носила в МИЭМ столь мучительный характер, что студентам-математикам было проще описать программы на псевдокоде с доказательствами их правильности.

ТЕМ БОЛЕЕ, что в 1983г. Администрация МИЭМ отказала всем студентам-математикам в пуске их учебных программ в ВЦ МИЭМ. :(

АДМИНИСТРАЦИИ МИЭМ - особая благодарность в переходе на технологию "доказательного программирования" - написания и анализа правильности программ без выхода на ЕС ЭВМ.

ВСЕ СТУДЕНТЫ-МАТЕМАТИКИ писали и дрокументацию и доказательства правильности программ на родном русском языке, а программы на языках Fortran, PL/1, Basic, Pascal, C/C++.

Программы с доказательствами правильности можно писать на любом инструментальном языке программирования - Pascal, C/C++, Basic и т.п.

ГЛАВНОЕ не в том - на каком языке пишутся программы, а какие алгормитмы реализуются в наших программах.

"АЛГОРИТМИЧЕСКИЕ ОШИБКИ" в программах - это ошибки, которые заложены в соответствующие алгоритмы :roll: А Вы как думаете :?:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 149 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7 ... 10  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group