Это не просто история об ужасной генетической силе; это также ужасная история о плохом программировании.

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

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

Арнольд: Фары машины включены и не реагируют, они не должны работать от автомобильных аккумуляторов. Пункт 151 в сегодняшнем списке глюков. У нас есть все проблемы крупного тематического парка и крупного зоопарка, а компьютеры еще даже не на ногах.

Хаммонд: Деннис, наши жизни в ваших руках, а у вас пальчики оближешь?

Недри: (Раздраженный смех) В свое время меня совершенно не ценили. Вы можете управлять всем этим парком из этой комнаты в течение трех дней. Вы думаете, что такая автоматизация проста? Или дешево?

Да, Малькольм был прав: генетическая сила была слишком большой ответственностью для менеджеров парка. В конце концов, это должно было закончиться трагедией. В 1990 году Майкл Крайтон озвучил предупредительный призыв к технологии, которая только за последнее десятилетие приблизилась к возможностям, которые можно было бы использовать для запуска проектов, подобных «Парку Юрского периода». Но Крайтон предсказал другую, более насущную проблему: полную зависимость Парка Юрского периода от кода и полную неспособность кода защитить жизни. «Парк Юрского периода» — это не просто рассказ о разбушевавшихся динозаврах, а предупреждение о том, что происходит, когда код и кодеры становятся плохими.

Меня совершенно недооценивают в свое время

Начнем с очевидного, бесспорного злодея Парка Юрского периода.

Позиция Ньюмана (особенно в романе) — та, которой мы могли бы сопереживать. Очевидно, он очень талантливый системный инженер — в конце концов, в фильме он кажется единственным программистом на острове — и страдает от нераскрытых финансовых проблем. В книге его положение еще менее завидно: руководство Парка Юрского периода просит его работать бесплатно, чтобы ускорить завершение систем парка, не говоря ему, что он помогает строить.

Но лучшие злодеи — это те, которым мы можем сочувствовать, и беды Недри просто не оправдывают его преступлений. Версия Недри в фильме, очевидно, имеет много открытых билетов на ошибки (151 за один день, ооо) и очень мало заинтересована в их фактическом закрытии. Нас заставили поверить, что технологические ограничения 1993 года означают, что устранение сбоев требует ненормального времени простоя системы, хотя время простоя могло быть просто дымовой завесой, чтобы прикрыть ограбление его эмбриона.

Однако после прискорбной кончины Недри компьютерные системы парка по-прежнему недоступны — и бойня начинается здесь, а не в зияющей пасти хищного рекса. Давайте отсюда рассмотрим не то, как динозавры убивали людей (механика этого довольно проста), а то, как код не выполнил три ключевые задачи:

  1. Разборчивость кода
  2. Доступность системы
  3. Отказоустойчивость и смягчение кризисных ситуаций

Вы могли бы управлять всем этим парком из одной комнаты в течение трех дней

Ниже следует фактическая, по-настоящему последовательная хронология событий, выпавших на долю Парка Юрского периода:

  • План Недри начинается. Незначительные системы безопасности, такие как камеры и дверные замки, отключаются. Телефоны также отключаются.
  • Более крупные системы, такие как заборы по периметру и загоны, начинают выходить из строя.
  • Пытаясь получить доступ к системе безопасности и снова включить системы, ведущий инженер Рэй Арнольд сталкивается с недокументированным протоколом аутентификации (по сути, вирусом), который Недри ввел для предотвращения доступа к системе.
  • Энергетические системы начинают давать сбои целостно. Система питания беспилотных гусеничных автомобилей выходит из строя, автомобили застревают и не могут управляться без помощи компьютера. Электропитание ограждения загона тираннозавра выходит из строя, тираннозавр убегает, у автомобилей нет возможности выехать. Одна смерть, одно ранение.
  • Арнольд обнаруживает, что программа Недри отключила способность компьютера сохранять нажатия клавиш, а это означает, что Арнольду нужно будет проанализировать 2 000 000 строк компьютерного кода, чтобы выяснить, какую программу Недри запускал для отключения систем безопасности.
  • Исчерпав варианты (вроде как), Хаммонд и Арнольд решают вручную перезагрузить компьютерные системы, перезапустив питание объекта. Кажется, это удается, но отключаются выключатели, которые нужно снова включить — они находятся на другом конце комплекса. Арнольд убит, пытаясь восстановить власть.
  • Элли Сэдлер и Роберт Малдун также пытаются восстановить электричество. Малдун убит. Сэдлер преуспевает.
  • Системы парка восстановлены, но все сотрудники Парка Юрского периода, умеющие ими пользоваться, мертвы.
  • Дверные замки автоматизированы, запереть двери вручную невозможно. Из-за этого чуть не погибли оценщики парка Грант и Сэдлер.
  • Внучка основателя, к счастью, знакома с Unix и умеет использовать сложный графический интерфейс для восстановления дверных замков, телефонов и других систем безопасности. Это ускоряет спасение всех выживших.

