При создании системных служб, которые должны обладать высокой надежностью, я часто заканчиваю тем, что записываю много "отказоустойчивых" механизмов в случае таких вещей, как: сообщения, которые ушли (например, связь с БД), что произойдет, если мощность теряется, и сервис перезапускается... как подобрать куски и продолжить правильно (и помня, что при сборе частей мощность могла снова выходить...) и т.д. и т.д.
Я могу себе представить, что для не слишком сложных систем язык, который мог бы удовлетворить это, был бы очень практичным. Таким образом, язык, который будет помнить, он будет указывать в любой момент, независимо от того, будет ли власть отключена и продолжается, где она остановилась.
Это еще существует? Если да, где я могу его найти? Если нет, почему это невозможно реализовать? Мне показалось, что это очень удобно для критических систем.
p.s. В случае потери соединения с БД, это будет означать, что возникла проблема, и требуется ручное вмешательство. В тот момент, когда соединение будет восстановлено, оно будет продолжено там, где оно остановилось.
EDIT: Поскольку обсуждение, кажется, скончалось, позвольте мне добавить несколько моментов (ожидая, прежде чем я смогу добавить щедрость на вопрос)
Ответ Erlang, по-видимому, сейчас самый популярный. Я знаю Эрланг и прочитал прагматичную книгу Армстронга (главного создателя). Все это очень приятно (хотя функциональные языки заставляют мою голову вращаться со всей рекурсией), но бит "отказоустойчивый" не приходит автоматически. Отнюдь не. Erlang предлагает множество супервизоров других методик для контроля процесса и при необходимости перезапускает его. Однако, чтобы правильно сделать что-то, что работает с этими структурами, вы должны быть довольно гуру erlang и должны сделать ваше программное обеспечение подходящим для всех этих фреймворков. Кроме того, если мощность падает, программисту тоже нужно подобрать кусочки и попытаться восстановить следующий раз, когда программа перезагрузится
То, что я ищу, намного проще:
Представьте себе язык (такой же простой, как PHP), где вы можете делать такие вещи, как запросы БД, действовать на нем, выполнять манипуляции с файлами, выполнять манипуляции с папками и т.д.
Основная функция, однако, должна быть: если власть умирает, и вещь перезапускается, она берет то место, где она остановилась (поэтому она не только запоминает, где она была, но и запоминает состояния переменных). Кроме того, если он остановился в середине файловой машины, он также будет правильно возобновлен. и т.д.
И последнее, но не менее важное: если соединение с БД падает и не может быть восстановлено, язык просто останавливается и сигналы (возможно, syslog) для вмешательства человека, а затем продолжаются там, где это было остановлено.
Язык, подобный этому, значительно облегчит программирование услуг.
EDIT: Кажется (судя по всем комментариям и ответам), что такой системы не существует. И, вероятно, не будет в ближайшем обозримом будущем из-за того, что он (рядом?) Не может быть прав.
Слишком плохо.... снова Я не ищу этот язык (или фреймворк), чтобы доставить меня на Луну или использовать его для наблюдения за чьим-то сердцем. Но для небольших периодических сервисов/задач, которые всегда в конечном итоге имеют нагрузку на обработку кода bordercases (сбой питания где-то посередине, соединения снижаются и не возвращаются),... где пауза здесь,... исправлять проблемы,.... и продолжить, где вы остановились, будет хорошо работать.
(или подход контрольной точки, как указывал один из комментаторов (например, в видеоигре). Установите контрольную точку.... и если программа умрет, перезапустите здесь в следующий раз.)
Награда за награду: В последнюю возможную минуту, когда все пришли к выводу, что это невозможно сделать, Стивен C приходит с napier88, который, похоже, имеет атрибуты, которые я искал. Хотя это экспериментальный язык, он доказывает, что это можно сделать, и это то, что стоит исследовать больше.
Я буду искать создание собственной фреймворка (с постоянным состоянием и моментальными снимками), чтобы добавить функции, которые я ищу в .Net или другой виртуальной машине.
Всем спасибо за вклад и большие идеи.