it-swarm-es.com

¿MUMPS está vivo?

En mi primer lugar de trabajo estábamos usando Digital Standard PAPERAS en un PDP 11-clone (TPA 440), luego cambiamos a Micronetics Standard MUMPS corriendo en un Máquina Hewlett-Packard, HP-UX 9, alrededor de principios de los 90.

¿Sigue vivo MUMPS? ¿Hay alguien usándolo? En caso afirmativo, escriba algunas palabras al respecto: ¿lo está utilizando en modo de caracteres, actúa como servidor web? etc. (Me refiero a Caché, también.)

Si lo has usado, ¿qué sentiste al respecto? ¿Te gustó?

11
ern0

Intersystems vende un derivado de MUMPS: http://www.intersystems.com

Algunas de las personas más interesantes de MUMPS probablemente estén aquí: http://www.outoftheslipstream.com/

Empecé a bloguear sobre Cache (el derivado de MUMPS) hace un par de años: http://cachetastic.blogspot.com/ (pero luego cambié de trabajo)

Después de haber estado fuera de ese mundo durante un par de años, creo que el movimiento NoSQL es probablemente lo mejor y lo peor que le puede pasar a MUMPS. En última instancia, es probable que lo reivindiquen y lo maten. Porque alguien, en algún momento, va a reinventar la base de datos y la estructura de consultas de MUMPS de forma casi idéntica, pero sin conexión con la tradición de MUMPS. Entonces la gente se entusiasmará con este nuevo sistema de almacenamiento. Pero nadie volverá a elegir un derivado de MUMPS.

Por ejemplo, hace un mes o dos, estaba hablando con un colega sobre el uso de redis para almacenar en caché una búsqueda de algo en nuestra aplicación Django. Tuvimos una gran cantidad de registros abordados por un triple de tres teclas, y necesitaba obtener rápidamente subconjuntos que coincidan con una o dos de estas teclas (pero diferentes combinaciones en diferentes momentos).

Este es el tipo de cosas que MUMPS come en el desayuno. Pero nos resultaba difícil meternos en la clave de Redis, la estructura del par val. Incluso con diccionarios. (Lo mismo sería cierto para memcached, etc.) Por primera vez en mi vida, me arrepiento de no haber podido escribir este módulo en Cache ObjectScript.

Algunas ideas más sobre el caché aquí:

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

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

11
interstar

La divertida estrella debería mencionar a Redis. De hecho, realicé ingeniería inversa en casi todo el comportamiento de Redis usando Mumps (tanto Cache como GT.M). Emular su estructura de pares de clave/valor simplista y básica y las API ha sido pan comido y los clientes de Redis que he probado ni siquiera saben que están hablando con una base de datos de Mumps en lugar del Redis adecuado.

Sin embargo, como dice Interstar, la base de datos de Mumps es capaz de mucho más en términos de su estructura de datos (en realidad, una base de datos de Mumps puede emular fácilmente los 4 tipos de bases de datos NoSQL: clave/valor, tabla, documento y gráfico, y también puede modelar DBS relacionales y de objetos, todo a la vez si es necesario), y el equilibrio automático y ordenado adecuadamente entre la memoria y el disco. A diferencia de las bases de datos NoSQL que han existido por solo unos años, las tecnologías Mumps son maduras, probadas, probadas, bien respaldadas y tienen paquetes de análisis y administración disponibles, y tienen el tipo de rendimiento que muchas bases de datos NoSQL como CouchDB morirían .

Entonces, ¿por qué los vendedores de Cache y GT.M no están promocionando en el mercado NoSQL en lugar de dejar que alguien reinvente su rueda como usted dice?

En cuanto a las viejas y cansadas disputas sobre el lenguaje y el uso de ese antiguo y anticuado ejemplo del sitio de Wikipedia:

a) Puede acceder a la base de datos de paperas con el idioma moderno y atractivo de su mascota si lo desea

b) ese estilo de programación salió con el arca, y fue escrito en ese momento para exprimir un rendimiento sorprendente de las computadoras PDP que tenían menos potencia de procesamiento que el chip en su reloj. La codificación moderna de paperas es en realidad muy similar en estilo a Python y puede ser igual de limpia, legible y mantenible.

