faqs.org.ru

 Главная > Программирование > Работа с базами данных >

FAQ по М-технологии и языку программирования MUMPS

Секция 1 из 2 - Предыдущая - Следующая

RU.MUMPS FAQ
версия от 09.11.97

(C) сохраняется за авторам(и) или владельцами соответствующих марок.
Составление этого ЧАВО (FAQ) (C) Бохонкович Ю.Г.
Идея и значительная часть сведений позаимствованы из Gardner Trask's
M FAQ. Portions (C) Gardner Trask.
Данный документ может свободно распространяться любым способом и
использоваться для любых целей, в том числе коммерческих, при условии
невзимания за него оплаты и сохранения его целостности. Нарушение
данных условий будет рассматриваться как нарушение авторского права.
Допускается частичное воспроизведение документа с обязательным
указанием источника и данного абзаца.

------------------------------------------------------------------------

ЧАСТО ЗАДАВЕМЫЕ ВОПРОСЫ ПО М-ТЕХНОЛОГИИ И ЯЗЫКУ ПРОГРАММИРОВАНИЯ MUMPS

1. ЧТО ТАКОЕ M?
2. Бывают на свете бесплатные версии M? Где взять?
3. Что такое comp.lang.mumps? Как на неё подписаться?
4. Что нам нравится в M?
5. Что нам не нравится в M?
6. Почему M называют "языком баз данных"?
7. M - это РСУБД?
8. М - компилируется или интерпретируется?
9. Раз М интерпретатор,значит я не могу защитить программы от копирования?
10. Насколько быстр M?
11. Есть ли в М поддержка Microsoft Windows и других GUI'ёв?
12. Какое название правильней - M или MUMPS?
13. Используется ли М помимо медицины?
14. Является М объектно-ориентированным?
15. М - структурированный язык?
16. Подходит ли М для многопользовательских систем?
17. Работает ли М в сети?
18. Является ли М стандартом?
19. Переносим ли М?
20. Как М выглядит по сравнению с SQL?
21. Как М выглядит по сравнению с ВАСИКОМ?
22. Как быстро на М можно писать программы? По сравнению с другими языками?
23. Есть ли основанные на М 4GL-системы и генераторы приложений?
24. Есть ли BBS, ftp/www/эхи, посвящённые М?
25. Что случилось в 1841 году?
26. Как посмотреть глобали в незнакомой М-системе?
27. Влияют ли комментарии на производительность?
28. Какие бывают версии М? Где его можно взять?
29. Является ли М открытой системой?
30. Есть ли в М средства для работы с Интернет?
Приложение 1: Путеводитель по языку для программистов, незнакомых с ним.
Приложение 1a: Типичные ошибки начинающих программистов в призме советов.
Приложение 2: Пример "книжного" программирования на M
Приложение 3: Пример "традиционного" программирования на M
Приложение 4: Темы, требующие освещения.
Приложение 5: Благодарности. Лица, принимавшие участие в составлении.

------------------------------------------------------------------------

1. ЧТО ТАКОЕ M?

M - это процедурный, интерпретируемый язык программирования общего
применения, ориентированный примущественно на работу с базами данных.
К его характерным особенностям относятся:

- отсутствие типов данных (точнее одним большим;);

- многомерные разреженные массивы;

- постоянно-существующие переменные ("глобали");

- хорошие возможности по работе со строками;

- позднее связывание переменных и текста программ;

- "косвенность" (или "разыменование"): возможность подстановки данных
как кода программ;

- встроенная многозадачность/многопользовательность (разделение времени).

------------------------------------------------------------------------

2. Бывают на свете бесплатные версии M? Где взять?

MSM-EXPLORER

Заточенная под MS Windows GUI однопользовательская демо-версия MSM.
Работает в MS Windows 95, WindowsNT, Windows 3.1x/win32s.
Для этого надо обратиться к фирме Micronetics или её VAR'ам.
(список в конце)

DT-STUDENT

Версия DTM для MS-DOS. Не для коммерческого использования.
Можно закачать с:

        ftp://openmsql.intersys.com//pub/dtstudent/
или
        ftp://vets.vetmed.missouri.edu//mumps/dtstuden/

