powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / MUMPS 2020
25 сообщений из 137, страница 3 из 6
MUMPS 2020
    #39967325
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Линда (Linda Yaw) выложила компиляцию некоторой части обсуждений.
Выглядит примерно так:
http://mumps.org/mdc/work/tg19/analysis-and-plan-20200608
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971321
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из новостей.
Поддержка NEW $TEST добавлена в MiniM и MUMPS V1. В Cache и GT.M была добавлена ранее.
В MiniM добавлена также форма с инициализацией NEW $TEST=expr.
Предложение по добавлению NEW $TEST было датировано аж июнь 1994 года.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971554
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений,

Относительно текущих версий Cache/IRIS это не так: см., например, $TEST и NEW , да и ошибка <SYNTAX> поправит сомневающегося.

Более того, InterSystems едва ли нуждается в этой команде: ведь в Cache она выполняется неявно при вызове методов классов (даже по DO), а прочие DO ISC рассматривает как устаревший код и особо не заинтересована в их развитии.

Раз уж зашёл разговор о Стандарте: свершилось чудо, и InterSystems начала участвовать в деятельности по подготовке нового Стандарта? Точной ссылки не нашёл, но по достоверным сведениям где-то в середине 90-х на одном из заседаний MDC их представитель заявил, что они более не считают себя связанными обязательствами по соблюдению Стандарта. Возможно, кто-то из членов MDC тех лет или сотрудников InterSystems мог бы уточнить этот момент, хотя исходя из текущего состояния языка ObjectScript он едва ли нуждается в уточнении.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971566
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
свершилось чудо, и InterSystems начала участвовать в деятельности по подготовке нового Стандарта?

Их представителей пока не наблюдал.
Про NEW $TEST в Cache писал со слов, возможно не так перевел.

Из новостей: добавляются операторы <= >= ]= ]]=
Удалось отговорить от отрицаний '<= '>= ']= ']]=
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971740
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавили бы ещё:
$increment (вот он-то по факту есть "у всех": в Cache, YottaDB, GT.M, MiniM),
$replace (Cache, YottaDB, MiniM(?)),
$list* (Cache, YottaDB, MiniM).
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971774
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Добавили бы ещё:
$increment (вот он-то по факту есть "у всех": в Cache, YottaDB, GT.M, MiniM),
$replace (Cache, YottaDB, MiniM(?)),
$list* (Cache, YottaDB, MiniM).

Про $increment и $bit пришлось рассказывать мини-лекцию, что это не столько для арифметики и конструирования строк как альтернатива $ZBIT, сколько для корректной работы транзакций. Если $i() и отыщется в планах, то это надолго.

$replace в MiniM есть, даже есть $zpcrereplace с регэкспами.

На добавление не-Z функций в MDC смотрят неодобрительно, но все же как на реальность.
С $list надо вообще-то детально специфицировать что там с кодированием, что возвращает
Код: plaintext
1.
$ascii($listbuild(expr[,...]),expr)


Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций.

Кстати, листы в YottaDB добавлял Константин? Помнится он рассказывал
http://thedarkaugust.blogspot.com/2016/03/blog-post_20.html
что у него листы конструируются лишь с частичной совместимостью с Cache.
Интересно было бы узнать поподробнее о поддержке листов в YottaDB, как они сейчас сделаны.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971784
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я
...листы конструируются лишь с частичной совместимостью с Cache...
Насколько знаю, примерно так всё и осталось: КонстантинДвоичная совместимость частичная, при создании листов в GT.M все элементы создаются типа "строка", хотя при извлечении обрабатываются все типы из Cache.Если интересно более авторитетное мнение, могу привлечь Костино внимание, ибо он сюда редко заглядывает.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971814
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я
добавляются операторы <= >=

Мне всегда нравились <= =>

ну я
Удалось отговорить от отрицаний '<= '>= ']= ']]=

