Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
горячая замена кода https://zx.oberon.org/forum/viewtopic.php?f=25&t=375 |
Страница 1 из 8 |
Автор: | budden [ 07 фев 2018, 17:09 ] |
Заголовок сообщения: | горячая замена кода |
Слёту не нашёл такой темы. Возможность менять код на лету высоко ценится в сообществе веб-разработчиков. Казалось бы, в веб-разработке всё очень легко - нажал Ctrl-R и страница обновилась. По логике вещей там не должно быть долгой "сборки" как в С++ и сложного состояния. Однако, я смотрю сайт "The State of JavaScript" и вижу, что из опрошенных тысяч веб-разработчиков почти 80% относятся положительно к "горячей замене модулей", а 50% считают эту возможность важной. Что это означает на практике? Это заменяем какую-то строчку в css или js и страница обновляется сама, а состояние сохраняется. https://stateofjs.com/2017/features/ https://habrahabr.ru/company/Voximplant/blog/270593/ Это то, к чему я привык в лиспе и то, что является основным средством, делающем разработку на лиспе приятной. Именно отсюда мой интерес к Оберону - ведь в нём эта возможность, как правило, есть, точнее, есть предпосылки, чтобы её реализовать. Но не всё так хорошо. В лиспе можно менять код на уровне одного определения. Можно определять, какие данные будут сохраняться при перезагрузке файла (модулей в лиспе нет), а какие будут создаваться заново. (defvar *counter* 0) означает, что счётчик не сбросится при переопределении модуля, а (defparameter *настройка* 25) позволяет перенастраивать блок функционала путём перекомпиляции его исходника. Кроме того, в лиспе не нужно демонтировать всю пирамиду зависимостей, чтобы поменять что-то в фундаменте. Это тоже критично. Даже изменение интерфейса базового модуля сделает программу временно неработоспособной в тех местах, где этот интерфейс используется (в норме лисп вызовет отладчик, натолкнувшись на несоответствующий вызов), но оно допустимо. Т.е., в лиспе возможно гибко подходить к сохранению состояния программы при горячей замене кода, а в Обероне этого нет. Это даёт качественно отличающийся уровень комфорта (а значит, и производительности труда) при разработке, делая CL средством более высокого класса, хотя и за счёт снижения надёжности. Однако, если средство есть ,в теории его можно отключить, а вот если его нет, то его так просто не включишь. Насколько я уже понял Оберон, нет шансов, что в обероне будет когда-то принят такой же уровень гибкости, как в лиспе. Но можно попробовать создать уровень гибкости как в лиспе на базе оберона. Моя проблема была в том, что я пытался "продвинуть" возможнсоть горячей замены тем, кто эту возможность не мог понять (программистам на Си). Я пытался аппелировать к SQL и ядру линукс, в котором горячая замена тоже есть, но у меня ничего не вышло. Люди неспособны мыслить аналогиями, если вывод из этой аналогии говорит, что их текущий способ работы неэффективен и они оказываются в дурачках. Защита своей самооценки у профессионалов всегда очень мощная ![]() Что делать с этой информацией дальше любителям оберона - думайте, любители Оберона ![]() Стратегически одна из моих задач состоит в том, чтобы сделать клон Оберона с возможностью горячей замены, свойственной лиспу. |
Автор: | Comdiv [ 07 фев 2018, 19:09 ] |
Заголовок сообщения: | Re: горячая замена кода |
Та причина, по которой Вы хотите отказаться от LISP в пользу Oberon, во многом, обусловлена тем свойством, которое Вы хотите перетащить из LISP в Oberon. После удачного воплощения прийдётся переходить на следующую платформу. budden писал(а): Однако, если средство есть ,в теории его можно отключить, а вот если его нет, то его так просто не включишь. Никлаус Вирт писал(а): Одно, безусловно, остается бесспорным: механизм всегда можно добавить в язык, а вот удалить — никогда. Оберон - неудачная основа для таких затей.
|
Автор: | budden [ 07 фев 2018, 20:04 ] |
Заголовок сообщения: | Re: горячая замена кода |
> Та причина, по которой Вы хотите отказаться от LISP в пользу Oberon, во многом, обусловлена тем свойством, которое Вы хотите перетащить из LISP в Oberon. В достаточно немногом. Я понимаю цену горячей замены и однозначно готов за неё заплатить. > Одно, безусловно, остается бесспорным: механизм всегда можно добавить в язык, а вот удалить — никогда. Вообще говоря, Вирт прав, но конкретно горячую замену из CL удалить можно. На работоспособность приложений мало повлияет - будет легко исправить. > Оберон - неудачная основа для ваших идей. Я надеюсь, это не означает "уходи, ты плохой". Но даже если означает - всё равно не уйду ![]() |
Автор: | Comdiv [ 07 фев 2018, 23:54 ] |
Заголовок сообщения: | Re: горячая замена кода |
Возможность "горячей" замены в описанном виде обусловлена возможностями языка, которые 1. Являются проблемой. 2. Нельзя удалить. Цитата: Я надеюсь, это не означает... Трудно читать между строк, когда строка одна.
|
Автор: | geniepro [ 08 фев 2018, 09:16 ] |
Заголовок сообщения: | Re: горячая замена кода |
В принципе, в Эрланге есть модули, и при этом есть горячая замена кода на уровне функций. Если на момент замены функции она ещё кем-то вызвана и выполняется, то так и остаётся в памяти, а новые вызовы адресуются уже к обновлённой версии функции... Ну. в Эрланге попроще чем в Обероне, так как нет глобального состояния... |
Автор: | Comdiv [ 08 фев 2018, 11:40 ] |
Заголовок сообщения: | Re: горячая замена кода |
Нет глобального состояния, доступного по имени, или нет вообще? |
Автор: | geniepro [ 08 фев 2018, 12:22 ] |
Заголовок сообщения: | Re: горячая замена кода |
Comdiv писал(а): Нет глобального состояния, доступного по имени, или нет вообще? http://fprog.ru/2010/issue6/practice-fp-6-ebook.pdf Цитата: По сути, в Erlang нет привычных глобальных переменных, а есть process dictionary и настройки приложения. Первое сами создатели Erlang называют злом, которое следует использовать только в очень редких случаях, по необходимости, а второе используется в основном при инициализации приложения, но не при его работе. Насколько я помню, словарь процесса -- это всё-таки локальное состояние запущенного процесса. Вообще, в задачах, где требуется глобальное состояние, в эрланге используется база данных. А это ,всё-таки, не то же самое, что хаотично разбросанные по модулям глобальные переменные... |
Автор: | geniepro [ 08 фев 2018, 12:25 ] |
Заголовок сообщения: | Re: горячая замена кода |
Наткнулся на RSDN, не знаю правда или нет, лень гуглить: http://rsdn.org/forum/flame.comp/6068397?tree=tree Цитата: Mamut Швеция http://dmitriid.com
Дата: 04.06.15 15:42 В конце 90-х в офисе Эрикссона почти в полном составе сидела команда, создавшая GHC. Они полтора года пытались придумать для Эрланга систему типов. Не смогли Некоторые свойства системы (типа hot code loading) этому очень мешают. В начале 2000-х Эрикссон опрашивал своих крупнейших клиентов, хотят ли они типы в Эрланге. Почти дружный ответ был: нет, нам это не нужно. Влияние динамической типизации на свойства языка и системы сильно преувеличено. |
Автор: | S.Atan [ 08 фев 2018, 14:50 ] |
Заголовок сообщения: | Re: горячая замена кода |
Интересно наблюдать за разработкой Лиспа с синтаксисом Оберона! ![]() |
Автор: | Comdiv [ 08 фев 2018, 16:54 ] |
Заголовок сообщения: | Re: горячая замена кода |
Цитата: Они полтора года пытались придумать для Эрланга систему типов. Не смогли Некоторые свойства системы (типа hot code loading) этому очень мешают. То есть, по слухам статическая типизация всё-таки мешает "горячей" замене?
|
Страница 1 из 8 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |