12
Программирование как археология
иллюстрацияЗадолго до того, как нейросети научились писать код, я программировал способом, который многих программистов раздражает до сих пор. Я редко начинал с пустого файла. Если где-то уже лежал кусок работающей системы, который решал хотя бы половину моей задачи, мне было гораздо интереснее понять, как его приспособить, чем доказывать себе, что я могу написать то же самое заново. Иногда я разбирался в его внутренностях, иногда нет, и обычно ровно до той глубины, которая требовалась, чтобы следующий слой системы заработал.
Долгое время я считал это чем-то вроде дурной привычки, которую стоит скрывать от серьёзных инженеров. Потом появились языковые модели, и эта привычка оказалась едва ли не самым полезным навыком для работы с ними.
В 1911 году английский математик и философ Альфред Норт Уайтхед написал во вводной книжке о математике фразу, которую я считаю одной из самых точных когда-либо сказанных про технику: цивилизация движется вперёд, увеличивая число важных операций, которые мы можем выполнять, не думая о них. Он добавил, что мыслительные операции похожи на кавалерийские атаки в сражении: их число строго ограничено, для них нужны свежие лошади, и предпринимать их надо только в решающие моменты.
Большую часть своей жизни каждый из нас так и живёт. Вы водите машину, не зная, в какой момент в цилиндре срабатывает искра. Вы платите картой, не представляя, через сколько банков и процессинговых центров проходит ваша покупка кофе за те две секунды, пока терминал думает. Вы открываете сайт, и ни одна клетка вашего мозга не занята тем, как устроен протокол, по которому страница добирается до вашего телефона. Программисты в этом смысле живут так же, как все: ни один нормальный разработчик не читает исходный код сетевых протоколов, прежде чем написать программу, которая отправляет данные по сети. Он знает, что протокол обещает, и этого достаточно, пока обещание выполняется.
архивЯ, наверное, привык к такому способу работы ещё в начале двухтысячных, в петербургской компании «Ниеншанц», где занимался системной интеграцией. Мы собирали для заказчиков большие вычислительные системы из чужих компонентов. Одним из таких компонентов была Oracle RAC, база данных, которая умеет распределяться по нескольким серверам так, что для программ, которые к ней обращаются, она выглядит как одна. Другой запомнившейся работой был вычислительный кластер на процессорах Intel Itanium для АвтоВАЗа, на котором должен был работать пакет LS-DYNA.
После входа
Дальше книга открыта для тех, кто вошёл
Войдите через INITE или заведите аккаунт. Это займёт минуту, и книга откроется прямо здесь.