Правильно.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39971857
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я
Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций.
Почему бы только так к ним и не относиться? В противном случае вряд ли листы попадут в Стандарт, т.к. они опираются на понятие внутреннего типа данных, которое не во всех реализациях M имеет смысл.
ну яДвоичная совместимость частичная...Похоже, так всё и осталось:
Код: javascript
1.
2.
3.
4.
5.
USER>s a=$lb("0","0"),b=$lb(0,0) w a=b
0

YDB>s a=$lb("0","0"),b=$lb(0,0) w a=b
1
...
Рейтинг: 0 / 0
MUMPS 2020
    #39972321
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я
С $list надо вообще-то детально специфицировать что там с кодированием...
Если хотим, чтобы в некоем портабельном двоичном формате (который тоже не стандартизован) можно было выгрузить данные из одной М-системы и загрузить в другую, то да, и с этим могут возникнуть трудности, т.к. InterSystems как автор формата $list, ставшего стандартом де-факто, в M-стандартизации более не участвует.

А кстати, кто из остальных, кроме MiniM, участвует? Fidelity? YottaDB?
...
Рейтинг: 0 / 0
MUMPS 2020
    #39972338
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
ну я
С $list надо вообще-то детально специфицировать что там с кодированием...
Если хотим, чтобы в некоем портабельном двоичном формате (который тоже не стандартизован) можно было выгрузить данные из одной М-системы и загрузить в другую, то да, и с этим могут возникнуть трудности, т.к. InterSystems как автор формата $list, ставшего стандартом де-факто, в M-стандартизации более не участвует.

А кстати, кто из остальных, кроме MiniM, участвует? Fidelity? YottaDB?

Участвует ISC в стандартизации или нет, в любом случае мне не попадалась формальная спецификация листов от ISC.
За MiniM могу сказать то же самое, спецификация формата не открывалась.
А по YottaDB - так вроде листы у вас, в СП.АРМ добавлялись, источник информации у вас.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39972345
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я
...в любом случае мне не попадалась формальная спецификация листов
Да я уже не про листы, я про М-стандартизацию в целом.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39977899
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
А кстати, кто из остальных, кроме MiniM, участвует? Fidelity? YottaDB?
Президент YottaDB K.S.Bhaskar ответил, что они не только участвуют в обсуждениях, но и открывают проблемы у себя в gitlab по подтягиванию своего продукта к новому Стандарту. Так что процесс идёт...
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980066
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять я дискуссию пропустил... Когда я писал про совместимость листов, имелось ввиду, что лист, созданный в одной системе, корректно прочитается в другой (допустим вы записали что-то в базу в формате $list и передали эти данные). Особенности связаны с форматами чисел, которые в разных системах имеют разную точность и разные диапазоны. Таким образом внутреннее представление будет отличаться (простейший пример 1000 и 1E3 - целое число и число с плавающей точкой с дробной частью, равной 0). Но при извлечении элемента и использовании его в операциях это будет одно и то же везде. Т.е. совместимость гарантирует правильное извлечение данных, а не двоичное совпадение полученных листов. Кстати, приведенный пример
Alexey MaslovПохоже, так всё и осталось:

USER>s a=$lb("0","0"),b=$lb(0,0) w a=b
0

YDB>s a=$lb("0","0"),b=$lb(0,0) w a=b
1


не совсем корректный, не зря для сравнения листов была введена функция $LISTSAME. Она в обеих системах даст одинаковый результат.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980391
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И уж чтобы расставить точки на i, некорректное поведение в приведенном примере ИМХО со стороны Cache. Это связано с неявной типизацией данных, которая там появилась, однако используется совершенно беспорядочно и недокументированно. Я уже писал про $zhex, в листах проявляется то же самое. Результат зависит от предыдущей операции с этими данными ! Отсюда и необходимость в функции $LISTSAME. В нашем варианте в YottaDB функция $listsame была добавлена только для совместимости при переносе программ и данных между системами.
USER>s a=$lb(1000),b=$lb(1E3)

USER>w a=b
0


YDB>s a=$lb(1000),b=$lb(1E3)

YDB>w a=b
1


