MUMPS가 살아 있습니까? [닫은]


11

첫 직장 에서는 PDP 11 클론 (TPA 440)에서 Digital Standard MUMPS 를 사용하고 있었고 90 년대 초반 HP-UX 9 HP에서 실행되는 Micronetics Standard MUMPS로 전환했습니다.

여전히 MUMPS가 살아 있습니까? 그것을 사용하는 사람이 있습니까? 그렇다면 문자를 사용하십시오. 문자 모드로 사용합니까, 웹 서버로 작동합니까? 등. (Caché도 의미합니다.)

당신이 그것을 사용했다면, 그것에 대해 어떻게 생각 했습니까? 마음에 드 셨나요?


1
나는 이런 식으로 뭔가를 좋아하는 사람은 없다고 생각 합니다 . 최소한 펄은 표현력이 있습니다.
imgx64

13
"MUMPS가 살아 있습니까?" -그렇습니다. 그러나 모든 개발자가 스스로를 죽이고 있습니다.
Steven Evers

@ imgx64 끔찍해 보이는 신!
TheLQ

짧은 형식의 명령 인 "DHSY = % YK % H, % YQ"를 사용할 필요가 없으며 완전한 명령 이름을 작성하고 더 긴 레이블 / 변수 이름을 사용해야합니다. "Do HourCount Set Year = % YearParam Kill % HourParam , % YearParam 종료 ". 또한 수년간의 짧은 명령 양식을 사용한 후 usng long-form 명령과 긴 이름있는 변수를 사용하여 20 줄 프로그램을 작성했습니다. 저의 동료들은 "좋아요, 좋은 농담이지만 ​​다시는하지 마십시오"라는 말을 들었습니다. 짧은 명령보다 읽기가 10 배 더 어려웠습니다.
ern0

답변:


11

인터 시스템즈, MUMPS 파생 상품 판매 : http://www.intersystems.com

MUMPS에서 가장 흥미로운 사람들 중 일부는 아마도 다음과 같습니다 : http://www.outoftheslipstream.com/

몇 년 전에 캐시 (MUMPS 파생)에 대한 블로그를 시작했습니다 : http://cachetastic.blogspot.com/ (그러나 작업을 변경했습니다)

몇 년 동안 그 세계를 떠난 후, 나의 생각은 NoSQL 운동이 아마도 MUMPS에게 일어날 수있는 가장 좋고 최악의 일이라고 생각합니다. 궁극적으로 그것을 입증하고 죽일 가능성이 높습니다. 어느 시점에서 누군가가 MUMPS의 데이터베이스와 쿼리 구조를 거의 동일하게 다시 만들지 만 MUMPS 전통과 관련이 없기 때문입니다. 그러면 사람들은이 새로운 스토리지 시스템에 대해 열광 할 것입니다. 그러나 아무도 MUMPS 파생 상품을 다시 선택하지 않을 것입니다.

예를 들어 한두 달 전에 나는 장고 애플리케이션에서 무언가를 찾아보기 위해 redis를 사용하는 것에 대해 동료와 이야기하고있었습니다. 우리는 세 개의 키 중 세 개의 키로 처리 된 많은 수의 레코드를 가지고 있었고, 하나 또는 두 개의 키와 일치하는 서브 세트를 신속하게 가져와야했습니다 (그러나 다른 시간에 다른 조합).

이것은 MUMPS가 아침 식사로 먹는 종류입니다. 그러나 우리는 redis의 주요 val pair 구조로 스쿼시하기가 어렵다는 것을 알았습니다. 사전으로도. (memcached 등에서도 마찬가지입니다.) 제 인생에서 처음으로이 모듈을 Cache ObjectScript로 작성할 수 없다는 사실을 후회하게되었습니다.

캐시에 대한 더 많은 생각은 여기에 있습니다.

좋은 : http://cachetastic.blogspot.com/2008/07/ok-after-mentioning-some-bad-things.html

나쁜 : http://cachetastic.blogspot.com/2008/07/some-mumps-dissing-and-more-positive.html


9