В общей сложности четыре человека погибли, один человек получил тяжелые ранения. В каждом инциденте (конечно) был замешан динозавр, но также было и неправильное суждение или незаконное присвоение системного кода парка. Не говоря уже о том, что парк не может управляться из одной комнаты в течение трех дней с минимальным персоналом. Уверенность в автоматизации оказалась не благом, а помехой.

Легкий? Или дешево?

Найдите минутку, чтобы подумать, насколько серьезна угроза, изображенная в «Парке Юрского периода», в вашей повседневной жизни. Сколько из нас (особенно сейчас, когда «Парк Юрского периода» стал главным кинематографическим продуктом) могут быть вынуждены провести бета-тестирование парка динозавров на острове у побережья Коста-Рики? Будь то генетические ограничения или непреодолимые PR-препятствия, я думаю (надеюсь?), можно с уверенностью сказать, что настоящего Парка Юрского периода не будет при нашей жизни.

Так что не бойтесь динозавров. Но как насчет того, чтобы бояться полного провала кода, управляющего большим тематическим парком? Большая часть нашей критически важной инфраструктуры (самолеты, больницы, автомобили, системы безопасности, банковское дело) в той или иной степени работает на программном обеспечении — часто в большей степени, чем думает большинство людей. Но эти системы созданы непревзойденными и внимательными профессионалами, верно? Деннис Недри определенно не является разработчиком из Кембриджа, верно?

Крупномасштабные программные сбои не только вполне возможны, многие из них уже произошли. Посмотрите на неисправность Therac-25, где состояние гонки в коде аппарата для лучевой терапии Therac-25 привело к смертельному облучению как минимум шести пациентов. Или взгляните на смерть Элейн Херцберг в результате столкновения с беспилотным автомобилем Uber всего в прошлом году. — Боюсь, этот список можно продолжить. Большинство этих инцидентов даже не соответствуют масштабам грубой небрежности, изображенной в Парке Юрского периода; многие из них возникают из-за небольших, неуловимых повседневных проблем программирования.

Это подводит нас, наконец, к морали истории «Парка Юрского периода» за пределами динозавров: независимо от того, просты они или дешевы, важные программы должны быть правильными и надежными. Системы Парка Юрского периода были неправильными. В значительной степени это происходит из-за вмешательства злонамеренного кодера, но трудно игнорировать тот факт, что система не была хорошо оборудована для обработки сбоев.

Кроме того, это единственная известная мне история ужасов, в которой злодей является архетипически высокомерным программистом, которого можно узнать на наших нынешних рабочих местах. Был ли Недри самым талантливым программистом своего времени, как он это оценивает? У нас нет причин классифицировать Недри как плохого программиста — он одобрен Кембриджем, он, кажется, единственный программист в штате (в романе это не соответствует действительности), и он, безусловно, единственный сотрудник, который полностью понимает, как управлять системами, которые он построил, к его дискредитации.

Но хотя он и хороший кодер, Недри — ужасный профессионал. Он не сильный коммуникатор, сдержан и устойчив к критике. Его система, хотя и функциональная, без его помощи использовать невозможно. На основании одного только этого факта системные приложения Jurassic Park должны считаться необслуживаемым кодом (проверка кода на 2 000 000 строк, есть желающие?).

Революционная автоматизация приветствуется многими людьми в технической сфере как решение любой проблемы. Я бы посоветовал «футуристам» технологий рассмотреть недостатки полностью автоматизированных систем, особенно в том, что касается отказа и восстановления этих систем. Если система дает сбой, сколько людей знают, как это исправить? Как мы можем запереть двери? Восстановить электроэнергию, не выходя из аварийного бункера? Вождение автомобиля от неминуемой опасности без протокола вождения автомобиля онлайн?

Обеспечить дистанционное обезвреживание сбившихся с курса ракет? Убедиться, что пассажиры беспилотных автомобилей уведомлены о возможных столкновениях?

Пункт 151 в сегодняшнем списке ошибок

Да, я по-прежнему взволнован и напуган перспективой отрубить руку (оправданно) разочарованному велоцираптору, но я думаю, что большинство людей сегодня понимают, почему возвращение динозавров из могилы — это идея, от которой стоит отказаться.

Но безответственное программирование, которое вполне могло бы управлять многими аспектами нашей текущей повседневной жизни, остается вне новостей, если не происходит катастрофы. Это больше, чем острые зубы и глаза рептилии, не даст мне спать по ночам.