Pull to refresh

Comments 10

Код чего?
В предыдущей публикации //habrahabr.ru/post/241369/ есть описание языка MSH.
MUMPS разработан где то в 80-х годах прошлого столетия,

"MUMPS (англ. Massachusetts General Hospital Utility Multi-Programming System — Массачусетская основная мульти-программная система для госпиталей; иногда M, или М-система) — язык программирования, созданный в 1966—1967 годах для использования в лечебной индустрии."
Некоторые элементы языка потеряли актуальность.

Скорее не появилось изменений, соответствующих современному представлению большинства об удобном языке.
Но в программах часто приходится работать с различными промежуточными значениями и хранить их в дереве не эффективно.

Про Caсhe писали, что локальные деревья показывают очень неплохую скорость. И поэтому стоит подробнее описать архитектуру вашего решения по массивам, чтобы было понятно, за счёт чего оно работает быстрее.
В MSH принят другой подход. Команды New здесь нет. А локализация переменных выполнена по префиксу. Переменные имеющие префикс % локализованы внутри задания. Переменные имеющие префикс ^tmp локализованы внутри приложения.

Мне кажется, что как раз от такой магии в языках и надо избавляться.
MSH не поддерживает декларации переменных, значит декларативной части описания объектов не будет.

А почему бы не поступить наоборот: Нужна декларативная часть для описания объектов, поэтому в MSH добавлена декларация переменных.
В MUMPS обработка событий в зачаточном состоянии и сводится к обработке ошибок.

MUMPS во главу угла ставит данные, соответственно в нём вместо событий — триггеры.
P.S.: А как вам такой (не осуществлённый к сожалению) вариант для развития MUMPS — MOLE?
|Скорее не появилось изменений, соответствующих современному представлению большинства об удобном языке.
Почему не появилось? MSH как раз и есть новое представление об удобном языке. Ну а большенство надо убеждать, что это оно и есть.

|Про Caсhe писали, что локальные деревья показывают очень неплохую скорость. И поэтому стоит подробнее описать архитектуру
| вашего решения по массивам, чтобы было понятно, за счёт чего оно работает быстрее.

Быстрее по сравнению с чем? Другими реализациями? Я не могу быть точно уверенным, но по моему, чтобы обратиться к дереву надо прочитать каталог, найти на головной странице нужный ключ и найти на странице данных нужное значение. Как то это все можно оптимизировать, но по сравнению с прямым обращением в память это разные порядки.

|Мне кажется, что как раз от такой магии в языках и надо избавляться.

Ну какая магия. Как раз это традиционное решение. Локализация переменных одно из немногих идей которые я взял из традиционных языков. Единственно мне пришлось опереться на префиксы, так как предварительного описания переменных у меня нет. Меня честно достало глобальность локальных переменных по умолчанию. А в каждой программе писать New и следить чтобы содержание этой команды соответствовало локальным для данной программы переменным дополнительная ненужная работа.

|А почему бы не поступить наоборот: Нужна декларативная часть для описания объектов, поэтому в MSH добавлена декларация переменных.

Объекты декларировать, а переменные нет? Но чем модуль не есть декларация класса? Методы там есть. Ну нет перечня защищенных переменных. Да и не надо. Переменные не имеют типа, что у них описывать, имя? Можно обойтись без этого.

|MUMPS во главу угла ставит данные, соответственно в нём вместо событий — триггеры.

Ничего о триггерах не слышал.

|А как вам такой (не осуществлённый к сожалению) вариант для развития MUMPS — MOLE?

Интересная попытка. Я категорически против декларативной части класса. И мне не нравится описание класса взятое в лоб из декларативных языков. Да и дополнительные описатели по моему только запутывают. С итератором по одному уровню я согласен, а где итератор по Query?
Оператор while интересное решение. Перечень методов обработки строк хорош, но по моему недостаточно полон.
|«MUMPS (англ. Massachusetts General Hospital Utility Multi-Programming System — Массачусетская основная мульти-программная система для |госпиталей; иногда M, или М-система) — язык программирования, созданный в 1966—1967 годах для использования в лечебной индустрии.»

В датах я не силе и должен с вами согласиться. То что он создан для лечебной индустрии в MUMPS никак не проявляется, кроме как в названии взятом из названия болезни. Это полнофункциональный язык программирования и на это указывает его стандарт.

|Про Caсhe писали, что локальные деревья показывают очень неплохую скорость. И поэтому стоит подробнее описать архитектуру
| вашего решения по массивам, чтобы было понятно, за счёт чего оно работает быстрее.

Быстрее по сравнению с чем? Другими реализациями? Я не могу быть точно уверенным, но по моему, чтобы обратиться к дереву надо прочитать каталог, найти на головной странице нужный ключ и найти на странице данных нужное значение. Как то это все можно оптимизировать, но по сравнению с прямым обращением в память это разные порядки. Обращение к элементу массива в MSH выполняется как к массиву в языке Си. Берется начало массива и по индексу находится значение за одно обращение к памяти. Оно в принципе быстрее обращения к любому дереву.
Даты важны для понимания, почему нет обязательного объявления переменных, почему есть сокращённые написания, почему есть поддержка параллельной работы и совместного доступа к данным, почему язык строко-ориентированный и многое другое.

Насколько мне известно(я конечно могу ошибаться) деревья в MUMPS физически не хранятся как деревья. И для обращения к локали — идёт только поиск по хэш таблице. Что конечно дольше, чем обращение по смещению, если массив не сильно разреженный, и индексы не велики.

|Насколько мне известно(я конечно могу ошибаться) деревья в MUMPS физически не хранятся как деревья. И для обращения к локали — |идёт только поиск по хэш таблице. Что конечно дольше, чем обращение по смещению, если массив не сильно разреженный, и индексы |не велики.
— Этого не может быть. Хеш таблицы не упорядочены, дерево на них не построить.
Согласен. Это мое слабое место.
В MUMPS переменные хранятся в деревянной структуре

Откуда такой термин? Может все же «Древовидной»?
Only those users with full accounts are able to leave comments. Log in, please.