c) Como cualquier idioma, hay buenos ejemplos que puedes encontrar y terribles. No asuma que la codificación de paperas debe ser tan opaca y anticuada como el ejemplo en el sitio de Wikipedia.

..y Mason, mi conclusión sería que quizás no estés tan familiarizado con el panorama de la base de datos como creías. :-) Si ha recibido algún tipo de tratamiento médico en su vida, su información habrá pasado por innumerables sistemas de paperas, incluidos los que gestionan la solicitud de sus pruebas. El contenido de su periódico diario puede ser administrado por un sistema de paperas e incluso la pizza que ordenó en línea probablemente también fue a través de un sistema de paperas. La logística de los artículos que podría haber enviado al extranjero probablemente se administró a través de un sistema de paperas, y si usted fuera un investigador que necesitaba algunos metales o cerámicas elegantes, probablemente los haya ordenado a través de un sistema de paperas.

Una de las razones por las que rara vez escucha sobre lo que en realidad es una base de datos sorprendentemente generalizada es que los proveedores tradicionalmente han tratado directamente con los desarrolladores de aplicaciones/sistemas en lugar de los usuarios finales, por lo que la base de datos generalmente se integra detrás de escena en los productos.

9
Rob

MUMPS está muy vivo. Ha sido uno de los sistemas más confiables en manos adecuadas. El personal de programación suele ser pequeño y el tiempo de actividad es impresionante. Puede parecer para los no iniciados que MUMPS es obtuso, pero es posible escribir código muy lúcido y altamente funcional en muy pocas pulsaciones de teclas y las estructuras de datos compatibles con MUMPS lo hacen extremadamente poderoso y muy transportable a través de varias arquitecturas diferentes. Todos los hospitales VA) están utilizando MUMPS y el tiempo medio de reparación es muy rápido en la mayoría de los casos. El sistema Vista escrito en MUMPS se descarga fácilmente desde Source Forge y el multimodal la naturaleza (se puede acceder a la base de datos de muchas maneras, roll and scroll, thin client, navegador o RPC, u otra interfaz de programa) de Vista y MUMPS llega para muchos que profundizan en ella. MUMPS es un lenguaje simple con muy pocos comandos y un tipo de datos. Es fácil de aprender porque es un lenguaje interpretado y deja intacta la pila y la tabla de símbolos para ver exactamente lo que estaba sucediendo cuando la aplicación se detuvo para la depuración. Vista se ha utilizado para administrar los hospitales del Departamento de Defensa (Sistema Compuesto de Atención Médica, CHCS), así como el Servicio de Salud Indígena (IHS RPMS), y fue utilizado alguna vez por el Servicio de Salud Pública de los Estados Unidos. Le ahorró al país muchos millones de dólares en costos operativos. MUMPS funciona con casi cualquier cosa. Modela casi cualquier otro modelo de base de datos fácilmente y proporciona s Acceso sorprendentemente rápido a las bases de datos. El modelo MUMPS puede obtener un rendimiento más rápido con más usuarios en el sistema (en algunos casos, debido a los aspectos de almacenamiento en caché de MUMPS donde los bloques de puntero necesarios para encontrar un bloque de datos ya están en la memoria y no es necesario recuperarlos de nuevo Por cierto, la sobrecarga del puntero para MUMPS se ejecuta solo alrededor del 2%, por lo que la mayor parte de su base de datos son datos de usuario reales). MUMPS se escribió originalmente para ejecutarse en una máquina 2K. La avalancha de nuevas tecnologías solo ha expandido las características completas del entorno MUMPS en un ámbito donde hospitales completos ahora se ejecutan en servidores de productos básicos de bajo costo. Al principio, MUMPS se divorció del hardware y se ha beneficiado muy bien de esa decisión. No nos preocupamos por el tamaño de Word o la precisión, o cuántos o qué tan grandes. La base de datos se enlaza tarde y crece a medida que las necesidades específicas del registro Ningún registro en ninguna base de datos es más grande de lo necesario. La base de datos puede expandirse o podarse como parte de un registro o como un registro completo. ¿MUMPS sigue ahí ?, ¿apostas? En lugar de obtener 8 usuarios en un PDP-11/34, puede obtener un par de cientos de usuarios en la PC de escritorio debajo de su escritorio. Se está utilizando en la Banca, la Bolsa de Valores Europea, la industria de viajes (agentes de hoteles y reservas), algunas casas de autopartes y los hospitales más exitosos (comerciales, privados o comunitarios) están ejecutando MUMPS de alguna forma. El VA actualmente tiene más de 30 años de historial de resultados para sus más de 9 millones de pacientes. Eso en sí mismo es algo que ningún otro sistema de atención médica ha logrado, excepto Beth Israel/Deaconess Hospital en Boston que tiene más de 35 años de resultados en su sistema MUMPS construido en casa.

