Czy MUMPS żyje? [Zamknięte]


11

W moim pierwszym miejscu pracy korzystaliśmy z Digital Standard MUMPS na klonie PDP 11 (TPA 440), następnie przeszliśmy na Micronetics Standard MUMPS działający na maszynie Hewlett-Packard, HP-UX 9, około wczesnych lat 90-tych.

Czy MUMPS wciąż żyje? Czy ktoś go używa? Jeśli tak, napisz o tym kilka słów: czy używasz go w trybie znakowym, czy działa on jako serwer sieciowy? itp. (Mam na myśli również Caché.)

Jeśli byłeś użyty, jakie były twoje odczucia? Czy podobało Ci się?


1
Nie sądzę, że każdy lubi coś, co wygląda jak ten . Przynajmniej perl jest ekspresyjny.
imgx64,

13
„Czy MUMPS żyje?” - Tak, ale wszyscy programiści się zabijają.
Steven Evers,

@ imgx64 Bóg, który wygląda okropnie!
TheLQ

Nie musisz używać krótkiej formy poleceń „DHSY =% YK% H,% YQ”, powinieneś pisać pełne nazwy poleceń (i używać dłuższych nazw etykiet / zmiennych): „Wykonaj HourCount Ustaw rok =% YearParam Zabij% HourParam ,% YearParam Quit ”. Ponadto, po latach używania krótkiej formy poleceń, napisałem 20-liniowy program z użyciem długich poleceń i zmiennych o długich nazwach. Moim kolegom powiedziano: „okej, to dobry żart, ale nie rób tego więcej”, było 10 razy trudniejsze do odczytania niż krótkie polecenia.
ern0

Odpowiedzi:


11

Intersystems sprzedaje pochodną MUMPS: http://www.intersystems.com

Niektóre z najciekawszych osób w MUMPS są prawdopodobnie tutaj: http://www.outoftheslipstream.com/

Kilka lat temu zacząłem blogować o Cache (pochodnej MUMPS): http://cachetastic.blogspot.com/ (ale potem zmieniłem pracę)

Będąc poza tym światem przez kilka lat, myślę, że ruch NoSQL jest prawdopodobnie najlepszą i najgorszą rzeczą, jaka przytrafiła się MUMPS. Ostatecznie prawdopodobnie zarówno to potwierdzi, jak i zabije. Ponieważ ktoś kiedyś wymyśli bazę danych i strukturę zapytań MUMPS niemal identycznie, ale bez związku z tradycją MUMPS. Wtedy ludzie będą zachwyceni tym nowym systemem przechowywania. Ale nikt już nigdy nie wybierze pochodnej MUMPS.

Na przykład miesiąc lub dwa lata temu rozmawiałem z kolegą o użyciu redis do buforowania wyszukiwania czegoś w naszej aplikacji Django. Mieliśmy dużą liczbę rekordów adresowanych potrójnie trzema kluczami i potrzebowaliśmy szybko uzyskać podzbiory pasujące do jednego lub dwóch z tych kluczy (ale różne kombinacje w różnych momentach).

Jest to coś, co MUMPS zjada na śniadanie. Ale ciężko nam było wtłoczyć się w kluczową strukturę pary redis. Nawet ze słownikami. (To samo dotyczy memcached itp.) Po raz pierwszy w życiu żałuję, że nie mogłem napisać tego modułu w Cache ObjectScript.

Kilka dalszych przemyśleń na temat pamięci podręcznej tutaj:

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

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


9

Zabawna gwiazdka powinna wspomnieć o Redis. W rzeczywistości zmodyfikowałem prawie wszystkie zachowania Redis przy użyciu Mumps (zarówno Cache, jak i GT.M). Emulowanie jego uproszczonej i podstawowej struktury pary klucz / wartość oraz interfejsów API było bułką z masłem, a klienci Redis, których testowałem, nawet nie wiedzą, że rozmawiają z bazą danych Mumps zamiast z właściwą Redis.

Jednak, jak mówi interstar, baza danych Mumps może znacznie więcej zarówno pod względem struktury danych (w rzeczywistości baza danych Mumps może łatwo emulować wszystkie 4 typy baz danych NoSQL: klucz / wartość, tabelaryczny, dokument i wykres, a także może modelować relacyjne i obiektowe dbs - wszystkie w razie potrzeby na raz) oraz odpowiednio uporządkowaną i automatyczną równowagę między pamięcią a dyskiem. W przeciwieństwie do baz danych NoSQL, które istnieją już od kilku lat, technologie Mumps są dojrzałe, wypróbowane, przetestowane, dobrze obsługiwane i mają dostępne pakiety analityczne i administracyjne, a także mają wydajność, za którą wiele baz danych NoSQL, takich jak CouchDB, umarłoby .

Dlaczego więc dostawcy Cache i GT.M nie promują się mocno na rynku NoSQL, a nie pozwalają, by ktoś na nowo wymyślił koło, jak mówisz?

Co do zmęczonej starej sprzeczki na temat języka i korzystania z tego starożytnego i przestarzałego przykładu ze strony Wikipedii:

a) Dostęp do bazy danych Mumps może uzyskać Twój ulubiony seksowny nowoczesny język, jeśli chcesz

b) ten styl programowania wyszedł z arki i został napisany w tym czasie, aby wycisnąć niesamowitą wydajność z komputerów PDP, które miały mniejszą moc przetwarzania niż układ w zegarku. Nowoczesne kodowanie świnki jest w rzeczywistości bardzo podobne w stylu do Pythona i może być tak samo czyste, czytelne i łatwe w utrzymaniu.

c) Jak każdy język, istnieją dobre przykłady, które można znaleźć i okropne. Nie zakładaj, że kodowanie Mumpsa musi być tak nieprzejrzyste i staromodne, jak przykład na stronie Wikipedii.

... i Mason, doszedłem do wniosku, że być może nie znasz się tak dobrze na bazie danych, jak myślałeś! :-) Jeśli miałeś jakąkolwiek formę leczenia w swoim życiu, twoje informacje będą przechodzić przez wiele systemów Mumps po drodze, włączając te, które zarządzają żądaniem twoich testów. Zawartość Twojej codziennej gazety może być zarządzana przez system Mumps, a nawet pizza zamówiona online prawdopodobnie również przez system Mumps. Logistyka przedmiotów, które mogłeś wysłać za granicę, była prawdopodobnie zarządzana za pomocą systemu Mumps, a jeśli zdarzyło Ci się być badaczem, który potrzebował fantazyjnych metali lub ceramiki, prawdopodobnie zamówiłeś je za pośrednictwem systemu Mumps.

Jednym z powodów, dla których rzadko słyszysz o tak naprawdę zaskakująco wszechobecnej bazie danych, jest to, że dostawcy tradycyjnie kontaktowali się bezpośrednio z programistami aplikacji / systemów, a nie z użytkownikami końcowymi, więc baza danych jest zwykle osadzona w tle za kulisami w produktach.


1
Myślę, że język nie jest zły. Nie próbowałem, ale musi być dość szybki na nowoczesnym sprzęcie. Najnowsza wersja MSM wspierała programowanie strukturalne: zmienne lokalne (Nowa komenda), parametry funkcji, wbudowane podprogramy dla wielu linii. Byliśmy bardzo zadowoleni z tych funkcji i stworzyliśmy wiele narzędzi: przeglądarkę list, menu itp. W końcu zabrakło stosu, więc poprosiliśmy Micronetics o zwiększenie rozmiaru stosu. Skompilowali nam niestandardową wersję MSM o 32 stosach zamiast domyślnej 16-głębokiej.
ern0

