Редактирование программ "пока они запущены"? Зачем? - PullRequest
64 голосов
/ 22 февраля 2011

В последнее время я все больше изучаю языки Lisp и Lispy, и я нахожу их достаточно мощными.

Одна вещь, которую я читал по всей сети, заключается в том, что преимущество написания на Лиспе, Clojure и т. Д. Заключается в том, что вы можете редактировать свою программу "во время ее работы".

Возможно, я что-то упускаю, но какой в ​​этом смысл?

Конечно, это может сэкономить несколько секунд, но это все? Всякий раз, когда я изменяю свою программу, я просто останавливаю ее, затем запускаю ее снова, и это работало отлично в течение десятилетий.

Должна быть и другая причина, чем просто экономия времени - что это?

Может кто-нибудь дать мне хороший пример, который заставит меня пускать слюни из-за этой функции? :)

С нетерпением жду слюни!

Ответы [ 13 ]

1 голос
/ 23 февраля 2011

Ну, представьте, что вам нужно исправить сервер, а не остановить его.

Если вы сделаете это на «типичном» языке, это потребует некоторой тяжелой магии. Вы должны разбираться с «позади» исполняемого кода. Я думаю, что это потребовало бы исправления таблиц функций и так далее, все в сборке и манипулирования указателями на функции. Хорошее место для ошибок.

В Лиспе идея обновления без простоев встроена в языковую модель. Хотя есть некоторые сложности обновления, от которых вы не можете избавиться (как вы справляетесь с долго работающим соединением), это не требует тяжелой магии скомпилированного языка.

Хотя я не потратил на это много времени (то есть чего-нибудь полезного), я разработал прототип сервера в Common Lisp, который бы выполнял как минимум некоторые оперативные исправления по сети без простоев. .

0 голосов
/ 10 апреля 2015

Кейси Муратори только что сделал несколько уроков о том, как это сделать с помощью C и Microsoft C / C ++ compiler. На самом деле это довольно просто, всего несколько десятков строк кода. Посмотрите видео 22/24/25:

https://www.youtube.com/watch?v=WMSBRk5WG58

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

0 голосов
/ 12 февраля 2015

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

...