LINUX.ORG.RU

История изменений

Исправление NitroJunkie, (текущая версия) :

Ну я не понимаю контекста ваших терминов. Rx – это реализация паттерна Observer. Какие события обрабатывать, это уже детали реализации, можно клики от мышки, а можно и приход данных из очереди сообщений.

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

class X {

List<Y> ys;

int sumX() {

   int sx=0;
   for(Y y : ys)
      if(y.x() > 5)
        sx += y.h();
   return sx;
}

}

В lsFusion вы можете повесить событие на изменение sumX, как если бы это было полем с setter’ом. И платформа сама будет вызывать событие и инкрементально (!) вычислять sumX. Как тут очередь событий поможет?

А куда он у вас вставляется? Где отрабатывает? Я не увидел ответа на вопрос.

Оно глобально отрабатывает. То есть объявляется как класс грубо говоря. Как если бы в примере выше написать.

class X {
...
   assert sumX() > 5;
...
}

Проверяет при любом изменении данных (естественно предполагается что данные изменяются блоками - сессиями / транзакциями)

Еще раз: я не понимаю вашей терминологии, как не понимают ее 99.(9)% разработчиков. В моем понимании агрегация это https://docs.microsoft.com/en-us/dotnet/api/system.linq.queryable.aggregate?view=netframework-4.8.

Нет, агрегация, это ближе к термину из классического ООП. Когда один объект (или несколько объектов) агрегирует другой. Правда при выполнении какого то условия.

class X {
...
    aggr Y y if sumX() > 5; // y - поле X,  для класса Y создается поле x с ссылкой на x; 
...

}

Jsx не новый язык, это расширение касается только разметки, в итоге имеем все тот же js. Думаю, сделано, чтобы явно отделить представление от логики. В том же .net для этого есть xaml.

Ну то есть все платформы добавляют свои языки, кто-то больше, кто-то меньше. Собственно если ты не вводишь новые абстракции нет смысла добавлять новый язык, если вводишь, то есть.

Таблица параметром? На каком уровне экранирование строки происходит?

При выполнении все табличные параметры загружаются во временные таблицы и подставляются в запрос.

По поводу одной строки: есть dapper, есть linq2db. Есть еще куча легковесных ORM.

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

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

Чем проще? Какая разница учить параметры, их порядок названия, и скажем механизмы их соответствия друг другу, или простенькую LL грамматику. Собственно тот же SQL можно легко было оформить как API / библиотеку, только учить его при этом на мой взгляд было бы существенно сложнее.

На самом деле изначально lsFusion и был java-библиотекой, но разработчики (во всяком случае без опыта в ИТ) с трудом въезжали, с языком все пошло гораздо проще и легче.

Исходная версия NitroJunkie, :

Ну я не понимаю контекста ваших терминов. Rx – это реализация паттерна Observer. Какие события обрабатывать, это уже детали реализации, можно клики от мышки, а можно и приход данных из очереди сообщений.

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

class X {

List ys;

int sumX() {

int sx=0; for(Y y : ys) if(y.x() > 5) sx += y.h(); return sx; }

В lsFusion вы можете повесить событие на изменение sumX, как если бы это было полем с setter’ом. И платформа сама будет вызывать событие и инкрементально (!) вычислять sumX. Как тут очередь событий поможет?

А куда он у вас вставляется? Где отрабатывает? Я не увидел ответа на вопрос.

Оно глобально отрабатывает. То есть объявляется как класс грубо говоря. Как если бы в примере выше написать.

class X { … assert sumX() > 5; … }

Проверяет при любом изменении данных (естественно предполагается что данные изменяются блоками - сессиями / транзакциями)

Еще раз: я не понимаю вашей терминологии, как не понимают ее 99.(9)% разработчиков. В моем понимании агрегация это https://docs.microsoft.com/en-us/dotnet/api/system.linq.queryable.aggregate?view=netframework-4.8.

Нет, агрегация, это ближе к термину из классического ООП. Когда один объект (или несколько объектов) агрегирует другой. Правда при выполнении какого то условия.

class X { … aggr Y y if sumX() > 5; // y - поле X, для класса Y создается поле x с ссылкой на x; …

}

Jsx не новый язык, это расширение касается только разметки, в итоге имеем все тот же js. Думаю, сделано, чтобы явно отделить представление от логики. В том же .net для этого есть xaml.

Ну то есть все платформы добавляют свои языки, кто-то больше, кто-то меньше. Собственно если ты не вводишь новые абстракции нет смысла добавлять новый язык, если вводишь, то есть.

Таблица параметром? На каком уровне экранирование строки происходит?

При выполнении все табличные параметры загружаются во временные таблицы и подставляются в запрос.

По поводу одной строки: есть dapper, есть linq2db. Есть еще куча легковесных ORM.

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

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

Чем проще? Какая разница учить параметры, их порядок названия, и скажем механизмы их соответствия друг другу, или простенькую LL грамматику. Собственно тот же SQL можно легко было оформить как API / библиотеку, только учить его при этом на мой взгляд было бы существенно сложнее.

На самом деле изначально lsFusion и был java-библиотекой, но разработчики (во всяком случае без опыта в ИТ) с трудом въезжали, с языком все пошло гораздо проще и легче.