Системы
Понятие «система» относительно ново для науки. Восточные философы уже давно рассматривали мир как единую систему, состоящую из различных компонентов, но в западной традиции было принято разделять его на отдельные явления, развивающиеся в различных направлениях.
Машины только недавно стали системами. Подъемный блок – это машина; но лифт – это комплексная система, включающая много различных механизмов. Системы взаимодействуют: лифт взаимодействует с электрической системой здания, с его системой пожарной безопасности и, возможно, даже с его системой защиты окружающей среды. Компьютеры, взаимодействуя, образуют сети; сети, взаимодействуя, образуют более крупные сети… в общем, вы уловили идею.
Адмирал Грейс Хоппер говорил: «Жизнь была проще перед Второй мировой войной. После этого у нас появились системы». Это – очень проницательный взгляд на вещи.
Если вы используете концепцию систем, можно проектировать и строить в более крупном масштабе. Есть разница между созданием особняка и небоскреба, орудия и ракеты Patriot, посадочной полосы и аэропорта. Каждый может изготовить светофор, но разработать городскую систему транспортного контроля значительно сложнее.
Интернет, возможно, наиболее сложная система, которая когда-либо разрабатывалась. Она включает в себя миллионы компьютеров, объединенных в непредсказуемо сложные физические сети. На каждом компьютере работают сотни программ, некоторые из них взаимодействуют с программами, установленными на том же компьютере, другие – через сеть с программами, установленными на удаленных компьютерах. Система принимает сигналы от миллионов пользователей, часто одновременно.
Один человек сказал: «Сэр, это зрелище подобно собаке, стоящей на задних лапах. Удивительно не то, что она делает это недостаточно хорошо, а то, что она вообще способна это делать».
Системы имеют несколько интересных свойств, которые уместно здесь обсудить.
Во-первых, они сложны. Механизмы просты: молоток, дверные петли, нож для бифштексов. Системы же намного сложнее: они имеют компоненты, петли обратной связи, среднее время отклика, инфраструктуру. Цифровые системы весьма затейливы: даже простая компьютерная программа состоит из тысяч строчек кода, описывающего всевозможные разновидности различных операций. Сложная программа имеет тысячи компонентов, которые могут работать как по отдельности, так и во взаимодействии друг с другом. Именно для сложных цифровых систем было разработано объектно-ориентированное программирование.
Во-вторых, системы взаимодействуют, формируя еще более крупные системы. Это может быть сделано намеренно – программисты используют объекты, чтобы дробить большие системы на малые, инженеры подразделяют большие механические системы на малые подсистемы, и так далее, – или происходит естественным образом. Изобретение автомобиля привело к развитию современной системы дорог и магистралей, а она, в свою очередь, взаимодействуя с другими системами, существующими в нашем мире, породила то, что мы называем мегаполисом. Система контроля авиалиний взаимодействует с навигационной системой самолета и с системой предсказания погоды. Тело человека взаимодействует с другими человеческими организмами и с другими системами на планете. Интернет переплетается со всеми наиболее важными системами в нашем обществе.
В-третьих, системы обладают неожиданными свойствами. Другими словами, они иногда могут делать вещи, которых разработчики и пользователи не ожидают от них. Телефонная система, например, породила новый способ взаимодействия людей. (Александр Грэхем Белл не имел представления, что телефон станет прибором для осуществления персональной связи, – он предполагал использовать его для сообщений о приходе телеграммы.) Автомобили изменили пути, на которых люди встречаются, назначают свидания и влюбляются. Системы защиты окружающей среды в зданиях оказывают влияние на здоровье людей, что также сказывается на работе системы здравоохранения. Системы обработки текстов изменили способ их написания. У Интернета полно неожиданных свойств: вспомните об электронных покупках, виртуальном сексе, совместном авторстве.
И – четвертое: в системах имеются «баги». Они являются особой разновидностью ошибки. Их наличие – неожиданное свойство системы, не предусмотренное при ее создании. «Баги» принципиально отличаются от сбоев. Если где-то происходит сбой, продолжение работы невозможно. Когда же имеется «баг», работа продолжается, хотя объект, ее производящий, ведет себя «плохо»: возможно, неустойчиво, возможно, необъяснимо. «Баги» – уникальное свойство систем. Машины могут ломаться или портиться, или не работать вовсе, но только системы могут иметь «баги».