Грамотно Програмиране

donДоналд Кнут

Почетен професор
Изкуството на компютърното програмиране
Станфордския университет

Оригиналът:
Literate Programming

 

(Станфорд, Калифорния: Център за изследване на езика и информация, 1992), XVI + 368pp.
(CSLI конспекти, не. 27.)
ISBN 0-937073-80-6
Японски превод от Макото Арисава,  Bungeiteki Programming  (Tokyo: ASCII Corporation, 1994), 463pp.

Тази книга е първата от серията от осем тома , които съдържат архивни форми на моите публикации, заедно с новия материал.

Грамотни програмиране е методология, която съчетава език за програмиране с език документация, като по този начин програмите по-силен, по-преносим, по-лесно се поддържа, и може би по-забавно да пиша от програми, които са написани само на езика на високо равнище. Основната идея е да се третира програма като произведение на литературата, адресирано до човешки същества, а не към компютър. Програмата се възприема като документ хипертекст, по-скоро като на World Wide Web. (Всъщност, аз използвах думата интернет за тази цел много преди CERN го хвана!) Тази книга е антология на есета включително ранни мои статии по теми, свързани с такива като структуриран програмиране, както и статията в The Computer  Journal, че стартира грамотни Програмиране себе си. Статиите са ревизирани, разширени, и се актуализират.

Съдържание:

  1. Компютърно програмиране като изкуство [Р68]Literate_Programming_book_cover
  2. Структурно програмиране с Отиди отчети [P67]
  3. Структурирана програма за генериране на всички топологични договорености и сортиране [P65]
  4. Грамотно програмиране [P109]
  5. Програмирани перли: Вземане на проби [Q78]
  6. Програмирани перли, продължи: Общи думи [Ч79]
  7. Как се четат WEB [от TeX: Програмата]
  8. Извадки от програмите за TeX и METAFONT [от Computers & Typesetting, обеми B и D]
  9. Математически писмено [от Математическа Писане ]
  10. Грешките на TeX [P124]
  11. Дневника грешка на TeX [P124, с нов материал]
  12. Пример за CWEB [никога преди обявеното]
  13. Допълнителна информация: A цялостна библиография на грамотни Програмиране [никога преди обявеното]

(Номерата като Р68 и Q78 в този списък се отнасят до съответните документи в моя списък с публикации .)

Предлага се от издателя ( CSLI ), а също и от дистрибутора (Университет на Чикаго Пресс).

Тази книга получи наградата Productivity  от Computer Language magazine, 1992, присъжда на продукти, които значително увеличават производителността програмист.

Бързо въвеждане на грамотни програмиране от Крис Ли

Мът Пфарр свещи грамотни програмиране при получаване си 2013 Оскар с Грег Хъмфрис и Пат Ханрахан!

Печатни грешки

За списък с корекции на грешки в първата отпечатването на тази книга, можете да изтеглите или на файла печатни грешки в обикновен TeX формат (8812 байта) или файл печатни грешки в DVI формат (10,816 байта) или файл печатни грешки в компресиран формат PostScript ( 34478 байта); последните файлове са генерирани от файла TeX и актуализирани за последно 12 юни 2004 г. Повечето грешки в първите две разпечатки са били коригирани в третия печат, но няколко малки грешки са били открити от остри очи читателите на четвъртия печат ( 1998) или на петия печат (2008) или шестия печат (2013 г.):

страница XIII, линия 8
промяна “Eisenstadt ” на “Eisenstat”
страница 19, ред 11
промяна “1904” на “1903”
страница 26, ред 8 от дъното
промяна “+6” на “+1”
страница 26, ред 5 от дъното
промяна “11n+21″ на “12n+19″
страница 26, ред 2 от дъното
промените “21%” на “14%”
страница 39, ред 14 от дъното
промяна “Eisenstadt” на “Eisenstat” (два пъти)
страница 44, ред 5
промяна “стъпка 1, докато” на “стъпка 1, докато”

страница 46, ред 1

