Главная > Программирование > Работа с базами данных > |
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 - Предыдущая - Следующая
Вернуться в раздел "Работа с базами данных" - Обсудить эту статью на Форуме |
Главная - Поиск по сайту - О проекте - Форум - Обратная связь |