Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп
Шрифт:
Интервал:
Закладка:
В заключение отметим, что исследования — т.е. собственно наука — в целом основаны на использовании компьютеров. Телескопы, открывающие секреты далеких звезд, невозможно спроектировать, построить и эксплуатировать без помощи компьютеров, а огромные массивы данных, которые они производят, невозможно проанализировать и понять без компьютерной обработки. Отдельные биологические исследования иногда способны обойтись без широкого использования компьютеров (разумеется, если не учитывать фотоаппараты, устройства хранения данных, телефоны и т.д.), но данные все же необходимо как-то хранить, анализировать, сравнивать с компьютерными моделями и передавать другим ученым. Еще несколько лет назад невозможно было представить, насколько широко будут использоваться компьютеры в современной химии и биологии — включая медицинские исследования. Компьютеры смогли расшифровать геном человека. Точнее говоря, этот геном был расшифрован людьми с помощью компьютеров. Во всех этих примерах компьютер кардинально облегчает работу.
На каждом из упомянутых компьютеров установлено программное обеспечение. Без него компьютеры представляют собой просто дорогую груду кремния, металла и пластика, которую можно использовать лишь в качестве груза, якоря или обогревателя воздуха. Любое программное обеспечение создается людьми. Каждая строка программы, выполняемой компьютером, имеет определенный смысл. Очень странно, что все это работает! Ведь мы говорим о миллиардах строк программ, написанных на сотнях языков программирования. Для того чтобы все это правильно работало, люди затратили массу усилий и применили множество знаний.
Нет ни одного устройства, работу которого мы не хотели бы усовершенствовать. Достаточно просто задуматься о его функционировании, и вы сразу поймете, что именно требуется изменить. В любом случае каждое устройство можно уменьшить (или увеличить), заставить работать быстрее или надежнее, снабдить более широкими возможностями или мощностями, сделать красивее или дешевле. Очень вероятно, что для этого вам придется использовать программирование.
1.3. Люди
Компьютеры созданы людьми и для людей. Компьютер представляет собой универсальное устройство, его можно использовать для решения невероятно широкого спектра задач. Именно благодаря этому программы приносят пользу. Иначе говоря, компьютер — это просто груда железа, пока некто — программист — не напишет программу, делающую что-то полезное. Мы часто забываем о программном обеспечении. Еще чаще забываем о программисте.
Голливуд и другие “масскультовые” источники дезинформации создали программистам весьма негативный имидж. Например, по их мнению, программист — это одинокий толстый отщепенец, не имеющий социальных связей, не отрывающийся от видеоигр и постоянно залезающий в чужие компьютеры. Он (почти все программисты в фильмах — мужчины) либо стремится разрушить весь мир, либо спасти его. Разумеется, в реальном мире существуют люди, отдаленно напоминающие эту карикатуру, но наш опыт показывает, что среди программистов они встречаются не чаще, чем среди адвокатов, полицейских, продавцов автомобилей, журналистов, артистов и политиков.
Подумайте об известных вам компьютерных приложениях. Можете вспомнить приложение, используемое одиночкой в темной комнате? Конечно, нет! Разработка фрагментов программного обеспечения, компьютерных устройств или систем невозможна без совместной работы десятков, сотен и даже тысяч людей, играющих невероятно разнообразные роли: например, среди них есть программисты, проектировщики, тестировщики, аниматоры, менеджеры фокус–групп, экспериментальные психологи, разработчики пользовательского интерфейса, аналитики, системные администраторы, специалисты по связям с потребителями, звукоинженеры, менеджеры проектов, инженеры по качеству, статистики, разработчики интерфейсов аппаратного обеспечения, специалисты по разработке технических заданий, сотрудники службы безопасности, математики, продавцы, ремонтники, проектировщики сетей, специалисты по методологии, менеджеры по разработке программного обеспечения, специалисты по созданию библиотек программ и т.п. Диапазон ролей огромен и неисчерпаем, при этом их названия варьируются: инженер в одной организации в другой компании может называться программистом, разработчиком, членом технической команды или архитектором. Существуют даже организации, позволяющие своим сотрудникам самим выбирать, как называются их должности. Не все эти роли непосредственно связаны с программированием. Однако лично нам приходилось встречаться с людьми, основным занятием которых было читать или писать программы. Кроме того, программист (выполняющий одну или несколько из указанных ролей) может некоторое время контактировать со многими людьми из других прикладных областей: биологами, конструкторами автомобилей, адвокатами, продавцами автомобилей, медиками, историками, геологами, астронавтами, авиаконструкторами, менеджерами лесопилок, ракетостроителями, проектировщиками боулингов, журналистами и мультипликаторами (да, этот список — результат личного опыта). Некоторые из них также могут быть некоторое время программистами, а затем занять должность, не связанную с программированием.
Миф о программисте-одиночке — просто выдумка. Люди, предпочитающие самостоятельно выбирать задания, лучше всего соответствующие их способностям, обычно горько жалуются на то, что их часто отвлекают или вызывают на совещания. Люди, предпочитающие контактировать с другими людьми, чувствуют себя намного комфортнее, так как разработка современного программного обеспечения — коллективное занятие. По этой причине социальные связи и навыки общения для программистов имеют намного более высокую ценность, чем считается. Одним из наиболее желательных навыков программиста (реального программиста) является умение общаться с разными людьми — на совещаниях, посредством писем и на формальных презентациях. Мы убеждены, что, не завершив один-два коллективных проекта, вы не получите представления о том, что такое программирование и действительно ли оно вам нравится. В частности, мы любим программирование за возможность общаться с приятными и интересными людьми и посещать разные города.
Единственной сложностью является то, что все эти люди имеют разное образование, интересы и привычки, влияющие на производство хорошего программного обеспечения. От этих людей зависит качество нашей жизни — иногда даже сама жизнь. Ни один человек не может играть все роли, упомянутые выше; да и, вообще, ни один разумный человек к этому не стремится. Мы перечислили их, чтобы показать, что вы имеете намного более широкий выбор возможностей, чем можете себе представить. Можете перебирать разные области занятий, выбирая то, что лучше всего соответствует вашим умениям, талантам и интересам.
Мы все время говорим о программистах и программировании, но совершенно очевидно, что программирование — это только часть общей картины. Люди, разрабатывающие корабли или мобильные телефоны, не считают себя программистами. Кроме того, хотя программирование — важная часть разработки программного обеспечения, разработка программного обеспечения — это не только программирование. Аналогично, для большинства товаров разработка программного обеспечения — это важная часть производства, но не все производство.