UCD MicroMUMPS

Настоящая бесплатная версия. Общественное достояние.
Как сообщает автор, это версия по стандарту 1984г., но зато она
специально разработана для облегчения обучения и проще в использовании
нежели коммерческие системы;).

GeneralUniversalMumps (GUM)

Проект создания версии M на условиях свободного распространения (GNU).
К сожалению, пока ничего нельзя сказать подробнее.

------------------------------------------------------------------------

3. Что такое comp.lang.mumps? Как на неё подписаться?

Это т.н. "USENET newsgroup". Она создана в июле 1994 и немодерируема.
Обсуждаемые темы включают в себя: стандарты/практику/соглашения и
обычаи прогарммирования на M; слухи об возможных слияниях фирм,
занимающихся M; поиски/предложения работы; запросы/ответы о проблемах,
связанных с отдельными реализациями M.
Ниже приведён Устав эхи:

 Немодерируемая эха comp.lang.mumps открыта для обсуждений на почти все
темы, относящиеся к M-Технологии и языку M aka MUMPS.
Примерный перечень тем (не ограничиваясь только на них).

        советы
        связи с GUI платформами (M оконный интерфейс)
        обсуждение коммерческих продуктов
        объектно-ориентированные расширения
        сети PC
        приёмы программирования
        инструментарий
            и др.

        единственная исключённая тема: обсуждение стандарта на сам
        язык, её следует вести в эхе comp.std.mumps.

    ПОДПИСКА НА ЭХУ

Есть два пути:
если у Вас есть только e-mail, Вы можете использовать "MUMPS-L шлюз".
если же у Вас есть доступ к USENET, то Вам можно просто пустить
соответствующую программу-rn, trn, tin, nn*-далее следуйте инструкциям.

Что надо сделать, чтобы получать почту через шлюз.
1) убедитесь, что никакой другой способ чтения эхи Вам не доступен.
2) пошлите мыло на: LISTSERV@uga.cc.uga.edu
сабж не имеет значения.
сообщение должно состоять из одной строки: SUBSCRIBE MUMPS-L

По прошествии небольшого времени Вы получите автоматическое
подтверждение от сервера о подписке. С этого момента Вы будете получать
comp.lang.mumps и MUMPS-L.

Чтобы послать сообщение в эху, надо намылить на MUMPS-L@uga.cc.uga.edu.

             ОБРАТИТЕ ВНИМАНИЕ НА РАЗНИЦУ АДРЕСОВ СЕРВЕРА!

Thanks to:
   American University, for hosting and operating the gateway;
   Jim McIntosh, jim@american.edu, for administering it;
   Harold Pritchett, harold@UGA.CC.UGA.EDU, owner and administrator
         of the MUMPS-L list;
   and the BITNET organization generally.

* Напоминаю всем, что модератором RU.MUMPS@fidonet является
Антон Парфёнов (2:5020/218).

------------------------------------------------------------------------

4. Что нам нравится в M?

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

f p=2,3:2 s q=1 x "f f=3:2 q:f*f>p!'q  s q=p#f" w:q p,?$x\8+1*8

     [часть подписи Keith Lynch'а; печатает таблицу простых чисел,
      включая в себя код для разбивки чисел в аккуратные колонки--DPBS]

------------------------------------------------------------------------

5. Что нам не нравится в M?

Слабость прикладного инструментария, замкнутость (самодостаточность) в
себе. Следствие быстроты, гибкости и простоты: очень часто программисты
соблазняются возможностью быстро написать эффективную, но безобразно
оформленную программу, забывая про то, что потом ею могут заниматься
другие люди.;( Как правило, M-программы очень легко и быстро пишутся,
но очень тяжело и долго переписываются.
Специально для Константина Малявина: отсутствие оператора выхода из
цикла a-la break в C.;)

------------------------------------------------------------------------

6. Почему M называют "языком баз данных"?

M - это язык программирования с сильным креном на обработку текста и
управление базами данных. Однако, M - НЕ ЯВЛЯЕТСЯ системой управления
базами данных. Недостатком этого является необходимость некоторого
опыта, чтобы создать работающую базу данных, но преимуществом
отсутствия жёстко-заданной СУБД - бесконечная гибкость.