재미있는 인터 스타는 레디 스를 언급해야합니다. 실제로 Mumps (캐시 및 GT.M)를 사용하여 거의 모든 Redis의 동작을 리버스 엔지니어링했습니다. 단순하고 기본적인 키 / 값 쌍 구조와 API를 에뮬레이트하는 것은 아주 중요한 일이었으며 테스트 한 Redis 클라이언트는 적절한 Redis 대신 Mumps 데이터베이스와 대화하고 있다는 것을조차 알지 못합니다.

그러나 interstar에 따르면 Mumps 데이터베이스는 데이터 구조 측면에서 훨씬 더 많은 기능을 수행 할 수 있습니다 (실제로 Mumps 데이터베이스는 키 / 값, 테이블 형식, 문서 및 그래프 등 모든 4 가지 NoSQL 데이터베이스 유형을 쉽게 에뮬레이트하고 모델링 할 수도 있음) 관계형 및 객체 DB-필요한 경우 한 번에 모두) 및 인 메모리와 디스크의 올바로 정렬 및 자동 균형 조정. 불과 몇 년 동안 사용되어 온 NoSQL 데이터베이스와 달리, Mumps 기술은 성숙하고, 시도되고, 테스트되고, 잘 지원되며, 분석 및 관리 패키지가 제공되며, CouchDB와 같은 많은 NoSQL 데이터베이스가 죽을 수있는 성능을 갖습니다. .

그렇다면 왜 캐시와 GT.M 공급 업체가 말한대로 누군가가 바퀴를 재발 명하는 대신 NoSQL 시장에 열심히 홍보하지 않습니까?

언어에 대한 피곤하고 오래된 논쟁과 Wikipedia 사이트의 고대 및 outdatad 예제 사용에 대해 :

a) 유행성 이하선염 데이터베이스는 당신이 원한다면 당신의 애완 동물 섹시한 현대 언어에 의해 액세스 할 수 있습니다

b) 그 스타일의 프로그래밍은 방주와 함께 나 왔으며, 당시 시계의 칩보다 처리 능력이 낮은 PDP 컴퓨터의 놀라운 성능을 발휘하기 위해 작성되었습니다. 최신 유행성 이하선염 코딩은 실제로 파이썬과 스타일이 매우 유사하며 깨끗하고 읽기 쉽고 유지 관리가 가능합니다.

c) 다른 언어와 마찬가지로 좋은 예가 있고 끔찍한 예가 있습니다. Mumps 코딩이 Wikipedia 사이트의 예와 같이 불투명하고 구식이어야한다고 가정하지 마십시오.

.. 그리고 Mason, 내 결론은 아마 당신이 생각했던 것만 큼 데이터베이스 환경에 익숙하지 않다는 것이다. :-) 만약 당신이 당신의 삶에 어떤 형태의 치료를 받았다면, 당신의 정보는 검사 요청을 관리하는 시스템을 포함하여, 구불 구불 한 볼거리 시스템을 통해서되었을 것입니다. 일간 신문의 내용은 볼거리 시스템으로 관리 할 수 ​​있으며 온라인으로 주문한 피자까지도 볼거리 시스템으로 연결되었을 수 있습니다. 해외로 배송했을 수있는 물품의 물류는 아마도 유행성 이하선염 시스템을 통해 관리되었을 것이며 아마도 멋진 금속이나 세라믹을 필요로하는 연구원이된다면 아마도 유행성 이하선염 시스템을 통해 주문했을 것입니다.

실제로 놀랍도록 널리 퍼져있는 데이터베이스에 대해 거의 듣지 못하는 이유 중 하나는 공급 업체가 전통적으로 최종 사용자가 아닌 응용 프로그램 / 시스템 개발자를 직접 다루었 기 때문에 데이터베이스는 일반적으로 장면 뒤에 제품에 포함되어 있기 때문입니다.


1
언어가 나쁘지 않다고 생각합니다. 나는 시도하지 않았지만 현대 하드웨어에서는 꽤 빨라야합니다. MSM의 최신 버전은 로컬 변수 (새 명령), 함수 매개 변수, 여러 줄에 대한 인라인 서브 루틴과 같은 구조적 프로그래밍을 지원했습니다. 우리는 이러한 기능에 매우 만족했으며 목록 뷰어, 메뉴 등 많은 유틸리티를 만들었습니다. 마지막으로 스택이 부족하여 Micronetics에 스택 크기를 늘리도록 요청했습니다. 그들은 기본 16- 깊이 대신 32- 깊이 스택 사용자 지정 버전의 MSM을 컴파일했습니다.
ern0

