Доналд Кнут
Почетен професор
Изкуството на компютърното програмиране
Станфордския университет
Оригиналът:
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, че стартира грамотни Програмиране себе си. Статиите са ревизирани, разширени, и се актуализират.
Съдържание:
- Компютърно програмиране като изкуство [Р68]
- Структурно програмиране с Отиди отчети [P67]
- Структурирана програма за генериране на всички топологични договорености и сортиране [P65]
- Грамотно програмиране [P109]
- Програмирани перли: Вземане на проби [Q78]
- Програмирани перли, продължи: Общи думи [Ч79]
- Как се четат WEB [от TeX: Програмата]
- Извадки от програмите за TeX и METAFONT [от Computers & Typesetting, обеми B и D]
- Математически писмено [от Математическа Писане ]
- Грешките на TeX [P124]
- Дневника грешка на TeX [P124, с нов материал]
- Пример за CWEB [никога преди обявеното]
- Допълнителна информация: 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.