Прежде чем мы начнём, позвольте мне прояснить: да, этот список субъективен. Он предназначен не для того, чтобы расставить все точки над i, а для того, чтобы начать обсуждение. Эти семь работ (в хронологическом порядке) выделяются для меня главным образом из-за их влияния на современный мир. Честно говоря, каждая из них заслуживает отдельной статьи в блоге (или даже книги!), но давайте пока ограничимся этим. Если ваш фаворит не попал в этот список, не волнуйтесь: в конце, в бонусном разделе, я назову ещё несколько работ, которые были так близки к тому, чтобы попасть в основной список. Итак, погружаемся!

1. «О вычислимых числах, с приложением к проблеме разрешения» (1936)

Автор: Алан Тьюринг

На дворе 1930-е годы, и «программируемая машина» звучит как нечто из научно-фантастического романа. Затем появляется Алан Тьюринг, который закладывает основы того, что теоретически могут делать компьютеры. Он набрасывает гипотетическую «машину Тьюринга», доказывая, что если что-то вообще поддаётся вычислению, то машина (в принципе) может это сделать.

В чём смысл

Простая модель Тьюринга — лента, головка для чтения/записи и конечный набор состояний — превратилась в дедушку всех современных вычислений. Она определила, что является решаемым (а что нет) в чисто механическом смысле, по сути, дав нам «правила игры» для решения цифровых задач.

Почему это важно сегодня

Каждый язык программирования, каждый кусок кода играет по правилам Тьюринга. Даже когда мы говорим о квантовых вычислениях, мы всё равно ссылаемся на границы, описанные Тьюрингом. Это огромное свидетельство силы одной статьи, опубликованной в середине 1930-х годов.

Подробнее

2. «Математическая теория связи» (1948)

Автор: Клод Шеннон

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

В чём смысл

Шеннон взял абстрактное понятие «информация» и превратил его в нечто измеримое. Это помогло нам понять, как эффективнее упаковывать данные (сжатие) и как защитить их от ошибок (коды с коррекцией ошибок), независимо от того, отправляем ли мы сигналы в космос или смотрим Netflix в пятницу вечером.

Почему это важно сегодня

Каждый раз, когда вы отправляете сообщение, смотрите потоковое видео или звоните маме по FaceTime, вы используете идеи Шеннона. Без них вы бы имели дело с гораздо более искажённым звуком и беспорядочными данными, поверьте мне.

Узнать больше

3. «Реляционная модель данных для больших общих банков данных» (1970)

Автор: Эдгар Ф. Кодд

Итак, мы можем что-то вычислять и общаться друг с другом — это здорово. Но в итоге мы оказываемся погребёнными под горами данных. Эдгар Ф. Кодд предвидел это и представил реляционную модель, благодаря которой мы можем хранить и запрашивать данные.

В чём смысл

Кодд сказал: «Давайте хранить данные в таблицах и манипулировать ими с помощью логических операций». Сейчас это может показаться очевидным, но в то время это была революционная идея. Его проект привёл к созданию SQL и огромного семейства реляционных баз данных, на которых работают практически все банки, сайты розничной торговли и корпоративные системы, которые только можно себе представить.

Почему это важно сегодня

Даже в эпоху NoSQL основополагающие концепции организации данных (таблицы, схемы, согласованность) восходят к Кодду. Если вы хоть раз в жизни писали SQL-запрос — это всё благодаря ему.

Узнать больше

4. «Сложность процедур доказательства теорем» (1971)

Автор: Стивен А. Кук

Теперь, когда мы эффективно храним данные, как насчёт самих вычислений? Оказывается, некоторые задачи просто... мучительно трудны. В работе Стивена Кука была представлена NP-полнота — концепция, которая, по сути, говорит: «Да, некоторые задачи настолько сложны, что даже суперкомпьютеры вспотеют».

В чём смысл

Кук показал, что задача выполнимости булевых формул (SAT) является NP-полной, а это значит, что если вы волшебным образом быстро решите SAT, то сразу же разгадаете кучу других, казалось бы, невозможных проблем. Это позволило создать универсальный язык для разговора о сложности задач.

Почему это важно сегодня

Всякий раз, когда вы видите в описании задачи слово «NP-трудная» или удивляетесь, почему оптимизация маршрута напрягает ваш процессор, — это наследие Кука. Оно привело к огромному развитию алгоритмов, криптографии и поиску эффективных решений (или хотя бы достойных приближений).

Подробнее

5. «Протокол для пакетной передачи данных по сетям» (1974)