1
Rob을 조금 뒤로 밀기 위해 MUMPS db 가주의를 기울일 가치가 있다고 생각하지만 다른 언어에서 액세스 한 db 만 여전히 MUMPS라고 부를 수 있는지 궁금합니다. MUMPS를 선택한 사람은 레거시 코드를 실행할 수있을 것으로 기대합니다. 따라서 MUMPS는 좋아하든 그렇지 않든 db + 언어와 같습니다.
interstar

2
다른 곳에서 언급했듯이 언어의 실제 재난 / 거래 차단기는 역동적 인 범위 지정입니다. 저는 오늘날 어떤 엔지니어도 로컬에 머물러있는 로컬 변수없이 언어를 선택할 수 있다고 생각하지 않습니다. 따라서 항상 MUMPS db를 블랙 박스 구성 요소로 사용하지만 언어는 구속력이 없으며 휴식을 취해야합니다.
interstar

1
유행성 이하선염에는 변수의 전체 어휘 범위가 있습니다. 수년간 해왔지만 많은 사람들이 눈치 채지 못한 것 같습니다! 유행성 이하선염 코드는 다른 언어와 마찬가지로 깨끗하고 올바르게 작동 할 수 있습니다. 실제로 Mumps는 변수 범위 지정 측면에서 Javascript와 매우 유사합니다. 예를 들어 New in Mumps는 사실상 Javascript의 var와 동일합니다. 그러나 기본적으로 변수는 두 언어로 전체적으로 범위가 지정됩니다.
Rob

1
롭 캐시에서 변수의 어휘 범위를 알지 못했습니다. cachetastic.blogspot.com/2008/07/…의 예제는 어떻 습니까? "new"키워드를 사용하지만 원하는 범위 지정 규칙은 아닙니다. f의 x와 g의 x는 스택에 발생한 x를 명시 적으로 숨길 필요없이 g와 동일한 변수가 아니어야합니다. COS의 "new"를 "var"로 바꾸면 같은 것이 자바 스크립트로 변환되어 x in f가 정의되지 않은 것으로 나타납니다.
interstar

6