1
Aby odsunąć nieco Roba, chociaż uważam, że warto zwrócić uwagę na db MUMPS, zastanawiam się, czy tylko db, dostępny z innego języka, nadal można nazwać MUMPS. Każdy, kto wybierze MUMPS, spodziewa się, że będzie mógł uruchomić starszy kod. Więc MUMPS, czy ci się to podoba, czy nie, równa się db + język.
interstar

2
Jak wspomniałem gdzie indziej, prawdziwą katastrofą / łamaczem dla tego języka jest dynamiczne określanie zakresu. Nie sądzę, aby którykolwiek inżynier mógł dziś uzasadnić wybór języka bez zmiennych lokalnych, które pozostają lokalne. Tak więc z całą pewnością używaj bazy danych MUMPS jako komponentu czarnej skrzynki, ale język nie podlega odkupieniu i należy go zatrzymać.
interstar

1
Mumps ma pełny zakres leksykalny zmiennych - robił to od lat, ale wydaje się, że wiele osób tego nie zauważyło! Kod świnki może być tak samo czysty i dobrze zachowany, jak każdy inny język. W rzeczywistości Mumps ma wiele podobieństw do Javascript pod względem zakresu zmiennych. np. New in Mumps jest w rzeczywistości taki sam jak var w Javascript. Domyślnie jednak zmienne mają zasięg globalny w obu językach.
Rob

1
Obrabować. Na pewno nie zauważyłem leksykalnego zakresu zmiennych w pamięci podręcznej. Co z moim przykładem w cachetastic.blogspot.com/2008/07/… ? To używa słowa kluczowego „new”, ale absolutnie NIE jest to reguła zakresu, którą chcesz. X in f oraz x in g NIE powinny być tą samą zmienną BEZ g jawnego ukrywania x, które zdarzyło się na stosie. Ta sama rzecz przekonwertowana na javascript, zamieniając „nowy” COS na „var” poprawnie daje x in f jako niezdefiniowane.
interstar

6