------------------------------------------------------------------------

7. M - это РСУБД?

Т.н. СУБД-часть в М - это его особенность, названная другими словами -
постоянные разрежённые массивы, которые можно индексировать строками, с
соразмерным количеством уровней, и коие сохраняются по завершении
работы программы, преимущественно на жёстких дисках.
Это сравнимо с методами последовательного индексированного доступа в
других языках(ISAM), но более мощно и сразу встроено в язык. М - это НЕ
реляционная СУБД, хотя М может работать как РСУБД.
    В рамках РСУБД сложно осуществить отношения "многие-ко-многим", они
также вынуждают хранить массу избыточной информации, например, поля,
коие чаще пусты, чем заполнены (btw, это, заодно, влияет и на
производительность системы). Кроме того, в М отсутствуют характерные
для РСУБД трудности с удалёнными данными, сжатие коих необходимо делать
явно или скрытно.
    Иерархические массивы с редкими узлами идеально ложатся на M.
М-стандарт включает в себя встроенную поддержку SQL.

------------------------------------------------------------------------

8. М - компилируется или интерпретируется?

М был разработан как интерпретатор. Полноценная компиляция М-программ в
машинный код невозможна или неэффективна из-за особенностей М:
- существует возможность брать М-код во время выполнения прямо из
данных. Поэтому во время выполнения всё равно нужен интерпретатор;
- та же ситуация и с метками и переменными: их разыменование возможно и
на этапе выполнения-следствие позденего связывания. Поэтому все метки и
имена переменных должны быть доступны;
- в язык встроено средство доступа к исходному тексту программы, так
что желательно иметь весь исходный текст или хотя бы его нужную часть.
    В жизни, большинство М-систем-предкомпилирующие в пи-код,
повышающий эффективность выполнения программ.

"Причиной использования пи-кода вместо попытки создать машинный код,
является эффективность использования памяти - М имеет заслуженную
репутацию низкой требовательности к железу, такому как ОЗУ. Также, это
связано с тем, что обычно люди делают в М [и не только-;]. Если Вы
попробуете отследить работу М-приложения, Вы увидите, что большую часть
времени занимают вещи, компиляция коих под ассемблером ничего не даст
(они работают с глобалями, делают ввод/вывод, и др.). Также, с хорошей
реализацией М на С, я могу перейти на новую UNIX-платформу за день или
где-то около этого (и это же займёт несколько недель, если мы попробуем
соптимизировать с помощью ассемблера большинство типовых действий -
которые я проделывал для большинства сегодняшних архитектур (Intel,
Alpha, Mips, RS/6000-PowerPC, Motorola 68K, Motorola 88K, and Sparc).
Это просто невозможно для разработок, реально скомпилированных в
машинный код. (Поглядите на задержки с переносом VC++ 2.0 на
не-Интелевые архитектуры). И в заключение, с помощью пи-кода (мы
называем его м-код), вы можете разделять скомпилированные программы
среди всех платформ (как это делаем мы с нашим M/SQL)."

      [Scott P. Jones, scott@INTERSYS.COM]

От себя добавлю, что успех Java и, конечно, VB, не в последнюю очередь
связан с тем, что это - интерпретаторы, т.е. для их реального
выполнения достаточно самой простой виртуальной пи-машины.

Исследования показывают, что в типовых задачах затраченное время
распределяется примерно так:

        25 % - интерпретатор-компилятор
        25 % - работа с переменными
        50 % - выполенение ввода-вывода.

------------------------------------------------------------------------

9. Раз М интерпретатор,значит я не могу защитить программы от копирования?

Нет, можете. Существует 2 пути:
1) если Вы поставляете законченную систему - Вы можете прикрыть точки
входа в систему в т.н. "режиме программиста".
2) можно сохранить только пи-код программы без исходного текста. Если не
используются ссылки к тексту программы, программа будет работать без
изменений в любом случае. Существует также варианты этого способа,
сохраняющие при этом комментарии и т.п. для обеспечения возможности работы
с текстом программы.

------------------------------------------------------------------------

10. Насколько быстр M?