MUMPS는 매우 살아 있습니다. 올바른 방향으로 나아가는 가장 신뢰할 수있는 시스템 중 하나였습니다. 프로그래밍 직원은 일반적으로 작고 가동 시간이 인상적입니다. 처음에는 MUMPS가 불분명 한 것처럼 보이지만 매우 적은 키 입력으로 매우 명료하고 기능이 뛰어난 코드를 작성할 수 있으며 MUMPS가 지원하는 데이터 구조로 인해 다양한 아키텍처에서 매우 강력하고 이동성이 뛰어납니다. 모든 VA 병원은 MUMPS를 사용하고 있으며 대부분의 경우 평균 수리 시간이 매우 빠릅니다. MUMPS로 작성된 VistA 시스템은 Source Forge에서 쉽게 다운로드 할 수 있으며 VistA 및 MUMPS의 다중 모드 (롤 및 스크롤, 씬 클라이언트, 브라우저 또는 RPC 또는 기타 프로그램 인터페이스를 통해 데이터베이스에 액세스 할 수 있음)가 제공됩니다. 그것을 탐구하는 많은 사람들을 위해. MUMPS는 명령이 거의없고 데이터 유형이 하나 인 간단한 언어입니다. 해석 된 언어이기 때문에 쉽게 배울 수 있으며 스택과 심볼 테이블을 그대로 두어 응용 프로그램이 디버그를 위해 중지되었을 때 발생한 상황을 정확하게 볼 수 있습니다. VistA는 국방부 병원 (CHCS)과 인도 건강 서비스 (IHS RPMS)를 운영하는 데 사용되었으며, 한 번 미국 공중 보건 서비스에서 사용되었습니다. 그것은 운영 비용으로 수백만 달러를 절약했습니다. MUMPS는 거의 모든 곳에서 실행됩니다. 거의 모든 다른 데이터베이스 모델을 쉽게 모델링하고 놀라 울 정도로 데이터베이스에 빠르게 액세스 할 수 있습니다. MUMPS 모델은 실제로 시스템 사용자가 많을수록 더 빠른 성능을 얻을 수 있습니다 (일부 경우 데이터 블록을 찾는 데 필요한 포인터 블록이 이미 메모리에 있고 다시 가져올 필요가없는 MUMPS의 캐싱 측면으로 인해 BTW, MUMPS의 포인터 오버 헤드는 약 2 % 만 실행되므로 대부분의 데이터베이스 실제 사용자 데이터입니다). MUMPS는 원래 2K 시스템에서 실행되도록 작성되었습니다. 새로운 기술의 맹공격은 MUMPS 환경의 모든 기능을 이제 전체 병원이 저렴한 상품 서버에서 운영되는 영역으로 확장했습니다. 초창기, MUMPS는 하드웨어와 이혼했으며 그 결정으로부터 많은 혜택을 받았습니다. 우리는 단어의 크기 나 정밀도, 또는 얼마나 많은 또는 큰 것에 대해 걱정하지 않습니다. 데이터베이스가 바인딩이 늦고 특정 레코드가 필요할 때 커집니다. 데이터베이스의 레코드가 필요한 것보다 큰 레코드는 없습니다. 데이터베이스는 레코드의 일부 또는 전체 레코드로 확장하거나 정리할 수 있습니다. MUMPS가 여전히 주변에 있습니까? PDP-11 / 34에서 8 명의 사용자를 확보하는 대신 책상 아래의 PC에서 2 백 명의 사용자를 확보 할 수 있습니다. 뱅킹, 유럽 증권 거래소, 여행 산업 (호텔 및 예약 담당자), 일부 자동차 부품 주택 및 가장 성공적인 병원 (상업, 개인 또는 커뮤니티)에서 MUMPS를 어떤 형태로 운영하고 있습니다. VA는 현재 9 백만 명 이상의 환자에 대해 30 년이 넘는 결과를 가지고 있습니다. 보스턴 자체의 Beth Israel / Deaconess Hospital을 제외하고는 자체적으로 구축 한 MUMPS 시스템에서 35 년이 넘는 성과를 거둔 것을 제외하고는 그 자체로는 다른 의료 시스템이 없었습니다. 당신은 내기? PDP-11 / 34에서 8 명의 사용자를 확보하는 대신 책상 아래의 PC에서 2 백 명의 사용자를 확보 할 수 있습니다. 뱅킹, 유럽 증권 거래소, 여행 산업 (호텔 및 예약 담당자), 일부 자동차 부품 주택 및 가장 성공적인 병원 (상업, 개인 또는 커뮤니티)에서 MUMPS를 어떤 형태로 운영하고 있습니다. VA는 현재 9 백만 명 이상의 환자에 대해 30 년이 넘는 결과를 가지고 있습니다. 보스턴 자체의 Beth Israel / Deaconess Hospital을 제외하고는 자체적으로 구축 한 MUMPS 시스템에서 35 년이 넘는 성과를 거둔 것을 제외하고는 그 자체로는 다른 의료 시스템이 없었습니다. 당신은 내기? PDP-11 / 34에서 8 명의 사용자를 확보하는 대신 책상 아래의 PC에서 2 백 명의 사용자를 확보 할 수 있습니다. 뱅킹, 유럽 증권 거래소, 여행 산업 (호텔 및 예약 담당자), 일부 자동차 부품 주택 및 가장 성공적인 병원 (상업, 개인 또는 커뮤니티)에서 MUMPS를 어떤 형태로 운영하고 있습니다. VA는 현재 9 백만 명 이상의 환자에 대해 30 년이 넘는 결과를 가지고 있습니다. 보스턴 자체의 Beth Israel / Deaconess Hospital을 제외하고는 자체적으로 구축 한 MUMPS 시스템에서 35 년이 넘는 성과를 거둔 것을 제외하고는 그 자체로는 다른 의료 시스템이 없었습니다. 여행 산업 (호텔 및 예약 담당자), 일부 자동차 부품 주택 및 가장 성공적인 병원 (상업, 개인 또는 커뮤니티)이 어떤 형태로 MUMPS를 운영하고 있습니다. VA는 현재 9 백만 명 이상의 환자에 대해 30 년이 넘는 결과를 가지고 있습니다. 보스턴 자체의 Beth Israel / Deaconess Hospital을 제외하고는 자체적으로 구축 한 MUMPS 시스템에서 35 년이 넘는 성과를 거둔 것을 제외하고는 그 자체로는 다른 의료 시스템이 없었습니다. 여행 산업 (호텔 및 예약 담당자), 일부 자동차 부품 주택 및 가장 성공적인 병원 (상업, 개인 또는 커뮤니티)이 어떤 형태로 MUMPS를 운영하고 있습니다. VA는 현재 9 백만 명 이상의 환자에 대해 30 년이 넘는 결과를 가지고 있습니다. 보스턴 자체의 Beth Israel / Deaconess Hospital을 제외하고는 자체적으로 구축 한 MUMPS 시스템에서 35 년이 넘는 성과를 거둔 것을 제외하고는 그 자체로는 다른 의료 시스템이 없었습니다.


