Лучшие статьи Дейкстры, чтобы объяснить эту цитату? - PullRequest
10 голосов
/ 19 мая 2010

Сегодня я наслаждался «Смиренным программистом» и наткнулся на эту цитату выбора:

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

Я ищу, какие из 1300+ работ Дейкстры более подробно описывают правила, такие как он описывал выше.

1 Ответ

7 голосов
/ 19 мая 2010

с 5 по 18: http://userweb.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF
Середина. конец страницы 3: http://userweb.cs.utexas.edu/users/EWD/ewd04xx/EWD473.PDF
Конечная страница 5 - конец: http://userweb.cs.utexas.edu/users/EWD/ewd06xx/EWD641.PDF
Все: http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD02xx/EWD261.html (Голландский, перевод = ниже)

Примечание: Дейкстра нумерует свои страницы, начиная с 0. Данные номера страниц начинаются с 1, номер страницы PDF, а не записанные номера страниц.


Мой перевод EWD261 на английский :

Как математически программировать

(четко определенная) программа структурирована так же, как (четко определенная) математическая теория. Работа программистов ничем не отличается от творчества математика.

Есть небольшие, но важные различия:

  1. Существует не так много базовых концепций программирования, и их нетрудно понять (хотя они обманчиво просты); Вот почему это идеально подходит для практики развития. (Помимо этого, существует тот факт, что требование корректности программы действительно должно работать!)
  2. С большинством математического образования можно узнать о существующих теоремах, а именно. оснащение студента определенным (детальным) набором понятий; однако программист сам должен разработать необходимую концепцию. Программирование требует абстракций, которые приводят к типу творчества, в то время как то же самое в математике ограничивается применением существующих теорем.
  3. Поскольку программы большие и, тем не менее, должны работать, программисты научатся развиваться осторожно и осознанно. Это именно то, чему нужно учить! Обучать обширным знаниям для меня неоправданно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...