При сравнению с Ораклом М приблизительно в шесть раз быстрее.
Digital Standard MUMPS непрерывно устанавливает рекорды
производительности транзакций.
По сравнению с другими языками, наподобие Basic'a, COBOL'a, Fortrana'a,
приводятся оценки, что М где-то в пять раз быстрее  и программы на нём
пишутся раза в три быстрее. Если базы маленькие - выигрыш меньше -
где-то раза в два. Но с увеличением тактовой частоты процессоров, разрыв
увеличивается.8-)
По сравнению с семейстовом DBf-FOX, и др. М без инструментария несколько
проигрывает в скорости разработки, при наличии инструментария -
совершенно без разницы, зато М выигрывает в скорости при:
1) если число пользователей базы >1
2) если величина базы >1 Mбайта
(данные приблизительны и без расчёта на подгонку программ)

------------------------------------------------------------------------

11. Есть ли в М поддержка Microsoft Windows и других GUI'ёв?

В 1994 г. М-стандарт был расширен т.н. оконным интерфейсом М (MWAPI).

Уникалной особенностью MWAPI является то, что он не состоит из набора
вызовов подпрограмм (за небольшим исключением). В большинстве случаев
он состоит из выполнения операций присваивания и удаления над
"стурктурированными системными переменными", выглядящими как обычные
глобали М, например, дял выода заголовка окна "Демка М-технологии":

     s ^$WINDOW("main","TITLE")="M Technology Demonstration"

для придания окну размера 300 на 200, надо написать:

     s ^$WINDOW("main","SIZE")="300,200"

ВАСИКОВЫЙ ПОДХОД

InterSystem'овский "Visual M" - это набор средств, связывающих М с MS
VisualBasic, создающих двойную среду. М-код доступен и редкатируется из
VB-оболочки, М-коду доступны управляющие элементы VB и он может
управлять событиями VB.

У Micronetics тоже есть продукт подобного класса, но он целиком основан
на М и MWAPI.

МНЕМОНИЧЕСКИЙ ПОДХОД

InterSystem'овский "DT-Windows," MGlobal'овский MGM-PC (для MS-Windows)
и MGM-Mac (для Macintosh) используют особенность М-стандарта, которая
позволяет языку расширяться в интересах устройств за счёт особых
синтаксических единиц-"write /" aka мнемоник. И в DT-Windows и в MGM,
оконная подсистема трактуется как "устройство" с необычно богатым
набором команд. Хотя  они концептуально и не разнятся, они не
совместимы друг с другом. Почему они не обеспечивают стандартного
подхода? потому что были разработаны ещё до принятия стандарта MWAPI.
Почему они ещё живы? потому что, будучи теснее привязаны к деталям
нижележащих оконных платформ, нежели MWAPI, они обеспечивают лучшую
производительность и шире доступ к возможностям GUI-системы.
Примеры:

    DT-Windows
        w /waddbutton(2,65,40,10,20,1,1,1,0,0,0,"OK",1)

    MGM
        W /DBUTTON("OK",2,9)

ЁЩЕ ОДИН ВАРИАНТ

Его предлагают CyberTools и Micronetics. Основываясь на TCP/IP, они
предлагают в чём-то похожие системы. Первые предлагают использовать
инструментарий собственой разработки: CyberM для CHUI, надстройку над
ним для GUI-CyberX либо CyberWin. Последний для достижения гуёвости
использует особый dll, запускаемый на рабочем месте. Вместо него может
выступать любой другой dll/exe, коий будет понимать обмен по протоколу
CyberM.
У вторых подход почти аналогичен: предлагается использовать М-систему
на рабочем месте, свёрнутую в exe-шник. Обмен предлагается вести по
TCP/IP например по RVG-протоколу.

------------------------------------------------------------------------

12. Какое название правильней - M или MUMPS?

Для англоязычных это критично, потому что второе в переводе звучит как
"свинка".;-) Для многих людей это сразу переводило M в разряд "какой-то
медицинской системы", что мешало развиваться технологии. С этой целью
было введено новое название - М[-технология]. С логикой тут всё в
порядке. Просто сократили до первой буквы-как и все команды языка.;)
Надеюсь никто из нас не пишет Kill вместо K?8-D

