НовостиОбзорыСобытияIT@WorkРеклама
Идеи и практики автоматизации:

Блог

Разрабатываем живучее ПО, не боящееся никаких закладок

Автор технологии разработки систем, способных функционировать на потенциально скомпрометированном оборудовании (см. вчерашний пост) -- Michael Carbin, в Стэнфорде получивший награду за Best Computer Science Undergraduate Honors Thesis, а также MIT Lemelson Presidential и Microsoft Research Graduate Fellowships.

[spoiler]Он специализируется на тематике проектирования самоизлечивающихся систем и "приблизительных" вычислений (approximate computing). Его исследование по верификации способности программ исполняться на недостоверном оборудовании получило приз за лучший материал на ACM-конференции OOPSLA 2013 (Object-Oriented Programming, Systems, Languages & Applications).
http://people.csail.mit.edu/mcarbin/papers/oopsla13.pdf

Одно из тематических творений Карбина в MIT’s Computer Science and Artificial Intelligence Laboratory -- язык Rely (a language for building reliable programs on unreliable hardware).
http://newsoffice.mit.edu/2013/how-program-unreliable-chips

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

Вот кстати перечень десятков типовых закладок
http://habrahabr.ru/post/209746/

В то же время для ряда задач мягкие ошибки не страшны -- это например, мультимедийная обработка, машинное обучение или аналитика больших данных. Особенность Rely -- возможность для программиста количественно контролировать надежность приложения -- вероятность того, что оно выдаст правильный результат при выполнении на недостоверном оборудовании. Для этого задаются спецификации на команды исполнимой системы и нормативы надежности обрабатываемых значений, а методы статического анализа проверяют, удовлетворяет ли запрограммированная функция этим требованиям.
Можно также решать и обратные задачи -- например, задать допустимую погрешность результата, а исходя из него, код будет оптимизирован под высокую скорость или низкое энергопотребление.
Особо важная область применения Rely -- это распределенные системы, в которых отдельные узлы могут отказывать.

На страничке Карбина можно найти и другие полезные технологии (работающие автоматически, конечно), например выявление зацикленного кода в бинарниках для x86/x64, поиск опасных диапазонов входных значений для функций, патчинг ошибок в задеплоенных системах итд.

Перспективны исследования Карбина и еще в одном направлении -- инвесторы у него часто спрашивают, а можно ли например понизить качество вычислений на 3%, а получить выигрыш в производительности в сто раз? Для ряда задач это действительно возможно! И тут вероятен новый тренд в развитии аппаратных архитектур. А следом за ними появятся и принципиально иные схемы программирования (когда например, одни "ячейки памяти" могут быть более надежными, нежели другие) и новые принципы создания алгоритмов.

Далее посмотрим, как подобные проблемы решают сегодня американские военные организации, и что у них можно позаимствовать :)
Ruslan
народ технично подбирается к квантовым вычислениям
Сергей Бобровский
Да, что интересно, и вроде бы в другой тематике http://www.pcweek.ru/idea/blog/idea/6622.php
тоже математики к квантовому компьютингу заходят.