Ответ 1
Страница 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 (голландский, перевод = ниже)
Примечание. Dijkstra числится на своих страницах, начиная с 0. Указанные номера страниц начинаются с 1, номера страницы PDF, а не номеров страниц.
Мой перевод EWD261 на английский:
Как математически программировать
A (четко определенная) программа структурирована точно так же, как (четко определенная) математическая теория. Работа программистов не отличается от работы творческого математика.
Однако существуют небольшие, но важные различия:
- Существует не так много базовых концепций программирования, и их нетрудно понять (хотя и ошибочно просто); поэтому он идеален для практики развития. (Кроме того, есть факт, что спрос на правильность, программа должна действительно работать!)
- С большинством математического образования вы узнаете о существующих теоремах, а именно: оснащение ученика конкретным (подробным) набором понятий; программист, однако, должен сам разработать нужную концепцию. Программирование требует абстракций, которые приводят к типу творчества, тогда как то же самое в математике ограничивается применением существующих теорем.
- Поскольку программы большие и тем не менее должны работать, программисты научатся тщательно и сознательно развиваться. Это именно то, чему надо учить! Учить обширные знания для меня не оправдано.