Литмир - Электронная Библиотека
A
A

 У большинства студентов — особенно хороших студентов — иногда возникает вопрос, стоит ли так тяжело работать. Если у вас возникнет такой вопрос, сделайте перерыв, перечитайте предисловие и просмотрите главу 1 “Компьютеры, люди и программирование”, а также главу 22 “Идеалы и история”. В этих главах я попробовал объяснить, чем меня восхищает программирование и почему я считаю, что именно программирование играет ключевую роль в улучшении мира. Если вас интересуют мои педагогические принципы, прочитайте главу 0 “Обращение к читателям”.

Возможно, вы сочтете книгу слишком большой. Частично это объясняется тем, что я либо многократно повторяю объяснения, либо иллюстрирую их дополнительными примерами, вместо того чтобы заставлять читателей удовлетвориться одним единственным толкованием. Кроме того, часть II представляет собой справочник и содержит дополнительный материал, позволяющий читателям углубить свои знания в конкретных областях программирования, например в области встроенных систем программирования, анализа текстов или математических вычислений. Пожалуйста, сохраняйте терпение. Изучение новых идей и приобретение важных практических навыков требует времени, но результат стоит затраченных усилий.

Обращение к преподавателям

Нет, это не традиционный курс по компьютерным наукам, принятый в США (Computer Science 101). Эта книга о том, как создать работающее программное обеспечение. Поэтому за ее рамками осталось многое из того, что обычно включается в учебник по компьютерным наукам (сложность алгоритмов по Тьюрингу, конечные автоматы, дискретная математика, грамматики Хомского и т.д.). В книге проигнорирована даже тема, связанная с аппаратным обеспечением, поскольку я полагаю, что студенты с детства умеют работать с компьютерами. В книге даже не упоминается большинство важных тем из области компьютерных наук. Это книга о программировании (а точнее, о том, как разработать программное обеспечение), поэтому в ней нет того, что обычно включается в традиционные учебники. Поскольку компьютерные науки невозможно изложить в рамках одного курса, я не стал распылять внимание. Если вы будете использовать эту книгу как часть курса по компьютерным наукам, вычислительной технике, электротехнике (большинство наших первых студентов специализировались именно по электротехнике), информатике или какой-либо иной научной дисциплине, то предлагаю выделить ее в виде самодостаточного введения.

 Пожалуйста, прочитайте главу 0, “Обращение к читателю”, чтобы понять мои педагогические принципы, общий подход и т.д. Я прошу вас передать эти идеи вашим студентам.

Веб-сайт

Книге посвящен отдельный веб-сайт 

www.stroustrup.com/Programming<a name="read_n_2_back" href="#read_n_2" class="note">[2]</a>,
содержащий дополнительные материалы для обучения программированию. Со временем этот материал, по-видимому, будет уточняться, но в данный момент читатели найдут там следующие материалы.

• Слайды лекций по этой книге.

• Справочник преподавателя.

• Заголовочные файлы и реализации библиотек, использованных в книге.

• Тексты программ, используемых в книге в качестве примеров.

• Решения избранных упражнений.

• Потенциально полезные ссылки.

• Список найденных ошибок.

Любые замечания и предложения по улучшению книги будут приняты с благодарностью.

Благодарности

Я особенно благодарен моему коллеге Лоуренсу “Питу” Петерсену (Lawrence “Pete” Petersen) за то, что он вдохновил меня взяться за обучение новичков и полезные практические советы по преподаванию. Без его помощи первый вариант этого курса оказался бы неудачным. Мы работали вместе над первым вариантом курса, которому посвящена эта книга, а затем совершенствовали ее, учитывая полученный опыт. Местоимение “мы”, использованное в книге, означает “Пит и я”.