Если уж говорить о стандартизации внутреннего формата, я бы хранил в листах только один тип данных - строки. Таким образом отпадает необходимость хранить признак типа, и остается предельно простая конструкция - длина и сама строка. Полная совместимость для любых М-систем будет обеспечена, поскольку не будет зависеть от специфики реализации внутреннего представления чисел.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980405
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LittleCat
...пример не совсем корректный...
Просто он не о логической ($listsame), а о двоичной совместимости. Она не часто может быть важна, но представим себе гипотетическую утилиту сравнения БД онлайн, подобную кашовской ^DATACHECK, но кросс-платформенную; так вот она, если не будет распознавать $list-ы, может выдать отрицательный результат для двух логически совпадающих глобалов в БД, находящихся в разных системах.

Беглый просмотр заметки по MUMPS-2020 показал, что важная часть начатой работы: обновить минимальные требования к диапазонам и точности чисел, которая должна обеспечиваться стандартной М-системой. До стандартизации $list-ов ещё ох как далеко, хотя наверное она упростилась бы, если ограничиться таким определением:

Если два листа a и b, созданные из набора элементов (a1,...,an) в двух разных М-системах, после двоичного копирования в любую из этих М-систем выдадут одинаковый результат $listsame(a,b) независимо от используемой М-системы, то формат листов в рассматриваемых М-системах логически совместим по чтению-записи и физически - по чтению.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980429
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Просто он не о логической ($listsame), а о двоичной совместимости.

При наличии функции $listsame полная двоичная совместимость ИМХО бессмысленна. Сейчас при обмене данными Cache <-> YottaDB функция $listsame в любой из этих систем выдаст правильные значения при сравнении листов, полученных на разных платформах.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980451
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Костя, это ведь не я завёл речь о кодировании $list, а Евгений, непосредственно участвующий в М-стандартизации:
ну я
С $list надо вообще-то детально специфицировать что там с кодированием, что возвращает
$ascii($listbuild(expr[,...]),expr)

Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций.
Я тоже не сталкивался с описанием каких-либо двоичных форматов в Стандарте X11.1-1995, везде описывалось только поведение на уровне результатов выполнения выражений М-языка. Возможно, Евгений пояснит, почему теперь (в 2020) это стало важно.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980454
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, свое предложение по стандартизации я озвучил выше :-) Ну и еще попытался показать на примерах, как развитие без плана и стандарта может завести в дебри....
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980507
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сами по себе скрытые типы данных - вещь неплохая: их наличие, очевидно, ускоряет арифметические операции и делает более компактным хранение чисел (если хранить в листах), ну и в Стандарте нет ни слова, что так делать нельзя. Других неприятностей с ними, кроме $zhex, вроде бы не наблюдается, а ей, кстати, ISC сама не рада: её унаследовали у одной из благоприобретённых М-систем и теперь вынуждены поддерживать (про это даже статья была на community). Да, могли бы объявить эту функцию "legacy" и предложить новую, "правильную", но видимо их основные клиенты уже привыкли к особенностям $zhex и непонятно, ради кого стараться.

Новые идеи, и в частности функции, всегда воспринимаются и внедряются с трудом, поэтому понятна осторожность, с которой вендоры их добавляют. За последние 10 лет не припомню существенных добавок в базовый набор функций ObjectScript, кроме $locate и $match. Регулярные выражения - прекрасная идея, но вот кинутся ли, к примеру, разработчики YottaDB ("идя навстречу пожеланиям трудящихся") добавлять их в свой движок? - сомневаюсь.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980515
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Сами по себе скрытые типы данных - вещь неплохая:

С этим никто не спорит, я про подход. Получается, что результат операции зависит от предыдущих действий, и ты сам это наглядно показал на примере нуля в листах, который получен разными способами. Про $zhex я писал. А сколько еще таких мест, на которые мы пока не наткнулись ? Вот в чем проблема, а не в каких-то конкретных задачах. Я как-то привык, что если у меня есть число 1.34, и я хочу взять целую часть, то я могу это сделать разными способами. Но получается, что результат не совсем одинаков. Мне этого не видно и заранее проверить это я никак не могу, и дальнейшие операции с этими данными дают разный результат. И это в пределах одной системы ! (Чего уж там кросплатформенная ^DATACHECK)