------------------------------------------------------------------------

13. Используется ли М помимо медицины?

Хотя он является порождением медицинской среды, в языке нет ничего
особого для применения в медицине. Существуют не-медицинские
приложения, написанные на М, и никто не мешает и Вам использовать его.
По сведениям Gartner Group,"банковская система, основанная на М,
используется несколькими из 200 крупнйеших американских банков. А
также, Lloyds of London, Barclays, and Bank of Bermuda. М используется
в связи, на транспорте, адвокатами, Администрацией по делам
ветеранов[американской, не нашей;], каналом Discovery, Кока-колой (да
здравствует она-пепси-sux & +( ;), Швепс и многими другими", а также
банками Менатеп, Альфа-банк, Сбербанком, Ноябрьскнефтегазом, во многих
местах на железной дороге, в системе снабжения МВД РФ, в гостиничном
хозяйстве, в производстве алкоголных и безалкогольных напитков и т.д.

------------------------------------------------------------------------

14. Является М объектно-ориентированным?

Нет! Существет рабочая группа внутри MDC, активно прорабатывающая этот
вопрос. Существует компания, ESI, предлагающая систему разработки,
позволяющую полностью объектно-ориентированное программирование на М.
Однако М имеет много характеристик ООП: динамическое использование
памяти, позднее связывание, инкапсуляция, модульность, атомарность.
Появилась версия OpenM, обладающая объектно-ориентированными
свойствами: Cache'.

------------------------------------------------------------------------

15. М - структурированный язык?

Да, нет, может быть, частично. Синтаксис языка не для чистоплюев.

Если есть желание писать в структурированном виде:
- необходимые средства для этого присутствуют;
- сам язык к этому ни поощряет, ни препятствует.

------------------------------------------------------------------------

16. Подходит ли М для многопользовательских систем?

Да! Важной особенностью М является то, что в языке изначально заложено
это свойство, что облегчает написание приложений с рапределённой
обработкой. Существует даже особая команда для порождения независимого
дочернего процесса, несколько напоминающая fork в UNIX'е, а также
механизмы (! их несколько) блокировок и межзадачной связи. Это будет
работать даже в МаСаДОСе.:)

------------------------------------------------------------------------

17. Работает ли М в сети?

Да. Первый способ разработки можно назвать "удалённый доступ к
глобалям". Глобали, расположенные не на местной машине, могут быть
доступны с помощью т.н. "расширенного синтаксиса". С точки зрения
программиста методы доступа к области данных чужого местного
пользователя и удалённого, одинаковы. Существует даже механизм
прозрачной переадресации обращений к нужным глобалям.
Существует гарантироанный стандартный протокол обмена M-систем:
"Open MUMPS Interconnect". Большинство поставщиков также поддерживает
и свои протоколы, обеспечивающие большую эффективность работы
(например, RVG/MSM).  Наиболее распространённым из них является
DDP-"распределённая обработка данных". Поддерживается работа с NDIS,
ODI, packet, прямое программирование адаптеров, более высокоуровневые
протоклы: TCP/IP, NetBIOS/NetBEUI, RPC.  Для работы с РСУБД
поддерживются SQL и ODBC.

------------------------------------------------------------------------

18. Является ли М стандартом?

1977: accepted as an ANSI standard, ANSI/MDC X11.1

1984: revised ANSI standard ANSI/MDC X11.1-1984

1986: approved as a Federal Information Processing Standard (FIPS)

1990: revised ANSI standard ANSI/MDC X11.1-1990

1992: accepted as an international standard, ISO/IEC 11756-1992

1993: revised FIPS 125-1

1994: revised standard currently in ANSI canvass procedure for approval as
ANSI/MDC X11.1-1994 (or maybe 1995) and distributed for comments in ISO as
ISO/IEC 11756-1995.

------------------------------------------------------------------------

19. Переносим ли М?

Как стандарт, М переносим практически на ВСЕ существующие машинные и
операционные платформы, исключая, наверно, только ZX-Spectrum.
Как ни странно, М более переносим, чем С.

