Выбрать главу

  Ни в коем случае не следует зацикливаться на попытках досконально изучить какие-то детали языка или метода. Разумеется, вы можете заучить все встроенные типы данных в языке С++ и все правила их использования. Конечно, после этого вы можете чувствовать себя знатоком. Однако это не сделает вас программистом. Пренебрежение деталями может вызвать у вас ощущение недостатка знаний, но это быстрейший способ, позволяющий научиться писать хорошие программы. Обратите внимание на то, что именно наш подход, по существу, используется при обучении детей иностранным языкам. Если вы зайдете в тупик, советуем искать помощи у преподавателей, друзей, коллег и т.п. Не забывайте, что в первых главах нет ничего принципиально сложного. Однако многое будет незнакомым и поэтому может показаться сложным.

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

  Основной упор в книге делается на идеи и причины. Людям нужны идеи, чтобы решать практические задачи, т.е. находить правильные и принципиальные решения. Необходимо понимать подоплеку этих идей, т.е. знать, почему именно этими, а не другими принципами следует руководствоваться, а также чем это может помочь программистам и пользователям программ. Никого не может удовлетворить объяснение “потому что потому”. Кроме того, понимание идей и причин позволит вам обобщить их в новых ситуациях и комбинировать принципы и средства для решения новых задач. Знание причин является важной частью программистских навыков. И наоборот, формальное знание многочисленных плохо понятых правил и конструкций языка программирования является источником многих ошибок и приводит к колоссальной потере времени. Мы ценим ваше время и не хотим его тратить понапрасну.

Многие технические детали языка С++ изложены в приложениях и справочниках, где их можно при необходимости найти. Мы считаем, что вы способны самостоятельно найти заинтересовавшую вас информацию. Используйте для этого предметный указатель и содержание. Не забывайте также об Интернете. Однако помните, что не каждой веб-странице следует слепо доверять. Многие веб-сайты, выглядящие авторитетными источниками знаний, созданы новичками или просто пытаются что-то кому-то продать. Некоторые веб-сайты просто устарели. Мы собрали коллекцию полезных ссылок и фактов на нашем веб-сайте www.stroustrup.com/Programming.

Пожалуйста, не придирайтесь к “реалистичности” примеров. Идеальный пример — это максимально короткая и простая программа, ярко иллюстрирующая свойство языка, концепцию или прием. Большинство реальных примеров являются намного более запутанными, чем наши, и не содержат необходимых комбинаций идей, которые мы хотели бы продемонстрировать. Успешные коммерческие программы, содержащие сотни тысяч строк, основаны на технических приемах, которые можно проиллюстрировать дюжиной программ длиной по 50 строк. Самый быстрый способ понять реальную программу сводится к хорошему знанию ее теоретических основ.

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

0.2.1. Порядок изложения

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

Невозможно одновременно изучить все принципы, методы и свойства языка, необходимые для создания программ. Следовательно, необходимо выбрать подмножество принципов, методов и свойств, с которых следует начинать обучение. В целом любой учебник должен вести студентов через набор таких подмножеств. Мы понимаем свою ответственность за выбор этих тем. Поскольку невозможно охватить все темы, на каждом этапе обучения мы должны выбирать; тем не менее то, что останется за рамками нашего внимания, не менее важно, чем то, что будет включено в курс.