MUMPS bardzo żyje. Był to jeden z najbardziej godnych zaufania systemów działających w odpowiednich rękach. Personel programistyczny jest zwykle niewielki, a czas sprawności jest imponujący. Może się wydawać niewtajemniczonemu, że MUMPS jest tępy, ale możliwe jest napisanie bardzo klarownego i wysoce funkcjonalnego kodu w zaledwie kilku pociągnięciach klawiszy, a struktury danych obsługiwane przez MUMPS sprawiają, że jest on niezwykle wydajny i bardzo łatwy do przenoszenia w różnych architekturach. Wszystkie szpitale VA używają MUMPS, a średni czas do naprawy w większości przypadków jest bardzo szybki. System VistA napisany w MUMPS jest łatwy do pobrania z Source Forge i ma charakter multimodalny (do bazy danych można uzyskać dostęp na wiele sposobów, roll i scroll, cienki klient, przeglądarkę lub RPC lub inny interfejs programu) VistA i MUMPS jest dostępny przez wielu, którzy zagłębiają się w to. MUMPS to prosty język z bardzo małą liczbą poleceń i jednym typem danych. Jest łatwy do nauczenia, ponieważ jest to język interpretowany i pozostawia nienaruszony stos i tablicę symboli, aby zobaczyć dokładnie, co się dzieje, gdy aplikacja zatrzymała się w celu debugowania. VistA był używany do prowadzenia szpitali Departamentu Obrony (Composite Health Care System, CHCS), a także Indian Health Service (IHS RPMS), a kiedyś był używany przez US Public Health Service. Pozwoliło to krajowi zaoszczędzić wiele milionów dolarów na kosztach operacyjnych. MUMPS działa na prawie wszystkim. Łatwo modeluje prawie każdy inny model bazy danych i zapewnia zaskakująco szybki dostęp do baz danych. Model MUMPS może faktycznie uzyskać wyższą wydajność przy większej liczbie użytkowników w systemie (w niektórych przypadkach ze względu na buforowanie aspektów MUMPS, w których bloki wskaźnika potrzebne do znalezienia bloku danych są już w pamięci i nie trzeba ich ponownie pobierać, BTW, narzut wskaźnika dla MUMPS działa tylko około 2%, więc większość bazy danych to rzeczywiste dane użytkownika). MUMPS został pierwotnie napisany do działania na maszynie 2K. Atak nowej technologii rozszerzył jedynie pełne możliwości środowiska MUMPS do dziedziny, w której całe szpitale są obecnie obsługiwane na tanich serwerach towarowych. Na początku MUMPS oderwał się od sprzętu i bardzo skorzystał na tej decyzji. Nie martwimy się o rozmiar słowa ani precyzję, ani o to, ile i jak duży. Baza danych jest późno wiążąca i rośnie w miarę potrzeb określonego rekordu. Żaden zapis w żadnej bazie danych nie jest większy niż powinien. Baza danych może być rozszerzana lub przycinana zgodnie z częścią rekordu lub jako cały rekord. Czy MUMPS wciąż istnieje? Zamiast uzyskiwania 8 użytkowników na PDP-11/34, możesz ustawić kilkuset użytkowników na biurkowym komputerze pod biurkiem. Jest on używany w bankowości, europejskiej giełdzie papierów wartościowych, przemyśle turystycznym (hotele i agencje rezerwacji), niektórych domach samochodowych i odnoszących największe sukcesy szpitalach (komercyjnych, prywatnych lub lokalnych) w pewnej formie prowadzi MUMPS. VA ma obecnie ponad 30 lat historii wyników dla ich ponad 9 milionów pacjentów. Samo w sobie jest to coś, czego nie osiągnął żaden inny system opieki zdrowotnej, z wyjątkiem Beth Israel / Deaconess Hospital w Bostonie, który ma ponad 35-letnie doświadczenie w budowanym przez siebie systemie MUMPS. betcha? Zamiast uzyskiwania 8 użytkowników na PDP-11/34, możesz ustawić kilkuset użytkowników na biurkowym komputerze pod biurkiem. Jest on używany w bankowości, europejskiej giełdzie papierów wartościowych, przemyśle turystycznym (hotele i agencje rezerwacji), niektórych domach samochodowych i odnoszących największe sukcesy szpitalach (komercyjnych, prywatnych lub lokalnych) w pewnej formie prowadzi MUMPS. VA ma obecnie ponad 30 lat historii wyników dla ich ponad 9 milionów pacjentów. Samo w sobie jest to coś, czego nie osiągnął żaden inny system opieki zdrowotnej, z wyjątkiem Beth Israel / Deaconess Hospital w Bostonie, który ma ponad 35-letnie doświadczenie w budowanym przez siebie systemie MUMPS. betcha? Zamiast uzyskiwania 8 użytkowników na PDP-11/34, możesz ustawić kilkuset użytkowników na biurkowym komputerze pod biurkiem. Jest on używany w bankowości, europejskiej giełdzie papierów wartościowych, przemyśle turystycznym (hotele i agencje rezerwacji), niektórych domach samochodowych i odnoszących największe sukcesy szpitalach (komercyjnych, prywatnych lub lokalnych) w pewnej formie prowadzi MUMPS. VA ma obecnie ponad 30 lat historii wyników dla ich ponad 9 milionów pacjentów. Samo w sobie jest to coś, czego nie osiągnął żaden inny system opieki zdrowotnej, z wyjątkiem Beth Israel / Deaconess Hospital w Bostonie, który ma ponad 35-letnie doświadczenie w budowanym przez siebie systemie MUMPS. branża turystyczna (hotele i pośrednicy zajmujący się rezerwacjami), niektóre domy z częściami samochodowymi i najbardziej udane szpitale (komercyjne, prywatne lub wspólnotowe) prowadzą MUMPS w jakiejś formie. VA ma obecnie ponad 30 lat historii wyników dla ich ponad 9 milionów pacjentów. Samo w sobie jest to coś, czego nie osiągnął żaden inny system opieki zdrowotnej, z wyjątkiem Beth Israel / Deaconess Hospital w Bostonie, który ma ponad 35-letnie doświadczenie w budowanym przez siebie systemie MUMPS. branża turystyczna (hotele i pośrednicy zajmujący się rezerwacjami), niektóre domy z częściami samochodowymi i najbardziej udane szpitale (komercyjne, prywatne lub wspólnotowe) prowadzą MUMPS w jakiejś formie. VA ma obecnie ponad 30 lat historii wyników dla ich ponad 9 milionów pacjentów. Samo w sobie jest to coś, czego nie osiągnął żaden inny system opieki zdrowotnej, z wyjątkiem Beth Israel / Deaconess Hospital w Bostonie, który ma ponad 35-letnie doświadczenie w budowanym przez siebie systemie MUMPS.