М доступен по крайней мере на следующих платформах:

      MSDOS v2.0+ (single-user or multi-user)
     Unix - Altos, AT&T 3B2, Bull XPS and DPX/2, Control Data 4000,
             Data General AViiON, Digital Equipment VAX/Alpha,
             Hewlett Packard 9000, IBM RS/6000, ICL DRS 6000,
             Motorola Delta, Phillips P9000, MIPS, Nixdorf Targon 31,
             NCR Tower, Pyramid, Sequent, Siemens, Sun,
             Texas Instruments 1500, Unisys 5000 and 6000
             Intel-based: SCO, Linux-iBCS либо DOSemu
     Apple Macintosh OS
     VMS - Digital Equipment VAX/Alpha
     VM - IBM mainframe
     Netware
     Windows 3.1,'95
     Windows NT

------------------------------------------------------------------------

20. Как М выглядит по сравнению с SQL?

М - это полный процедурный язык программирования общего применения.
SQL - это описательный язык ТОЛЬКО для запросов к РСУБД и поэтому
требует дополнительные процедурные средства, чтобы достигнуть полноты.

М обращается с базами на нижнем уровне наподобие ISAM,
SQL работает на уровне отношений, более высоком уровне абстракции.

------------------------------------------------------------------------

21. Как М выглядит по сравнению с ВАСИКОМ?

Оба - процедурные интерпретаторы, имеют строчно-ориентированный,
глагольный синтаксис. Но М имеет дополнительные особенности: лучшие
возможности по обработке строк, многомерные строковые индексы массивов,
сохраняемые переменные, многозадачку. Он предлагает большую
стандартизацию и переносимость. Фактически, выбирая ВАСИК, Вы выбираете
MS. В мире MUMPS-систем у Вас есть выбор.

------------------------------------------------------------------------

22. Как быстро на М можно писать программы? По сравнению с другими языками?

Характерной особенностью языка является скорость написания приложений,
для примера: программисты DEC, пишущие на М выдают, в среднем, одну
программу в день.  В других подразделениях DEC программисты выдают
примерно по одной программе в неделю.
Попробуйте глянуть http://www.spr.com/library/langtbl.htm.  Там
содержится таблица сравнения языков по принципу кол-ва усилий,
затрачиваемых на единицу функциональности. М смотрится очень хорошо.

------------------------------------------------------------------------

23. Есть ли основанные на М 4GL-системы и генераторы приложений?

DASL. Она (библиотека) позволяет строить базу, определяя пункты данных
и в диалоговом режиме разрабатывая  экранные формы. Работает под
VMS/UNIX.

Также перечисляем средства разработки приложений:

    InterSystems Open M/SQL.
    Micronetics ViEW, DisplayManagementSystem, WS.
    Hoskyns MDM.
    Cybertools CyberM+CyberWin+CyberX+CyberJava.
    Veterans Administration Kernel (public-domain).
    SKIT/DIMAS для OpenM aka DTM.
    GUI-Designer/ARM для MSM.
    MIOS.
    IOS.
    %BS.

------------------------------------------------------------------------

24. Есть ли BBS, ftp/www/эхи, посвящённые М?

1)
(812)2187019 10:00-19:00 +0 MSK
(095)482-3849 22:00-08:00 +0 MSK WCM

e-mail'ы VAR'ов и распространителей:

postmaster@aparm.spb.su СП "АРМ"
root@escape.msk.ru "ЭСКЕЙП/M"
company@kometa.voronezh.su НРФ "КОМЕТА"
vadim@dimas.khabarovsk.su "ДИМАС"
postmaster@tekosm.msk.su НИЦ "ПЭУ"
postmaster@intsys.dol.ru Представительство Intersystems в России

2)
ftp://vets.vetmed.missouri.edu/mumps  FTP site for miscellaneous M files
ftp://ftp.esitechnology.com
ftp://cip.nsk.su/mumps
3)
www.mtechnology.org   M-Technology Association
www.escape.ru         "Эскейп/M"
www.sparm.com         СП "АРМ"
www.aha.ru/~can       HyperM
www.mnetx.com         Micronetics Design Corp.
www.micronetics.com     -//-//-//-
www.atlasdev.com      Atlas Development
www.geocities.com/SillicoValley/7041  Chris Bonnici's M Home Page
www.intersys.com      InterSystems Corp.
www.intersystems.ru   -//-//-//-
www.vmth.ucdavis.edu/M/mhttp.htm  Jim Self's MHTTP Server

