Назад в раздел
RU.MUMPS FAQ.
eManual.ru - электронная документация
Секция 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,?$x8+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-деревьев. Индексы -
любые. Всегда сохраняются отсортированными.
ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ: Имена, не начинающиеся с кепки. Хранятся в ОЗУ и
Секция 1 из 2 - Предыдущая - Следующая
|
|
|
|