|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MDC повел вторую фазу работ по подготовке стандарта MUMPS 2020. Рик Маршал, секретарь MDC, позвал меня в рабочую группу, называется Task Group 19. Пока все обсуждения и документы закрытые. Работа ведется, процесс идет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2020, 19:14 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Как интересно. А цель нового стандарта? Добавить что-то принципиально новое? InterSystems участвует? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2020, 20:31 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
DAiMor Как интересно. А цель нового стандарта? Добавить что-то принципиально новое? InterSystems участвует? Пока в основном неточности в спецификации элементов языка. Предполагаю что да, но еще не в курсе кто именно из участников представляет Интерсистемс. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2020, 17:12 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я, То что надо Когда, предположительно, будет новый стандарт ? Успехов в этом сложном деле ! ================== ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2020, 17:40 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 ну я, То что надо Когда, предположительно, будет новый стандарт ? Успехов в этом сложном деле ! ================== Сейчас предполагается что в 2021. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2020, 17:52 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Вроде бы всем понятно, что стандартизация - вещь хорошая, прежде всего, для нас, потребителей. Пока было много М-систем на рынке, она была в какой-то степени выгодна и поставщикам. Но когда в 2000-х их осталось, условно говоря, только двое (не беря в расчёт MUMPSv1, M21+ и прочие небольшие системы, которые в основном использовались лишь их авторами), в общем-то понятно прохладное отношение InterSystems к развитию Стандарта, следствием которого стало практически полное замораживание деятельности MDC. Что, кроме появления третьего игрока - MiniM - изменилось к 2020 году? Что движет людьми, возобновившими работу над Стандартом? Есть ли хотя бы черновая публикация на эту тему, Евгений? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2020, 16:59 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Что движет людьми, возобновившими работу над Стандартом? Есть ли хотя бы черновая публикация на эту тему, Евгений? Движет хорошее ))) В языке есть некоторые неточности и отсутствуют конструкции выглядящие разумно, вроде предложений Type A, типа new $test или new $reference (хотя new $reference я еще не понял в чем смысл). Там большой список. Или уточнения синтаксиса, вроде того что принимает ^$global - в его первом индексе указано gvn, но gvn специфицирован с допустимыми сабскриптами, но для ^$global их нельзя указывать. Ну и в таком роде. Рик Маршал ведет обсуждение в закрытом формате, тут не моя юрисдикция. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 09:08 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я, Если привлекут к разработке стандарта IS, я думаю они попытаются включить свое расширение в стандарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 14:50 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я Alexey Maslov Что движет людьми, возобновившими работу над Стандартом? Есть ли хотя бы черновая публикация на эту тему, Евгений? Движет хорошее ))) В языке есть некоторые неточности и отсутствуют конструкции выглядящие разумно... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 22:55 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Чем это поможет нам, пользователям? Если, например, ГТ.М подтянет использование некоторых функций до "стандарта" Каше - нам будет проще писать программки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 07:45 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa Если, например, ГТ.М подтянет использование некоторых функций до "стандарта" Каше - нам будет проще писать программки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 11:21 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Чего больше всего не хватает в M? Мне нравятся поиски по шаблонам... Там небольшое семейство функций. Да и в старых стандартных функциях были добавлены некие полезные варианты с параметрами... Я было их запомнил и стал применять. А потом пришлось писать "универсально", все переделали на стандарт М. И я позабыл про это все, т.к. уже несколько лет это обновление не использую. Но память о том, что это было довольно удобно осталась! Помню были возможны отрицательные значения в параметрах... Типа -1 - до конца. Или -N (N целое) типа N с конца... Вот не вспомню сейчас. У нас молодежь активно использовала листбилдовские функции... Теперь х/з чего делать с теми программами. Их довольно много. Так же хотелось бы такое получить в "Стандарт". Хотя бы для ГТ.М... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 13:53 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa У нас молодежь активно использовала листбилдовские функции Сейчас в YottaDB имеются следующие расширения: $list* (все 12 функций) $order(variable,direction ,target ) $replace $zcrc $zcvt $zhex $zstrip Код: javascript 1. 2. 3. 4.
Куда обращаться, знаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 17:15 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Кто знает как быстро сохранить ВСЕ локальные переменные из namespace. А потом если надо быстро все восстановить ? По хотелкам - new для $zr предотвратило бы некоторые трудноуловимые ошибки. Кстати $zr вместе с $r для YottaDB не планируется ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2020, 23:06 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Куда обращаться, знаете. Я х/з что ты имел ввиду... Даже не понял зачем нам YottaDB... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 07:37 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 Кто знает как быстро сохранить ВСЕ локальные переменные из namespace. А потом если надо быстро все восстановить ? У нас такое на мамсе использовали только нерадивые программисты... Но там хоть было ограничения по памяти. Они все требовали его увеличить. Сначала делали 20КБт... Потом 30КБт... На 40КБт клиенты начали возмущаться, что их так нагло заставляют покупать память. И мы приструнили тех программистов, научили их пользоваться командой new ... Год контроля так же дал результат. А у вас почему появилась такая надобность? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 07:42 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 Кто знает как быстро сохранить ВСЕ локальные переменные из namespace. Вот пример из документации, как получить "следующую" локальную переменную Код: javascript 1. 2.
Далее ее имя и значение можно записать в глобал или файл, как тебе будет удобнее... Правда я забыл как получить именно первую локальную переменную. Но, если у вас нет переменной с именем % - можно использовать ее. Она же подойдет и как переменная для цикла. Код: javascript 1.
MX-9 А потом если надо быстро все восстановить ? Пройтись по тому глобалу и, используя имя (косвенное обращение) и значение восстановить локальную переменную В обоих вариантах нужно действовать командой merge ... Она скопирует как значение, так и все подузлы локальной переменной. Правда и тут есть подводные камни... У глобалов есть ограничения на длины значений, придется их увеличивать в настройках СУБД. Но это путь "в никуда". Не делайте так. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 07:53 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa Правда я забыл как получить именно первую локальную переменную. Помнят руки-то , помнят! (с) Код: javascript 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 07:54 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa Даже не понял зачем нам YottaDB... Пока не все добавленные функции вошли в основную ветвь, хотя работа над этим ведётся, за дистрибутивом можно обращаться в нашу компанию. Мы всегда рады сотрудничеству. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 10:37 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 Кстати $zr вместе с $r для YottaDB не планируется ? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 10:44 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Если заинтересованы в развитии, то стоит сменить GT.M на YottaDB. Ну это уже не ко мне... У нас на то есть эффективные топ менеджеры! Alexey Maslov Снизу вверх они совместимы. Новые фичи будут появляться только в YottaDB. Понял. А есть поддержка терминального соединения с БД на YottaDB? Помнится еще нам была нужна сертификация в реестре "доступного ПО" для госконтор... У YottaDB есть такое? Ну и документация для изучения новичками и не только... Есть? Alexey Maslov за дистрибутивом можно обращаться в нашу компанию. Мы всегда рады сотрудничеству. Ок, понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 12:35 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa, YottaDB это по сути просто форк GT.M, то есть это все он же просто с новыми возможностями ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 12:51 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
DAiMor YottaDB это по сути просто форк GT.M, то есть это все он же просто с новыми возможностями Пусть так... Значит терминальное подключение какое-то есть... Как с "сертификацией" в "российском ПО"? Нам можно использовать только такое для госконтор... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 13:09 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 Кстати $zr вместе с $r для YottaDB не планируется ? Про $r... Если YottaDB это следующий ГТ.М, то программы там просто файлы. А с файлами работают другие функции... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 13:17 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa Про $r... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 13:20 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa Как с "сертификацией" в "российском ПО"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 13:23 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov , в сертификации, насколько я знаю, важно не только имя ПО но и номер его версии. Т.ч. без сертификации нам дорога в YottaDB заказана... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 15:24 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa Alexey Maslov , в сертификации, насколько я знаю, важно не только имя ПО но и номер его версии. Т.ч. без сертификации нам дорога в YottaDB заказана... M.Base https://reestr.minsvyaz.ru/reestr/150011/ АИР-ГТМ https://reestr.minsvyaz.ru/reestr/138928/ Нет нигде упоминания о версии, по моему видимых причин нет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 16:10 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa, Спасибо за ответ. Этот вариант работает не так быстро как хотелось бы. Думал что есть что-то побыстрее.. Иногда соединение клиента с сервером рвется - и процесс аварийно закрылся. Надо продолжить с теми же переменными и незаметно для пользователя. Пока в общем-то все работает нормально ( с Вашим вариантом) - но полсекеунды на стыке после разрыва иногда заметны. Речь идет про 'виртуальный ексцел' развернутый в m-database (IRIS-CACHE-MSM-MiniM) интерактивно отображаемый на ексцели клиентов в сети. в частности - для IRIS - https://openexchange.intersystems.com/package/EXCEL-as-a-REST-application ========= ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2020, 23:16 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 08:27 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
http://sisyphus.ru/en/srpm/Sisyphus/MUMPS Current version: 1.71-alt1 Build date: 23 january 2020, 14:04 ( 16.2 weeks ago ) Size: 301.50 Kb License: BSD Summary: Massachusetts General Hospital Utility Multi-Programming System Description: MUMPS (Massachusetts General Hospital Utility Multi-Programming System) or alternatively M, is a general-purpose computer programming language that provides ACID (Atomic, Consistent, Isolated, and Durable) transaction processing. Its most unique and differentiating feature is its "built-in" database, enabling high-level access to disk storage using simple symbolic program variables and subscripted arrays, similar to the variables used by most languages to access main memory. Current maintainer: Fr. Br. George List of contributors Fr. Br. George Мне вот любопытно, все изобретают свою сертификацию при наличии этого продукта в сертифицированном http://altsp.su/ А Current maintainer: Fr. Br. George явно не из секты "СВИДЕТЕЛИ ДИАМСА" Кто в курсе истории появления этого пакета в Сизифе? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 08:47 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
https://sparm.com/products/ais#rec180169605 https://www.npcair.ru/it-systems/soi-szn/ Вам бы каждому ещё и по форку GCC сделать для сборки своих M.Base и АИР-ГТМ ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 08:55 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
experience 1.30 - не удалось установить и не только мне Если SP-ARM взялся - все будет работать и устанавливаться. Знаем по предыдущему опыту сотрудничества. Плюс всегда можно проконсультироваться. Возможно что часть документации будет на русском. (мы не в России - уже начали забывать как буковки пишутся) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2020, 10:51 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 Иногда соединение клиента с сервером рвется - и процесс аварийно закрылся. Надо продолжить с теми же переменными и незаметно для пользователя. Такие "ключевые" переменные можно хранить в глобале... ;) Т.е. даже не именно хранить, а использовать только глобальные переменные. Тогда и записывать ничего не нужно. Все уже записано до нас. (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 07:58 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
experience Все изобретают свою сертификацию чего? MV1? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 10:16 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я experience Все изобретают свою сертификацию чего? MV1? Я про то, что уже находится в разряде open source. И имею ввиду например то, что gt.m есть в репозиториях ubuntu и очень вероятно в debian(специально не изучал) И значит препятствий для появления в сертифицированной Astra нет от слова совсем ибо всё что собрано сертифицированным GCC в замкнутом контуре не требует сертификации в достаточно широком спектре случаев. В alt-e тоже ведь кто то когда инициировал наличие пакета о котором я выше писал в сизифе и он сопровождается, это видно по датам. Т.е. вместо генерации форков gtm,yotta с не прозрачной лицензией и сопровождением, целесообразнее было бы простимулировать maintainer-ов соответствующих дистрибутивов под которые реалии бизнеса в России диктует вхождение в реестры т.д и т.п. А самим только прикладную часть генерить указывая пакеты M-DBS в качестве зависимостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 11:32 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa MX-9 Иногда соединение клиента с сервером рвется - и процесс аварийно закрылся. Надо продолжить с теми же переменными и незаметно для пользователя. Такие "ключевые" переменные можно хранить в глобале... ;) Т.е. даже не именно хранить, а использовать только глобальные переменные. Тогда и записывать ничего не нужно. Все уже записано до нас. (с) Абсолютно поддерживаю ! Хранение всего контекста в глобальных переменных позволяет в итоге отказаться от постоянной сессии и легко перейти к реализации настоящего Web-клиента. А в GT,M/YottaDB (из-за особенностей реализации локальной среды) это может даже увеличить скорость работы приложений, у которых эта самая среда большого объема. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 13:31 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
experience ну я пропущено... Все изобретают свою сертификацию чего? MV1? Я про то, что уже находится в разряде open source. И имею ввиду например то, что gt.m есть в репозиториях ubuntu и очень вероятно в debian(специально не изучал) И значит препятствий для появления в сертифицированной Astra нет от слова совсем ибо всё что собрано сертифицированным GCC в замкнутом контуре не требует сертификации в достаточно широком спектре случаев. В alt-e тоже ведь кто то когда инициировал наличие пакета о котором я выше писал в сизифе и он сопровождается, это видно по датам. Т.е. вместо генерации форков gtm,yotta с не прозрачной лицензией и сопровождением, целесообразнее было бы простимулировать maintainer-ов соответствующих дистрибутивов под которые реалии бизнеса в России диктует вхождение в реестры т.д и т.п. А самим только прикладную часть генерить указывая пакеты M-DBS в качестве зависимостей. И каков же способ "простимулировать maintainer-ов соответствующих дистрибутивов под реалии бизнеса в России"? Порадовать их что их разработки вносятся в реестр российского ПО и поэтому они должны? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 14:06 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 experience 1.30 - не удалось установить и не только мне Устанавливать лучше по инструкции из дистрибутива README.md, новый скрипт установки ydbinstall.sh пока еще сыроват. Если что-то не получается - спрашивайте, подскажу. И самое главное, по первоначальной теме топика, про стандарт ! Это нужно обязательно сделать, нормальный стандарт ! Интерсистемс на это дело плюнула, и в результате наплодила монстров типа $zhex() USER>w $zv Cache for UNIX (SUSE Linux Enterprise Server for x86-64) 2015.1.2 (Build 607_0_15502) Mon Sep 14 2015 22:19:23 EDT USER>s a=+3030 USER>w a 3030 USER>w $zh(a) BD6 USER>s a="3"_"030" USER>w a 3030 USER>w $zh(a) 12336 USER> Про функции, которые возвращают одновременно два значения, я уж молчу.... Так что я бы не торопился восхищаться и включать в стандарт неоднозначные вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 14:07 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat Это нужно обязательно сделать, нормальный стандарт ! ... Интерсистемс на это дело плюнула Допустим, появится стандартная функция ($hex?), работающая по прозрачным правилам. Что заставит InterSystems её реализовать? Аналогичные вопросы можно задать по остальным возможным направлениям развития Стандарта и получить аналогичные ответы. Подозреваю, что и YottaDB относительно равнодушна к Стандарту, хотя лучше у них спросить. Тогда для кого Стандарт, если все его нарушают, кроме MUMPSv1 - референтной системы MDC? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 16:15 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я И каков же способ "простимулировать maintainer-ов соответствующих дистрибутивов под реалии бизнеса в России"? Порадовать их что их разработки вносятся в реестр российского ПО и поэтому они должны? Мне кажется, как раз наоборот. Чем больше мы будем поддерживать безумие в виде таких вот реестров, тем больше этого безумия будет плодить государство. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 16:17 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
авторДопустим, появится стандартная функция ($hex?), работающая по прозрачным правилам. Что заставит InterSystems её реализовать? А заставлять никого не надо. Не нужен стандарт ради стандарта, он нужен для того, чтобы его поддерживали добровольно, иначе все бессмысленно. Если несколько производителей начнут его поддерживать, то между ними будет конкуренция уже не за количество, а за качество. Соответственно, будет конкуренция, и снижение себестоимости (ну да, монополистам придется покупать яхты поменьше). В итоге будут оставаться эффективные решения, а дурацкие исчезать..... И если стандарт начнем помогать производителям, то ИС никуда не денется, приведет в порядок свой код.... Как-то так мне казалось.... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 16:51 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
krvsa MX-9 Иногда соединение клиента с сервером рвется - и процесс аварийно закрылся. Надо продолжить с теми же переменными и незаметно для пользователя. Такие "ключевые" переменные можно хранить в глобале... ;) Т.е. даже не именно хранить, а использовать только глобальные переменные. Тогда и записывать ничего не нужно. Все уже записано до нас. (с) Все правильно говорите. Много кода еще с прошлого века. Работает как зверь - переписывать не хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2020, 23:14 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 Много кода еще с прошлого века. Работает как зверь - переписывать не хочется. Это-то понятно... Просто мало ли кто потом будет читать, так сделает правильный вывод и выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 07:07 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
MX-9 Есть публичный репозиторий, где можно взять последнюю стабильную версию с добавленными функциями, о которых писал Alex Maslov. https://gitlab.com/littlecat/YDB/-/tree/sparm_master ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 11:47 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat MX-9 Есть публичный репозиторий, где можно взять последнюю стабильную версию с добавленными функциями, о которых писал Alex Maslov. https://gitlab.com/littlecat/YDB/-/tree/sparm_master ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 13:58 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat MX-9 Есть публичный репозиторий, где можно взять последнюю стабильную версию с добавленными функциями, о которых писал Alex Maslov. https://gitlab.com/littlecat/YDB/-/tree/sparm_master Спасибо будем качать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2020, 23:29 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
DAiMor А кстати, такой вопрос, а можно выделить из него парсер, который можно использовать для построения AST? Это вряд ли.... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2020, 13:03 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Линда (Linda Yaw) выложила компиляцию некоторой части обсуждений. Выглядит примерно так: http://mumps.org/mdc/work/tg19/analysis-and-plan-20200608 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2020, 11:52 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Из новостей. Поддержка NEW $TEST добавлена в MiniM и MUMPS V1. В Cache и GT.M была добавлена ранее. В MiniM добавлена также форма с инициализацией NEW $TEST=expr. Предложение по добавлению NEW $TEST было датировано аж июнь 1994 года. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2020, 23:52 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Евгений, Относительно текущих версий Cache/IRIS это не так: см., например, $TEST и NEW , да и ошибка <SYNTAX> поправит сомневающегося. Более того, InterSystems едва ли нуждается в этой команде: ведь в Cache она выполняется неявно при вызове методов классов (даже по DO), а прочие DO ISC рассматривает как устаревший код и особо не заинтересована в их развитии. Раз уж зашёл разговор о Стандарте: свершилось чудо, и InterSystems начала участвовать в деятельности по подготовке нового Стандарта? Точной ссылки не нашёл, но по достоверным сведениям где-то в середине 90-х на одном из заседаний MDC их представитель заявил, что они более не считают себя связанными обязательствами по соблюдению Стандарта. Возможно, кто-то из членов MDC тех лет или сотрудников InterSystems мог бы уточнить этот момент, хотя исходя из текущего состояния языка ObjectScript он едва ли нуждается в уточнении. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 21:31 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov свершилось чудо, и InterSystems начала участвовать в деятельности по подготовке нового Стандарта? Их представителей пока не наблюдал. Про NEW $TEST в Cache писал со слов, возможно не так перевел. Из новостей: добавляются операторы <= >= ]= ]]= Удалось отговорить от отрицаний '<= '>= ']= ']]= ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 21:51 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Добавили бы ещё: $increment (вот он-то по факту есть "у всех": в Cache, YottaDB, GT.M, MiniM), $replace (Cache, YottaDB, MiniM(?)), $list* (Cache, YottaDB, MiniM). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 11:04 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
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.
Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций. Кстати, листы в YottaDB добавлял Константин? Помнится он рассказывал http://thedarkaugust.blogspot.com/2016/03/blog-post_20.html что у него листы конструируются лишь с частичной совместимостью с Cache. Интересно было бы узнать поподробнее о поддержке листов в YottaDB, как они сейчас сделаны. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 12:14 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я ...листы конструируются лишь с частичной совместимостью с Cache... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 12:31 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я добавляются операторы <= >= Мне всегда нравились <= => ну я Удалось отговорить от отрицаний '<= '>= ']= ']]= Правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 13:42 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций. ну яДвоичная совместимость частичная...Похоже, так всё и осталось: Код: javascript 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 14:37 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я С $list надо вообще-то детально специфицировать что там с кодированием... А кстати, кто из остальных, кроме MiniM, участвует? Fidelity? YottaDB? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 12:24 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov ну я С $list надо вообще-то детально специфицировать что там с кодированием... А кстати, кто из остальных, кроме MiniM, участвует? Fidelity? YottaDB? Участвует ISC в стандартизации или нет, в любом случае мне не попадалась формальная спецификация листов от ISC. За MiniM могу сказать то же самое, спецификация формата не открывалась. А по YottaDB - так вроде листы у вас, в СП.АРМ добавлялись, источник информации у вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 12:54 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я ...в любом случае мне не попадалась формальная спецификация листов ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2020, 13:09 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov А кстати, кто из остальных, кроме MiniM, участвует? Fidelity? YottaDB? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2020, 21:30 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Опять я дискуссию пропустил... Когда я писал про совместимость листов, имелось ввиду, что лист, созданный в одной системе, корректно прочитается в другой (допустим вы записали что-то в базу в формате $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. Она в обеих системах даст одинаковый результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2020, 17:53 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
И уж чтобы расставить точки на 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 Если уж говорить о стандартизации внутреннего формата, я бы хранил в листах только один тип данных - строки. Таким образом отпадает необходимость хранить признак типа, и остается предельно простая конструкция - длина и сама строка. Полная совместимость для любых М-систем будет обеспечена, поскольку не будет зависеть от специфики реализации внутреннего представления чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 12:45 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat ...пример не совсем корректный... Беглый просмотр заметки по MUMPS-2020 показал, что важная часть начатой работы: обновить минимальные требования к диапазонам и точности чисел, которая должна обеспечиваться стандартной М-системой. До стандартизации $list-ов ещё ох как далеко, хотя наверное она упростилась бы, если ограничиться таким определением: Если два листа a и b, созданные из набора элементов (a1,...,an) в двух разных М-системах, после двоичного копирования в любую из этих М-систем выдадут одинаковый результат $listsame(a,b) независимо от используемой М-системы, то формат листов в рассматриваемых М-системах логически совместим по чтению-записи и физически - по чтению. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 13:02 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Просто он не о логической ($listsame), а о двоичной совместимости. При наличии функции $listsame полная двоичная совместимость ИМХО бессмысленна. Сейчас при обмене данными Cache <-> YottaDB функция $listsame в любой из этих систем выдаст правильные значения при сравнении листов, полученных на разных платформах. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 13:29 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Костя, это ведь не я завёл речь о кодировании $list, а Евгений, непосредственно участвующий в М-стандартизации: ну я С $list надо вообще-то детально специфицировать что там с кодированием, что возвращает $ascii($listbuild(expr[,...]),expr) Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 13:56 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Ага, свое предложение по стандартизации я озвучил выше :-) Ну и еще попытался показать на примерах, как развитие без плана и стандарта может завести в дебри.... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 13:59 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Сами по себе скрытые типы данных - вещь неплохая: их наличие, очевидно, ускоряет арифметические операции и делает более компактным хранение чисел (если хранить в листах), ну и в Стандарте нет ни слова, что так делать нельзя. Других неприятностей с ними, кроме $zhex, вроде бы не наблюдается, а ей, кстати, ISC сама не рада: её унаследовали у одной из благоприобретённых М-систем и теперь вынуждены поддерживать (про это даже статья была на community). Да, могли бы объявить эту функцию "legacy" и предложить новую, "правильную", но видимо их основные клиенты уже привыкли к особенностям $zhex и непонятно, ради кого стараться. Новые идеи, и в частности функции, всегда воспринимаются и внедряются с трудом, поэтому понятна осторожность, с которой вендоры их добавляют. За последние 10 лет не припомню существенных добавок в базовый набор функций ObjectScript, кроме $locate и $match. Регулярные выражения - прекрасная идея, но вот кинутся ли, к примеру, разработчики YottaDB ("идя навстречу пожеланиям трудящихся") добавлять их в свой движок? - сомневаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 15:23 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
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, это то, что мы знаем. Но после этого кто может гарантировать, что нет еще каких-то плюшек на эту тему ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 15:42 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
$list и все что около не использую. Пока не будет сделано как предлагает Константин - тип данных только строки. А то понаделали тут панимаешь ... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 16:23 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat Я как-то привык, что если у меня есть число 1.34, и я хочу взять целую часть, то я могу это сделать разными способами. Но получается, что результат не совсем одинаков. ... $LB и $ZHEX, это то, что мы знаем. Но после этого кто может гарантировать, что нет еще каких-то плюшек на эту тему ? 1) Целая часть числа - это первый элемент списка, а не весь список. И результат таки одинаков: Код: sql 1. 2. 3. 4.
2) Плюшки есть, куда ж без них? О них ранее упомянутое эссе разработчика ISC КМК, Стандарт ограничивает вендоров, и в погоне за (... впишите нужное...) они вольно или невольно его нарушают. В GT.M/YottaDB, скажешь, плюшек нет? Как хорошо сказал K.S.Bhaskar, "Стандарт - это то, к чему мы привыкли". Однако, если стандартизаторы будут последовательны на выбранном пути:
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 16:25 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
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 Тут также из-за того, что целые числа имеют ограниченную точность, то, что влезает в сетку, сортируется как числа, а что нет - как строки. ИМХО это неправильно, но переубедить пока не удалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 16:39 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Костя, это ведь не я завёл речь о кодировании $list, а Евгений, непосредственно участвующий в М-стандартизации: ну я С $list надо вообще-то детально специфицировать что там с кодированием, что возвращает $ascii($listbuild(expr[,...]),expr) Пока все относятся к листам как к чему-то с чем можно оперировать только через $list функции, то оно может быть как-бы и ок, но для стандарта описывать надо. Чтобы поведение программ было одинаковым для разных реализаций. $ascii() это и есть не двоичный формат представления, это функция языка, которую могут использовать программисты чтобы посмотреть какую последовательность образует строка. В принципе, то что получено в качестве $LB(), может быть получено и конкатенацией, и как-то иначе. И Евгений не может пояснить почему это стало важно в 2020, потому что это всегда было важно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 17:01 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat целые числа имеют ограниченную точность, то, что влезает в сетку, сортируется как числа, а что нет - как строки *** Мой вопрос: *** Current Locale is: ^%SYS("LOCALE","CURRENT")="ruw8" Collation table: Cyrillic2 or Cache standard (it doesn't mean much). The following code provides the output as follows: kill b set a=1E30,b(+a)=1,b(+a_"1")=3,b(+a_"1a")="3a" set a=3E30,b(+a)=2,b(+a_"1")=4,b(+a_"1a")="4a" set b($c(2))="c2" zwrite b b(1000000000000000000000000000000)=1 b(3000000000000000000000000000000)=2 b("10000000000000000000000000000001")=3 b("30000000000000000000000000000001")=4 b($c(2))="c2" b("10000000000000000000000000000001a")="3a" b("30000000000000000000000000000001a")="4a" while the expected output is: b(1000000000000000000000000000000)=1 b(3000000000000000000000000000000)=2 b($C(2))="c2" b("10000000000000000000000000000001")=3 b("10000000000000000000000000000001a")="3a" b("30000000000000000000000000000001")=4 b("30000000000000000000000000000001a")="4a" because as to ISO M Standard, in the first half of ASCII table there should be only 2 collation ranges: 1) numbers (sorted numerically) 2) non-numbers (sorted alphabetically). while in Cache one can find 3 collation ranges: 1) numbers (sorted numerically) 1*) pseudo numbers (sorted numerically) 2) non-numbers (sorted alphabetically). Should be mentioned that this sample code provides correctly collated {glvn} in MSM, MiniM, GT.M. *** И ответ разработчика *** This is correct behavior. Anything which is entirely numeric will collate as if it was a number even if it exceeds the capacity of the supported precision. SPJ932 contains a description of this. If you create the global with string collation, then all entries are collated as strings. --------------<skipped>------ Цитата из изменения SPJ932: "In ANSI collation, any number (or string that is in canonic numeric form) is collated numerically, before all non-numeric strings." ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2020, 17:26 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Из новостей: Поддержано введение set $qs(name,pos) = expr Для удаления предлагал дополнить kill $qs(name,expr) но пока не поддержано, возможно что неактуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 13:27 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Формально они правы; если следовать букве Стандарта: если не число, то строка, а значит пусть как строка и сортируется. И где в моем примере "не число" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 14:00 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat И где в моем примере "не число" ? Код: javascript 1. 2. 3. 4.
Извини, пропустил слово: x - не каноническое число, поэтому с т.з. действующего Стандарта поведение YottaDB корректно. Возможные неприятные последствия противоположного решения (в Cache) показаны ранее в моём примере под спойлером. Источник проблемы здесь - не М-система, а формирование строк, по формату являющихся числами, в результате не вычислительных операций (конкатенации и пр.). Добавь разработчики букву в начало такого индекса, поведение было бы одинаковым в обеих системах. В моём случае они так и поступили. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 16:41 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я kill $qs(name,expr) set a(1,2)=12 set a(1,2,3)=123 set a(1,2,3,4)=1234 set ref=$name(a(1,2,3,4)) kill $qs(ref,2) w ref a(1,3,4) ; - если это, то непонятно, зачем или a(1) ; - если это, то в предложении смысл есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 16:53 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov ну я kill $qs(name,expr) Операция set может проставить значение индекса, но не удалить индекс. Этого не хватает для полноты операций. А чтобы получить a(1) есть второй аргумент у $name() ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 17:01 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я Операция set может проставить значение индекса, но не удалить индекс ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 17:08 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov LittleCat И где в моем примере "не число" ? Код: javascript 1. 2. 3. 4.
Извини, пропустил слово: x - не каноническое число, Если бы в начале числа был 0, это было бы неканоническое число. Если бы присутствовал любой символ, отличный от цифры, это было бы неканоническое число. Но почему в приведенном примере это число неканоническое ? Из-за того, что во внутреннем представлении оно не влезает в разрядную сетку и при арифметических операциях обрезается ? Но это проблема реализации, а не концепции. Это что же, будут разные реализации М-систем с разным внутренним представлением чисел, и во всех одни и те же данные будут сортироваться по-разному ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 17:12 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Нашел определение канонического представления целого числа Каноническая форма положительного целого числа в десятичном представлении является конечной последовательностью цифр , которая не начинается с нулем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 17:30 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov ну я Операция set может проставить значение индекса, но не удалить индекс Этого не хватает для полноты операций. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 17:44 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat Каноническая форма положительного целого числа в десятичном представлении является конечной последовательностью цифр , которая не начинается с нулем. Простейшая проверка, является ли строка X каноническим числом: if $isvalidnum(X),X=+X w "Yes!" ; без $isvalidnum можно нарваться на <NUMERIC OVERFLOW>. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 18:29 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Выдержка из стандарта ANSI 1995 года Only numbers which may be represented with a finite number of decimal digits are representable as numeric values. A data value has the form of a number if it satisfies the following restrictions. a. It shall contain only digits and the characters "-" and ".". b. At least one digit must be present. c. "." occurs at most once. d. The number zero is represented by the one-character string "0". e. The representation of each positive number contains no "-". f. The representation of each negative number contains the character "-" followed by the representation of the positive number which is the absolute value of the negative number. (Thus, the following restrictions describe positive numbers only.) g. The representation of each positive integer contains only digits and no leading zero. g. The representation of each positive number less than 1 consists of a "." followed by a nonempty digit string with no trailing zero. (This is called a fraction.) h.The representation of each positive non-integer greater than 1 consists of the representation of a positive integer (called the integer part of the number) followed by a fraction (called the fraction part of the number). См. пункт g. А чего там Женя написал, или Intersystems, так это они что-то хотели под себя подогнать, под свою реализацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 18:39 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Костя, Это определение тоже немного странное: - п. "g" встречается дважды - в п. "h" ничего не сказано про ".". Если обратиться к документу, с которого началась эта дискуссия, так там недвусмысленно сказано о наличии неточностей в Стандарте. Возможно, как раз один из таких случаев. Итак, имеем:
... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 19:02 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Костя, Это определение тоже немного странное: - п. "g" встречается дважды - в п. "h" ничего не сказано про ".". Если обратиться к документу, с которого началась эта дискуссия, так там недвусмысленно сказано о наличии неточностей в Стандарте. Возможно, как раз один из таких случаев. Итак, имеем:
Леша, извини, буквы я сам расставлял, они со странички стандарта не откопипастились ;-) http://71.174.62.16/Demo/AnnoStd ИМХО никаких неточностей нет, определение канонических целых чисел соответствует математическому. Насчет того, что делать, я как раз придерживаюсь мнения, что будущий стандарт нужно привести в соответствие с реальным миром, и буду рад, если любые индексы, соответствующие пункту g старого стандарта будут сортироваться как числа. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 19:22 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
А что делать когда появится сверхдлинная арифметика? 128+ бит уже на подходе. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 12:51 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Onix А что делать когда появится сверхдлинная арифметика? 128+ бит уже на подходе. Есть примеры того зачем оно нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2020, 13:12 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Из новостей. На MDC один из вопросов - NEW $REFERENCE, пока все в раздумьи. Мое предложение по NEW $REFERENCE такое: * все автоматические изменения naked indicator (разные там $D, $O) и прямое присваивание $REFERENCE смотрят на каком последнем уровне стека было NEW $REFERENCE и только на нем меняют. * при смене текущей базы данных просматриваем все уровни стека и на каких был NEW $REFERENCE на всех них и сбрасываем в пустую строку. * на чтении возвращаем с последнего стека где был NEW $REFERENCE. * если не было NEW $REFERENCE то значит операция на нулевом уровне. Отличие в поведении других NEW svn - во втором пункте, на смене текущей базы. Такой вариант выглядит и достаточно совместимым и не слишком косячным. Пишу чтобы посоветоваться. У кого будут поправки, замечания, и прочее - отпишитесь. К этой теме нужно отнестись взвешенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 23:20 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Из новостей Вместо MUMPS V1 теперь ведется его продолжение RSM (Reference Standard M), проект продолжает David Wicksell. David Wicksell RSM V1.72.0 is now live at https://gitlab.com/Reference-Standard-M/rsm Eugene Karataev We will refer to RSM instead of MV1? David Wicksell Yes. MV1 stopped being developed in 2018. and Ray Newman retired. He passed it along to me this year, and I changed its name from MV1 to RSM. The original MV1 will be archived at https://gitlab.com/Reference-Standard-M/mumpsv1, with no more updates ever, while RSM will be hosted at https://gitlab.com/Reference-Standard-M/rsm ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2020, 23:02 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я И ..... * при смене текущей базы данных просматриваем все уровни стека и на каких был NEW $REFERENCE на всех них и сбрасываем в пустую строку. ..... Отличие в поведении других NEW svn - во втором пункте, на смене текущей базы. Такой вариант выглядит и достаточно совместимым и не слишком косячным. Пишу чтобы посоветоваться. У кого будут поправки, замечания, и прочее - отпишитесь. К этой теме нужно отнестись взвешенно. А не накладно при смене базы стек гонять? Я наверно не в курсе, но разве $zr не должен был хранить в себе еще и ссылку на конкретную БД в начале? У нас всё в одной всегда живёт, но есть мысль такая: кодогенерация во временную БД (специальную, в оперативке которая) и оттуда сгенерированный код ориентируясь на структуру основной БД по ней бегает. Т.е. свитч во временную БД, там вызов кода который делает переключение обратно. И вот таких переключений может быть много. Понятно, это детали реализации, и сделать можно очень быстрое переключение, но всё же. Это я так, мысли вслух. Оно уже может решено там всё давно? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 11:24 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов кодогенерация во временную БД (специальную, в оперативке которая) и оттуда сгенерированный код ориентируясь на структуру основной БД по ней бегает ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 16:48 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov, Ну у кого есть оный - тот счастлив. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:29 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов, Просто ранее упомянули $zr, а она вроде как только в Cache и в MSM, в других М-СУБД обычно $r. Какая у вас СУБД, если не секрет? По поводу БД в памяти не стал бы обольщаться. Из нашего опыта: в Cache такие БД не поддерживаются, а в GT.M таки возможны Memory Mapped DB. Когда-то пробовали, работает медленнее, чем обычные БД, которые на Async I/O. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:46 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов А не накладно при смене базы стек гонять? Я наверно не в курсе, но разве $zr не должен был хранить в себе еще и ссылку на конкретную БД в начале? Нет, не накладно ))) $ZR хранит naked indicator. А он может как содержать так и не содержать базу, это зависит от того как сослались на глобал - полностью или только по имени. Если не полностью то это означает что операция применяется к текущей базе, иначе к явно указанной. Выполнение тех же операций в другой базе должно означать выполнение тех же операций - что указано явно то явно, а что по умолчанию - то к текущей. Сам naked indicator может быть прочитан в локальную переменную, сохранен в глобале или передан в девайс, прочитан из глобала или девайса, применен, но в любом случае система должна выполнить строго те же операции. Даже если это другая М система. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:52 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov, MSM. В ней нет Routine Mapping, на сколько я знаю. Только таблица трансляций. Там что-то есть с маппингом процентных, откуда их цеплять, а вот межу Volume Group маппинг произвольных нет. А с БД в оперативки... МЫ в неё умеем, всё что могу сказать ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 17:53 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов МЫ в неё умеем, всё что могу сказать Но может времена изменились, и с более быстрой памятью ситуация изменилась? Хорошо, если так. Если не секрет, что держит в MSM? Сейчас ведь есть из чего выбрать, в том числе из бесплатного. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:06 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov, Да Windows держит. И нормальная реализация Job'ов, не тупорылая многопроцессорная херня, а своя vm которая асинхронно всё делает (и еще как-то разделяет, не суть). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:13 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Как странно. Мы когда-то перевели не одну прикладную систему из MSM в Cache, и "тупорылая многопроцессорная херня" всегда делала "умную MSM-овскую" в разы на том же железе. Системы были не только наши, но и сторонних разработчиков, а результат отличался лишь "количеством раз": когда в 2, а когда и в 4 раза Cache обгоняла. Но я давно уже никого не агитирую за переход. Работайте, в чём работается, если вас это устраивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:22 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов Alexey Maslov, Да Windows держит. И нормальная реализация Job'ов, не тупорылая многопроцессорная херня, а своя vm которая асинхронно всё делает (и еще как-то разделяет, не суть). Видимо, многопроцессорная -> многопроцессная? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:27 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я, Поскольку MSM умеет использовать только одно ядро CPU, то в его случае это практически одно и то же. Да, помню про асинхроный i/o в MSM-NT, но это копейки. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:34 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov, Проблему 10к (которая в современности уже вроде 10kk, но не суть), чисто на эме как решать? Плодить 10k процессов? Городить свою асинхронную очередь? Это рамки которые ограничивают. Агитируете, вы же говорите - "у нас норм". Интересно в цифрах, сколько джобов работают на сервере одновременно, на сколько логика погружена в этот самый эм (не торчит ли там большой кусок на "яве" (не суть на чём) сбоку), не является ли Ваш код callback-hell, не храните ли вы состояние сессий в глобалях между этими callback. Да и вообще - фронтенд накладывает отпечаток, смотря подо что ваш бэк. Я не противопоставляю MSM кэше конкретно. Я ж не говорю что каше говно. Я утверждаю что разделение job по процессам ОС - путь к кладбищу для M, т.к. для решения современных задач надо уметь в BigData не только как хранилище, но и как ЯП, а твой наш "BigData" ограничен кол-вом лицензий на сервер, если ты ВСЁ хочешь делать на эме. По моему очевидно. Смысл менять MSM если та же каше или GT.M тебя загоняет в новые рамки, избавив (ли?) от старых. M очень прогрессивный язык, но архитекторы разных реализаций пошли по шаблонному устаревшему пути. Не важно по каким причинам, не сомневаюсь что они были очень вескими. На мой взгляд пришли к тому что "А смысл развивать выразительность M?" Для программирования в стиле "быстрая замена SQL" его хватает за глаза. Никто ж не будет браться за серьёзный проект держа в голове только M (хорошо, кто-то может будет (удачи ему), я бы точно не стал). Надеюсь развёрнуто пояснил, может сумбурно - вечер перед выходным настраивает на лирический лад. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:48 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я, >Видимо, многопроцессорная -> многопроцессная? Да, простите. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 18:49 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов, > Агитируете, вы же говорите - "у нас норм". Что ж мне, врать, что "не норм" и плакать о прожитых без MSM уже 20 без малого лет? > Интересно в цифрах, сколько джобов работают на сервере одновременно, на сколько логика погружена в этот самый эм Сервер серверу рознь. До 2000 пользователей на сервере среднего класса запускать приходилось. Характеристик сервера под рукой нет, но поверьте, не супер-компьютер. Вся бизнес-логика на M, на веб- или Delphi-клиенте только отрисовка экранов и интерактив с пользователем. Прикладное ПО - МИС qMS, см. sparm.com. Поверьте, тяжелее задач не бывает. Здесь и OLAP, и OLTP, и много чего ещё, и высочайшие требования заказчиков. Проблему 10k (пользователей, не job'ов! job'ов может быть значительно больше) пока решаем горизонтальным масштабированием. В Cache/IRIS это называется ECP. Асинхронные очереди тоже, конечно, есть, но это не основной, а дополнительный инструмент для распараллеливания тяжёлых фоновых расчётов. Используем как очереди, встроенные в Cache, так и самописную на M. Мампсисту да очередь не написать? Мне через это смешно. Продолжаю не агитировать, просто рассказал. У вас другие задачи, вас всё устраивает, ОК. Успехов! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 19:08 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов не храните ли вы состояние сессий в глобалях между этими callback. Стесняюсь спросить,а чем плохо хранить состояние сессий в глобалах ? И в чем Вы предлагаете его хранить ? (действительно интересно, поскольку у нас давно на эту тему идет дискуссия) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 20:25 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov, Алексей, спасибо за информацию, про очереди в каше не знал. Но стало понятно отчего так спокойно на "той стороне". Написать очередь самому - конечно, не вопрос. Вопрос в другом - запрос-ответ это уже не так актуально. Актуально быть в постоянном интерактиве - интернет вещей про это (где много железок онлайн), и при этом не тонуть в колбэках, писать код сверху вниз а не салатной нарезкой. И клёвый интерактив с юзером тоже удобно и здорово так писать. LittleCat, Такой интерактив - он не про хранение сессий в глобалях, это просто не удобно и медленно. Надо менять парадигму программирования. А временная информация должна лежать в локальных переменных, персистентная - в глобалях, всё же просто. Оно конечно можно всё распихивать в глобали, на каждый запрос поднимать и обратно складывать, но это решение от безысходности. Или решение "потому что мы всегда так делали для вэба, у нас же запрос-ответ". Нет таких M реализаций которые дадут тебе нормальную виртуальную машину (не важно, либо с green threads как в MSM либо a-la asyncio под капотом) которая позволит без стеснения одинаково обрабатывать хоть сотни хоть сотни тысячи запросов коннектов и не заниматься переливаниям порожняка временных сессионных данных туда-сюда, с принудительным дроблением нормальных, понятных бизнес-алгоритмов на "коротенькие" процедурки (так что бы клиент не отвалился по таймауту) или под свои "ой да написать мапсисту очередь раз плюнуть" очереди. Следовательно, смысл что-то менять? Что MSM - кусок старого говна, что альтернативы - такие же, только дата компиляции посвежее. Как-то-так. Сейчас, что бы стать стильным модным молодёжным - надо уметь в асинхронность. И не такую разноцветную как в тайпскрипте каком-нибудь или питоне, а в нормальную, когда прикладник и не в курсе что он делит процессор с соседями (примерно как в Stackless Python). Казалось бы, идеология M идеально ложится в это - много мелких простых запросов - удобно параллелить, оно прямо просится само. Но нет, доминация подхода "как в SQL" - монстропроцесс-конвеер который будет перемалывать запросы. Еще бы блин на каждый Job - юзера в системе создавали, ну что за люди... (ну что за люди эти банкиры с их безопастниками, я сейчас подумал что и такое может быть). Хотя вот YottaDB в ту сторону вроде двигается, слежу с замиранием сердца. Как только смогут в асинхронную очередь работать внутри своей .so с прокидкой хвостов наружу (или наоборот - внутрь в своей очереди) - всё, это победа, прикручивай любой современный язык и рви всех в клочья. Их скорее всего стопорит проблема с транзакциями. Извините за оффтоп, M люблю но от состояния дел в современном эме - боль. Потому что современного эма нет. Во всех смыслах: что в реализациях что в стандарте. Я когда услышал про 2020 - обрадовался, неужели?.. А оно там как, за последние 25 лет хвосты подчистить, ничего нового никто не предлагает? Ну прям такого что огого, типа итераторы поинтересней по деревьям, или там объектные нотации какие-нибудь? Революция будет, не побоюсь этого слова? Или как обычно - пока сам не сделаешь, никто не сделает? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 16:22 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов Не понял, зачем сессионную информацию гонять туда-сюда. А если просто хранить ее там ? При первом обращении к сессии она конечно прочитается с диска, но потом-то она будет болтаться в кэше, и при правильной настройке не вытеснится оттуда, пока клиент не пропадет надолго. А насчет "делить процессор" разве ОС не занимается этим сама, и вполне успешно ???? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 17:16 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat Антон Аксёнов Не понял, зачем сессионную информацию гонять туда-сюда. А если просто хранить ее там ? При первом обращении к сессии она конечно прочитается с диска, но потом-то она будет болтаться в кэше, и при правильной настройке не вытеснится оттуда, пока клиент не пропадет надолго. А насчет "делить процессор" разве ОС не занимается этим сама, и вполне успешно ???? Зачем хранить временную, никому не нужную кроме как этому конкретному коннекту информацию в кэш? А чё-бы кэш не занимать только той информацией которая нужна всем? Чего бы временной локальной информации не жить в локальных переменных, для этого придуманных? С подходом один процесс как молотилка очереди запросов - локальные перемененные алгоритма который выполнялся бы сверху вниз слишком долго (а это "долго" определяет параметр таймаута HTTP, да не важно кто - ограничение некое сверху) переносят в разряд "сессионных данных", дробя этот алгоритм на последовательность запросов. Понимаете к чему я? А можно жить в своём джобе и вместе с тем пока собираются данные отдавать что-то клиенту по чуть-чуть, держа его в тонусе, и при этом не погружаясь в салатный код из колбэков. Я Вам говорю что то, что вы называете "сессионные данные" - у Вас не полностью из них состоят. В силу архитектуры монстра-молотилки вы туда еще складываете состояние алгоритма, и делаете потому что по другому никак. Потому что ваш бизнес-алгоритм расхристан стейт-машиной посредством колбэков. И считаете это норм. Потому что по другому на текущих реализациях эма нельзя. А я вот говорю что это нихрена не норм. Слишком много бесполезных (ибо порождены ограничениями реализаций) абстракций и поэтому слишком далеко от железа. А насчет "делить процессор" разве ОС не занимается этим сама, и вполне успешно ???? Вот разрабы всех современных реализаций видать где-то так же рассуждают. Вы меня читаете но не понимаете. Проблему 10k (которая, повторюсь, уже 10kk) тоже процессами собрались решать? Тут даже в потоках народ упирается, а Вы - процессами. Как бы там ось не занималась "успешно" - хрень всё это, не поверю что парни из редмонда смогут написать лучше планировщик чем разработчик виртуальной машины под М - ведь именно разработчик знает все особенности языка, особенности работы с разряженным массивами, он точно сделает лучше. Процесс будет управляем, будет доступна приоритезация job'ов. Ну это все прелести зелёных потоков, не буду переписывать интернеты. Есть и еще небольшой (не особо важный но приятный) бонус - при работе "во враждебной" среде (у конечного пользователя) если твой процесс запустился - аллилуйя, работаем пока не перегрузимся. Да да, не все живут в тепличных серверных условиях. Но это так, мелочь. Вся прелесть асинхронной обработки в том что ты можешь позволить себе как белый господин программировать сверху вниз, программировать алгоритмы бизнеса ровно так как их тебе напишут люди из бизнеса, а не ломать голову "как бы мне тут раскидать по запросам, тут в очередь закинуть, тут в пул складывать данные, тут из пула отдавать данные". Хотя не сомневаюсь, что после некоторой практики такое само собой решается: салатный код лепится не задумываясь. И даже наверно потом норм читается. Прелесть асинхронной обработки еще и в том что программировать можно одинаково, используя одни и те же практики и наработки для сервера любого уровня нагрузки - хоть на 10 юзеров хоть на миллион. Вот в этом разрезе Job на процесс - детский сад, меня это и бесит и умиляет одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 17:53 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов, Вы написали много слов, но большинство из них проходят мимо моего сознания, видимо в следствии ограниченного кругозора. ("салатный код из колбэков", "архитектура монстра-молотилки" и т.п.) Но я не об этом, знание некоторых принципов позволяет не заботиться о запоминании множества фактов. Антон АксёновЗачем хранить временную, никому не нужную кроме как этому конкретному коннекту информацию в кэш? А чё-бы кэш не занимать только той информацией которая нужна всем? Чего бы временной локальной информации не жить в локальных переменных, для этого придуманных? Очень просто - информация, необходимая алгоритму, располагается в оперативной памяти и занимает некоторый ее объем. Вам не все равно, в общем кэше она или в локальной среде процесса ? Если она в локальной среде, процесс становится большим и неповоротливым. Если среди этих данных есть то, что следует сохранить, получаем накладные расходы на сохранение о последующее восстановление. Таким образом, ИМХО, в локальных переменных стоит держать только то, что не страшно потерять в любой момент. Насчет использования потоков есть здравое зерно, тут я не готов спорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 18:25 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat Антон Аксёнов, Вы написали много слов, но большинство из них проходят мимо моего сознания, видимо в следствии ограниченного кругозора. ("салатный код из колбэков", "архитектура монстра-молотилки" и т.п.) Но я не об этом, знание некоторых принципов позволяет не заботиться о запоминании множества фактов. Ой ладно вам, я уверен - вы скромничаете. Уж что такое callback-hell вы должны знать. И если программировать под вэб, в рамках "ответить надо быстро иначе клиент отвалится", то понимание должно быть что долгую обработку с интерактивом надо пилить на несколько этапов, если между этапами подразумевается некий интерактив с пользователем. А колбэк - это кусок алгоритма срабатывающий после того как та сторона (пользователь) ответит, и обрабатывает ответ, использует его в дальнейших рассчётах. Монстр-молотилка - это процесс (в широком понимании) который обрабатывает очередь поступивших запросов. Я за то что бы небыло запросов, а были свои джобы на каждое соединение которые бы обрабатывали персонально каждый коннект и ЖДАЛИ бы его при необходимости интерактива. Таким образом не надо будет пилить алгоритмы на куски. Не бог весь какая терминология, больше аналогий (не спорю, не совсем удачных, скорее экспрессивных), но дело ваше, можете не напрягаться, читая этот сумбур. Пишу не только для вас, но попробую больше про принципы, ок. LittleCat Очень просто - информация, необходимая алгоритму, располагается в оперативной памяти и занимает некоторый ее объем. Вам не все равно, в общем кэше она или в локальной среде процесса ? Если она в локальной среде, процесс становится большим и неповоротливым. Если среди этих данных есть то, что следует сохранить, получаем накладные расходы на сохранение о последующее восстановление. Таким образом, ИМХО, в локальных переменных стоит держать только то, что не страшно потерять в любой момент. Насчет использования потоков есть здравое зерно, тут я не готов спорить. Я же написал, мы с вами разное подразумеваем под временными данными. Вы, в силу того что привыкли к своей архитектуре распиленных бизнес-алгоритмов, считаете частью сессии то что, по сути, можно было бы к чертям потерять. Например, текущая итерация цикла прерванного для ожидания интерактива. Я так, абстрактно. Потому что у вас часть цикла в одной процедуре, а часть во второй, которая будет вызвана после ответа пользователя. И вот что бы вторая процедура продолжила нормально работу - вы храните состояние первой в сессии, ибо бедный (о чём все мои посты выше) инструментарий заставляет вас высвобождать драгоценные оплаченные деньгами джобы для обработки следующих запросов из очереди. С таким подходом у нас вообще нет выбора где хранить, если говорить только в рамках подхода обработчик очереди запросов. Где ж еще, если надо быстрее кончить и освободить джоб для следующего запроса? Какая разница, ну хотите пишите: for ^sessions(ID,"x")=1:1:9000 s ^sessions(ID,"y")=^sessions(ID,"y")+1 Если чувство прекрасного вас обделило, хотите пишите поднятие/сохранение промежуточных данных в конце запроса. О чём спор если по факту выбора-то нет? А могла бы быть одна единая процедура, в которой в середине что-то спросили бы у пользователя и после получения ответа сразу бы продолжили работу, а всё состояние бизнес-алгоритма как жило в локалях так бы там и осталось. >Таким образом, ИМХО, в локальных переменных стоит держать только то, что не страшно потерять в любой момент. Ну тут невозможно и не зачем спорить. Это не ИМХО а прописная истина. Вот только разрезанные интерактивом бизнес-алгоритмы в подходе "меня спросили - я ответил" вынуждены хранить в глобалях то что можно было бы потерять не парясь. Но в принципе, абстрагируясь от сессий и всего о чём мы говорим, странная постановка вопроса про кэш. Как это какая разница, ведь одно дело держать в оперативке джоба, на кончиках пальцев, а другое дело - в расшаренном кэше, где помимо хранения и доставания данных будет еще код блокировки из-за того что оно расшарено между джобами? Это же лишний оверхед пока я работаю с моими данными. Моими интимными, больше никому не нужными данными одного конкретного соединения, возвращаясь к нашим баранам. Это вы ловко ввернули, "при правильной настройке", а если неправильная? Тот подход за который я топлю если и требует отдельной настройки кэша сессионных данных, то этот процесс будет прогнозируем. Т.е. можно заранее прикинуть что вот столько юзеров и столько ТАКИХ-ТО данных, т.е. мы знаем что в нашем кэше сесси сиддят только данные сессии. А с подходом единого джоба-молотилки нам приходится держать в голове тот факт что в любой момент может появится интерактив внутри одного из бизнесс-процесса который заставит выгружать в этот кэш кучу данных по локальному состоянию этого алгоритма, т.к. он будет "разрублен" этим интерактивом. И вы такое не предусмотрите в жисть. LittleCat Если она в локальной среде, процесс становится большим и неповоротливым. Я к тому что при подходе job=коннект_до_его_смерти программист волен решать и прикидывать - что лучше хранить в глобалях, т.к. оно скорее всего будет большим и неповоротливым если будет сидеть в оперативке, а что держать "горячим" в локалях. А при подходе который я критикую выбора-то и нет, повторюсь. И еще раз, отскакивая в сторону, и немного мечтая, а неплохо было бы для джоба иметь некое хранилище для временных данных прошитое в стандарт. Что бы что-то крупное хранить на диске а не в оперативке, но без транзакций и шаринга, это должно быть видно только джобу. Вроде в cashe такое есть, специальная глобаль или что-то такое. Вот это точно в стандарт надо тащить. Это хорошая штука для тех данный сессии которые потенциально могут пухнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 20:55 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов LittleCat Антон Аксёнов, И еще раз, отскакивая в сторону, и немного мечтая, а неплохо было бы для джоба иметь некое хранилище для временных данных прошитое в стандарт. Что бы что-то крупное хранить на диске а не в оперативке, но без транзакций и шаринга, это должно быть видно только джобу. Вроде в cashe такое есть, специальная глобаль или что-то такое. Вот это точно в стандарт надо тащить. Это хорошая штука для тех данный сессии которые потенциально могут пухнуть. В Cache есть https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_variables#GCOS_variables_procprivglbls A process-private global is a variable that is only accessible by the process that created it. When the process ends, all of its process-private globals are deleted... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2020, 06:41 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов ...это все прелести зелёных потоков... Так что зелёные потоки как единственный механизм обеспечения многозадачности сервера БД и приложений - конечно же, тупик, и в Micronetics это понимали. В своё время мне приходилось общаться с их разработчиками, и они успели рассказать, что в 1998 году уже существовала версия MSM 4.5 с native threads. Почему она не увидела свет, думаю, объяснять не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2020, 14:03 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Почему она не увидела свет, думаю, объяснять не надо. Надо :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2020, 02:09 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Блок А.Н. Надо :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2020, 10:19 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
И отдельное спасибо владельцам GT.M, которые тогда же отказались его продать и продолжили самостоятельное развитие. Теперь у нас есть YottaDB. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2020, 10:32 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
LittleCat ...GT.M, которые тогда же отказались его продать... Who develops YottaDB/GT.M?GT.M was originally developed in the mid-1980s by Greystone Technology Corporation then of Wakefield, and later Woburn, Massachusetts. In 1998, the GT.M business (including the customers, the product, the development team, and all development assets) was acquired by Sanchez Computer Associates (Sanchez) of Malvern, Pennsylvania. ... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2020, 11:17 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Имхо, это одно и то же, важен результат - он остался. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2020, 11:23 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov, Спасибо, я подозревал, но не был уверен. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2020, 12:09 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Антон Аксёнов ...это все прелести зелёных потоков... Алексей, разверните пожалуйста эту мысль, что за обслуживание одного пользователя, кого вы под пользователем подразумеваете? Вы про проблему что Job'=User, и если один мешок с костями подключается несколькими коннектами то может ими "забить" ядро? И в этом случае честный шедулинг затрудняется? Ну тогда каким боком это у вас "но" применительно к зелёным потокам? Как раз в концепции зелёных Job'ов мы может отдать прикладнику объединение джобов в виртуальные группы и уже эти группы шедулить по чесноку в разрезе процессорного времени и частоте запросов к диску. А вот в тупорылом подходе job=процессОС мы нихера не можем (ну если честно то можем, даже в последних виндах как раз можно группировать процессы, но это.. извращение, будем честны, для наших целей). Alexey Maslov Так что зелёные потоки как единственный механизм обеспечения многозадачности сервера БД и приложений - конечно же, тупик, и в Micronetics это понимали. В своё время мне приходилось общаться с их разработчиками, и они успели рассказать, что в 1998 году уже существовала версия MSM 4.5 с native threads. Почему она не увидела свет, думаю, объяснять не надо. Вот это Вы задвинули, я аж вспотел. Конечно же тупик - текущий подход, то что это вам не очевидно, ну печаль, а так все вокруг идут туда, в сторону асинхронности скрытой языковыми конструкциями (качество этих скрытий везде по разному но в основном - так себе, хотя go вроде неплох). А Ваш аргумент получился в стиле "ваш самолёт не взлетит потому что у моей машины высокое лобовое сопротивление". Это если я правильно понял две предпосылки для вашего вывода "тупик". Таки попытаюсь, еще раз: Вам сотрудник из Micronetics сказал что пробовали(сделали?) в натив треды.... И из этого вы сделали офигенный вывод что зелёные потоки "конечно же тупик"? Брр запутался. Т.е. они понимали что, мол, тупик, и сделали на тредах? А вы не в курсе подробностей? А хотите версию? Они понимали что ручной шедулинг джобов и единое адресное пространство - это орудие победы, и что бы ловить профит от нескольких ядер - сделали последний, логичный шаг: вместо одного потока который шедулит зелёные треды сделали по потоку на ядро? Т.е. каждый поток обрабатывает свои джобы. Именно то что я ожидаю от будущей БД мечты. Вот бы связаться с этим сотрудником и узнать. >Почему она не увидела свет, думаю, объяснять не надо. Вот хорошо внизу уточнили, а то я уже в конспирологию хотел удариться :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2020, 18:04 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Антон Аксёнов, > Т.е. они понимали что, мол, тупик, и сделали на тредах? "Делали" MSM в конце 80-х, когда поддержки нативных тредов не было в большинстве ОС, и серверы были однопроцессорными. (Тогда и слова такого "сервер", честно говоря, не было). Сравнивать производительность нативных и зелёных тредов имело смысл только на однопроцессорниках, на многопроцессорниках - что тут сравнивать? Как справедливо заметил LittleCat, ОС справляется с распределением процессов/потоков по процессорам лучше, чем СУБД. Кстати, Cache выигрывала у MSM даже на однопроцессорниках, так что тупорылые были быстрее умных и зелёных, хотя, возможно, причины были не только в этом: детальным анализом производительности я тогда не занимался, да и с чего бы, когда проблем с ней не было. Обсуждать эту тему дальше бессмысленно: прошло четверь века, подробностей, фамилий и явок не помню, извиняйте. И удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2020, 18:28 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Евгений (который "ну я"), Мы тут маленько замусорили твою ветку, постараемся исправиться. Можно вопрос? Как принимается решение о присвоении предложению MDC типа A (или как он теперь называется), имею в виду присвоение статуса готовности к включению в Стандарт 2020: простым большинством или требуется консенсус? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2020, 18:34 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Евгений (который "ну я"), Мы тут маленько замусорили твою ветку, постараемся исправиться. Можно вопрос? Как принимается решение о присвоении предложению MDC типа A (или как он теперь называется), имею в виду присвоение статуса готовности к включению в Стандарт 2020: простым большинством или требуется консенсус? Тип С - если понравилось более чем одному из участников и выглядит логично, цельно, непротиворечиво. Выглядит как запись для памяти на будущие обсуждения - документирования - описания. Ну чтобы не забылось. Вообще документов много, ведется работа по сканированию всей кипы бумаги в pdf. Тип B и A - автоматическое продвижение если не встретилось ничего против за время вылёживания. Переход из A в сам стандарт - вот тут уже обсуждение. Тут по-разному, кто за, кто против, кто поддерживает, кто уже поддержал. Если нужно обсуждение, разъяснение - то всегда до полного понимания, никто никуда не торопится. Если кем-то воспринимается в штыки и вызывает бурления - то не принимается. Скажем в стандарте описано использование environment для полного имени глобала, рутины (namespace или UCI, где как). Я просто задал вопрос что с одной стороны оно используется, но нигде не описано что это и как получить к примеру список имеющихся, допустимость значений, проверить существование и прочее. Для рутин, или глобалов, или еще что, есть соответствующие SSVN, а вот для списка environment - нет, ну разве что в RSM (ранее MV1). И тут (неожиданно для меня) Рик Маршал стал за, Bhaskar против, ну у всех свои мнения, и из-за того что не сошлись даже в уровень C вносить не стали. Видимо, в GTM свои мнения на архитектуру и трактовку environment и не хотят чего-то терять или менять. А вот предложение на тему new lvn=expr было встречено за, внесено в C. В разных системах это было сделано по-разному и видимо пока никто не будет браться за строгую переносимость environment, уже хорошо что в MUMPS 1995 договорились хотя бы о синтаксисе. По теме левостороннего set $qs()=... было просто. За? За. Вносим? Вносим. Вот список в каких реализациях как поддержано. С операторами https://thedarkaugust.blogspot.com/2020/07/mumps2020.html сравнения и равно или с new $test - то же самое. За? За. Вносим? Вносим, вот список где поддержано. Обмениваемся кодом для проверки корректности (простенькие юнит-тесты), сверили - ок. Bhaskar решил дальше не участвовать поскольку обсуждение закрытое, а он хочет открытый форум. Ну и вообще, считает что стандарты имеют смысл лишь если это кому-то нужно для взаимозаменяемости. А пока видимо если кто для чего пишет то соответствующую специфику и использует. И будет добавляться что-то одинаково или неодинаково - видимо уже не столь важно. Ну, в принципе, и его решение, и решение Интерсистемс было на чем-то основано с их точки зрения. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 00:22 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я ... Bhaskar решил дальше не участвовать поскольку обсуждение закрытое, а он хочет открытый форум. Ну и вообще, считает что стандарты имеют смысл лишь если это кому-то нужно для взаимозаменяемости. А пока видимо если кто для чего пишет то соответствующую специфику и использует. И будет добавляться что-то одинаково или неодинаково - видимо уже не столь важно. Ну, в принципе, и его решение, и решение Интерсистемс было на чем-то основано с их точки зрения. Я правильно понимаю, что не в плане персон, а в плане представленных в комитете реализаций Caché и YottaDB не участвуют? Можно список реализаций в которых возможно будет увидеть когда нибудь результаты работы MDC? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 08:45 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
pureproft Я правильно понимаю, что не в плане персон, а в плане представленных в комитете реализаций Caché и YottaDB не участвуют? Можно список реализаций в которых возможно будет увидеть когда нибудь результаты работы MDC? Разработчик GT.M и YottaDB, а также разработчик FreeM, решили не участвовать в обсуждениях , им не понравилось как сейчас все ведется. К неучастию в стандарте это не относится, как я понял они хотят иную форму. Часть добавлений M2020 в YottaDB уже были внесены. Сейчас в списке присутствия / отсутствия фич есть Cache, IRIS, GT.M, YottaDB, FreeM, MiniM, RSM (MUMPS V1). Представителей ISC там нет. Из разработчиков сейчас представлены MiniM и RSM. На тему Cache переживаний нет - у ISC достаточно сильные разработчики чтобы поддержать то что сочтут нужным и как сочтут нужным. А что будет в будущем - кто ж его знает, может и M21 и M3 поддержат, может еще какая реализация появится. Я будущего не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 11:17 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
pureproft ...не в плане персон, а в плане представленных в комитете реализаций Caché и YottaDB не участвуют ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 11:27 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я ... Из разработчиков сейчас представлены MiniM и RSM. ... Я наверно не удачно вопрос сформулировал, но ответ я получил исчерпывающий. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 13:19 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Евгений, А "ленивые" && и || не пробовали протолкнуть в Стандарт? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 17:59 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Alexey Maslov Евгений, А "ленивые" && и || не пробовали протолкнуть в Стандарт? Нет, не было таких предложений. Хотя они и поддерживаются по крайней мере в Cache и MiniM. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2020, 21:00 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ну я ...поддерживаются по крайней мере в Cache и MiniM С традиционными ! и & не всё так просто: в Стандарте M-1995 не сказано, что необходимо вычислить все операнды выражения вне зависимости от того, влияют ли они на результат. Однако в большинстве М-систем они вычисляются. YottaDB составляет здесь исключение, с некоторыми оговорками. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2020, 11:39 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Nov 17, 2020 MiniM - 52 MiniM got an MDC assigned number 52. USER>w $sy 52,AUGUST:MINIM00 This update will be available at next build. Евгений Анатольевич, я правильно понимаю, что это повод для поздравлений? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2020, 22:14 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
pureproft Nov 17, 2020 MiniM - 52 MiniM got an MDC assigned number 52. USER>w $sy 52,AUGUST:MINIM00 This update will be available at next build. Евгений Анатольевич, я правильно понимаю, что это повод для поздравлений? Да))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 11:08 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
Евгений ! Примите наши поздравления ! На Вас вся надежда в деле популяризации демократизации М ! ----------------------------- от Латвии и окрестностей Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2020, 20:32 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
На этом форуме вроде обсуждают на счет стандарта,наших заинтересованных нет ? https://groups.google.com/g/comp.lang.mumps/c/NeBXUJziDww ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2021, 09:35 |
|
MUMPS 2020
|
|||
---|---|---|---|
#18+
ValeriuНа этом форуме вроде обсуждают на счет стандартаНе слишком-то обсуждают. Упомянули "new $test" (о чём ранее писал Евгений), а также K.S.Bhaskar (YottaDB) подчеркнул, что займётся разработкой нового Стандарта, лишь когда этот процесс станет открытым для всех членов М-сообщества. Продолжается ли сам процесс разработки, есть ли результаты, каковы перспективы? - давно никаких новостей. Может быть, Евгений нам что-нибудь поведает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2021, 23:23 |
|
|
Start [/forum/topic.php?all=1&fid=39&tid=1556118]: |
0ms |
get settings: |
28ms |
get forum list: |
10ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
78ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
3056ms |
get tp. blocked users: |
3ms |
others: | 146ms |
total: | 3361ms |
0 / 0 |