6

SO에 대한 몇 가지 심각한 유행성 이하선염 문제가 있습니다.

/programming/tagged/mumps


왜 공감해야합니까? 문제는 여전히 MUMPS가 살아 있습니까? 그것을 사용하는 사람이 있습니까? -이것은 확실히 누군가가 새로운 코드를 작성하거나 MUMPS를 배우는 것에 대한 적절한 증거입니까?
콜린 피커드

4

예, MUMPS는 매우 살아 있습니다. 미국 VA 병원의 상당 부분이 MUMPS를 사용합니다.


3
그리고 환자의 좋은 부분이 살아 있습니까? :-)
Maniero

8
@bigown : 물론입니다. 그렇지 않다면 여전히 환자가 아닐 것입니다.
메이슨 휠러


3

또한 g.tm을 처음 사용하지만 다음과 같이 대답 할 수 있습니다.

예, 유행성 이하선염이 살아 있습니다. 아직도 사람들이 일하고 있습니다. 여기 예시들이 있습니다 :

내가 지금 배우고있는 gt.m에 Openstreetmap API 서버를 작성한 http://georgejames.com/

g.tm http://gradvs1.mgateway.com/main/을 위한 최신 엔터프라이즈 웹 도구도 있습니다.

그리고 그것이 살아 있다는 마지막 증거는 최신 GNU / 리눅스 및 클라우드 플랫폼으로 포팅되었다는 것입니다.

마이크



1

이것을 읽어야합니다.

http://thedailywtf.com/Articles/A_Case_of_the_MUMPS.aspx

MUMPS에 대해.

다른 한편으로, 나는 DC 지역에서 일하며 사람들이 MUMPS가 얼마나 자주 일하는지 알뿐만 아니라 상당히 정기적으로 사람들을 만납니다.


저 .. 저를 놀라게했습니다. 이제 목욕을 해야겠다고 생각합니다. :(
Matt DiTrolio

1
이 기사에서 다루는 이러한 문제는 기능이라고 SQL 시대에 설명하기는 어렵습니다. 한 글자는 속도입니다. 한 가지 유형이 자동 타이핑보다 훨씬 낫습니다. 기타
ern0

1

글쎄, 나는 매일 WTF를 제외하고 어떤 맥락이나 어떤 이유로 든 그것을 사용하는 사람에 대해 들어 본 적이 없다. 이것으로부터 어떤 결론을 이끌어 낼 수 있는지는 독자에게 달려 있습니다. ;)


1

함수를 사용하기 위해 올바르게 작성된 Interstar의 예 :

f ;   
  new x  
  set x=$$g()  
  write x  
  quit  

g()  
  new x  
  set x = 5  
  quit x  

do f  

fdo로 호출되는 프로 시저입니다. 이 경우와 같이 공식 매개 변수가 없으면을 필요로하지 않습니다 (). 절차는 종료되고 아무 것도 반환하지 않습니다.

g()반면에 기능입니다. 새로운 x범위는 올바른 범위에 중요합니다 x. 함수는 이름 앞에 $$오고 함수는 리턴 값으로 QUIT합니다. 함수가 여기에 비어 있어도 공식 매개 변수 목록이 선언되어 있어야합니다. 실제로이 인스턴스를 다음과 g()같이 작성할 수 있습니다.