www.lib.ok.ac.uk/internet/news/faq/archive/m-technology-faq.part1.html
          M Faq Archive

www.mcenter.com/mtrc      M Technology Resource Center
world.std.com/~demoel/mdc     Mumps Development Committee
members.aol.com/mta1994/mta.htm    M Technology Association
www.mindspring.com/~mga       Mumps of Georgia Users Group
www.seasystems.com     Sea Change Systems
www.cytools.com        Cybertools
www.kbsystems.com      KB Systems
www.mindspring.com/~mga/corp-01.html#ESI
          ESI Technology
members.aol.com/mta1994/public.htm Books on M Technology
www.mtauki.co.uk/mtapubl.htm   Books on M Technology from MTA-UK&I
escher.cs.ucdavis.edu:1024/classnotes/ecs15/ecs15.html
          UC Davis classnotes on MUMPS
members.aol.com/mta1994/softwar.htm   M Technology Software
www.mtauki.co.uk/mtasoftw.htm     M Technology Software from MTA-UK&I
www.va.gov/dhcp/cdrom/software.htm MUMPS programs on the VA server
www.va.gov/vama.htm#DHCP   Department of Veterans Affairs
www.cs.uni.edu/~okane      Kevin C. O'Kane
4)
FIDO:     ru.mumps, модерируемая Антоном Парфёновым (2:5020/218)
Internet: comp.lang.mumps, немодерируемая
          comp.std.mumps

------------------------------------------------------------------------

25. Что случилось в 1841 году?

В языке М, текущяя дата/время содержится в особой переменной, $Horolog.
Она представляет собой пару целых чисел, разделённых запятой. Первое
число - это кол-во дней после 31 декабря 1840 г.
Но почему 1841?
Дж.М.Пуатре рассказывет: "начав в 1969, наша группа создавала
приложения для Химической Лаборатории Массачузетского Главного
Госпиталя,...когда мы начинали, не было никаких утилей. Нам нужно было
всё это писать самим...когда я раздумывал об формате даты, я вспомнил
сообщение о старейшем жителе США, коему было 121 год. Так как я решил
представлять даты в Юлианском формате,... я решил, что 1840 год будет
безопасен в этом смысле. Для удобства вычисления високосных лет я и
решил взять 1841 за основу."

------------------------------------------------------------------------

26. Как посмотреть глобали в незнакомой М-системе?

Хотя язык М и стандартизован, операционное окружение - нет.
Посему пользуйтесь любезностью Gardner'а Trask'а:

Function              MSM          DSM        MVX/MSQL     DTM
----------------------------------------------------------
Utility Menu          %UTL         %UTL       UTIL         zzu
Routine Directory     %RD/%ROU     %RD/%RDX   %RD/%RDISP   %rd
Routine Print         %RP          %RS/%ZTPP  %RO/ZP       %rsave
Routine Change        %RCHANGE     %RCE       %RCHANGE     %rsearch
Routine COmpare       %RCMP        %RCMP      %RCMP        %rloadcompare
Global Directory      %GD/%GLO     %GD        %GD/%GDISP   %gd
Global List           %GL          %G         %G           %g
Global Edit           %GEDIT       %GEDT      %GED         %gedit
Global Change         %GCHANGE     %ZGE       %GCHANGE     %gedit
Global Transfer       %GCOPY       %GC        %GOQ/%GIQ
*-%G также присутствует в большинстве MSM-систем на просторах СНГ.

------------------------------------------------------------------------

27. Влияют ли комментарии на производительность?

Scott Jones: "Двойные точка с запятой помещаются прямо в пи-код, так
что выгодно иметь отдельную метку для каждого раздела данных, поскольку
они не являются частью процесса исполнения.
    Обычные комментарии, если они находятся на конце строки с