Выражаю признательность студентам, ассистентам и преподавателям Техасского университета агрокультуры и машиностроения (курс ENGR 112), которые вольно или невольно помогли написать эту книгу, а также Уолтеру Догерити (Walter Daugherity), прослушавшему этот курс. Кроме того, я благодарен Дэмиану Дечеву (Damian Dechev), Трейси Хэммонд (Tracy Hammond), Арне Толструпу Мэдсену (Arne Tolstrup Madsen), Габриэлю Дос Рейосу (Gabriel Dos Reis), Николасу Страуструпу (Nicholas Stroustrup), Дж. К. ван Винкелю (J. C. van Winkel), Грэгу Версундеру (Greg Versoonder), Ронни Уарду (Ronnie Ward) и Леору Зольману (Leor Zolman) за конструктивные замечания к рукописи книги. Большое спасибо Могенсу Хансену (Mogens Hansen) за объяснение принципов работы программного обеспечения по управлению двигателем, а также Элу Ахо (Al Aho), Стивену Эдвардсу (Stephen Edwards), Брайану Кернигану (Brian Kernighan) и Дэйзи Нгуен (Daisy Nguyen) за то, что помогли мне спрятаться от того, что могло отвлечь от работы на книгой на протяжении летних месяцев.

Благодарю рецензентов, которых издательство Addison-Wesley подыскало для меня: Ричарда Энбоди (Richard Enbody), Дэвида Густафсона (David Gustafson), Рона Мак-Карти (Ron McCarty) и К. Нараяанасвами (K. Narayanaswamy). Их комментарии, основанные в основном на преподавании языка С++ или курса Computer Science 101 на уровне колледжа, были очень полезными. Я признателен также моему редактору Питеру Гордону (Peter Gordon) за многочисленные комментарии и терпение (не в последнюю очередь). Большое спасибо техническому персоналу издательства Addison–Wesley. Они много сделали для повышения качества книги: корректору Джулии Грейди (Julie Grady), верстальщику Крису Кини (Chris Keane), художнику Робу Мохару (Rob Mauhar), техническому редактору Джулии Нахил (Julie Nahil) и литературному редактору Барбаре Вуд (BarbaraWood).

В дополнение к моим несистематическим попыткам проверить тексты программ Башар Анабтави (Bashar Anabtawi), Йинан Фан (Yinan Fan) и Юрий Солодкий (Yuriy Solodkyy) проверили все фрагменты программ с помощью компиляторов Microsoft C++ 7.1 (2003), 8.0 (2005) и GCC 3.4.4.

Я хотел бы также поблагодарить Брайана Кернигана и Дуга Мак-Илроя (Doug McIlroy) за очень высокие стандарты качества, установленные ими для программирования, а также Денниса Ритчи (Dennis Ritchie) и Кристена Нийгарда (Kristen Nygaard) за ценные уроки по практической разработке языков программирования.

Обращение к читателям

“Если карта не соответствует местности,

доверяй местности.”

Швейцарская армейская поговорка

Эта глава содержит разнообразную информацию; ее цель — дать представление о том, что можно ожидать от остальной части книги. Пожалуйста, пролистайте ее и прочитайте то, что найдете интересным. Для преподавателей полезной будет большая часть книги. Если же вы читаете книгу без помощи хорошего преподавателя, то не пытайтесь прочитать и понять все, что написано в этой главе; просто взгляните на раздел “Структура книги” и первую часть раздела “Педагогические принципы”. Возможно, вы захотите вернуться и перечитать эту главу еще раз, когда научитесь писать и выполнять свои собственные программы.

0.1. Структура книги

Книга состоит из четырех частей и нескольких приложений.

• В части I, “Основы”, описаны фундаментальные концепции и методы программирования на примере языка С++ и библиотек, необходимых для начала разработки программ. К этим концепциям относятся система типов, арифметические операции, управляющие конструкции, обработка ошибок, а также разработка, реализация и использование функций и пользовательских типов.

• В части II, “Ввод и вывод”, описаны способы ввода числовых и текстовых данных с клавиатуры и из файлов, а также вывода результатов на экран и в файлы. Кроме того, в ней показано, как вывести числа, текст и геометрические фигуры в виде графической информации, а также как ввести данные в программу с помощью графического пользовательского интерфейса (GUI).

вернуться

2

 Актуальность ссылок и содержания веб-страниц не гарантируется. — Примеч. ред.

13
{"b":"847443","o":1}