유행성 이하선염
MUMPS패러다임 | 필수, 절차 |
---|---|
설계자 | 닐 파팔라르도 |
처음 등장한 | 전 |
안정된 릴리스 | ANSI X11.1-1995 / 1995년 12월 8일 ( |
타이핑 분야 | 타입리스 |
OS | 크로스 플랫폼 |
영향을 받다 | |
JOSS | |
영향받은 | |
PSL, Caché ObjectScript |
MUMP(Massachusetts General Hospital Utility Multi-Programming System)는 통합 프로그래밍 언어를 사용하는 고성능 트랜잭션 처리 키-값 데이터베이스입니다.원래는 병원 실험실 정보 시스템을 관리하기 위해 매사추세츠 종합병원에서 개발되었습니다.
이후 MUMP 기술은 미국에서 건강 정보 시스템과 전자 건강 기록을 위한 주요 데이터베이스로 확장되었습니다.MUMP 기반 정보 시스템은 미국 내 병원의 40% 이상을 운영하고 있으며, 미국 연방 병원 및 클리닉을 모두 운영하고 있으며,[1] 미국 전역의 54% 이상의 환자에게 건강 정보 서비스를 제공합니다.
MUMP 테크놀로지의 독특한 기능은 내장 데이터베이스 언어입니다.이것에 의해, [2]영속적인 디스크 스토리지에의 직접 고속의 판독/쓰기 액세스가 가능하게 됩니다.이를 통해 단일 데이터베이스 내에서 무제한 애플리케이션을 긴밀하게 통합할 수 있으며 온라인 트랜잭션 처리 시스템으로서 매우 높은 성능과 신뢰성을 제공합니다.
역사
창세기
MUMP는 Neil Pappalardo, Robert Greenes, Curt Marble에 의해 개발되었습니다.1966년과 1967년 보스턴의 매사추세츠 종합병원(MGH)에 있는 옥토 바넷의 연구실.이후 DEC의 기술 리더인 Dennis "Dan" Brevik과 Paul[3] Stylos에 의해 1970년과 1971년에 다시 쓰여졌다.
최초의 MUMP 시스템은 몇 년 후 Unix와 마찬가지로 DEC PDP-7을 기반으로 구축되었습니다.Octo Barnett과 Neil Pappalardo는 병원 정보 시스템에 대한 MGH의 계획에 관여했고, 역호환 PDP-9을 획득했으며, 입학 주기 및 실험실 검사 보고에서 MUMP를 사용하기 시작했다.당시 MUMP는 해석된 언어였지만, 데이터와의 상호작용을 표준화하고 디스크 조작을 추상화하기 위해 계층형 데이터베이스 파일 시스템을 통합했기 때문에 MUMP 언어 자체만으로 처리되었습니다.
MUMP의 일부 측면은 RAND Corporation의 JOSS에서 BBN의 TELCOMP 및 STRINGCOMP를 통해 추적할 수 있습니다. MUMP 팀은 설계 목표로 기계 간의 휴대성을 포함하기로 결정했습니다.
그 시대의 운영 체제나 컴퓨터 하드웨어에서는 널리 지원되지 않는 MUMP 언어의 고급 기능은 멀티태스킹이었습니다.Multics와 같은 시스템에서는 메인프레임 컴퓨터의 시분할이 점차 보편화되었지만, 대부분의 미니 컴퓨터는 병렬 프로그램을 실행하지 않았고 스레드화는 전혀 사용할 수 없었습니다.메인프레임에서도 프로그램이 실행되어 완료되는 배치 처리의 변형은 멀티프로그래밍 운영체제의 가장 일반적인 구현이었습니다.
유닉스가 개발되기까지는 몇 년이 걸렸다.메모리 관리 하드웨어의 부족은 모든 멀티 프로세싱에 메모리 포인터가 다른 프로세스를 변경할 가능성이 있다는 것을 의미하기도 합니다.MUMP 프로그램에는 C 언어와 달리 메모리를 직접 참조하는 표준 방법이 전혀 없기 때문에 멀티태스킹은 언어로 작성된 프로그램이 아닌 언어로 실행되었기 때문에 다른 시스템에 존재하는 위험을 감수할 수 없었습니다.
Dan[4] Brevik의 DEC MUMP-15 시스템은 DEC PDP-15에 적용되어 한동안 존재했다.1971년 [5]5월 덴버의 Health Data Management Systems에 처음 설치되었습니다.휴대성이 우수하다는 것을 증명하고, MUMP는 정부 연구 보조금이 주어졌고, 그래서 보조금의 요건인 MUMP가 공공 도메인에 공개되었다.MUMP는 곧 인기 있는 DEC PDP-8, Data General Nova 및 DEC PDP-11 및 Artronix PC12 미니컴퓨터를 포함한 많은 다른 시스템으로 이식되었습니다.유행성 이하선염에 대한 말은 대부분 의료계를 통해 퍼졌고, 널리 사용되었으며, 종종 그들 자신의 필요에 따라 국지적으로 수정되었다.
1970년대 초반에는 다양한 하드웨어 플랫폼에서 MUMP가 구현되었습니다.또 다른 주목할 만한 플랫폼은 PDP-11의 Paul Stylos의 [6]DEC MUMP-11과 MEDITECH의 MIIS입니다.1972년 가을, 많은 MUMP 사용자들이 보스턴에서 열린 회의에 참석하여 당시 언어를 표준화하고 이를 위해 MUMP 사용자 그룹과 MUMP 개발 위원회(MDC)를 만들었다.이러한 노력은 성공적이었다. 1974년까지 표준이 완성되었고 1977년 9월 15일 ANSI 표준으로 X11.1-1977로 승인되었다.거의 동시에 DEC는 PDP-11용 DSM-11(Digital Standard MUMP)을 출시했습니다.이것은 급속히 시장을 지배해, 당시의 레퍼런스 실장이 되었습니다.또한 InterSystems는 PDP-11용 ISM-11(DSM-11과 동일)을 판매했습니다.
1980년대
1980년대 초반에는 여러 벤더가 ANSI 표준을 충족하는 MUMP 기반 플랫폼을 시장에 출시했습니다.가장 중요한 것은 다음과 같습니다.
- Digital Equipment Corporation with DSM(Digital Standard MUMPs). DSM-11은 VMS 운영체제용 VAX-11 DSM으로[7] 대체되었으며, OpenVMS용 DSM과 Ultrix용 DSM의 2가지 변종으로 Alpha에 이식되었습니다.
- VMS(M/VX), PDP-11 플랫폼의 M/11+, MS-DOS의 M/PC, Data General의 M/DG, IBM VM/CMS의 M/VM 및 다양한 Unix의 M/UX를 포함하는 InterSystems(InterSystems M), M/11+.
다른 회사는 중요한 MUMP 구현을 개발했습니다.
- GT.M이라는 컴파일 버전을 가진 그레이스톤 테크놀로지 코퍼레이션.
- DTM이라는 인텔 PC 기반 제품을 탑재한 DataTree Inc.
- MSM for UNIX 및 Intel PC 플랫폼(나중에 IBM의 VM 운영 체제, VAX/VMS 플랫폼 및 OpenVMS Alpha 플랫폼으로 이식됨)을 제공하는 Micronetics Design Corporation.
- Computer Consultants(나중에 MGlobal로 개명)는 처음에 6800년에 CCSM을 만들고, 그 후 6809년에 68000에 포트를 구축하여 Mac OS 기반 제품인 Mac MUMPS가 되었습니다.그들은 또한 MGM MUMP의 실장에도 힘썼다.또한 MGlobal은 구현을 DOS 플랫폼으로 이식했습니다.MGlobal MUMPs는 IBM PC용 최초의 상용 MUMP이며 클래식 Mac OS용 유일한 구현체입니다.
- Tandem Computers는 폴트 톨러런스 컴퓨터를 [8]위한 구현을 개발했습니다.
- IBM은 VM/370 [9]위에서 가상 머신으로 실행되는 MUMP/VM이라는 이름의 MUMP 구현을 잠시 판매했습니다.
이 기간에는 MDC 활동도 상당했습니다.MUMP에 대한 ANSI 표준의 두 번째 개정판(X11.1-1984)은 1984년 11월 15일에 승인되었습니다.
1990년대
- 1990년 11월 11일, ANSI 표준의 제3차 개정판(X11.1-1990)이 승인되었습니다.
- 1992년에는 ISO 표준 11756-1992에도 동일한 표준이 채택되었다.M을 언어의 대체 명칭으로 사용하는 것은 비슷한 시기에 승인되었습니다.
- 1995년 12월 8일, 표준의 네 번째 개정판(X11.1-1995)은 ANSI에 의해 승인되었고, 1999년 ISO에 의해 ISO 11756:1999로 승인되었으며, ANSI에 의해서도 발행되었다.MDC는 1998년에 표준에 대한 추가 개정을 확정했지만, 이는 승인을 위해 ANSI에 제출되지 않았다.
- 인터시스템즈의 Windows NT용 Open M과 더불어 Digital Unix용 Open M과 OpenVMS(64비트 Alpha 프로세서를 위한 첫 64비트 구현)가 출시되었습니다.
- 1997년에 Unicode 지원이 InterSystems의 Caché 3.0에 추가되었습니다.
2000년대
- 2000년까지 미들웨어 벤더인 InterSystems는 다른 여러 벤더를 인수하여 MUMP 시장에서 지배적인 기업이 되었습니다.처음에 그들은 1990년대 초에 DataTree Inc.를 인수했다.1995년 12월 30일 InterSystems는 [10]DEC로부터 DSM 제품 라인을 인수했습니다.InterSystems는 이들 제품을 하나의 제품 라인으로 통합하여 여러 하드웨어 플랫폼에서 OpenM으로 브랜딩했습니다.1997년 인터시스템즈는 Caché라는 이름의 신제품을 출시했다.이는 ISM 제품을 기반으로 했지만 다른 구현의 영향을 받았습니다.Micronetics Design Corporation 자산도 1998년 6월 21일 InterSystems에 인수되었습니다.InterSystems는 다양한 운영체제용 애플리케이션을 작성하는 MUMP 개발자에게 Caché를 판매하여 여전히 지배적인 MUMP 벤더입니다.
- Graystone Technology Corporation의 GT.M 구현은 1990년대 중반에 Sanchez Computer Associates(현 FIS의 일부)에 매각되었습니다.2000년 11월 7일 산체스는 GT를 만들었다.Linux용 M은 GPL 라이선스로[11] 이용할 수 있으며 2005년 10월 28일에는 OpenVMS용 GT.M과 Tru64 UNIX도 AGPL [12]라이선스로 이용할 수 있게 되었습니다.GT.M은 기존 라이선스로 다른 UNIX 플랫폼에서 계속 사용할 수 있습니다.
- 2000년 동안 Ray Newman과 다른 사람들은 MUMPs의 구현인 MUMPs V1을 출시했습니다(처음에는 FreeB에서).SD)는 DSM-11과 유사합니다.이후 MUMP V1은 Linux, Mac OS X 및 Windows(cygwin [13]사용)로 이식되었습니다.처음에는 x86 CPU에서만 MUMP V1이 Lasberry Pi로 포팅되었습니다.
- 2002년 4월에 출시된 최신 MUMP는 영국 럭비 Real Software Company의 M21이라는 MSM 파생 모델입니다.
- 또한 일부 연구 프로젝트를 포함하여 MUMP의 몇 가지 오픈 소스 구현이 있습니다.그 중 가장 주목할 만한 것은 케빈 오케인 박사(노던 아이오와 대학 명예교수)와 학생들의 프로젝트인 MUMP/II이다.O'Kane 박사는 또한 인터프리터를 Mac OS [14]X로 이식했습니다.
- MUMP 언어의 창시자 중 한 명인 닐 파팔라르도는 MEDITECH라는 회사를 설립했다.그들은 새로운 언어를 MIIS(나중에 MAGIC이라는 또 다른 언어)로 명명하면서 MUMP 언어를 확장하고 구축했다.InterSystems와 달리 MEDITECH는 미들웨어를 판매하지 않기 때문에 MIIS와 MAGIC은 현재 MEDITECH에서 내부적으로만 사용되고 있습니다.
- 2005년 1월 6일 이후 2010년 6월 25일 ISO는 MPLS 관련 표준(ISO/IEC 11756:1999, 언어 표준, ISO/IEC 15851:1999, Open MUMP Interconnect 및 ISO/IEC 15852:1999, MUMP Windowing Application Programmers Interface)을 재확인했습니다.
이름.
이 섹션은 확인을 위해 추가 인용문이 필요합니다. 삭제될 수 있습니다. (2018년 ( 및 ) |
InterSystems는 최고 경영자가 MUMP라는 이름을 싫어하여 마케팅에 심각한 장애가 되고 있다고 느꼈습니다.따라서, M을 선호하는 것은 어느 정도 InterSystems와의 정렬로 확인되었습니다.이 논쟁은 또한 누가 [citation needed]이 언어의 "공식" 이름을 결정하느냐에 대한 조직들(M Technology Association, MUMPs Development Committee, ANSI 및 ISO Standards Committee) 간의 경쟁을 반영했다.
오픈 소스 MUMP 구현의 저자이자 선도적인 권위자인 Kevin O'Kane 교수는 'MUMP'[citation needed]만 사용합니다.
최신 표준(ISO/IEC 11756:1999, 2010년 6월 25일 재확인)에서는 여전히 M과 MUMP를 공식적으로 인정된 [citation needed]이름으로 언급하고 있다.
매사추세츠 종합병원은 1971년 11월 28일 USPTO에 'MUMPS'를 상표로 등록하고 1992년 11월 16일 갱신했으나 2003년 [15]8월 30일 만료됐다.
설계.
![]() |
개요
MUMP는 데이터베이스 애플리케이션을 구축하기 위한 언어입니다.프로그래머가 최소한의 컴퓨팅 리소스를 사용하여 애플리케이션을 만들 수 있도록 보조 언어 기능이 포함되었습니다.현대의 구현은 완전히 또는 부분적으로 편집될 수 있지만, 원래의 구현은 해석되었다.개별 "프로그램"이 메모리 "파티션"에서 실행됩니다.초기 MUMP 메모리 파티션은 2,048바이트로 제한되었습니다.따라서 여러 개의 MUMP 작업이 하드웨어에 존재하는 매우 작은 메모리에 들어갈 수 있기 때문에 리소스가 매우 제한된 하드웨어에서의 멀티프로그래밍에 매우 도움이 되었습니다.다중 사용자 시스템을 제공하는 기능은 또 다른 언어 설계 기능입니다.약어 Multi-Programming(멀티프로그래밍)은 이를 가리킨다.MUMP를 실행하는 초기 머신에서도 여러 작업을 동시에 실행할 수 있었습니다.몇 년 후 미니컴퓨터에서 마이크로컴퓨터로 변화함에 따라, 단일 8비트 CPU와 16,000 또는 64,000의 메모리를 갖춘 "싱글 유저 PC"에서도 여러 명의 사용자를 지원할 수 있게 되었습니다.이러한 사용자는 (비그래픽) 비디오 디스플레이 단자에서 접속할 수 있습니다.
원래 메모리가 부족했기 때문에, MUMP의 언어 디자인은 매우 간결한 코드를 중시했습니다.따라서 모든 MUMP 명령 또는 함수 이름을 1자부터 3자까지 생략할 수 있습니다. 예를 들어 Q로 종료(예: 프로그램 종료), $P = $Piece 함수, R = Read 명령, $TR = $Translate 함수입니다.라인 스코프가 같은 간결한 언어 설계를 촉진하기 때문에 스페이스와 엔드 오브 라인 마커는 MUMP에서 중요합니다.따라서, 한 줄의 프로그램 코드는 적은 문자로 다른 프로그래밍 언어들이 5배에서 10배의 문자를 필요로 하는 아이디어를 표현할 수 있습니다.약어는 이 시기에 설계된 언어(예: FOCAL-69, Tiny BASIC 등 초기 BASIC)의 공통적인 특징이었다.이것의 안타까운 부작용은 미니멀리즘 코드를 작성해야 할 초기 필요성과 맞물려 MUMP 프로그래머들이 일상적으로 코드에 코멘트를 하지 않고 광범위한 약어를 사용했다는 것이다.이것은 심지어 전문 MUMP 프로그래머도 그것의 기능을 보기 위해 코드 페이지를 훑어볼 수 없을 뿐만 아니라 한 줄 한 줄 분석해야 한다는 것을 의미했다.
데이터베이스 상호 작용은 언어에 투과적으로 내장되어 있습니다.MUMP 언어는 영속적인 스파스 배열로 구성된 계층형 데이터베이스를 제공하며, 모든 MUMP 애플리케이션에 대해 암묵적으로 "열린" 상태입니다.캐럿 문자("^")가 앞에 붙는 모든 변수 이름은 RAM 대신 영구적인 스토리지를 사용하며, 응용 프로그램이 종료된 후에도 값이 유지되며 실행 중인 다른 응용 프로그램에서 볼 수 있습니다.이 공유 스토리지와 영구 스토리지를 사용하는 변수를 MUMP에서는 Global이라고 부릅니다. 이러한 변수의 범위는 시스템 상의 모든 작업에서 "글로벌하게 사용 가능"하기 때문입니다.다른 언어에서 "글로벌 변수"라는 이름을 사용하는 보다 최근의 일반적인 방법은 더 제한적인 이름 범위입니다. 이는 동일한 프로세스에서 실행되는 모든 프로그램에서 범위 없는 변수를 "글로벌하게" 사용할 수 있지만 여러 프로세스 간에 공유되지 않기 때문입니다.MUMP 스토리지 모드(즉, 영구 스파스 배열로 저장된 글로벌)는 MUMP 데이터베이스에 문서 지향 [16]데이터베이스의 특성을 제공합니다.
캐럿 문자("^")가 앞에 붙지 않는 모든 변수 이름은 임시적이며 비공개입니다.글로벌 변수와 마찬가지로 계층형 스토리지 모델도 있지만 단일 작업에서 "로컬"로만 사용할 수 있으므로 "로컬"이라고 합니다."글로벌"과 "로컬" 모두 하위 노드(MUMP 용어로는 첨자)를 가질 수 있습니다.서브스크립트는 숫자에 한정되지 않습니다.ASCII 문자 또는 문자 그룹을 서브스크립트 ID로 할 수 있습니다.이것은 Perl이나 JavaScript와 같은 현대 언어에서는 드문 일이 아니지만 1970년대 후반에는 매우 드문 기능이었다.이 기능은 1984년 ANSI 표준 이전에는 MUMP 시스템에서 보편적으로 구현되지 않았습니다. 표준에서 허용하는 것은 [17]규범적으로 숫자 첨자만 필요했기 때문입니다.따라서 'Car'라는 이름의 변수에는 각각 값을 포함할 수 있고 고유한 첨자를 가질 수 있는 "Door", "Steering Wheel" 및 "Engine" 첨자를 가질 수 있습니다.변수 ^Car("Door")는 예를 들어 "Color"라는 중첩된 변수 첨자를 가질 수 있습니다.그래서 이렇게 말할 수 있다.
SET ^Car ("도어", "컬러")="파란색"
^Car의 중첩된 하위 노드를 수정합니다.MUMP 용어로 "Color"는 변수 ^Car의 두 번째 서브스크립트입니다(자노드와 자노드의 이름 자체는 서브스크립트라고 불립니다).계층 변수는 많은 객체 지향 언어의 속성을 가진 객체와 유사합니다.또한 MUMP 언어 설계에서는 변수의 모든 첨자를 자동으로 정렬된 순서로 유지해야 합니다.숫자 첨자(부동소수점 번호 포함)는 가장 낮은 값부터 가장 높은 값까지 저장됩니다.숫자가 아닌 모든 첨자는 숫자 뒤에 알파벳 순서로 저장됩니다.MUMP 용어로 이것은 표준 순서입니다.MUMP 프로그래머는 음이 아닌 정수 첨자만을 사용함으로써 어레이 데이터형을 다른 언어에서 에뮬레이트할 수 있다.MUMP는 기본적으로 필수 스키마 등의 완전한 DBMS 기능을 제공하지 않지만 애플리케이션 개발자에게 플랫 파일, 관계형 및 네트워크 데이터베이스 기능을 제공하는 여러 DBMS 시스템이 그 위에 구축되어 있습니다.
또한 구분된 문자열(예: 쉼표로 구분된 값)을 배열로 처리하는 기본 제공 연산자도 있습니다.초기 MUMP 프로그래머들은 종종 관련 정보의 구조를 구분 문자열로 저장하여 읽힌 후 해석합니다.이것에 의해, 디스크 액세스 시간이 절약되어 일부의 하드웨어에서는 큰 속도의 이점을 얻을 수 있었습니다.
MUMP에는 데이터 유형이 없습니다.숫자는 숫자의 문자열로 취급할 수도 있고 숫자 연산자에 의해 숫자로 취급할 수도 있습니다(MUMP 용어에서는 조합).그러나 강압은 이상한 부작용을 낳을 수 있다.예를 들어, 문자열이 강제로 지정되면 파서는 문자열의 많은 부분(왼쪽부터 시작)을 가능한 한 숫자로 변환하고 나머지는 폐기합니다.그 때문에, 그 스테이트먼트는IF 20<"30 DUCKS"
로 평가된다.TRUE
유행성 이하선염(MUMP)으로.
이 언어의 다른 기능은 다중 사용자 환경에서 MUMP 응용 프로그램이 서로 대화할 수 있도록 하기 위한 것입니다.표준 MUMP 구현에는 데이터베이스 잠금, 프로세스 식별자 및 데이터베이스 업데이트 트랜잭션의 원자성이 모두 필요합니다.
C 또는 Worth의 전통 언어와 달리, MUMP 문 사이에 있는 일부 공백 문자는 중요합니다.하나의 공백으로 명령어와 인수를 구분하고 공백(newline)으로 각 인수를 다음 MUMP 토큰과 구분합니다.인수를 사용하지 않는 명령어(예:ELSE
) 에는 다음 2개의 공간이 필요합니다.이 개념은 하나의 공백이 명령어와 (nonexistent) 인수를 구분하고 다음으로 "argument"를 다음 명령어와 구분하는 것입니다.새로운 라인도 중요합니다.IF
,ELSE
또는FOR
명령어는 다른 모든 것을 끝까지 처리(또는 건너뛰기)합니다.이러한 문장으로 여러 행을 제어하려면DO
명령어를 사용하여 코드 블록을 만듭니다.
Hello, World! 예
MUMP의 간단한 "Hello, World!" 프로그램은 다음과 같습니다.
hello()는 "Hello, World!"라고 쓰고 종료합니다.
다음 명령어를 사용하여 MUMP 명령줄에서 실행됩니다.do ^hello
MUMP를 사용하면 명령어를 같은 행으로 스트링할 수 있고 명령어를 한 글자로 축약할 수 있으므로 이 루틴을 보다 콤팩트하게 만들 수 있습니다.
hello() w "Hello, World!" , q
',!
텍스트 뒤에 새 행이 생성됩니다.
특징들
ANSI X11.1-1995는 언어에 대한 완전하고 공식적인 설명을 제공합니다.이 표준의 주석 버전은 온라인에서 [18]구할 수 있습니다.
언어 기능은 다음과 같습니다.
- 부란스(MUMP에서는 true value라고 부릅니다)
- IF 명령어 및 기타 구문에서 조건으로서 평가된 식이 있는 경우 모든 문자열 값은 수치로 평가되며, 0이 아닌 경우 True로 해석됩니다.
a<b
a가 b보다 작을 경우 1, 그렇지 않을 경우 0이 됩니다.
- 선언
- 없음. 값이 처음 할당될 때 모든 변수가 동적으로 생성됩니다.
- 줄들
- 는 C 또는 Pascal에서 패턴화된 언어에서의 상태와는 달리 중요한 구문적 실체입니다.한 줄에 여러 개의 문이 허용되며 일반적입니다.의 범위IF, ELSE 및 FOR 명령은 "현재 줄의 나머지"입니다.
- 대소문자의 구별
- 명령 및 고유 함수는 대소문자를 구분하지 않습니다.반면 변수 이름과 레이블은 대소문자를 구분합니다.대소문자는 특별한 의미가 없으며 널리 사용되는 관습은 거의 없습니다.백분율 기호(%)는 변수 및 레이블의 첫 번째 문자로 사용할 수 있습니다.
- 사후 조건
- 거의 모든 명령어의 실행을 제어하려면 콜론과 truevalue 식을 사용합니다.
SET:N<10 A="FOO"
N이 10 미만일 경우 A를 "FOO"로 설정합니다.DO:N>100 PRINTERR,
N이 100보다 클 경우 PRINTERR을 실행합니다.이 구성에서는 범위가 풀 라인 미만인 조건을 제공합니다.
- 줄임말
- 거의 모든 명령어와 네이티브 기능을 1자, 2자 또는 3자로 축약할 수 있습니다.
- 예약어
- 없습니다. MUMP는 소스 코드를 컨텍스트별로 해석하기 때문에 예약어가 필요 없습니다.language 명령어 이름을 변수로 사용할 수 있습니다.따라서 다음 코드는 완전히 합법적인 MUMP 코드입니다.
GREPTHIS() 새 세트, 새 세트, 그리고 IF, KILL, 종료 IF="KILL", "SET="11", "KILL="l1", "QUIT="RETURN", "THEN="KILL"을 설정한 후 종료합니다.UIT quit quit ; (완료) 그 후 IF, SET & Kill Set = SET + Kill quit
- 위의 예에서 파생된 이 간단한 예에서 보듯이 축약된 연산자 구문을 사용하여 MUMP를 더욱 난독화할 수 있습니다.
GREPTHIS() N S, N, T, I, K, Q S I="K", S="11", K="l1", Q="R", T="K" I = T D Q:$ Q Q T&S,
- 어레이
- 는 동적으로 작성되어 B-트리로 저장되며, 희소하며(즉, 누락된 노드에 거의 공간을 사용하지 않음), 임의의 수의 첨자를 사용할 수 있으며, 첨자는 문자열 또는 숫자(부동소수점 포함)일 수 있습니다.배열은 항상 정렬된 순서대로 자동으로 저장되므로 데이터베이스를 정렬, 패키징, 재정렬 또는 재구성할 필요가 없습니다.$DATA, $ORDER, $NEXT(비사용) 및 $QUERY 함수 등의 내장 함수는 디스크 또는 메모리 상의 기본 어레이 구조를 효율적으로 검사하고 통과할 수 있습니다.
i=12345 set sqtable(i)=i*i set address("Smith") "Daniel")="[email protected]"
- 로컬 어레이
- 캐럿으로 시작하지 않는 변수 이름(즉, "^")은 프로세스별로 메모리에 저장되며 생성 프로세스에 대해 비공개이며 생성 프로세스가 종료될 때 만료됩니다.사용 가능한 스토리지는 구현에 따라 달라집니다.파티션을 사용하는 구현의 경우 파티션 크기로 제한됩니다(작은 파티션은 32K일 수 있습니다).그 외의 실장에서는, 수메가바이트가 되는 경우가 있습니다.
- 글로벌 어레이
^abc, ^def
. 디스크에 저장되며 모든 프로세스에서 사용할 수 있으며 생성 프로세스가 종료될 때 영구적입니다.대규모 글로벌(예를 들어 수백 기가바이트)은 대부분의 구현에서 실용적이고 효율적입니다.이것은 MUMP의 주요 "데이터베이스" 메커니즘은 다음과 같습니다.운영 체제에서 파일 생성, 쓰기 및 읽기를 호출하는 대신 사용됩니다.
- 인다이렉션
- 많은 맥락에서,
@VBL
는 사용할 수 있으며 VBL의 내용을 다른 MUMP 스테이트먼트에 효과적으로 치환합니다.SET XYZ="ABC" SET @XYZ=123
변수 ABC를 123으로 설정합니다.SET SUBROU="REPORT" DO @SUBROU
는 REPORT라는 이름의 서브루틴을 실행합니다.이 대체는 다른 언어의 "점수"와 효과적으로 동등한 작동뿐만 아니라 느린 평가와 늦은 바인딩을 가능하게 합니다.
- 피스 함수
- 사용자가 지정한 구분 문자열("딜리미터"라고도 함)에 의해 안내되는 변수를 세그먼트화된 조각으로 나눕니다.awk를 아는 사람들은 이것이 친숙하다는 것을 알게 될 것이다.
$PIECE(STRINGVAR,"^",3)
는 "STRINGVAR의 세 번째 캐럿 구분 부분"을 의미합니다.부분 함수는 할당(SET 명령) 타겟으로도 표시될 수 있습니다.
$PIECE("world.std.com",".",2)
산출됩니다.
- 끝나고
SET X="[email protected]"
SET $P(X,"@",1)="office"
($P는 $PIECE에 상당하며 그렇게 기재될 수 있음) X가 "[email protected]"이 되도록 합니다.
- 주문함수
- 이 함수는 입력을 구조체로 처리하고 마지막 첨자를 제외하고 구조가 동일한 다음 인덱스를 찾습니다.입력으로 지정된 값 뒤에 정렬된 값이 반환됩니다(이는 배열 참조를 값의 주소가 아닌 컨텐츠 주소 지정 데이터로 간주합니다).
set stuff(6)="xyz", stuff(10)=26, stuff(15)="
$Order(stuff(""))
산출량,$Order(stuff(6))
산출량,$Order(stuff(8))
산출량,$Order(stuff(10))
산출량,$Order(stuff(15))
산출됩니다.
set i=" set i=$O(stuff(i)의 경우종료:i=" 쓰기!,i,10,strup(i)
- 여기서 argument-less For는 종료되는 Quit에 의해 정지될 때까지 반복됩니다.이 행은 i와 i의 표를 출력합니다.
stuff(i)
6살, 10살, 15살이 되는 거죠
- 데이터베이스를 반복하기 위해 Order 함수는 사용할 다음 키를 반환합니다.
GTM > S n = " " GTM > S n = $order ( ^ swrex ( n ) GTM > S n = $order ( ^ swrex ( n ) GTM > Zwr n = " name : " GTM > S n = $order ( n )
MUMP는 기본 운영 체제(MS-DOS 등)가 지원하지 않는 경우에도 여러 사용자와 프로세스를 동시에 지원합니다.또한 변수에 머신 이름을 지정하는 등 변수의 환경을 지정할 수 있습니다(예:SET ^ "DENVER" A(1000)="Foo"
리모트 머신의 데이터에 액세스 할 수 있습니다.
비판
![]() |
MUMP 구문의 일부 측면은 현대 언어의 일부 측면과 크게 다르며, 이러한 측면은 언어의 버전에 따라 다르지만 혼동을 일으킬 수 있습니다.일부 버전에서는 다음 문장이 끝나므로 식 내에 공백 공간을 사용할 수 없습니다.2 + 3
에러이므로, 기입할 필요가 있습니다.2+3
. 모든 연산자는 동일한 우선순위를 가지며 좌연관적입니다(2+3*10
50)으로 평가합니다."작거나 같음" 및 "작거나 같음" 연산자는 다음과 같습니다.'>
그리고.'<
(즉, 부울 부정 연산자)'
+ 반대 방향의 엄격한 비교 연산자). 단, 일부 버전은 보다 표준적인 사용을 허용한다.<=
그리고.>=
각각 다음과 같다.마침표(.
)는 공백이 아닌 DO 블록의 행을 들여쓰는데 사용됩니다.ELSE 명령어는 내장된 시스템 변수의 값을 검사함으로써 동작하기 때문에 대응하는 IF가 필요하지 않습니다.$test
.
MUMP 범위 규칙은 다른 현대 언어보다 더 관대하다.선언된 로컬 변수는 스택을 사용하여 범위가 지정됩니다.통상 루틴은 콜스택 상에서 그 아래에 있는 루틴의 선언된 로컬을 모두 표시할 수 있습니다.또, 발신자가 새로운 스택레벨을 수동으로 작성하지 않는 한, 루틴은, 콜 하는 루틴이 선언된 로컬을 변경하는 것을 막을 수 없습니다( ).do
보호하는 각 변수의 에일리어스( ) 및 에일리어스( ).. new x,y
)을 클릭합니다.반면 선언되지 않은 변수(선언이 아닌 이를 사용하여 작성된 변수)는 동일한 프로세스에서 실행되는 모든 루틴의 범위 내에 있으며 프로그램이 종료될 때까지 범위 내에 유지됩니다.
MUMP 데이터베이스 참조는 캐럿 프리픽스에서만 내부 변수 참조와 다르기 때문에 데이터베이스를 의도하지 않게 편집하거나 데이터베이스 "테이블"[19]을 삭제하기 쉽습니다.
사용자
미국 퇴역군인부(구 퇴역군인청)는 MUMP 언어를 가장 먼저 채택한 국가 중 하나였다.이들의 개발 작업(및 무료 MUMP 애플리케이션 코드베이스에 대한 후속 기여)은 전 세계 많은 의료 사용자에게 영향을 미쳤다.1995년, 재향군인부의 환자 입원/추적/퇴원 시스템, 분산형 병원 컴퓨터 프로그램(DHCP)은 의학에서의 정보 테크놀로지의 베스트 이용에 관한 컴퓨터 월드 스미스소니언 상을 수상했습니다.2006년 7월 재향군인부(VA)/재향군인보건청(VHA)은 존 F의 애쉬 연구소가 수여하는 혁신상(Innovations in American Government Award)을 수상했습니다. Harvard University의 Kennedy School of Governments and Technology Architecture(VistA)에 DHCP를 확장하는 데 기여.미국의 거의 모든 VA 병원 시스템, 인도 보건 서비스 및 국방부 CHCS 병원 시스템의 주요 부분은 임상 데이터 추적을 위해 MUMP 데이터베이스를 사용한다.
MUMP를 사용하는 다른 의료 IT 기업은 다음과 같습니다.
- 서사시
- 미디어
- GE 헬스케어(구 IDX Systems and Centricity)
- AmeriPath(Quest Diagnostics의 일부)
- 케어 중심
- 모든 스크립트
- 코벤트리 헬스케어
- EMIS 헬스
- Sunquest Information Systems(구 Misys[20] Healthcare).
- 넷스마트
DASA, Quest Diagnostics [21]및 Dynacare와 같은 많은 레퍼런스 연구소는 Antrim Corporation 코드에 의해 작성되거나 Antrim Corporation 코드에 기반한 MUMP 소프트웨어를 사용합니다.Antrim은 2001년에 [22]Misys Healthcare(현 Sunquest Information Systems)에 인수되었습니다.
유행성 이하선염은 또한 재무 어플리케이션에서도 널리 사용된다.MUMP는 금융 부문에서 초기에 팔로워를 얻었고 많은 은행과 신용 조합에서 사용되고 있다.TD Ameritrade 뿐만 아니라 영국은행과 바클레이즈은행에서도 [23][24][25]사용되고 있습니다.
실장
2005년 이후 가장 인기 있는 MUMP 구현은 GT(Greystone Technology MUMPs)입니다.Fidelity National Information Services의 M, Intersystems Corporation의 Caché의 M.유럽우주국은 2010년 5월 13일 가이아 임무를 지원하기 위해 인터시스템즈 카체 데이터베이스를 사용할 것이라고 발표했다.이 임무는 전례 없는 정밀도로 [26]은하수를 지도화하는 것을 목표로 한다.인터시스템즈는 [27]Iris를 위해 Caché를 단계적으로 배제하는 과정에 있다.
그 외의 현재 실장은 다음과 같습니다.
- M21
- YottaDB
- MiniM
- 기준 표준 M
- 프리엠
「 」를 참조해 주세요.
레퍼런스
- ^ "MUMPS systems provide service for 54% of U.S. patients".
- ^ george.james (22 August 2008). "MUMPS: the Internet scale database". Retrieved 26 February 2018.
- ^ "M Technology and MUMPS Language FAQ, Part 1/2". www.faqs.org. Retrieved 2019-12-06.
- ^ "M Technology and MUMPS Language FAQ, Part 1/2". www.faqs.org. Retrieved 2019-12-06.
- ^ "M Technology and MUMPS Language FAQ, Part 1/2". www.faqs.org. Retrieved 2019-12-06.
- ^ "M Technology and MUMPS Language FAQ, Part 1/2". www.faqs.org. Retrieved 2019-12-06.
- ^ VAX-11 DSM Language Reference Manual. Digital Equipment Corporation. 1982. OCLC 29217964.
- ^ "HP NonStop Servers, Software Product Maintenance List, Effective Date: January 2012" (PDF). Hewlett-Packard Development Company, L.P. 2012-01-20. p. 32. Retrieved 2014-05-17.
- ^ "Two versions of MUMPS out". Computerworld. Vol. XXI, no. 48. 1987-11-30. Retrieved 2022-07-09.
- ^ "comp.lang.mumps, on Google Groups". Retrieved 2013-08-12.
- ^ "Sanchez to Explore New Business Opportunities for Its Database Technology". Sanchez Computer Associates, Inc. November 7, 2000. Archived from the original on 28 April 2004. Retrieved 2013-08-12.
{{cite web}}
: CS1 유지보수: 부적합한 URL(링크) - ^ "GT.M High end TP database engine". Sourceforge.net. Retrieved 2013-08-12.
- ^ "MUMPS Database and Language". Sourceforge.net. Retrieved 2013-08-12.
- ^ "Mumps/Mii". Rychannel.com. 2012-11-08. Retrieved 2013-08-12.
- ^ "Trademark Status & Document Retrieval". tsdr.uspto.gov. Retrieved 26 February 2018.
- ^ "Extreme Database programming with MUMPS Globals" (PDF). Gradvs1.mjgateway.com. Retrieved 2013-08-13.
- ^ "The Annotated M[UMPS] Standards". 71.174.62.16. 2011-11-29. Retrieved 2013-08-12.
- ^ "The Annotated M[UMPS] Standards". 71.174.62.16. Retrieved 26 February 2018.
- ^ Richmond, Robin (1984). Maintainability Metrics for MUMPS programs (PhD). The University of Texas Health Science Center at Dallas.
- ^ "SunQuest emerges from Misys' shadow". Healthcare IT News. 13 March 2008. Retrieved 2013-08-12.
- ^ "Mission-critical Ajax: Making Test Ordering Easier and Faster at Qu". Slideshare.net. 5 April 2008. Retrieved 2013-08-12.
- ^ "Sunquest acquires Antrim Corp. - Free Online Library". Thefreelibrary.com. 1996-11-26. Retrieved 2013-08-12.
- ^ "Welcome to M21 -- the database for the 21st Century". M21.uk.com. Retrieved 2013-08-13.
- ^ "Caché-based Financial Systems". Intersystems.com. Retrieved 2013-08-13.
- ^ "IDEA Turn-Key banking and ERP applications". Idea.cz. Retrieved 2013-08-13.
- ^ "European Space Agency Chooses InterSystems Caché Database For Gaia Mission to Map Milky Way". Realwire.com. 13 May 2010. Retrieved 2013-08-13.
- ^ "InterSystems Iris". intersystems.com. Retrieved 2021-03-18.
추가 정보
- 월터스, 리처드(1989)"MUMPs의 ABCs. 1989: Butterworth-Heinemann, ISBN 1-55558-017-3.
- 월터스, 리처드(1997).M 프로그래밍: 포괄적인 가이드.디지털 프레스ISBN 1-55558-167-6.
- 르우코비치, 존전체 MUMP: MUMP 프로그래밍 언어를 위한 소개 및 참조 설명서.ISBN 0-13-162125-4
- 커스틴, 볼프강 등(2003) Caché Postrelational Database ISBN 3-540-00960-4를 이용한 객체 지향 애플리케이션 개발
- 마르티네스 데 카르바할 헤드리히, 에르네스토(1993)'엘 렝구아제 유행성 이하선염'. completta obra en castellano sobre el lenguaje 유행성 이하선구아제 유행성 이하선염.ISBN 84-477-0125-5.Distributuido exclusivamente porsu 작성자([email protected])
- O'Kane, K.C.; 정보 검색 소프트웨어 구현을 위한 언어, Online Review, Vol 16, No 3, 페이지 127–137(1992)
- O'Kane, K.C. 및 McColigan, E.E., 인트라넷의 유행성 이하선염 환자 기록 사례 연구, 의료정보 및 관리시스템 학회지, 제11권, No.3, 페이지 81-95(1997).
- O'Kane, K.C. 및 McColigan, E.E., 웹 기반 유행성 이하선염, 1997년 미국 의학정보학회 의사록
- O'Kane, K.C., The MUMP Programming Language, Createspace, ISBN 1-4382-4338-3, 120페이지(2010년)
외부 링크
- M Technology and MUMP Language FAQ(1999) 일반 출처. 또한 Poitras 인용문의 특정 출처도 1840년 시대의 기원이다.
- Kevin O'Kane, Northern Iowa 대학, 이하선염 프로그래밍 언어 통역(GPL)
- 소스 포지의 MUMP
- Hardhats.org의 M링크
- MUMP 실험실 정보 시스템 개발 및 운영:존스홉킨스 병원에서의 10년 경험
- YottaDB(구 FIS GT)를 기반으로 한 IDEA Systems의 기술 솔루션.M) 및 Caché
- MUMP 문서, 토픽 및 리소스(체코어와 영어 혼재)