Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 28 мар 2024, 14:45

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
 Заголовок сообщения: горячая замена кода
СообщениеДобавлено: 07 фев 2018, 17:09 
Не в сети

Сообщения: 350
Слёту не нашёл такой темы. Возможность менять код на лету высоко ценится в сообществе веб-разработчиков. Казалось бы, в веб-разработке всё очень легко - нажал 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 и ядру линукс, в котором горячая замена тоже есть, но у меня ничего не вышло. Люди неспособны мыслить аналогиями, если вывод из этой аналогии говорит, что их текущий способ работы неэффективен и они оказываются в дурачках. Защита своей самооценки у профессионалов всегда очень мощная :) А оказывается, эта возможность уже осознана, признана и желанна в веб разработке.

Что делать с этой информацией дальше любителям оберона - думайте, любители Оберона :)

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


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 07 фев 2018, 19:09 
Не в сети

Сообщения: 146
Та причина, по которой Вы хотите отказаться от LISP в пользу Oberon, во многом, обусловлена тем свойством, которое Вы хотите перетащить из LISP в Oberon. После удачного воплощения прийдётся переходить на следующую платформу.
budden писал(а):
Однако, если средство есть ,в теории его можно отключить, а вот если его нет, то его так просто не включишь.
Никлаус Вирт писал(а):
Одно, безусловно, остается бесспорным: механизм всегда можно добавить в язык, а вот удалить — никогда.
Оберон - неудачная основа для таких затей.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 07 фев 2018, 20:04 
Не в сети

Сообщения: 350
> Та причина, по которой Вы хотите отказаться от LISP в пользу Oberon, во многом, обусловлена тем свойством, которое Вы хотите перетащить из LISP в Oberon.

В достаточно немногом. Я понимаю цену горячей замены и однозначно готов за неё заплатить.

> Одно, безусловно, остается бесспорным: механизм всегда можно добавить в язык, а вот удалить — никогда.

Вообще говоря, Вирт прав, но конкретно горячую замену из CL удалить можно. На работоспособность приложений мало повлияет - будет легко исправить.

> Оберон - неудачная основа для ваших идей.

Я надеюсь, это не означает "уходи, ты плохой". Но даже если означает - всё равно не уйду :P


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 07 фев 2018, 23:54 
Не в сети

Сообщения: 146
Возможность "горячей" замены в описанном виде обусловлена возможностями языка, которые
1. Являются проблемой.
2. Нельзя удалить.

Цитата:
Я надеюсь, это не означает...
Трудно читать между строк, когда строка одна.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 08 фев 2018, 09:16 
Не в сети

Сообщения: 203
В принципе, в Эрланге есть модули, и при этом есть горячая замена кода на уровне функций. Если на момент замены функции она ещё кем-то вызвана и выполняется, то так и остаётся в памяти, а новые вызовы адресуются уже к обновлённой версии функции...
Ну. в Эрланге попроще чем в Обероне, так как нет глобального состояния...


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 08 фев 2018, 11:40 
Не в сети

Сообщения: 146
Нет глобального состояния, доступного по имени, или нет вообще?


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 08 фев 2018, 12:22 
Не в сети

Сообщения: 203
Comdiv писал(а):
Нет глобального состояния, доступного по имени, или нет вообще?

http://fprog.ru/2010/issue6/practice-fp-6-ebook.pdf
Цитата:
По сути, в Erlang нет привычных глобальных переменных, а есть process dictionary и настройки приложения. Первое сами создатели Erlang называют злом, которое следует использовать только в очень редких случаях, по необходимости, а второе используется в основном при инициализации приложения, но не при его работе.

Насколько я помню, словарь процесса -- это всё-таки локальное состояние запущенного процесса.
Вообще, в задачах, где требуется глобальное состояние, в эрланге используется база данных. А это ,всё-таки, не то же самое, что хаотично разбросанные по модулям глобальные переменные...


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 08 фев 2018, 12:25 
Не в сети

Сообщения: 203
Наткнулся на 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-х Эрикссон опрашивал своих крупнейших клиентов, хотят ли они типы в Эрланге. Почти дружный ответ был: нет, нам это не нужно.
Влияние динамической типизации на свойства языка и системы сильно преувеличено.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 08 фев 2018, 14:50 
Не в сети
Администратор
Аватара пользователя

Сообщения: 189
Интересно наблюдать за разработкой Лиспа с синтаксисом Оберона! :)


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: горячая замена кода
СообщениеДобавлено: 08 фев 2018, 16:54 
Не в сети

Сообщения: 146
Цитата:
Они полтора года пытались придумать для Эрланга систему типов. Не смогли Некоторые свойства системы (типа hot code loading) этому очень мешают.
То есть, по слухам статическая типизация всё-таки мешает "горячей" замене?


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 79 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club