Выбрать главу

В качестве пусть и единичного примера приведу Жанну Кальман, француженку, которая прожила 122 года, при этом выкуривала по 2 сигареты в день, вплоть до 117 лет, пила вино, хотя в остальном и вела здоровый образ жизни. Большинство исследователей долгожительства отмечают, что у долгожителей такая генетика (были родственники-долгожители).

Машина

Что такое квантовый компьютер и в чем состоит проблема его создания?

Артем Бакулин
программист, Deutsche Bank

Ячейка памяти обычного компьютера хранит один бит информации: либо нолик (конденсатор разряжен), либо единичку (конденсатор заряжен). 64 такие ячейки позволяют закодировать одно из 18 квинтиллионов (2 в степени 64) различных целых чисел.

Представьте, что одно число из этих 18 квинтиллионов является решением какой-то важной и сложной задачи, например описывает лекарство от рака. Часто такие задачи не имеют аналитического решения и решаются только полным перебором всех возможных вариантов. Если обычный компьютер может проверить миллиард (109) вариантов в секунду, то полный перебор займет примерно 585 лет.

Ячейка памяти квантового компьютера, которая называется кубит, может одновременно находиться в обоих состояниях: с некоторой вероятностью нолик, с некоторой вероятностью единичка. Соответственно, 64 таких кубита могут одновременно кодировать каждое из 18 квинтиллионов чисел от 0 до 264 – 1.

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

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

Как написали первую программу без программы для написания программ?

Артем Бакулин
программист, Deutsche Bank

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

Центральный процессор вашего компьютера понимает только программы, написанные на языке ноликов и единичек. Например, команда «прибавить константу 5 к числу, записанному в регистре AL», записывается так: 0000 0100 0000 0101

Здесь 0000 0100 – код операции «прибавить число к регистру AL», а 0000 0101 – двоичное представление числа 5.

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

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

Можно один раз хорошенько помучиться и написать на языке ноликов и единичек вспомогательную программу, которая называется ассемблер («сборщик»). Этот волшебный ассемблер принимает на вход человеко-читаемый текст и преобразует его в нолики и единички. Например, та же самая команда «прибавить константу 5 к числу, записанному в регистре AL», записывается на языке ассемблера x86 так:

ADD AL, 5

Думаю, вы согласитесь, что это все-таки более читаемо, чем 0000 0100 0000 0101. Здесь хотя бы понятно, что речь идет о сложении (ADD) и числе 5. Теперь уже дело ассемблера преобразовать эту строчку в 0000 0100 0000 0101. На языке ассемблера сложно писать большие программы, процессоры разных производителей могут требовать разных ассемблеров, но все равно это был большой шаг вперед.