промяна “Eisenstadt”  на “Eisenstat”
страница 47, ред 13 от дъното
промяна “повторение линия” на “повторение линия”
страница 50, линия 7
промяна “повторете:” на “повторение;”
страници 51, 52, 53, 53, 56, 57
промяна “число t; стойност t;” на “стойност t;  число t;”
страница 57, ред 11 от дъното
промяна “$n>0$” на “$n\ge0$”
страница 58, ред 5
промяна “средна, ще” на “средна воля”
страница 60, редове 3, 4, 5
промяна “всички елементи по-голяма от V …” на “само елементи, които са по-малко от или равно на някои дадена стойност V; дясната част A[j+1]…A[n] ще съдържа само елементи, които са по-голямо от или равно на V
страница 67, ред 11
промяна “j;” на “j:”
страница 67, ред 14
промяна “1;” на “1; fi;”
страница 74, ред 24
промяна “j;” на “j:”
страница 80, замени най-долния ред от 6 линии
не е намерен:  $m\gets\r1$ 2 $a$
$\r4\gets1$ 1 $a$
на актуализирано $ 1 $a$ $m\gets\r1$ 2 $a$
Намерени:  $\r4\gets B[\r1]$ 2 $1-a$
$\r4\gets\r4+1$ 1 $1-a$
актуализация:  $B[\r1]\gets\r4$ 2 1
страница 86, ред 10
промяна “Eisenstadt” на “Eisenstat”
страница 92, ред 20
промяна “$\ne\{x_1,\ldots,x_k\}$” на “$\notin\{x_1,\ldots,x_k}$, които имат”
страница 92, ред 10 от дъното
промяна “число k; стойност k; на k стойност; число k;
страница 93, ред 18 от дъното
промяна $q=y_{r-1},y_{r-2},\ldots,y_1$  на  $q=y_{r-1}$, $y_{r-2}$, \dots, $y_1$
страница 94, ред 11
промяна “[1 : n] на “[0 : n] (два пъти)
страница 135, справка [10]
това позоваване трябва да бъде същият като [61] на страница 86
страница 159, ред 14
добави изложението “брои [0] ← 0;” (Да се съглася с страница 164)
страница 195, между отдели 111 и 117
вмъкване на елипса (три вертикални точки), както между раздели 16 и 95 на страница 186
страница 276, ред 6 от дъното
промяна “клас L” на “клас L или клас R”
страница 280, ред 13 от дъното
промяна “97” на “65”
страница 288, ред 2 от дъното
промените  $\theta_2$ на $\theta_0$
страници 294–338
(Няколко вписвания в този дневник са редактирани от последователност в стил с уважение към другите)
страница 349, линии 9 и 10
промяна “Praktis- che” на “Prak- tische”
страница 354, ред 8 от дъното
промяна "labrea" на "ftp.cs"
страница 355, ред 12
промяна "labrea" на "ftp.cs"
страница 358, нова точка за библиографията
Klaus Thull , “виртуални управление на паметта на обществени  PubliC \TeX,” {\sl TUGboat\/ \bf10}, 1 (април 1989), 15–22.
страница 361, лява колона
промяна “Macdonald” на “MacDonald” във вписването Coxeter
страница 361, лява колона
промяна “x” на “xii” в записа на CWEB
страница 361, дясната колона
промяна “Eisenstadt, Stanley C.” на “Eisenstat, Stanley Charles”
страница 362, лява колона
 Guth, Alan Harvey, 337.
страница 362, дясната колона
промяна “Nicolass” на “Nicolaas” във вписването Habermann
страница 363, дясната колона
Добавяне на страница 322 на препратките за Frank Liang
страница 364, лява колона
промяна “Marneffe, Pierre-Arnoul de” на “Marneffe, Pierre-Arnoul Frédéric Guy Donat de”
страница 366, лява колона
промяна “Rustin, Randall” на “Rustin, Randall Dennis”
страница 366, лява колона
 Scherlis, William Louis, 322.
страница 367, лява колона
промяна “Thull, Klaus, 357.” на “Thull, Klaus, 358.”
страница 368, лява колона
промяна “139” на “xii, 139” в влизането WEB

Освен това, няколко грешки са за съжаление, въведени на корицата на отпечатването на 2013: елен трябва да бъде ОВЦС, както и няколко други елементи на копието трябва да бъдат или наклонен и извадени от курсив.

Надявам ce версия за 2013 г. е по друг начин без грешки. Но (въздишка) вероятно не е. Ето защо аз с благодарност ще депозира 0x$1.00 (2.56 $) по сметка на първия човек, който е намерил и докладва всичко, което остава е технически, исторически, типографска, или политически некоректно. Моля, изпратете Поправките yа [email protected] , или изпратете охлюв поща до Д. Кнут, компютърното програмиране отдел, Гейтс Сграда 4B, Университетът Стенфорд, Станфорд, Калифорния 94305-9045 USA. И в двата случая си включете вашия пощенски адрес, така че мога да пишете официален сертификат за депозит в знак на благодарност за всички подобрения, към който са допринесли.

Аз не мога да бъде в състояние да прочете съобщението си до няколко месеца са минали, защото аз работя усилено по Изкуството на компютърното програмиране . Въпреки това, аз обещавам да отговаряте своевременно.

НЕ изпрати имейл на Кнут-BUG ОСВЕН съобщаване на грешки в книгите И ако го направите докладва грешка по електронната поща, моля, не се включват прикачени файлове от всякакъв вид!; вашето съобщение трябва да може да се чете на марката-X операционни системи за всички стойности на X.

Начална страница на Доналд Кнут

Други книги на Доналд Кнут