g()  
 quit 5

이제 모두 완벽하게 작동합니다. 어떤 이유로 많은 Mumps 개발자는 함수의 존재를 인식하거나 이해하지 못하거나 함수와 프로 시저의 차이점을 이해하지 못하는 것 같습니다. 나는 이것이 Mumps를 처음 접하는 사람들이 놀랍게도 공포에 손을 던지는 이유 중 하나라고 생각합니다.

위에서 보인 것처럼, 그것은 모두 매우 깨끗하고 존경할만한 것들입니다. 그러나 함수와 프로 시저 내에서 변수의 범위를 명시 적으로 지정하는 것은 프로그래머의 책임입니다. 그것들을 내버려두면 전역이되어 어디서나 유출 될 것입니다. 비결은 각 기능을 분리 할 때 각 기능을 구축하고 테스트하는 것입니다. 공식 매개 변수 외에는 아무 것도 의존하지 않으며 완료되면 아무것도 남기지 않습니다.


이제 새로운 명령을 사용하지 않고 전역 변수에 의존하는 Mumps 코드가 나타나는 이유 중 하나는 함수 이전에 한 번에 작성 되었기 때문입니다. 어휘 범위가 언어에 추가되었습니다. 불행히도 많은 레거시 코드가 있으며, 유지하기가 악몽이지만 결국 레거시입니다. 다른 한편으로, 걱정할만한 레거시 작업없이 처음부터 새로운 작업을 작성한다면 깨끗하고 현대적이며 잘 동작하는 Mumps 코드를 작성할 수 있습니다.
Rob

원래의 예를 보면, 절차 f에서 새로 나온 x 값은 g가 자동으로 사용할 수 있습니다. 이것은 Mumps와 같은 방식입니다. 같은 방식으로 C- 구문 언어에 익숙한 사람들은 자바 스크립트의 범위가 함수에만 적용되고 함수 내의 루프 나 블록에는 적용되지 않는다는 것을 알게되면 놀라게됩니다. 그것이 바로 그 길입니다. 일단 알고 나면 그에 따라 처리합니다. 그러한 특질은 사람들이 자바 스크립트를 받아들이고 채택하는 것을 막지 않았다.
Rob

Rob : "원래의 예를 보면, 절차 f에서 새로 나온 x 값은 g에 자동으로 사용 가능합니다. 그것은 유행성 이하선염의 방식입니다." 과연! 이것이 바로 MUMPS가 어휘 범위가 아닌 동적 범위를 가지고 있다는 것을 의미합니다. 어휘 범위 언어에서는 프로그램의 어휘 구조 (즉, g가 f의 정의 외부에 정의되어 있음)가 다음을 보장하기에 충분하기 때문에 함수 g에 "new x"가 필요하지 않습니다. g와 f에서 언급 된 x는 완전히 다른 두 변수입니다.
interstar

롭 넓은 범위에서, 잘 훈련 된 MUMPS 프로그래머 팀은 처음부터 글을 쓰고 신중하게 "새"를 사용하여 모든 변수가 로컬인지 확인하여 동적 범위 지정의 고통을 피할 수 있습니다. 물론, 동의합니다. 그러나 다른 모든 현대 언어가 무료로 제공하는 것을 복제하기 위해 왜 철자 훈련과 수백 개의 추가 코드가 필요한가? 또한이 분야로 작성되지 않은 레거시 코드에 직면 한 경우 나중에 시스템에 정보를 전달하기 위해 로컬이 아닌 지역 중 하나에 의존하는지 알 수 없기 때문에 나중에 입력하는 것이 거의 불가능합니다. .
interstar

서브 루틴 변수를 분리하는 다른 (이전의) 방법이 있습니다. 시스템 유틸리티의 모든 변수 이름은 '%'기호로 시작하므로 "시스템 네임 스페이스"에 있습니다. 또한 New의 변수 이름 지정은 속도에 관한 것입니다. 명시 적 명령을 사용하여 재사용 된 변수를 스택에 푸시하면 인터프리터는 루틴을 입력 할 때 아무것도하지 않아도됩니다. 또한 매개 변수없이 New를 사용 하면 현재 변수를 모두 숨길 수 있습니다 .
ern0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.