наукам. (В те времена не приходилось говорить и о немедленном получении результатов, столь привычном для современного программирования на ПК). Мне пришлось полюбить просматривать длинные листинги программ на языке, который не поддерживал ни локальных переменных, ни указателей. Тем не менее, это меня не остановило. Я начал исследовать и изучать все эти премудрости. Долгими часами я мучился, пытаясь усвоить язык MIX, разработанный Кнутом (Knuth), С и иже с ними. Я пытался извлечь практическую пользу из учебников, которые оставляли реализацию операции Delete в качестве упражнения 4.25. Смею заверить, что все это - совершенно чудесный способ изучения языка.
Готов поспорить, что если вам стали известны доступные возможности языка, с которым вы более всего знакомы, то вы будете знать, следует ли при решении следующей задачи использовать хеш-таблицу или отложить клавиатуру и вычертить блок-схему конечного автомата, или, быть может, создать еще один экземпляр объекта списка TList. Именно в этом и состоит главная цель данной книги -показать читателям, чего можно добиться, если известны доступные возможности. Основное назначение кода, приведенного в книге - его непосредственное использование. (Вам требуется вычислитель регулярных выражений? Тогда воспользуйтесь кодом, разработанным нами в главе 10. Добавьте модуль в список uses и -'лэтс гоу', то бишь, за дело.)
Предупреждаю, что эта книга далеко не исчерпывающая. Когда я планировал ее написание, мне пришлось опустить больше материала, чем я смог осветить ('А чего ж ты не рассмотрел B-деревья, Юлиан?'). Угу... Так уж получилось... Прочтите книгу, а затем двигайтесь дальше, и постарайтесь выяснить, что еще написано по той или иной теме.
Список литературы
Ниже приведен список литературы, которая использовалась при написании этой книги. Некоторые из указанных работ имеют исключительно большое значение - без них я не смог бы разобраться в некоторых алгоритмах и пояснить их читателям применительно к Delphi. Другие содержат лишь материалы по менее серьезным темам, освещенным в других книгах. Тем не менее, это сделано так, что, на мой взгляд, вопрос становится более понятным.
1. Abramowitz, Milton, and Irene A. Stegun. Handbook of Mathematical Functions. Dover Publications, Inc., 1964.
2. Aho, Alfred V., Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and
Tools. Addison-Wesley, 1986.
3. Beck, Kent. Extreme Programming Explained. Addison-Wesley, 2000.
4. Binstock, Andrew, and John Rex. Practical Algorithms for Programmers. Addison-Wesley, 1995.
5. Cormen, Thomas H., Charles E. Leiserson, and Ronald L. Rivest. Introduction to Algorithms. MIT Press, 1990.
6. Folk, Michael J., and Bill Zoellick. File Structures. 2nd Ed. Addison-Wesley, 1992.
7. Guibas L.J., and R. Sedgewick. 'A dichromatic framework for balanced trees.' Proceedings of the 19th Annual Symposium on Foundations of Computer Science, 1978.
8. Jones, Douglas W. 'Application of Splay Trees to Data Compression.' Communications of the ACM, Vol. 31 (1988), pp. 996-1007.
9. Kane, Thomas S. The New Oxford Guide to Writing. Oxford University Press, 1988.
10. King, Stephen. On Writing. Scribner, 2000.
11. Knuth, Donald E. The Art of Computer Programming: Fundamental Algorithms. 3rd Ed. Addison-Wesley, 1997.
12. Knuth, Donald E. The Art of Computer Programming: Seminumerical Algorithms. 3rd Ed. Addison-Wesley, 1998.
13. Knuth, Donald E. The Art of Computer Programming: Sorting and Searching. 2nd Ed. Addison-Wesley, 1998.
14. L'Ecuyer, Pierre. 'Efficient and Portable Combined Random Number Generators.' Communications of the ACM, Vol. 31 (1988), pp. 742-749, 774.
15. Nelson, Mark. The Data Compression Book. M& T Publishing, 1991.
16. Park, S.K., and K.W. Miller. 'Random Number Generators: Good Ones are Hard to Find.' Communications of the ACM, vol. 31 (1988), pp. 1192-1201.
17. Pham, Thuan Q. and Pankaj K. Garg. Multithreaded Programming with Win32. Prentice Hall, 1999.
18. Pugh, William. 'Skip Lists: A Probabilistic AItemative to Balanced Trees.' Communications of the ACM, Vol. 33 (1990), pp. 668-676.
19. Robbins, John. Debugging Applications. Microsoft Press, 2000.
20. Sedgewick, Robert. Algorithms. 2nd Ed. Addison-Wesley, 1988.
21. Sedgewick, Robert. Algorithms in C. 3rd Ed. Addison-Wesley, 1998.
22. Sleator, D.D., and R.E. Tarjan. 'Self-adjusting binary search trees.' Journal of the ACM (1985).
23. Thorpe, Danny. Delphi Component Design. Addison-Wesley Developers Press, 1996.
24. Wood, Derick. Data Structures, Algorithms, and Performance. Addison-Wesley, 1993.
25. Sedgewick, Robert. Algorithms in С++. Parts 1-4: Fundamentals, Data Structures, Sorting, Searching. 3rd Ed. Addison-Wesley, 1999.
26. Sedgewick, Robert. Algorithms in С++. Parts 5: Graph Algorithms. 3rd Ed. Addison-Wesley, 2002.
27. Роберт Седжвик. Фундаментальные алгоритмы на С++. Части 1-4: Анализ/Структуры данных/Сортировка/Поиск. - К.: Издательство ДиаСофт?, 2001.
28. Роберт Седжвик. Фундаментальные алгоритмы на С++. Часть 5: Алгоритмы на графах. - К.: Издательство ДиаСофт?, 2002.
29. Роберт Седжвик. Фундаментальные алгоритмы на С. Части 1-4: Анализ/Структуры данных/Сортировка/Поиск. - К.: Издательство ДиаСофт?, 2003.
30. Роберт Седжвик. Фундаментальные алгоритмы на С Часть 5: Алгоритмы на графах. - К.: Издательство ДиаСофт?, 2003.
31. Джон Макгрегор, Девид Сайке. Тестирование объектно-ориентированного программного обеспечения. Практическое пособие. - К.: Издательство ДиаСофт?, 2002.