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

Твердыня модульных языков
Текущее время: 15 дек 2019, 09:43

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




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

Сообщения: 204
vlad писал(а):
budden писал(а):
Но в целом, идея писать статически типизированный язык поверх динамически типизированного выглядит с инженерной точки зрения несколько сомнительной.

А по-моему это классический пример построения надежной системы из ненадежных компонентов.

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


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

Сообщения: 338
vlad писал(а):
budden писал(а):
Оберон не интероперабелен с JS, т.к. в нём нельзя органично представить объект JS.


Я не знаю, что ты имеешь ввиду под "органично", но oberonjs вполне себе интероперабелен с JS, это было одним из критериев при создании. Грубо говоря, RECORD с полями напрямую отражается в JS объект со свойствами, имеющими те же самые имена, что и имена полей в RECORD.

А в обратную сторону? У нас есть объекты JS, которые мы не создали и не контролируем (хотя бы document). Как работать с ними из Оберона? Работать наверняка можно, но никакого преимущества по сравнению с работой с ними же из JS не получим. Поскольку Оберон может обещать, что у такого-то RECORD-а всегда есть поле с таким-то именем, а в JS такой гарантии нет.


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

Сообщения: 338
geniepro писал(а):
vlad писал(а):
budden писал(а):
Но в целом, идея писать статически типизированный язык поверх динамически типизированного выглядит с инженерной точки зрения несколько сомнительной.

А по-моему это классический пример построения надежной системы из ненадежных компонентов.

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

Тогда они могут дать выигрыш, соединяя надёжность статического контроля типов и быстроту безтиповой системы. Если целевая платформа динаимически типизированная с неотключаемыми проверками, как JS, производительность будет ограничена. Именно это я имел в виду, говоря о сомнительности. А вот строить динамический язык поверх статического вполне имеет смысл.


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

Сообщения: 204
budden писал(а):
vlad писал(а):
budden писал(а):
Оберон не интероперабелен с JS, т.к. в нём нельзя органично представить объект JS.

Я не знаю, что ты имеешь ввиду под "органично", но oberonjs вполне себе интероперабелен с JS, это было одним из критериев при создании. Грубо говоря, RECORD с полями напрямую отражается в JS объект со свойствами, имеющими те же самые имена, что и имена полей в RECORD.

А в обратную сторону? У нас есть объекты JS, которые мы не создали и не контролируем (хотя бы document). Как работать с ними из Оберона? Работать наверняка можно, но никакого преимущества по сравнению с работой с ними же из JS не получим. Поскольку Оберон может обещать, что у такого-то RECORD-а всегда есть поле с таким-то именем, а в JS такой гарантии нет.

Идея работы с OberonJS вместо JS как раз в том и заключается, что бы исключить все эти проблемы из-за бардака с объектами JS. Чем меньше приходится иметь дела с мусором, тем легче поддерживать порядок в системе.


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

Сообщения: 338
Допустим, можно выкинуть все библиотеки, начиная с jQuery. Но DOM-то нельзя выкинуть. С ним как?


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

Сообщения: 102
budden писал(а):
Допустим, можно выкинуть все библиотеки, начиная с jQuery. Но DOM-то нельзя выкинуть. С ним как?

Смотрите примеры https://models.molpit.org/model/49


Код: "OBERON"
  1. PROCEDURE Clear*;
  2. BEGIN
  3. JS.do("document.getElementById('log').innerHTML = ''")
  4. END Clear;
  5.  


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

Сообщения: 204
budden писал(а):
Допустим, можно выкинуть все библиотеки, начиная с jQuery. Но DOM-то нельзя выкинуть. С ним как?

Для jQuery при желании можно сделать обёртку. Веселовский (valexey) делал обёртку для Processing.
DOM -- это же по сути древовидная структура данных, в чём проблема наколбасить необходимые типы, что бы иметь строго-типизированную работу с DOM? Нужно иметь лишь время и желание...


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

Сообщения: 102
Хотя это не самый лучший пример для DOM. Надо у Владислава спросить.
Мне DOM как-то не особо нужен был, больше работал с холстом и рисованием.


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

Сообщения: 338
ivan_denisov писал(а):
budden писал(а):
Допустим, можно выкинуть все библиотеки, начиная с jQuery. Но DOM-то нельзя выкинуть. С ним как?

Смотрите примеры https://models.molpit.org/model/49


Код: "OBERON"
  1. PROCEDURE Clear*;
  2. BEGIN
  3. JS.do("document.getElementById('log').innerHTML = ''")
  4. END Clear;
  5.  

Я в подобные вещи на лиспе наигрался и убедился в их неэффективности. Если этот же код записан в файле .js, то на него можно поставить брекпойнт, а компилятор может оптимизировать файл целиком, найдя в нём ошибки. Если же код генерируется мелкими порциями на лету, и я написал innerHtml вместо innerHTML, то, во-первых, это место сложно найти. Если выпало исключение, то истинный исходник определить сложно. И это будет работать медленнее. Т.е., да, сделать так можно и работать так можно, но плюсы Оберона будут перекрыты минусами связки. Если не использовать DOM, а рисовать на холсте - тогда может быть.


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

Сообщения: 338
geniepro писал(а):
budden писал(а):
Допустим, можно выкинуть все библиотеки, начиная с jQuery. Но DOM-то нельзя выкинуть. С ним как?

Для jQuery при желании можно сделать обёртку. Веселовский (valexey) делал обёртку для Processing.
DOM -- это же по сути древовидная структура данных, в чём проблема наколбасить необходимые типы, что бы иметь строго-типизированную работу с DOM? Нужно иметь лишь время и желание...

В том, что объект DOM - это не Record, он по-другому устроен. Преимущества Оберона здесь не проявятся, надёжности при работе с DOM не добавится. Максимум, можно отобразить обязательно существующие функции и поля документа на записи Оберона. Но пользователь всегда может что-то добавить, и это уже не будет подвергнуто статическому контроля. Т.е. получается, что преимуществами статической типизации Оберона можно будет воспользоваться только при написании библиотек, которые тягать придётся всё равно из JS. Я не говорю, что это не имеет смысла, но нужно понимать, что область применения такого решения ограничена.


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

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


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

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


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

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