La base de datos M (escrita en MUMPS) es una base de datos NoSQL que existe desde la década de 1960. Todavía se usa ampliamente como el back-end de hospitales (VA) y bancos de todo el mundo. Dada una reputación de alta velocidad y rendimiento, ¿por qué no ha ganado más popularidad en el mundo de la programación?

Las preguntas que comienzan con certezas como “Dada su velocidad y rendimiento extremos” inhiben la discusión racional.

La verdad es que MUMPS fue una gran solución cuando las computadoras solo tenían unos pocos kilobytes de memoria. Ninguna de las bases de datos actuales podría ejecutarse en esos entornos. Sin embargo, hubo compensaciones que MUMPS (también conocido como M) tuvo que hacer para ser viable hace 50 años. Sí, hace 50 años . Esas compensaciones no se consideran razonables hoy en día.

¿Se pueden usar MUMPS con éxito hoy para construir sistemas? ¡Por supuesto que puede! Con el conjunto adecuado de habilidades y con procesos cuidadosos, puede tener éxito con MUMPS hoy, tal como podría haber sido en la década de 1960 cuando todavía estábamos planeando ir a la luna por primera vez.

La ingeniería consiste en hacer compensaciones racionales, y los riesgos que conlleva un sistema como MUMPS ya no se consideran riesgos razonables que los ingenieros generalmente aceptarían para los nuevos sistemas. Estos riesgos incluyen cosas obvias como poder encontrar ingenieros que conozcan la tecnología, pero también incluyen los riesgos inherentes (implícitos) en un sistema de base de datos que es infinitamente flexible y, por lo tanto, requiere que los desarrolladores de aplicaciones protejan la integridad de la base de datos de ellos mismos .

Del mismo modo, los lenguajes de programación que le permiten a uno desconectar un proceso ya no son populares para crear aplicaciones, porque esos lenguajes obligaron a los desarrolladores a salvaguardar la integridad del proceso de ellos mismos . Los lenguajes de programación que permiten que uno pierda memoria ya no son populares para crear aplicaciones, porque esos lenguajes obligaron a los desarrolladores a proteger la integridad del sistema de memoria de ellos mismos .

Por último, MUMPS no tiene “velocidad y rendimiento extremos”. Claro, es razonablemente rápido, porque tiene muy poca sobrecarga, por ejemplo, si desea algo de esa molesta integridad referencial, ¡puede (es decir, debe) construirlo usted mismo! Pero no se construyó para gestionar las demandas de los sistemas modernos, y los sistemas actuales necesitan más que el tipo de eficiencia minimalista del programa “correr con tijeras” que era la norma en la década de 1960.

Cameron Purdy ha abordado los méritos técnicos de la base de datos M bastante bien

Entonces, abordaré la cuestión de la popularidad del lenguaje en sí. Los lenguajes de programación necesitan cierta cantidad de masa crítica antes de ganar tracción. Hasta que alcanzan esa masa crítica, las personas no usan el lenguaje porque es difícil encontrar programadores, y los programadores no aprenden el idioma porque nadie lo usa. Hay una barrera que el idioma tiene que cruzar después de lo cual comienza a acumularse.

Por lo general, los idiomas cruzan esa barrera resolviendo un problema importante en el idioma anterior. Por ejemplo, C ++ introdujo OOP y permitió el pensamiento orientado a objetos en lugar de pensar en procedimientos. Java resolvió el desagradable GPF que generalmente viene en los programas de C ++. Los lenguajes FP están permitiendo a los programadores modelar un problema funcionalmente. Les permite pensar de una manera nueva, por eso están ganando tracción.

MUMPS, OTH es un paso atrás. Ni siquiera tiene prioridad de operador. Excel tiene prioridad de operador. Sí, señor, el software que usa para administrar su lista de compras es más seguro que el software que calcula la cantidad de medicamento que debe recibir. No tiene tipos de datos, lo que probablemente está bien para la mayoría de las aplicaciones, excepto quizás las aplicaciones que usan las personas que pueden tener prisa y que probablemente estén cubiertas de fluidos corporales. La creación de seguridad en dicha base de datos recae en el programador y lo distrae de pensar en la necesidad que el sistema supuestamente debe satisfacer.

No creo que MUMPS deba usarse para ninguna aplicación de misión crítica (la misión se define como ‘asegúrese de que Jayesh siga respirando’). Si descubro que MUMPS está conduciendo, no sé, un sistema de soporte de vida, lo ejecutaría si no estuviera con soporte de vida. Puede ser la “base de datos” de fondo, pero eso no es un respaldo para un sistema que tarda un par de meses en enviarme una factura. Dispare, la recepcionista de mi dentista es más rápida y de mejor rendimiento que los sistemas de back-end de mi hospital.

La misma razón por la que COBOL y Fortran (lenguaje de programación) todavía se utilizan en muchos lugares. Es probable porque ya se ha escrito una gran cantidad de código heredado y sería demasiado costoso mover sistemas interdependientes enteros.

Nuevamente, ¿qué tan profundo has buscado o intentado escribir una aplicación? ¿Puede el lenguaje actual haber incorporado soporte para multiproceso, multiusuario igual que Unix, no multiproceso, gran problema al trabajar con CPU multipunto y crear aplicaciones que tienen más de un back-end y soporte multisitio sin tiempo de inactividad, MUMPS admite servidores múltiples y remotos como si fueran locales y funciona en cpus de brazo a mainframe. El código VA se ejecuta en el chip del brazo al mainframe 32 o 64 de código abierto o de propiedad … ¿nuestra aplicación actual hace lo mismo y todo el código y las subrutinas se pueden ejecutar en cualquier sistema que le guste? ¿Puede soportar qué plataformas y por cuánto tiempo?

y qué tan bien maneja el almacenamiento y el motor de almacenamiento que puede escalar o escalar … o requiere que use un motor de almacenamiento de datos de terceros que ni siquiera está en el mismo espacio de memoria que su idioma de elección, y hay una interfaz de nodejs para que pueda usar guardar JavaScript en el código y usar el almacén de datos de paperas

Erlang está cerca cuando hace una comparación.