USER>s a=$lb(1.34\1)

USER>s b=$lb($p(1.34,"."))

USER>w a=b
0


$LB и $ZHEX, это то, что мы знаем. Но после этого кто может гарантировать, что нет еще каких-то плюшек на эту тему ?
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980540
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$list и все что около не использую.

Пока не будет сделано как предлагает Константин - тип данных только строки.

А то понаделали тут панимаешь ...
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980544
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LittleCat
Я как-то привык, что если у меня есть число 1.34, и я хочу взять целую часть, то я могу это сделать разными способами. Но получается, что результат не совсем одинаков.
...
$LB и $ZHEX, это то, что мы знаем. Но после этого кто может гарантировать, что нет еще каких-то плюшек на эту тему ?

1) Целая часть числа - это первый элемент списка, а не весь список. И результат таки одинаков:
Код: sql
1.
2.
3.
4.
USER>s a=$lb(1.34\1) s i1=$lg(a) 
USER>s b=$lb($p(1.34,".")) s i2=$lg(b)
USER>w i1=i2
1


2) Плюшки есть, куда ж без них? О них ранее упомянутое эссе разработчика ISC
КМК, Стандарт ограничивает вендоров, и в погоне за (... впишите нужное...) они вольно или невольно его нарушают. В GT.M/YottaDB, скажешь, плюшек нет? Как хорошо сказал K.S.Bhaskar, "Стандарт - это то, к чему мы привыкли". Однако, если стандартизаторы будут последовательны на выбранном пути:
  • уточнение нечётких определений;
  • небольшое количество ясно специфицированных шагов;
  • никаких революций типа уже через пару лет никому не нужных MWAPI, OMI и т.д.
толк от этой деятельности, возможно, будет.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980549
LittleCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
И результат таки одинаков:


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

Alexey Maslov
В GT.M/YottaDB, скажешь, плюшек нет?


Я такого не говорил. Там тоже есть плюшка с сортировкой длинных чисел в индексах, вопрос о которой я пытался поднять, но не был понят.

Вот пример проблемы (под другой системой подразумевается Cache)

S arr("202004080830202004080930")=""
S arr("202004090830202004090930")=""
s arr("202004090800000000000000")=""
s x="" f s x=$o(arr(x)) q:x="" w !,x," ",+x

Result in another system is normal numeric sorting

202004080830202004080930 202004080830202004100000
202004090800000000000000 202004090800000000000000
202004090830202004090930 202004090830202004100000

In YottaDB we see string sorting

202004090800000000000000 202004090800000000000000
202004080830202004080930 202004080830202004000000
202004090830202004090930 202004090830202004000000


Тут также из-за того, что целые числа имеют ограниченную точность, то, что влезает в сетку, сортируется как числа, а что нет - как строки. ИМХО это неправильно, но переубедить пока не удалось.
...
Рейтинг: 0 / 0
MUMPS 2020
    #39980565
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Костя, это ведь не я завёл речь о кодировании $list, а Евгений, непосредственно участвующий в М-стандартизации:
ну я
С $list надо вообще-то детально специфицировать что там с кодированием, что возвращает
$ascii($listbuild(expr[,...]),expr)

Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций.
Я тоже не сталкивался с описанием каких-либо двоичных форматов в Стандарте X11.1-1995, везде описывалось только поведение на уровне результатов выполнения выражений М-языка. Возможно, Евгений пояснит, почему теперь (в 2020) это стало важно.

$ascii() это и есть не двоичный формат представления, это функция языка, которую могут использовать программисты чтобы посмотреть какую последовательность образует строка. В принципе, то что получено в качестве $LB(), может быть получено и конкатенацией, и как-то иначе. И Евгений не может пояснить почему это стало важно в 2020, потому что это всегда было важно.
...
Рейтинг: 0 / 0
25 сообщений из 137, страница 3 из 6
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / MUMPS 2020
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]