Является ли резервная программа без ввода?

Существуют ли полезные программы, которые не учитывают такие ресурсы, как: Ввод клавиатуры пользователя; прерывание от часов; данные с другого сервера и т. д.

Программа, которая вычисляла/распечатывала предопределенные данные, могла быть превращена в файл, правильно?

6
Переключатель мертвеца, который не требует настройки. Ну, я думаю, что в качестве входного сигнала потребуется таймер, хотя вы можете приблизить таймер, сидя в петле. Действительно, любая программа, в которой вы жестко подключаете входные данные.
добавлено автор sgwill, источник
В простейшей форме - кубик. Обычно у них есть пользовательские входы, которые определяют, что делать, но у вас наверняка есть тот, который этого не делает, или у вас может быть тот, где вход находится в командной строке, и вы можете вызвать его с помощью командного файла, который предоставил предопределенный ввод - Таким образом, пакетный файл станет программой с нулевым входом.
добавлено автор Sander Rijken, источник
Как насчет программы, которая вычисляет цифры pi? Как насчет программы, предназначенной для вычисления ответа для некоторых математических задач, где «ввод» жестко закодирован в самой программе (во время программирования или фазы компиляции)?
добавлено автор Ryan Cox, источник
Итак, это единственный пример математического приближения?
добавлено автор cmrhema, источник
Таким образом, использование слова «полезно» в деталях вопроса.
добавлено автор cmrhema, источник
« ... входы от пользователя, среды и т. д., такие как ввод ключа или текущее время [или сервер]"
добавлено автор cmrhema, источник
Этот вопрос был неподтвержденным образом приостановлен.
добавлено автор cmrhema, источник
Ответ: yes (1) :-)
добавлено автор Schroeder, источник
Когда вы говорите «избыточное», действительно ли вы имеете в виду «бесполезно»?
добавлено автор whatsisname, источник
Программы без ввода могут иметь полезные побочные эффекты. Безвредная программа pure , вероятно, может быть преобразована в плоский файл.
добавлено автор closeparen, источник
Под «input», данные от сервера также служат для ввода? Потому что я думаю о чисто информационном приложении, которое не требует взаимодействия с пользователем, но данные обслуживаются с сервера, чтобы сделать его более управляемым.
добавлено автор Suraj, источник

7 ответы

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

Некоторые практические примеры использования:

  • Самораспаковывающиеся zip-файлы
  • Программы, выход которых на самом деле бесконечный , например yes (1) , который многократно выводит «y». (Спасибо blrfl за упоминание об этом в комментарии.)

The theoretical term for this concept (when the output is finite) is Kolmogorov complexity. From Wikipedia:

Рассмотрим следующие две строки из 32 строчных букв и цифр:

<�Предварительно> abababababababababababababababab 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7      

Первая строка содержит краткое описание на английском языке, а именно: ab   16 раз ", который состоит из 11 символов.   очевидное простое описание (с использованием того же набора символов), кроме   записывая самую строку, которая имеет 32 символа.

     

Более формально сложность строки - это длина   кратчайшее возможное описание строки в некотором фиксированном универсальном   язык описания [...].

(Примечание. Этот фиксированный универсальный язык описания, как правило, представляет собой полный язык программирования Turing.)

9
добавлено

Много системных утилит. Команды выключения, перезагрузки, отключения.

Есть другие, о которых я не могу сейчас думать, я уверен.

4
добавлено

Да, модульные тесты (по крайней мере, прилично написанные).

редактировать

To be less glib: There are a lot of different unit test setups but they effectively boil down to the following, the code base under test is treated as a library and your unit tests are essentially one big program that when run prints out something like

Test foo passed
Test bar passed
Test baz failed
     ...Details...
Test quux passed

Если ваши модульные тесты являются детерминированными (что они обычно должны быть такими, поскольку отладка недетерминированных тестов является наихудшей), это будет просто постоянная строка.

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

3
добавлено
Я смущен; будет ли единичный тест не тестовым кодом, который вы написали, сделав его входным?
добавлено автор cmrhema, источник
Я думал, что модульные тесты принимают код в качестве входных данных, чтобы проверить?
добавлено автор cmrhema, источник
@Tobi хорошо, no ... Модульные тесты не читают реализацию как входной или ресурсный ресурс, они включают реализацию во время компиляции. Для создания хороших интерактивных результатов тестовый набор обычно взаимодействует со средой (например, IDE или тестовый бегун). Но, это необязательно, действительно. Он также может быть просто двоичным, который выполняется сам по себе и выдает результаты стандартным образом. И на самом деле, я сам собирал некоторых испытателей такого же характера ...
добавлено автор svidgen, источник
@Tobi, надеюсь, редактирование приводит к выводу.
добавлено автор walpen, источник

Программа, которая вычисляет последовательность простых чисел.

1
добавлено