6

na SO jest kilka poważnych pytań dotyczących świnki:

/programming/tagged/mumps


Dlaczego głosowanie negatywne? Pytanie brzmiało Czy MUMPS wciąż żyje? Czy ktoś go używa? - z pewnością jest to istotny dowód na to, że ktoś poważnie pisze nowy kod i / lub uczy się MUMPS?
Colin Pickard

4

Tak, MUMPS bardzo żyje. Znaczna część szpitali VA w USA korzysta z MUMPS.


3
A dobra część pacjentów żyje? :-)
Maniero,

8
@bigown: Oczywiście. Jeśli nie, nadal nie byliby pacjentami.
Mason Wheeler,


3

Jestem również nowy w g.tm, ale mogę odpowiedzieć na to:

Tak, Mumps żyje. Nadal pracują ludzie. oto kilka przykładów:

http://georgejames.com/, który napisał serwer api Openstreetmap w gt.m, którego się uczę.

Istnieją również nowoczesne narzędzia internetowe dla przedsiębiorstw do g.tm http://gradvs1.mgateway.com/main/

a ostatnim dowodem na to, że żyje, jest przeniesienie na najnowsze platformy GNU / Linux i chmurowe.

mikrofon



1

Powinieneś przeczytać to:

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

o MUMPSACH.

Z drugiej strony pracuję w obszarze DC i spotykam ludzi dość regularnie, którzy nie tylko wiedzą, na czym często pracują w MUMPSIE.


To… to mnie przeraziło. Czuję, że muszę się teraz kąpać. :(
Matt DiTrolio,

1
W dobie SQL trudno jest wyjaśnić, że te problemy, które wymieniono w tym artykule, są cechami. Jedna litera dotyczy prędkości. Jeden typ jest znacznie lepszy niż automatyczne pisanie. Itd.
ern 0

1

Cóż, nigdy nie słyszałem o nikim, kto używałby go, w jakimkolwiek kontekście lub z jakiegokolwiek powodu, z wyjątkiem The Daily WTF. Jakie wnioski można z tego wyciągnąć, zależy od czytelnika. ;)


1

Przykład Interstar poprawnie napisany w celu użycia funkcji:

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

g()  
  new x  
  set x = 5  
  quit x  

do f  

fjest procedurą wywoływaną z do. Jeśli, tak jak w tym przypadku, nie ma parametrów formalnych, nie potrzebujesz (). Procedura po prostu kończy pracę i niczego nie zwraca.

g()z drugiej strony jest funkcją. Nowe xma kluczowe znaczenie dla prawidłowego zakresu x. Funkcja jest wywoływana przez poprzedzenie jej nazwy $$i WYJŚCIE z wartością zwracaną. Funkcja musi mieć deklarowaną listę parametrów formalnych, nawet jeśli jest pusta jak tutaj. Właściwie możesz napisać to wystąpienie g()jako:

g()  
 quit 5

Teraz wszystko będzie się doskonale zachowywać. Z jakiegoś powodu wielu programistów Mumps nie zauważyło ani nie zrozumiało istnienia funkcji, ani nie rozumie różnicy między nimi a procedurami. Myślę, że jest to jeden z powodów, dla których nowi użytkownicy Mumps podnoszą ręce z przerażeniem (co nie jest zaskakujące) - jest tam strasznie dużo strasznego kodu.

