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

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

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

Новый язык программирования Chain, как утверждают его разработчики, учитывает возможность потери компьютером питания и лишен недостатков операционных систем, работающих по принципу контрольных точек. В нем реализованы сразу два механизма сохранения промежуточных данных: разделение процесса на небольшие задачи с сохранением состояния задачи (завершена или нет) и результатов ее исполнения (например, итогов вычисления).

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

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

Сегодня существует несколько операционных систем, предполагающих ту или иную степень защищенности от сбоев питания. Они работают по принципу контрольных точек или постоянного сохранения состояния системы со всеми процессами. Таковыми, в частности, являются американские IBM i и EROS, а также российская «Фантом». Ни одна из них не распространена среди пользователей и имеет небольшой набор поддерживаемого программного обеспечения.