Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:
Процесс компилирования, редактирования связей и выполнения программ на языке С++ зависит от операционной системы. Было бы слишком неудобно постоянно описывать детали устройства этих систем и компиляторов каждый раз при ссылке на выполнение программы. Наиболее важная информация, необходимая для использования интегрированной среды разработки программ Visual Studio и компилятора Microsoft C++ под управлением операционной системы Windows, приведена в приложении В.
Если вы испытываете трудности при работе с популярными, но слишком сложными интегрированными средами разработки программ, предлагаем использовать командную строку; это удивительно просто. Например, для
Да, этого достаточно.
0.3. Программирование и компьютерные науки
Можно ли свести компьютерные науки к программированию? Разумеется, нет! Единственная причина, по которой мы поставили этот вопрос, заключается в том, что люди часто заблуждаются по этому поводу. Мы затрагиваем множество тем, связанных с компьютерными науками, например алгоритмы и структуры данных, но наша цель — научить программировать, т.е. разрабатывать и выполнять программы. Это изложение и шире, и уже, чем общепринятая точка зрения на компьютерные науки.
• Шире, так как программирование связано с множеством технических знаний, которые, как правило, не относятся ни к какой научной дисциплине.
• Уже, т.е. мы не стремились к систематическому изложению основ компьютерных наук.
Цель этой книги — частично охватить курс компьютерных наук (если вы собираетесь стать специалистом в этой области), изложить введение в методы разработки и эксплуатации программного обеспечения (если вы планируете стать программистом или разработчиком программного обеспечения) и, вообще, заложить основы более общего курса.
Тем не менее, несмотря на то, что изложение опирается на компьютерные науки и их основные принципы, следует подчеркнуть, что мы рассматриваем программирование как совокупность практических навыков, основанных на теории и опыте, а не как науку.
0.4. Творческое начало и решение задач
Основная цель книги — помочь вам выражать свои идеи в программах, а не научить придумывать эти идеи. Кроме того, мы приводим множество примеров решения задач, как правило, с помощью анализа, за которым следует последовательное уточнение решения. Мы считаем, что программирование само по себе является формой решения задач: только полностью поняв задачу и ее решение, можно написать правильную программу; и только через конструирование и тестирование программ можно прийти к полному пониманию задачи. Таким образом, программирование является неотъемлемой частью процесса познания. Однако мы стараемся продемонстрировать это на примерах, а не путем “проповеди” или подробного описания процесса решения задач.
0.5. Обратная связь
Идеальных учебников не существует; потребности разных людей очень отличаются друг от друга. Однако мы старались сделать эту книгу и сопровождающие ее материалы как можно лучше. Для этого нам необходима обратная связь; хороший учебник невозможно написать в изоляции
0.6. Библиографические ссылки
Кроме публикаций, упомянутых в главе, ниже приведен список работ, которые могут оказаться полезными.
Austern, Matthew H. Generic Programming and the STL: Using and Extending the C++ Standard Template Library. Addison-Wesley, 1999. ISBN 0201309564.
Austern, Matthew H. (editor). “Technical Report on C++ Standard Library Extensions.” ISO/IEC PDTR 19768.
Blanchette, Jasmin, and Mark Summerfield. C++ GUI Programming with Qt 4. Prentice Hall, 2006. ISBN 0131872493.
Gamma, Erich, Richard Helm, Ralph Johnson, and John M. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994. ISBN 0201633612.
Goldthwaite, Lois (editor). “Technical Report on C++ Performance.” ISO/IEC PDTR 18015.
Koenig, Andrew (editor). The C++ Standard. ISO/IEC 14882:2002. Wiley, 2003. ISBN 0470846747.
Koenig, Andrew, and Barbara Moo. Accelerated C++: Practical Programming by Example. Addison-Wesley, 2000. ISBN 020170353X.
Langer, Angelika, and Klaus Kreft. Standard C++ IOStreams and Locales: Advanced Programmer’s Guide and Reference. Addison-Wesley, 2000. ISBN 0201183951.
Meyers, Scott. Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library. Addison-Wesley, 2001. ISBN 0201749625.
Meyers, Scott. Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition). Addison-Wesley, 2005. ISBN 0321334876.
Schmidt, Douglas C., and Stephen D. Huston. C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns. Addison-Wesley, 2002. ISBN 0201604647.
Schmidt, Douglas C., and Stephen D. Huston. C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks. Addison-Wesley, 2003. ISBN 0201795256.
Stroustrup, Bjarne. The Design and Evolution of C++. Addison-Wesley, 1994. ISBN 0201543303.
Stroustrup, Bjarne. “Learning Standard C++ as a New Language.” C/C++ Users Journal, May 1999.
Stroustrup, Bjarne. The C++ Programming Language (Special Edition). Addison-Wesley, 2000. ISBN 0201700735.
Stroustrup, Bjarne. “C and C++: Siblings”; “C and C++: A Case for Compatibility”; and “C and C++: Case Studies in Compatibility.” C/C++ Users Journal, July, Aug., Sept. 2002.
Sutter, Herb. Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions. Addison-Wesley, 2000. ISBN 0201615622.
Более полный список библиографических ссылок приведен в конце книги.