6
Chris Richardson

hay un par de preguntas serias sobre las paperas en SO:

https://stackoverflow.com/questions/tagged/mumps

6
Colin Pickard

Sí, MUMPS está muy vivo. Una buena parte de los VA hospitales en los EE. UU. Usan MUMPS.

4
Kavet Kerek

Vista (Arquitectura de Tecnología y Sistemas de Información de Salud para Veteranos) está AFAIK todavía en desarrollo activo: http://en.wikipedia.org/wiki/Vista_EMR

4
slu

También soy nuevo en g.tm, pero puedo responder esto:

Sí, las paperas están vivas. Todavía hay personas trabajando en ello. Aquí hay unos ejemplos :

http://georgejames.com/ quien escribió un servidor api Openstreetmap en gt.m que estoy aprendiendo ahora.

También hay herramientas web empresariales modernas para g.tm http://gradvs1.mgateway.com/main/

y la última prueba de que está vivo es que ha sido portado a las últimas plataformas GNU/linux y en la nube.

miguel

3
h4ck3rm1k3

Una de las grandes empresas que trabajan en registros médicos, Epic Systems , todavía usa MUMPS en sus aplicaciones.

2
Steve Wranovsky

Ejemplo de Interstar escrito correctamente para usar funciones:

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

g()  
  new x  
  set x = 5  
  quit x  

do f  

f es un procedimiento que se invoca con un do. Si, como en este caso, no tiene parámetros formales, no necesita el (). Un procedimiento simplemente se cierra y no devuelve nada.

g() por otro lado es una función. El nuevo x es crucial para el alcance correcto x. Se invoca una función precediendo su nombre con $$ Y SALE con un valor de retorno. Una función debe tener una lista de parámetros formales declarada incluso si está vacía como aquí. En realidad, podría escribir esta instancia de g() como solo:

g()  
 quit 5

Todo se comportará perfectamente ahora. Por alguna razón, muchos desarrolladores de Mumps no parecen haber notado o entendido la existencia de funciones, o no entienden la diferencia entre ellas y los procedimientos. Creo que esta es una de las razones por las cuales las personas nuevas en Mumps levantan sus manos con horror (no es sorprendente): hay muchísimo código terrible por ahí.

Escrito como se muestra arriba, todo es bastante limpio y respetable. Sin embargo, depende del programador explícitamente abarcar variables dentro de funciones y procedimientos. Déjalos fuera y serán globales y se filtrarán por todas partes. El truco consiste en construir y probar cada función a medida que avanza de forma aislada y asegurarse de que no dependan de nada más que de sus parámetros formales y, cuando terminen, no dejen nada.

1
Rob

Bueno, nunca he oído hablar de alguien que lo use, en ningún contexto o por cualquier motivo, excepto en The Daily WTF. Las conclusiones que se pueden sacar de esto dependen del lector. ;)

1
Mason Wheeler

Deberías leer esto:

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

acerca de MUMPS.

Por otro lado, trabajo en el área DC) y me encuentro con personas con bastante regularidad que no solo saben qué MUMPS trabajan con frecuencia.

1
Bill Leeper