Эти маленькие сниппеты кода изменили мир

В 1997 году Итан Цукерман (Ethan Zuckerman) совершил революцию в интернете, изобретя всплывающую рекламу.

Цукерман работал в онлайн-сервисе Tripod.com, предоставлявшем возможность бесплатно создавать небольшие веб-страницы. Сервис зарабатывал на продаже рекламы, которая размещалась на этих страницах. Однако заказчикам не нравилось, когда реклама соседствовала с непристойным контентом.

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

Тогда-то Цукерман и нашел необычное решение. При открытии страницы Tripod создавалась совершенно новая, всплывающая и содержащая рекламу страница. Таким образом, реклама демонстрировалась отдельно от любой конкретной страницы пользователя. Она просто всплывала над ней.

Дело здесь вот в чем. Небольшой фрагмент кода из одной строки на Javascript создавал всплывающую рекламу:

window.open('http://tripod.com/navbar.html'
"width=200, height=400, toolbar=no, scrollbars=no, resizable=no, target=_top");

По сути, Javascript дает браузеру указание: открыть новое окно шириной 200 пикселей и высотой 400 пикселей, без полосы прокрутки и панели инструментов сверху, расположенное поверх любых открытых веб-страниц.

Просто, но эффективно! Довольно скоро коммерческие сайты скопировали инновацию Цукермана. Интернет был буквально наводнен всплывающей рекламой. Как отмечали некоторые программисты, работающие с такими сайтами в начале 00-х годов, подавляющая часть доходов поступала от всплывающей рекламы для взрослых.

Сегодня никому не нравятся всплывающие рекламные окна и по возможности они блокируются пользователями в браузере.

По мнению самого Цукермана, он написал одну строку кода, “которая сделала мир заметно хуже”.

История Цукермана описана в книге Это сложно понять: как 26 строк кода изменили мир (“You Are Not Expected to Understand This”: How 26 Lines of Code Changed the World). Она включает коллекцию невероятно забавных коротких очерков о фрагментах кода, которые изменили мир.

Поразительно, насколько краткое изложение большинства из этих сниппетов явно противоречит многим общепринятым представлениям о программировании, как о больших по объему фрагментах кода. Голливуд любит изображать программистов с мелькающими над клавиатурой пальцами и выдающих потоки кода. Рассказывая о причинах доминирования Google, обычно ссылаются на “2 миллиарда строк кода”, будто именно они стали основой успеха компании.

На как часто бывает, все совсем наоборот. В действительности оригинальная инновация Google  —  это фрагмент кода, который еще в 90-х годах обеспечил компании преимущество над поисковыми системами конкурентов. Речь идет об алгоритме PageRank. Он рассчитывает рейтинг веб-страницы на основе количества и качества связанных с ней страниц. Это небольшой фрагмент кода, и его версии на Python состоят всего из нескольких десятков строк.

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

В этой книге представлено множество увлекательных примеров, и она заслуживает внимания читателей. Так, есть глава Чарльтона Макилвейна об алгоритме действий полиции (police beat), разработанном в конце 1960-х годов. Он предназначался для предсказания наиболее вероятных мест правонарушений, чтобы правоохранительные органы могли заранее отправить туда дополнительные полицейские силы. Однако, поскольку в бедных черных кварталах и так находилось много полиции в сравнении с другими, алгоритм направил туда дополнительных полицейских, которые произвели больше арестов. Это убедило алгоритм отправить еще больше полиции. И так по кругу.

Алгоритм police beat не очень большой. Иллюстрацию к нему создал художник Келли Чадлер.

А вот еще один изменивший мир, еще более короткий фрагмент кода. Это так называемый “пиксель отслеживания ” (tracking pixel).

Вероятно, многие сталкиваются с эти кодом ежедневно, не осознавая этого, отмечает Лили Хей Ньюман в главе об отслеживании пикселей. Это небольшой фрагмент HTML, встраивающий в электронное письмо один крошечный пиксель, настолько маленький, что вы его не увидите. Но если кто-то отправит вам электронное письмо с этим кодом отслеживания, он сможет шпионить за вами. Работает это так. Как только вы открываете сообщение, код требует, чтобы ваш браузер запросил это однопиксельное изображение. Человек, который прислал вам письмо, видит этот запрос и может контролировать событие открытия письма.

Ввод пикселя отслеживания в электронное письмо невероятно прост. Это единственная строка:

<img src="URL LINKING TO THE PIXEL ONLINE" width="0" height="0

И напоследок, более ранний пример! В книге есть глава (авторы Эллен Р. Стофан и Ник Партридж ) о коде “спасения” (bailout), написанном для посадочного модуля лунной экспедиции Аполлон 11. Код bailout работал на бортовом мини-компьютере лунного модуля и был разработан для того, чтобы обеспечить в первую очередь решение приоритетных задач. Если компьютер перегружен, блокируются все процессы, кроме самой важной работы.

Это здорово помогло при посадке лунного модуля, потому что, конечно же, компьютер оказался перегруженным рабочими заданиями. Код bailout начал действовать, закрыв все дополнительные задачи, не связанные с посадкой модуля. Он даже отключил некоторые дисплеи внутри лунного модуля, что напугало космонавтов. Но задача была решена: модуль благополучно совершил посадку на Луне.

Вот этот код  —  всего 22 строки.

POODOO    INHINT
    CA  Q
    TS  ALMCADR

    TC  BANKCALL
    CADR  VAC5STOR  # STORE ERASABLES FOR DEBUGGING PURPOSES.

    INDEX  ALMCADR
    CAF  0
ABORT2    TC  BORTENT

OCT77770  OCT  77770    # DONT MOVE
    CA  V37FLBIT  # IS AVERAGE G ON
    MASK  FLAGWRD7
    CCS  A
    TC  WHIMPER -1  # YES.  DONT DO POODOO.  DO BAILOUT.

    TC  DOWNFLAG
    ADRES  STATEFLG

    TC  DOWNFLAG
    ADRES  REINTFLG

    TC  DOWNFLAG
    ADRES  NODOFLAG

    TC  BANKCALL
    CADR  MR.KLEAN
    TC  WHIMPER

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Clive Thompson: Tiny Snippets of Code That Changed The World

Предыдущая статья4 типичные ошибки разработчиков Node.js
Следующая статья9 встроенных декораторов Python, которые помогут оптимизировать код