|
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 |
|
|
start [/forum/topic.php?fid=39&startmsg=39980576&tid=1556118]: |
0ms |
get settings: |
16ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
84ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
478ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 938ms |
0 / 0 |