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

В конце концов мне удалось выяснить, почему компилятор работал так быстро. К сожалению, дело было не в гениальных алгоритмах - просто там применялись методы неструктурированного программирования и код был максимально оптимизирован вручную.

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

Мы должны публиковать код. Доступны комментарии Джона Лайонса к 6-й версии UNIX, с исходным кодом. И программы Билла Аткинсо-на теперь находятся в открытом доступе благодаря Apple, и уже скоро мы сможем их прочитать. Это очень хорошо документированный код со множеством новаторских графических алгоритмов.

Сейбел: Конечно, благодаря политике открытого исходного кода у нас сейчас гораздо больше кода для чтения, чем раньше.

Кнут: Да, это так. И по-прежнему каждый может применять разные виды нотации - не стоит читать только тех программистов, которые пишут так же, как и вы.

Библиография

The Art of Computer Programming, Donaid Knuth (Addison-Wesley, 1997).[76]

Beautiful Code: Leading Programmers Explain How They Think, Andy Oram, Greg Wilson (eds.) (O'Reilly, 2007).[77]

Byte, Vol. 6, No. 8, 'Smalltalk issue,' August 1981.

Code Complete, Steve McConnell (Microsoft Press, 1993).[78]

Compiling with Continuations, Andrew W. Appel (Cambridge University Press, 1992).

The Design and Analysis of Computer Algorithms, Alfred V. Aho, John E. Hopcroft, and Jeffrey D. Ullman (Addison-Wesley, 1974).

Design Patterns: Elements of Reusable Object-Oriented Software, Eric Gamma, Richard Helf, Ralph Johnson, and John M. Vlissides (Addison-Wesley Professional, 1994).[79]

A Discipline of Programming, Edsger W. Dijkstra (Prentice Hall, Inc., 1976).

Effective Java, Joshua Bloch (Prentice Hall, 2008). [80]

The Elements of Programming Style, Brian Kernighan and P.J. Plauger (Computing McGraw-Hill, 1978).[81]

Elements of Style, William Strunk and E.B. White (Longman, 1999).

Expert С Programming, Peter van der Linden (Prentice Hall PTR, 1994).

Founders at Work, Jessica Livingston (Apress, 2007).

Hacker's Delight, Hank Warren (Addison-Wesley, 2002).[82]

Higher-Order Perl, Mark Jason Dominus (Morgan Kaufmann, 2005).

Java Concurrency in Practice, Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea (Addison-Wesley, 2006).

Java Puzzlers: Traps, Pitfalls, and Corner Cases, Joshua Bloch and Neil Gafter (Addison-Wesley, 2005).

The Lisp 1.5 Programmer's Manual, John McCarthy (MIT Press, 1962).

Literate Programming, Donald Knuth (Center for the Study of Language and Information, 1992).

Machine Intelligence 1, N.L. Collins and Donald Michie (eds.) (Oliver and Boyd, 1967).

Machine Intelligence 2, Ella Dale and Donald Michie (eds.) (Oliver and Boyd, 1968).

Machine Intelligence 3, Donald Michie (ed.) (Edinburgh University Press, 1968).

Machine Intelligence 4, Bernard Meltzer and Donald Michie (eds.) (Edinburgh University Press, 1969).

Magic House of Numbers, Irving Adler (HarperCollins, 1974).

'META II a Syntax-Oriented Compiler Writing Language,' D.V. Schorre in Proceedings of the 1964 19th ACM national conference, (ACM, 1964).

Mindstorms: Children, Computers, and Powerful Ideas, Seymour A. Papert (Basic Books, 1993).

The Mythical Man-Month: Essays on Software Engineering, Frederick P. Brooks (Addison-Wesley Professional, 1995).[83]

Principles of Compiler Design, Alfred Aho and Jeffrey Ullman (Addison-Wesley, 1977).[84]

'Proof of a Program: FIND', C.A.R. Hoare in Communications of the ACM, Vol. 14, Issue 1 (ACM, 1971).

Programming Pearls, Jon Bentley (ACM Press, 1999).

Purely Functional Data Structures, Chris Okasaki (Cambridge University Press, 2008).

A Retargetable С Compiler: Design and Implementation, David Hanson and Christopher Fraser (Addison-Wesley Professional, 1995).

Smalltalk-80: The Interactive Programming Environment, Adele Goldberg (Addison-Wesley, 1983).

Smalltalk-80: The Language & Its Implementation, David Robson and Adele Goldberg (Addison-Wesley, 1983).

Structure and Interpretation of Computer Programs, Harold Abelson and Gerald Jay Sussman (MIT Press, 1996).[85]

TeX: The Program, Donald Knuth (Addison-Wesley, 1986).

The Programming Language LISP: Its Operation and Applications, Edmund Berkeley and Daniel Bobrow, eds. (MIT Press, 1966).

The Psychology of Computer Programming: Silver Anniversary Edition, Gerald Weinberg (Dorset House, 1998).

The TeXbook, Donald Knuth (Addison-Wesley Professional, 1986).[86]

Writers at Work: The Paris Review Interviews, Malcolm Cowley (Penguin, 1977).

Zen and the Art of Motorcycle Maintenance: An Inquiry into Values, Robert Pirsig (Bantam, 1984).

,
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату