Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:
Эта глава выражает нашу личную точку зрения на то, что мы считаем интересным и важным для программирования. В ней изложены причины, по которым мы вот уже много десятков лет занимаемся этим делом. Она должна помочь вам понять, в чем заключаются наши основные цели и какими бывают программисты. Учебники для начинающих неизбежно содержат массу прописных истин. В этой главе мы закрываем глаза на технические детали и предлагаем рассмотреть картину в целом. Почему программирование является достойным занятием? Какую роль играет программирование в нашей цивилизации? В каких областях программисты могут сделать вклад, которым могли бы гордиться? Какие задачи остались пока нерешенными в области разработки, развертывания и эксплуатации программного обеспечения? Какое место занимает программирование в области компьютерных наук, разработки программного обеспечения, информационных технологий и т.д.? Чем занимаются программисты? Какими навыками они должны владеть?
Для
1.2. Программное обеспечение
Хорошее программное обеспечение невидимо. Вы не можете его потрогать, взвесить или стукнуть. Программное обеспечение — это совокупность программ, выполняемых на определенном компьютере. Иногда мы можем пощупать этот компьютер, но чаще можем увидеть лишь устройство, содержащее этот компьютер, например телефон, фотоаппарат, тестер, автомобиль или воздушную турбину. Мы способны воспринимать лишь результаты работы программного обеспечения. Кроме того, если работа программного обеспечения не соответствует нашим ожиданиям или потребностям, это может стать поводом для беспокойства.
Сколько компьютеров существует в мире? Мы не знаем; по крайней мере, миллиарды. Компьютеров в мире больше, чем людей. В 2004 году по оценкам Международного телекоммуникационного союза (International Telecommunication Union — ITU) в мире насчитывалось 772 миллиона персональных компьютеров, причем большинство компьютеров в эту категорию не входило.
Сколько компьютеров (более или менее непосредственно) вы используете каждый день? Например, в моем автомобиле установлено более тридцати компьютеров, в мобильном телефоне — два, в MP3-плеере — один и еще один в видеокамере. Кроме того, у меня есть еще ноутбук (на котором я набирал текст, который вы сейчас читаете), а также настольный компьютер. Контроллер кондиционера, который летом поддерживает комфортную температуру и влажность, также представляет собой простой компьютер. В нашем университете компьютер управляет работой эскалатора. Если вы пользуетесь современными телевизорами, то обязательно найдете в нем хотя бы один компьютер. Переходя с одной веб-страницы на другую, вы соединяетесь с десятками, а возможно, и сотнями серверов через телекоммуникационные системы, состоящие из многих тысяч компьютеров: телефонных коммутаторов, маршрутизаторов и т.д.
Нет, я не храню тридцать ноутбуков на заднем сиденье своего автомобиля! Дело в том, что большинство компьютеров выглядят совсем не так, как мы привыкли (с дисплеем, клавиатурой, мышью и т.д.); они просто являются небольшим устройством, встроенным в используемое оборудование. Итак, в моем автомобиле нет ничего похожего на типичный компьютер, нет даже экрана для изображения карты и указания направления движения (хотя такие устройства весьма популярны). Однако двигатель моего автомобиля содержит несколько компьютеров, например, управляющих впрыскиванием топлива и контролирующих его температуру. По крайней мере, еще один компьютер встроен в рулевой механизм, в радиосистему и систему безопасности. Я подозреваю даже, что система, открывающая и закрывающая окна, управляется компьютером. В более современные автомобили встроены компьютеры, которые непрерывно контролируют даже давление в шинах.
От скольких компьютеров вы зависите на протяжении дня? Если вы живете в большом городе, то для того чтобы получить еду, кто-то должен совершить небольшие чудеса, связанные с планированием, транспортировкой и хранением продуктов. Разумеется, управление сетями распределения продуктов компьютеризовано, как и работа любых коммуникационных систем, требующих согласованной работы. Современные фермы также компьютеризованы; на них можно найти компьютеры, используемые как в хлеву, так и в бухгалтерии (для учета возраста,
Все приведенные выше примеры были “материальными”; они предусматривали непосредственное использование компьютеров в ежедневной жизнедеятельности. Не менее важной и интересной областью является проектирование. Одежда, которую вы носите, и кофеварка, в которой варите свой любимый кофе, были спроектированы и произведены с помощью компьютеров. Превосходное качество оптических линз в современных фотоаппаратах, а также утонченные формы современных технических устройств и посуды обеспечиваются компьютеризованным проектированием и производством. Производственники, проектировщики, артисты и инженеры, создающие окружающую нас среду, свободны от многих физических ограничений, которые ранее считались непреодолимыми. Если вы заболеете, то даже лекарство, которое выпишет врач, окажется синтезированным с помощью компьютеров.
В заключение отметим, что исследования — т.е. собственно наука — в целом основаны на использовании компьютеров. Телескопы, открывающие секреты далеких звезд, невозможно спроектировать, построить и эксплуатировать без помощи компьютеров, а огромные массивы данных, которые они производят, невозможно проанализировать и понять без компьютерной обработки. Отдельные биологические исследования иногда способны обойтись без широкого использования компьютеров (разумеется, если не учитывать фотоаппараты, устройства хранения данных, телефоны и т.д.), но данные все же необходимо как-то хранить, анализировать, сравнивать с компьютерными моделями и передавать другим ученым. Еще несколько лет назад невозможно было представить, насколько широко будут использоваться компьютеры в современной химии и биологии — включая медицинские исследования. Компьютеры смогли расшифровать геном человека. Точнее говоря, этот геном был расшифрован людьми с помощью компьютеров. Во всех этих примерах компьютер кардинально облегчает работу.
На каждом из упомянутых компьютеров установлено программное обеспечение. Без него компьютеры представляют собой просто дорогую груду кремния, металла и пластика, которую можно использовать лишь в качестве груза, якоря или обогревателя воздуха. Любое программное обеспечение создается людьми. Каждая строка программы, выполняемой компьютером, имеет определенный смысл. Очень странно, что все это работает! Ведь мы говорим о миллиардах строк программ, написанных на сотнях языков программирования. Для того чтобы все это правильно работало, люди затратили массу усилий и применили множество знаний.
Нет ни одного устройства, работу которого мы не хотели бы усовершенствовать. Достаточно просто задуматься о его функционировании, и вы сразу поймете, что именно требуется изменить. В любом случае каждое устройство можно уменьшить (или увеличить), заставить работать быстрее или надежнее, снабдить более широкими возможностями или мощностями, сделать красивее или дешевле. Очень вероятно, что для этого вам придется использовать программирование.
1.3. Люди