Napisane jak pokazano powyżej, wszystko jest dość czyste i szanowane. Jednak to do programisty należy jawne określenie zakresu zmiennych w ramach funkcji i procedur. Zostaw je, a będą globalne i wyciekną wszędzie. Sztuczka polega na budowaniu i testowaniu każdej funkcji w odosobnieniu i upewnieniu się, że opierają się wyłącznie na swoich parametrach formalnych, a po zakończeniu nie pozostawiają niczego.


Jednym z powodów, dla których widzisz kod Mumpsa, który nie używa nowych poleceń i który opiera się na zmiennych globalnych (więc psuje się, jeśli nowe zmienne) jest, ponieważ został napisany w przeszłości przed funkcjami i do języka dodano zakres leksykalny. Niestety, istnieje wiele starszych kodów i tak, to ostatecznie koszmar do utrzymania, ale to jest dziedzictwo dla ciebie. Z drugiej strony, całkiem możliwe jest pisanie czystego, nowoczesnego, dobrze zachowującego się kodu Mumps, pod warunkiem, że piszesz nowe rzeczy od zera, bez żadnych starszych spraw, o które należy się martwić.
Rob

Patrząc na twój oryginalny przykład, wartość x, gdy new'd w procedurze f jest automatycznie dostępna dla g - tak właśnie jest Mumps. W ten sam sposób ludzie przyzwyczajeni do języków składniowych C są zaskoczeni, gdy odkrywają, że zakres w JavaScript jest stosowany tylko do funkcji, a nie np. Do pętli lub bloków wewnątrz funkcji. Tak po prostu jest - kiedy się zorientujesz, odpowiednio sobie z tym poradzisz. Takie osobliwości nie powstrzymały ludzi od akceptowania i przyjmowania Javascript.
Rob

Rob: „Patrząc na twój oryginalny przykład, wartość x, gdy new'd w procedurze f jest automatycznie dostępna dla g - tak właśnie jest Mumps”. W rzeczy samej! I to oznacza, że ​​MUMPS ma zakres dynamiczny, a nie zakres leksykalny. W języku leksykalnym nie musisz mieć „nowego x” w funkcji g, ponieważ struktura leksykalna programu (tj. Fakt, że g jest zdefiniowane poza definicją f), jest wystarczająca, aby zagwarantować, że xs, o których mowa w g i f, to dwie zupełnie różne zmienne.
interstar

Obrabować. W szerszym ujęciu, że dobrze zdyscyplinowany zespół programistów MUMPS, piszący od zera i ostrożnie używający „nowego”, aby upewnić się, że wszystkie zmienne są lokalne, może uniknąć problemów dynamicznego określania zakresu. Jasne, zgadzam się. Ale dlaczego potrzebujemy żelaznej dyscypliny i setek dodatkowych linii kodu, aby odtworzyć to, co każdy inny współczesny język oferuje za darmo? Ponadto, jeśli masz do czynienia ze starszym kodem, który nie został napisany w tej dyscyplinie, prawie niemożliwe jest jego późniejsze wprowadzenie, ponieważ nie możesz stwierdzić, czy system polega na jednym z tych nie-miejscowych, aby przekazywać informacje .
interstar

Istnieją inne (starsze) metody oddzielania zmiennych podprogramów: wszystkie nazwy zmiennych narzędzi systemowych zaczynają się od znaku „%”, więc znajdują się w „przestrzeni nazw systemu”. Ponadto nazywanie zmiennych w New dotyczy szybkości: jeśli użyjesz komendy explicite, aby wypchnąć ponownie używane zmienne na stos, interpreter nie musi sam nic robić po wprowadzeniu procedury. Możesz także użyć opcji Nowy bez parametrów, która ukrywa wszystkie bieżące zmienne.
ern0
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.