кодом, абсолютно не влияют на производительность.
В случае же когда комментарий - это всё, что есть на строке, на ней всё
равно выполняется ключевое слово начала строки, что может
быть расточительно, осебенно в часто исполняемых циклах. Причиной этого
служит то, что при обработке кода начала строки, передаётся управление
другим процессам..." или ведётся проверка системных процессов,...и др.
также рекомендуется "использовать макропрепроцессор и помещать
комментарий в #if 0...#endif...либо не начинать выполенение программы с
1 строки, а с точки входа(i.e. DO entry^foobar вместо DO ^foobar)".

От себя добавлю, что, судя по структуре пи-кода, в MSM положение
аналогично вышеизложенному. [Scott работал в InterSystems]

------------------------------------------------------------------------

28. Какие бывают версии М? Где его можно взять?

UCDMicroMUMPS     PC, "общественное достояние".
TurboMicroMUMPS   PC
DSM-11 aka ДИАМС  ВЕРСИЯ ДЛЯ PDP-11.StandAlone!:*)
GUM               GNU license

DSM(просто DSM:)  VAX/VMS, и др. DEC'овское
MSM               UNIX,IBM/MF,MS DOS/Windows,MS WindowsNT,VMS,Mac
DTM               MS DOS/Windows
OpenM             Windows95/NT
ISM               UNIX,MS WindowsNT,VMS
M.Globals         UNIX,MS DOS/Windows,Mac
WebMumps          OS/2

root@escape.msk.ru "ЭСКЕЙП" MSM
postmaster@aparm.spb.su СП "АРМ" MSM
company@kometa.voronezh.su НРФ "КОМЕТА" MSM
vadim@dimas.khabarovsk.su "ДИМАС" ISM,DTM,OpenM
postmaster@tekosm.msk.su НИЦ "ПЭУ" ISM,DTM,OpenM
 ИЧП "ГЕО" (095)472-1582 OpenM
postmaster@intsys.dol.ru ISM,DTM,OpenM

------------------------------------------------------------------------

29. Является ли М открытой системой?

Да, посколько он обладает всеми 3 свойствами открытых систем:

1) переносимостью
2) развитыми интерфейсами
3) стандартностью.

Кроме того, он имеет все свойства стандарта обработки транзакций:
1) атомарность
2) последовательность
3) изоляция
4) надёжность

------------------------------------------------------------------------

30. Есть ли в М средства для работы с Интернетом?

Да, есть:
Micronetics PDQWeb
Intersystem OpenM WebLink
CyberM for Java
WEBMUMPS for OS/2

------------------------------------------------------------------------

Приложение 1: Путеводитель по языку для программистов, незнакомых с ним.

ТИПЫ ДАННЫХ: один, индексируемые строки переменной длины, при
необходимости преобразуемые в строку символов, целое, плавающее,
логическое (автоматически).

ЛОГИЧЕСКИЕ ЗНАЧЕНИЯ: Любое ненулевое значение трактуется как Истина.
Т.е., если a<b, то будет выдано 1 если это так и 0 - если наоборот.

ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ: Отсутствует. Динамически создаётся при первой
ссылке.

СТРОКИ: важная синтаксическая единица. Допускается много команд на
строке. Циклы и условия работают до конца остатка строки.

РЕГИСТР СЛОВ: Команды и функции - нечувствительны. Метки и переменные -
зависят.

ПОСЛЕУСЛОВИЕ: Обеспечивает дополнительное условие на конкретную команду.

МАССИВЫ: Создаются динамически в виде разреженных B-деревьев. Индексы -
любые. Всегда сохраняются отсортированными.

ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ: Имена, не начинающиеся с кепки. Хранятся в ОЗУ и
принадлежат только одному процессу.

ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ: Сохраняются на дисках и т.п. Существуют постоянно.
Основной механизм работы базы данных. Доступны всем процессам, имеющие
соответствующие права.

РАЗЫМЕНОВАНИЕ И КОСВЕННОСТЬ: Подставляет необходимое значение, используя
текущее как ссылку.

ФУНКЦИЯ PIECE: Трактует переменные разбитыми на поля разделителем.

Секция 1 из 2 - Предыдущая - Следующая

Вернуться в раздел "Работа с базами данных" - Обсудить эту статью на Форуме
Главная - Поиск по сайту - О проекте - Форум - Обратная связь

© faqs.org.ru