LINUX.ORG.RU

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

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

Если делать «руками» через события, то клиентский код для суммы будет выглядеть примерно так (полный код здесь):

Ну круто всего 256 строк кода. Вместо:

sumX(X x) = GROUP SUM h(y) IF ys(y) = x MATERIALIZED;

А если чуть усложнить задачу и суммировать l(h(y)), а не h(y). Или еще разрез добавить:

sumX(X x, Z z) = GROUP SUM l(h(y)) IF ys(y) = x AND zs(y) = z MATERIALIZED;

В lsFusion это три секунды. А вы будете полчаса минимум исправлять / отлаживать ваш код (и там будет куда больше 256 строк). Без гарантии, что он будет правильно работать.

Но это все ладно. Главное, если мы хотим это все persistent сделать? Как сделать, чтобы это все на SQL выполнялось? Чтобы N+1 проблемы не было. Это собственно главный кейс в бизнес приложениях.

Streams – библиотека? При их релизации язык тоже неплохо подтянули. Как минимум лямбды добавили

Да, streams - библиотека. И лямбды к ним прямого отношения не имеют. Кстати как ваше отношение к лямбдам, до 8 джава они отлично заменялись анонимными классами. Тоже зачем усложняли, а не воспользовались возможностями языка, что гораздо проще и выразительнее?

Изменение в каком языке? Шарп для данной функциональности не меняли.

В мини-языке используемом в Dapper.

Далеко не все проверяется на стадии компиляции

Ну так это и плохо. Чем больше проверяется на стадии компиляции тем лучше.

И почему им место в языке, а не в библиотеке?

А почему лямбдам место в языке, а не в библиотеке (анонимных классах). Или linq?

Про базовые вещи я писал - события предметной области, ограничения, классы, агрегации, регистры, формы.

Исправление NitroJunkie, :

Если делать «руками» через события, то клиентский код для суммы будет выглядеть примерно так (полный код здесь):

Ну круто всего 256 строк кода. Вместо:

sumX(X x) = GROUP SUM h(y) IF ys(y) = x MATERIALIZED;

А если чуть усложнить задачу и суммировать l(h(y)), а не h(y). Или еще разрез добавить:

sumX(X x, Z z) = GROUP SUM l(h(y)) IF ys(y) = x AND zs(y) = z MATERIALIZED;

В lsFusion это три секунды. А вы будете полчаса минимум исправлять / отлаживать ваш код. Без гарантии, что он будет правильно работать.

Но это все ладно. Главное, если мы хотим это все persistent сделать? Как сделать, чтобы это все на SQL выполнялось? Чтобы N+1 проблемы не было. Это собственно главный кейс в бизнес приложениях.

Streams – библиотека? При их релизации язык тоже неплохо подтянули. Как минимум лямбды добавили

Да, streams - библиотека. И лямбды к ним прямого отношения не имеют. Кстати как ваше отношение к лямбдам, до 8 джава они отлично заменялись анонимными классами. Тоже зачем усложняли, а не воспользовались возможностями языка, что гораздо проще и выразительнее?

Изменение в каком языке? Шарп для данной функциональности не меняли.

В мини-языке используемом в Dapper.

Далеко не все проверяется на стадии компиляции

Ну так это и плохо. Чем больше проверяется на стадии компиляции тем лучше.

И почему им место в языке, а не в библиотеке?

А почему лямбдам место в языке, а не в библиотеке (анонимных классах). Или linq?

Про базовые вещи я писал - события предметной области, ограничения, классы, агрегации, регистры, формы.

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

Если делать «руками» через события, то клиентский код для суммы будет выглядеть примерно так (полный код здесь):

Ну круто всего 256 строк кода. Вместо:

sumX(X x) = GROUP SUM h(y) IF ys(y) = x MATERIALIZED;

А если чуть усложнить задачу и суммировать l(h(y)), а не h(y). Или еще разрез добавить:

sumX(X x, Z z) = GROUP SUM l(h(y)) IF ys(y) = x AND zs(y) = z MATERIALIZED;

В lsFusion это три секунды. А вы будете полчаса минимум исправлять / отлаживать ваш код. Без гарантии, что он будет правильно работать.

Но это все ладно. А если мы хотим это все persistent сделать? Как сделать, чтобы это все на SQL выполнялось? Чтобы N+1 проблемы не было. Это собственно главный кейс в бизнес приложениях.

Streams – библиотека? При их релизации язык тоже неплохо подтянули. Как минимум лямбды добавили

Да, streams - библиотека. И лямбды к ним прямого отношения не имеют. Кстати как ваше отношение к лямбдам, до 8 джава они отлично заменялись анонимными классами. Тоже зачем усложняли, а не воспользовались возможностями языка, что гораздо проще и выразительнее?

Изменение в каком языке? Шарп для данной функциональности не меняли.

В мини-языке используемом в Dapper.

Далеко не все проверяется на стадии компиляции

Ну так это и плохо. Чем больше проверяется на стадии компиляции тем лучше.

И почему им место в языке, а не в библиотеке?

А почему лямбдам место в языке, а не в библиотеке (анонимных классах). Или linq?

Про базовые вещи я писал - события предметной области, ограничения, классы, агрегации, регистры, формы.