Авторы: Винтон Г. Серф и Роберт Е. Кан.

Отлично, у нас есть сложные проблемы, которые нужно решить, и данные, которые нужно хранить, но как связать все эти компьютеры вместе? TCP, разработанный Сёрфом и Каном, превратил изолированные сети во взаимосвязанную паутину, позволяя данным скакать по планете крошечными пакетами.

В чём смысл

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

Почему это важно сегодня

Коротким ответом будет практически весь интернет. Когда вы просматриваете веб-страницы, отправляете электронное письмо или безопасно входите на сайт своего банка, вы опираетесь на TCP/IP для надёжного перемещения битов. Конечно, некоторые приложения, работающие в режиме реального времени, могут использовать UDP, но основная идея сети на базе IP, заложенная Сёрфом и Каном, по-прежнему объединяет все наши устройства в одну глобальную сеть.

Узнать больше

6. «Управление информацией: Предложение» (1989)

Автор: Тим Бернерс-Ли

Кстати, о TCP/IP: как только машины смогли легко общаться друг с другом, Тим Бернерс-Ли спросил: «А как насчёт того, чтобы сделать эту штуку дружелюбной для всех?». Так родилась Всемирная паутина.

В чём смысл

Бернерс-Ли предложил глобальную гипертекстовую систему, дополненную гиперссылками, URL-адресами и HTTP. Внезапно документы по всему миру перестали быть изолированными, они «сплелись» в единую сеть, превратив Интернет в нечто, в чём могут ориентироваться обычные люди (а не только учёные).

Почему это важно сегодня

Мы живём в Интернете. Будь то социальные сети, интернет-магазины или чтение непонятных постов в блогах в три часа ночи — всё это появилось благодаря этому простому предложению. Оно навсегда изменило то, как мы обмениваемся знаниями.

Узнать больше

7. «Анатомия крупномасштабной гипертекстовой поисковой системы Web» (1998)

Авторы: Сергей Брин и Ларри Пейдж

Когда веб Бернерса-Ли взорвался, он превратился в джунгли из ссылок, страниц и мемов с котиками. Сергей Брин и Ларри Пейдж решили приручить эти джунгли. Их подход, основанный на анализе ссылок, превратился в поисковую систему, которую мы теперь называем «Google».

В чём смысл

Они ввели PageRank, который рассматривал ссылки как голоса доверия, а не просто как новое измерение для подсчёта ключевых слов. В результате произошёл сейсмический скачок в релевантных результатах поиска, и веб стал... удобным для поиска.

Почему это важно сегодня

Вводите вопрос в Google и получаете мгновенный ответ? Это PageRank (и многие последующие инновации) в действии. Он переосмыслил то, как мы ориентируемся в Интернете, и положил начало новой эре технологий, основанных на данных — рекламы, аналитики, машинного обучения.

Узнать больше

Бонусы (5 бонусов, которые почти попали в список)

  1. «Рекурсивные функции символических выражений и их машинное вычисление» (1960) — Джон Маккарти

Представил Лисп и функциональный стиль программирования, который до сих пор проникает в современные языки и фреймворки.

  1. «О вреде оператора Go To » (1968) — Edsger Dijkstra

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

  1. «Время, часы и упорядочивание событий в распределённой системе» (1978) — Лесли Лэмпорт

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

  1. «Волшебных таблеток не существует — сущность и случайность в программной инженерии» (1986) — Фред Брукс

Брукс утверждал, что не существует единого волшебного средства для решения проблемы сложности, присущей разработке программного обеспечения. Спустя десятилетия, когда мы гонимся за «следующей большой вещью» во фреймворках или методологиях, его сообщение остаётся отрезвляющим напоминанием о том, что некоторые проблемы просто сложны.

  1. «Всё, что вам нужно – это внимание» (2017) — Vaswani et al.

Архитектура трансформатора, стоящая за GPT и другими известными моделями ИИ. Если вас впечатляют большие языковые модели, это ваша схема действий.

Заключение

В наши дни на нас обрушился поток новинок: новые языки, умопомрачительные прорывы в области ИИ, квантовые скачки и еженедельные новые фреймворки JavaScript. Всё это очень интересно, но вот в чём дело: основы имеют значение. Без них мы просто нагромождаем новые игрушки, не понимая до конца, на каком фундаменте мы возводим наше здание. Статьи в этом посте — это напоминание о том, откуда взялись наши основные концепции — структуры данных, алгоритмы, сам веб.

Комментарии (0)