Зависит от того, что вы подразумеваете под избытком. Вот несколько, о которых я мог подумать через пару минут:

  • Программа, создающая музыку или искусство

  • Программа, которая танцует или отправляет инструкции роботу, который танцует

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

  • Радиомаяк

Являются ли какие-либо из этих вещей излишними?

1
добавлено
# 1: Что значит «создает музыку или искусство»? Случайно = Заселен вводом # 2: Это будет вход в интерпретатор, который контролирует роботизированное движение. # 3: Введенное общество или случайно сгенерированное? Последний будет засеян # 4: Что вы подразумеваете под «радиомаяком»? ..
добавлено автор cmrhema, источник
Все эти вещи будут иметь вход, даже если это происходит из случайного семени.
добавлено автор RubberDuck, источник
Некорректное; ни один из перечисленных мной элементов не требует in , как, например, что-то перемещение извне системы внутрь системы. И я не знаю, откуда у вас возникла мысль, что случайность является требованием для любого из них.
добавлено автор John Wu, источник
# 1 Я имею в виду буквально сочинять музыку или рисовать картинку. Это не должна быть очень хорошая музыка или очень интересная картина. Требование не является ни случайностью, ни оригинальностью. # 2. Нет, это был бы out для интерпретатора, который контролирует роботизированное движение. # 3. Ни; общество, которое определяет себя, начиная с основного начального состояния, затем развивается. # 4. Постоянная передача в электромагнитном спектре, модулированная выходом нашей программы, потенциально в соответствии с заданным шаблоном.
добавлено автор John Wu, источник

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

В качестве примера я как-то написал такую ​​программу для создания набора матриц, которые преобразуют углы Эйлера в ортогональную матрицу для всех возможных угловых систем Эйлера. Вход был по существу сгенерирован внутри программы (набор перестановок). Программа символически умножила 3 ​​или 2 матрицы вместе для каждой возможной системы угла Эйлера и создала файл TeX с результирующими матрицами. Это было меньше работы и меньше ошибок, чем писать программу, чем выполнять математику вручную. Тем не менее, никакой информации из среды не было. Вы только что запустили команду, и она выписала файл. И как только я был доволен, что он работает правильно, с тех пор я не запускал его снова.

1
добавлено

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

Тем не менее, предсказуемое не означает идентичности. Программа без ввода данных может приносить разные результаты при каждом вычислении. Типичным примером является приложение моделирования с использованием случайных чисел. Этот случай, тем не менее, является пограничным, поскольку вы можете утверждать, что генератор случайных чисел (или его семя) является особой формой ввода среды.

Однако программа может иметь побочные эффекты. Он может, например, включать и выключать некоторые светодиоды (или светофоры). Или отобразите обратный отсчет в окне. Такие «побочные эффекты» не могут быть заменены предварительно вычисленным результатом в файле. Таким образом, нет: даже без ввода программа не обязательно «избыточна»!

0
добавлено
Yikes, я думаю, что все здесь не справились с базовой теорией систем. Вы можете иметь детерминированный (неслучайный) вывод, который не предсказуем. C.F. теория хаоса .
добавлено автор John Wu, источник
Вот пример учебника. Никаких внешних систем не требуется. var x = 0.002; for (int t = 0; t Посмотрите, можете ли вы предсказать x для данного t.
добавлено автор John Wu, источник
Значит, вы никогда не слушали одну и ту же песню дважды?
добавлено автор John Wu, источник
@JohnWu «сильно зависит от начальных условий» означает получение каких-либо ресурсов из среды (например, состояние неинициализированных переменных). Если программа является частью более крупной динамической системы, ей придется общаться с другими программами для генерации хаотических результатов: IPC также является формой ввода.
добавлено автор Christophe, источник
@JohnWu жаль, если это не ясно в моем ответе: я хочу сказать, что на том же компьютере этот вид вычислений даст одинаковый результат при каждом выполнении. Поэтому я могу запустить его, записать результаты и использовать записанные результаты после этого (так я интерпретировал двусмысленное «избыточное» в вопросе). Конечно, если намерение состоит в том, чтобы создать нетерпение и энтузиазм для пользователя, который смотрит на результаты о том, сходится ли результат, это невозможно воспроизвести, и это то, что я имел в виду с «побочными эффектами». Если цикл никогда не заканчивается, мы остаемся частью побочного эффекта моего ответа
добавлено автор Christophe, источник
@JohnWu да, я :-) Мне нравится побочный эффект на мои эмоции. И лично я никогда не сохраняю данные, которые я мог бы пересчитать с большей точностью на лучшее оборудование. Я просто отвечаю на теоретический вопрос. И расскажите о разочаровании, которое у меня было с моими программами первого запуска 30 лет назад, когда я обнаружил, что обещанный случайный случай был только псевдослучайным, и что для программ, которые могут меня удивить, нужны были некоторые внешние средства. И, честно говоря, вы используете много интересных программ, которые не получают какого-либо ввода, события или обратной связи от их среды ;-)
добавлено автор Christophe, источник