las PAPERAS (ystem rogramming del del S P del ulti- del M del tility del U del Hospital General de los assachusetts del ''' del ''' M), o alternativo el M, es un lenguaje de programación creado en los últimos años 60, original para el uso en la industria del cuidado médico. Fue diseñado para hacer la base de datos - usos conducidos de la escritura fáciles mientras que simultáneamente hacía el uso eficiente de recursos de computación. Aunque nunca ganara renombre extenso, fue adoptado como la lengua-de-opción para muchos los sistemas del cuidado médico y de información financiera/las bases de datos (especialmente unas desarrolladas en los años 70 y los años 80 tempranos ) y continúa siendo utilizado por muchos de los mismos clientes hoy.

Porque precede el C y la mayoría de las otras idiomas populares en uso actual, tiene sintaxis y terminología muy diversos. Ofrece un número de características inasequibles en otras idiomas, incluyendo alguno los conceptos raramente usados de la programación y de la base de datos.

Descripción

Las PAPERAS son una lengua prevista para y diseñada para construir usos de base de datos. Las características de lengua secundarias fueron incluidas para ayudar a programadores a hacer usos usar recursos de computación mínimos. Las puestas en práctica originales eran interpretados, aunque las puestas en práctica modernas pueden estar completamente o parcialmente compilado .

El más excepcional, y el inusual, característica del diseño de las PAPERAS es que la interacción de la base de datos transparente está incorporada a la lengua. La lengua de las PAPERAS asume la presencia de una base de datos jerárquica de las PAPERAS, que es implícito " opened" para cada uso. Todos los nombres variables prefijados con el carácter del signo de intercalación (" ^") utilizar (en vez de RAM) el almacenaje permanente, mantendrá sus valores después de los extremos del uso, y sea visible (y modificable cerca) otros usos corrientes. Las variables usar almacenamiento permanente se llaman el Globals en PAPERAS, no ser confundido con el término de C para las variables unscoped .

Además, todas las variables (RAM y disk-based) son jerárquicas. Pueden todas tener nodos de niño (llamados los subíndices del en terminología de las PAPERAS). Así, el “coche variable” puede tener " de los subíndices; Door", " Manejo Wheel" y " Engine", que puede contener un valor y tener subíndices sus los propios. Así, usted podría decir SET ^Car (" Door", " Color")=" BLUE" para modificar un nodo de niño jerarquizado de ^Car. En terminología de las PAPERAS, " Color" es el 2do subíndice del ^Car variable (los nombres de los niño-nodos y los niño-nodos ellos mismos se llaman los subíndices). Las variables jerárquicas son similares a los objetos con las características en idiomas orientadas al objeto . Además, todos los subíndices de variables se mantienen automáticamente orden clasificada. Los subíndices numéricos (números de coma flotante incluyendo) se almacenan de lo más bajo posible a lo más arriba posible. Todos los subíndices no numéricos se almacenan en orden alfabético después de los números. En terminología de las PAPERAS, ésta es la orden canónica del . Usando solamente subíndices del número entero no negativo, el programador de las PAPERAS puede emular al tipo de datos de los órdenes de otras idiomas. Aunque las PAPERAS no ofrezcan nativo un sistema completo de características del DBMS, varios sistemas del DBMS se han construido encima de él que proveen de los reveladores de uso el plano-archivo, emparentado y la base de datos de red ofrece.

Como característica de lengua secundaria, usted puede abreviar casi todos los comandos y funciones nativas a un solo carácter al espacio de ahorro; ésta era una característica común de las idiomas diseñadas en este período (eg., fundamentos tempranos). Además, hay los operadores incorporados que tratan una secuencia delimitada (eg., el Coma-separado valora ) como arsenal. Los programadores tempranos de las PAPERAS almacenarían a menudo una estructura de la información relacionada mientras que una secuencia delimitada, analizándola después de ella fue leída adentro; esto ahorró tiempo de acceso de disco y ofreció considerables ventajas de la velocidad en un poco de hardware.

Las PAPERAS no tienen ningún tipo de datos. Los números se pueden tratar como cadenas de dígitos, o las secuencias se pueden tratar como números por los operadores numéricos ( forzado, en terminología de las PAPERAS). La coerción puede tener algunos efectos secundarios impares, sin embargo. Por ejemplo, cuando se fuerza una secuencia, el programa de análisis da vuelta tanto de la secuencia (a partir de la izquierda) en un número como puede, después desecha el resto (como en PHP ). Así el IF 20<" de la declaración; 30 DUCKS" se evalúa como TRUE en PAPERAS.

Otras características de la lengua se piensan para ayudar a los usos de las PAPERAS interactivos con uno a en un ambiente multiusos. Las cerraduras de la base de datos, los identificadores de proceso, y la atomicidad de las transacciones de la actualización de la base de datos todo se requieren de puestas en práctica estándar de las PAPERAS.

En contraste con idiomas en las tradiciones de C o de Wirth, algunos carácteres de espacio entre las declaraciones de las PAPERAS son significativos. Un solo espacio separa un comando de su discusión, y un espacio, o el newline, separa cada discusión del símbolo siguiente de las PAPERAS. Los comandos que no toman ninguna discusión (eg., ELSE) requieren dos espacios de siguiente. El concepto es que un espacio separa el comando de la discusión (no existente), el siguiente separa el " argument" del comando siguiente. Los Newlines son también significativos; un comando de IF, de ELSE o de FOR procesa (o los saltos) todo hasta el end-of-line. Para hacer que ésos las declaraciones controlan las líneas múltiples, usted debe utilizar el comando de DO de crear un bloque del código.

" ¡Hola, mundo! " en PAPERAS

Un programa simple del mundo hola en PAPERAS pudo ser:

hola () escribir el " ¡Hola, mundo! " ¡! parado

y ser funcionado de la línea de comando de las PAPERAS con el comando “^hello del do () ”. Puesto que las PAPERAS permiten que los comandos sean encadenados juntos en la misma línea, y puesto que los comandos se pueden abreviar a una sola letra, esta rutina podría ser aún más compacta:

hola () " de w; ¡Hola, mundo! " ¡! q

¡El “! ” después del texto genera un newline. El “quit” no es terminantemente necesario en el final de una función como esto, pero es bueno programando práctica en caso de que otras funciones se agreguen debajo del “hello () ” más adelante.

Historia

Las PAPERAS fueron desarrolladas por el Neil Pappalardo y colegas en el Dr. laboratorio animal de s de Barnett Octo el 'en el Hospital General (MGH) de Massachusetts en el Boston durante el 1966 y el 1967 . El sistema original de las PAPERAS era, como Unix algunos años más tarde, empleado un de repuesto PDP-7 de la DEC .

Octo Barnett y Neil Pappalardo también estuvo implicado con el planeamiento de MGH para un sistema de información de hospital, obtuvo un reverso-compatible PDP-9, y comenzó a usar PAPERAS en las admisiones completa un ciclo y la información del prueba de laboratorio. Las PAPERAS eran entonces una lengua interpretada e incorporado un sistema de ficheros de la base de datos jerárquica para estandardizar la interacción con los datos. Algunos aspectos de las PAPERAS se pueden remontar TELCOMP de s del BBN de Rand Corporation 'el ÍDOLO CHINO de s con 'y STRINGCOMP . El equipo de las PAPERAS eligió deliberadamente incluir portabilidad entre las máquinas como meta del diseño. Otra característica, apoyada no extensamente para las máquinas de la era, en los sistemas operativos o en el hardware, era los trabajos m3ultiple, que también fueron incorporados a la lengua sí mismo.

La portabilidad era pronto útil pues las PAPERAS fueron adaptadas pronto a un PDP-15 de la DEC donde vivieron por algún tiempo. Las PAPERAS fueron desarrolladas con la ayuda de una concesión de investigación del gobierno, y así que las PAPERAS fueron lanzadas al public domain (no más un requisito para las concesiones), y pronto viradas hacia el lado de babor a un número de otros sistemas incluyendo el popular PDP-8 de la DEC, la Nova de Data General y el PDP-11 de la DEC. La palabra sobre PAPERAS se separó sobre todo a través de la comunidad médica, y por las comienzos de los años 70 estaba en uso extenso, a menudo localmente siendo modificado para sus los propios necesita.

Por los años 70 tempranos había muchas y puestas en práctica variadas de las PAPERAS en una gama de plataformas de hardware. El más extenso era DEC 's MUMPS-11 en el PDP-11, y Meditech 's MIIS. En el 1972, muchos usuarios de las PAPERAS assistieron a una conferencia que estandardizó el now lengua fracturada, y crearon al grupo de usuarios de las PAPERAS del y a comité de desarrollo de las PAPERAS del (MDC) para hacer tan. Estos esfuerzos probaron acertado; un estándar era completo antes de 1974, y era aprobado, el 15 de septiembre de 1977, como estándar del ANSI, X11. En el tiempo casi igual la DEC lanzó DSM-11 (PAPERAS estándar de Digitaces) para el PDP-11. Esto dominó rápidamente el mercado, y se convirtió en la puesta en práctica de la referencia del tiempo.

Durante los años 80 tempranos varios vendedores traídos Papera-basaron las plataformas que cumplieron el estándar del ANSI para poner. El más significativos eran el Digital Equipment Corporation con el DSM (PAPERAS estándar de Digitaces), y el InterSystems con su ISMO del (InterSystems M) en el VMS y UNIX, y M/11+ en la plataforma PDP-11. Otras compañías que desarrollaron puestas en práctica importantes de las PAPERAS eran: el
Greystone Technology Corporation del
con una versión compilada llamó a GT.M,
DataTree Inc. con un producto en PC de Intel llamado DTM,
Micronetics Design Corporation con una línea de productos llamada MSM para las plataformas de UNIX y de la PC de Intel (viradas hacia el lado de babor más adelante al sistema operativo de la VM de IBM), y
M-Global con el MGM, un producto basado OS del mac.

Las PAPERAS M-Globales eran las primeras PAPERAS comerciales para la PC y la única puesta en práctica del mac. DSM-11 fue reemplazado por VAX/DSM para la plataforma de VAX/VMS, y eso fue virada hacia el lado de babor a la alfa en dos variantes: DSM para OpenVMS, y como DSM para Ultrix .

Este período también consideró considerable actividad del MDC. La segunda revisión del estándar del ANSI para las PAPERAS (X11.1-1984) fue aprobada el 15 de noviembre de 1984. El 11 de noviembre, el 1990 la tercera revisión del estándar del ANSI (X11. En el 1992 el mismo estándar también fue adoptado como estándar 11756-1992 de la ISO . El uso del M como nombre alternativo para la lengua era aprobado alrededor del mismo tiempo. El 8 de diciembre, el 1995 la cuarta revisión del estándar (X11.1-1995) fue aprobado por el ANSI, y por la ISO en el 1999 como ISO 11756-1999. El MDC concluyó otra revisión al estándar en el 1998 pero esto no se ha presentado al ANSI para la aprobación. El 6 de enero de 2005, la ISO reafirmó sus estándares Papera-relacionados: El 11756:1999 de ISO/IEC, el estándar de la lengua, el 15851:1999 de ISO/IEC, la interconexión abierta y el 15852:1999 de ISO/IEC, programadores de las PAPERAS del uso de la visualización en una ventana de las PAPERAS interconectan.

Por el 2000, el InterSystems del vendedor del software intermediario había sentido bien al jugador dominante en el mercado de las PAPERAS con la compra de varios otros proveedores. Adquirieron inicialmente DataTree Inc. en el principio de los 90. Y, el 30 de diciembre de 1995, Intersystems adquirió la línea de productos de DSM de DEC . InterSystems consolidó estos productos en una sola línea de productos, calificándolos, en varias plataformas de hardware, como OpenM . En 1997, el InterSystems esencialmente terminó esta consolidación lanzando un sucesor unificado nombrado Caché . Esto fue basada en su producto del ISMO, pero con influencias de las otras puestas en práctica. Los activos de Micronetics Design Corporation también fueron adquiridos por InterSystems el 21 de junio de 1998. Intersystems sigue siendo hoy (2007) el vendedor dominante de las PAPERAS, vendiendo Caché a los reveladores de las PAPERAS que escriben los usos para una variedad de sistemas operativos.

La puesta en práctica GT.M de Greystone Technology Corporation's fue vendida a Sanchez Computer Associates Inc. (ahora parte de Fidelity National Financial Inc.) en los mediados de años 90. El 7 de noviembre de 2000 Sánchez hizo GT.M para el linux disponible debajo de la licencia GLP y el 28 de octubre de 2005 GT.M para el OpenVMS y el Tru64 UNIX también fueron hechos disponibles debajo de la licencia del GLP.M continúa estando disponible en otras plataformas de UNIX debajo de una licencia tradicional.

La más nueva puesta en práctica de las PAPERAS, lanzada en abril de 2002, es un llamado derivado M21 MSM de los Real Software Company del rugbi, Reino Unido.

Hay también varias puestas en práctica de la fuente abierta de las PAPERAS, incluyendo algunos proyectos de investigación. La persona notable de éstos es más profesor Kevin O'Kane (y proyecto del students'), ahora en la universidad de Iowa norteño .

Uno de los creador originales de la lengua de las PAPERAS, Neil Pappalardo, fundó temprano a compañía llamada Meditech. Extendieron y emplearon la lengua de las PAPERAS, nombrando la nueva lengua MIIS (y más adelante, MAGIA). Desemejante de Intersystems, Meditech vende no más el software intermediario, así que MIIS y la MAGIA se utilizan solamente interno en Meditech.

Usuarios importantes de los usos de las PAPERAS

Industria del cuidado médico

Las compañías usar PAPERAS incluyen actual AmeriPath, el cuidado céntrico, la salud del equipo, el Epic Systems Corporation, y el EMIS . Muchos laboratorios de referencia, tales como búsqueda y Dynacare, utilizan el software de las PAPERAS escrito por la corporación antigua de Antrim, o basado en el código de Antrim.

La administración y Departamento de Defensa de veteranos

La administración de veteranos (ahora llamada el departamento de Estados Unidos de los asuntos de veteranos ) adoptó oficialmente PAPERAS como el lenguaje de programación que se utilizará mientras que ejecutaba un laboratorio/una farmacia integrada/un sistema paciente de la admisión, del seguimiento y de escape en el principios de los 80. La versión original, el programa de computadora descentralizado del hospital del (DHCP) fue entregada temprano y debajo de presupuesto. El DHCP se ha ampliado continuamente en los años desde entonces. La mayor parte de el código fuente está disponible en ningún coste. Sin embargo, un módulo, " IFCAP" (el integró la distribución de los fondos, la actividad del punto del control del, la contabilidad del y la consecución del ) no está disponible para el público en general, aunque está disponible para los hospitales, debido a un potencial para el fraude. Contiene las rutinas de la validación y las estructuras de contabilidad que podrían ser empleadas mal. Antes de ejecutar del DHCP, el VA también escribió una capa intermedia en las PAPERAS, FileMan, a la función como sistema de gestión de la base de datos. El SAIC empleado VA para hacer dos proyectos pilotos, convirtiendo el código de las PAPERAS en una Java/una solución en Internet, pero el proyecto fue administrado incorrectamente y cancelado. Terminaron uno de los pilotos, convirtiendo el código de las PAPERAS a Java funcionalmente equivalente mientras que tela-la permitía, incluyendo el FileMan . Este piloto es la fuente abierta y puede ser adquirido del VA.

Hoy, el DHCP se conoce como los sistemas de información de salud de los veteranos y arquitectura ( Vista de la tecnología del ). El Web site de Hardhats.org es el centro para la comunidad internacional de reveladores y de usuarios de Vista y también sirve algo de la misma función para las PAPERAS generalmente.

A el final de los '80, el Departamento de Defensa decidía ejecutar un sistema de información next-generation del cuidado médico para los militares activos. El contrato fue concedido al SAIC, que desarrolló el sistema sanitario compuesto ( CHCS ). Algo que a partir de rasguño, SAIC comenzó con DHCP y empleado él. El tiempo casi igual, IBM decidía a incorporar el mercado de programas informáticos del cuidado médico. Algo que su propia versión de las PAPERAS, él autorizó la puesta en práctica de Micronetic. Sin embargo, a pesar de mucho bombo en la comunidad de las PAPERAS, IBM seguía interesado sobre todo en la venta del hardware. El en tándem siguió la misma trayectoria, usar la puesta en práctica de Micronetics en sus máquinas.

Casi el sistema entero del hospital del VA en el Estados Unidos y el servicio médico indio, tan bien como las mayores partes del sistema todas del hospital del Departamento de Defensa CHCS todavía funciona con el sistema para el seguimiento clínico de los datos.

Otras industrias

Las PAPERAS también ganaron un siguiente temprano en el sector financiero, y los usos de las PAPERAS son todavía funcionando en muchos bancos y uniones de crédito.

El en fecha 2005 la mayoría del uso de M está bajo la forma de GT.M o InterSystems Caché . Este 3ultimo está siendo puesto agresivamente por InterSystems y está teniendo cierto éxito en penetrar nuevos mercados, tales como telecomunicaciones.

Sintaxis de la lengua de las PAPERAS

El sintaxis de M permite comandos múltiples de aparecer en una línea, agrupada en los procedimientos (subrutinas) en una manera similar a la mayoría de los sistemas de la programación estructurada .

En sintaxis de las PAPERAS, algunos espacios son significativos; no son simplemente Whitespace . Hay los contextos en los cuales un par de espacios tiene una diversa significación sintáctica que un solo espacio. Sin embargo, los espacios adicionales (en este contexto no sintácticamente significativo) se pueden equivaler siempre entre los comandos para mayor clareza, a la línea límite de la longitud en una puesta en práctica. Las líneas son sintácticamente significativas, y las vueltas de carro y los avances de línea no se tratan como espacio blanco; son adaptadores de la declaración/de la función. No hay requisito de poner puntos y comas en el final de comandos, y las líneas pueden ser continuadas explícitamente cuando están necesitadas.

Procedimientos - rutinas de las PAPERAS

Un procedimiento típico de M (un " routine" en terminología de las PAPERAS) es análogo a un archivo de fuente en C (con respecto a alcance del namespace y a curso de la vida variable, por ejemplo) y consiste en líneas de código de las PAPERAS. La línea/las etiquetas de declaración se puede utilizar para crear subrutinas almacenadas en la memoria central dentro del alcance de la rutina simplemente prefijando la línea con una etiqueta. La misma subrutina se puede utilizar fuera del alcance de la rutina del padre refiriéndose a la etiqueta y al nombre de la rutina separados por un carácter del “up-arrow” (realmente el signo de intercalación, como en SUBRTN^ABC).

Llamando el procedimiento/la rutina al principio usos en línea el nombre rutinario que comienza con el signo de intercalación (e. ^ABC al igual que ^ABC). Dentro del ^ABC rutinario, las etiquetas son definidas comenzando una línea con una etiqueta en vez de un espacio o de un cuadro. Uno puede referirse a la línea etiquetada dentro de la rutina del padre como DO SUBX, o al exterior como DO SUBX^ABC. Los mayo o mayo no tener un número variable de discusiones y puede volver un valor como función.

Variables y datatypes

La principal diferencia entre las PAPERAS y otros lenguajes de programación es que las PAPERAS no requieren la declaración de variables por el datatype (o declararlas en absoluto!). Son todas, en efecto, las secuencias. Los números se pueden representar como secuencias. El uso variable en un contexto numérico (eg., adición, substracción) invoca una conversión bien definida en caso de que la secuencia no sea un número canónico, tal como " 123 cañería Street".

Las PAPERAS intrínsecamente incluyen un sistema completo y de gran alcance de comandos de la manipulación de secuencia.

Las PAPERAS incluyen los rountines de la gerencia del arsenal escaso para el " variables" de la memoria;. Esos órdenes son process-connected y desaparecen con la terminación del proceso en el cual fueron creados. Variables escasas residentes del disco (IE, base de datos) (llamadas " variables" global; en terminología de las PAPERAS) incurrir en la pena muy pequeña del espacio cuando está escrito al disco, y se almacenan automáticamente en estructuras jerárquicas en disco. La mayoría de las puestas en práctica tienen cuidados de utilizar alto - rutinas optimizadas del disco para reducir la época/el coste del espacio de referencias del disco.

En un contexto de las PAPERAS, los “órdenes escasos” son ésos con los elementos “perdidos”; no hay requisito para que los nodos secuenciales existan — A (1), A (99) y el A (100) puede ser utilizado sin la definición, el asignación del espacio para, o usar ningún espacio para, los nodos 2 a 98. De hecho, uno puede utilizar los números fraccionarios (A (1.3) , etc) donde los números tienen cierto external del significado al programa. La función de acceso $ORDER (A (1.2)) vuelve el valor dominante o suscrito definido siguiente, 3.3 en este ejemplo, así que el programa puede manejar fácilmente los datos. Esto ejecuta una característica automática de la clase, inherente en la lengua estándar, con coste de elaboración muy pequeño.

Esta característica es de uso frecuente en las funciones globales del índice donde la clave de ordenación se utiliza como subíndice global, eg., (^INDEX (lastname, firstname, SSNumber) =…) .

SET A=" abc"

crea la variable A y fija su valor a la secuencia, ABC. Un arsenal con el mismo nombre es distinto en el namespace --

=" del SET A (1.2); def"

Los subíndices pueden ser secuencia valorada así como número entero o numérico-valorada (eg.

SET A (" first_name")=" Bob"
FIJAR A (" last_name")=" Dobbs"

cuál hace los nombres variables almacenes útiles de los datos independiente del contenido variable.

Las variables almacenadas en la memoria central de las PAPERAS (IE, locales) trabajan en una manera similar como en otros lenguajes de programación; cuando se desechan las salidas del programa (o rutina), los valores variables.

Variables globales - la base de datos

El concepto de las PAPERAS de los globals es particularmente práctico. Globals es las variables que automáticamente y transparente se almacenan en disco y persisten más allá de programa, de rutina, o de la terminación de proceso. Globals se utiliza exactamente como variables ordinarias, pero con el carácter del signo de intercalación prefijado al nombre variable. Modificando el ejemplo anterior como sigue

^A del SET (" first_name")=" Bob"
FIJAR el ^A (" last_name")=" Dobbs"

resultados en la creación de un nuevo expediente de disco, que se inserta inmediatamente dentro de la estructura de archivo del disco. Es persistente, apenas pues un archivo persiste en la mayoría de los sistemas operativos. Globals es almacenado en ficheros de datos alto estructurados por MUMPS, y alcanzado solamente como globals de las PAPERAS. Las PAPERAS tienen una larga historia de eficiente, estable, teórico-sonido depositado, metido en diario, y el almacenamiento en discos balanceado de la llave/del valor del B-tree, incluyendo el control sofisticado de la transacción para la transacción del archivo múltiple “confía” y “restauración no actualizada” en la lengua/el funcionamiento a nivel sistema. Las bases de datos enormes en el mundo real crecen comúnmente aleatoriamente algo que en una secuencia de la precolocación, y el sistema de las PAPERAS dirige cada uno con los algoritmos internos cuidadosamente optimizados invisibles al programador de las PAPERAS, así tiempo del ahorro al considerable y al esfuerzo de la codificación. La información que falta, común en situaciones de la base de datos del mundo real, intrínsecamente no causa apuro (eg., los errores, excepciones, finalizan …).

Por todas estas razones, uno de los usos mas comunes de las PAPERAS es gerencia de base de datos. Las PAPERAS pueden proporcionar fácilmente las características ÁCIDAS clásico encima de cualquier puesta en práctica estándar de las PAPERAS. FileMan es un ejemplo. La puesta en práctica de Caché de Intersystems permite vistas duales del structures&mdash seleccionado de los datos; como globals de las PAPERAS, o como data&mdash del SQL; y hace el SQL incorporar (llamado M/SQL). La opinión de las PAPERAS no prohibe a programadores algo más control de los datos, pues no hay requisito de caber los datos en las filas y las columnas presuntas del SQL emparentado.

Multiusos, polivalente, multiprocesador

La operación multiusos permitida las PAPERAS en un momento en que la memoria fue medida en kilobytes, y el tiempo de procesador era escaso y se retarda, solamente los procesadores ellos mismos estaba aun más. Las puestas en práctica de las PAPERAS incluyen el apoyo total para los trabajos m3ultiple, multiusos, multi-máquina que programa incluso cuando no lo hace el sistema operativo sí mismo del anfitrión.

Para demostrar la facilidad de las operaciones de la red, considerar:

^ del SET|" DENVER" |A (" first_name")=" Bob"
FIJAR el ^|" DENVER" |A (" last_name")=" Dobbs"

antes cuál da a A un valor como, pero este vez en el " de la máquina remota; DENVER". Los programas de las PAPERAS son por consiguiente casi triviales distribuir sobre las máquinas múltiples. Esta facilidad de la operación de la red hizo fácil exponer las mismas clases de operación distribuida en capas del SQL (y otro) fácilmente. No es infrecuente que los sistemas de las PAPERAS tengan mejor (utilizado más rápidamente y más fácilmente y manejado) ayuda conectada del SQL que sistemas dedicados del SQL.

Otro uso de las PAPERAS en épocas más recientes ha sido crear la puesta en práctica del escondrijo de las bases de datos de objeto Intersystems, por ejemplo, incluye tales características nativo.

Las PAPERAS pueden generar fácilmente las páginas del HTML o de XML también, y se pueden llamar vía el interfaz del cgi para servir Web pages directo de la base de datos. Pueden también ser utilizadas como parte para las aplicaciones web usar la comunicación del fondo de Ajax .

Las PAPERAS también leen grupos de datos delimitados fácilmente, por ejemplo los archivos de .csv (el Coma-separado valora ) de uso general como formato del intercambio (eg., en exportaciones de las hojas de balance).

Resumen de las características de lengua dominantes

Las búsquedas incompletas e informales siguientes del bosquejo para dar a programadores familiares con otras idiomas una sensación para como qué PAPERAS es. Ni la descripción de lengua, ni las descripciones de cada característica, es completas y muchas características significativas se han omitido para la brevedad. Estas notas reflejan la lengua circa 1994.1-1995 da una descripción completa, formal de la lengua; una versión anotada de este estándar es accesible en línea.

Tipos de datos del : Hay un datatype universal, interpretado/convertido automáticamente a la secuencia, al número entero, o al número de coma flotante pues el contexto requiere. Es algo como el " variant" mecanografiar encontrado en Visual Basic 6.

Booleans : En SI las declaraciones, y otras declaraciones condicionales, algún valor diferente a cero se tratan como verdades. a< del ; b rinde 1 si a es menos que b, 0 de otra manera.

Declaraciones : Ninguno. Todas las variables se crean dinámicamente en la primera referencia.

El alinea : son las entidades sintácticas importantes, desemejante de su estado en las idiomas modeladas en C o Pascal. Las declaraciones múltiples por línea se permiten y son comunes. El alcance de SI y PARA está el " el resto de line." actual;

Sensibilidad de caso del : Los comandos y las funciones intrínsecas son sin diferenciación entre mayúsculas y minúsculas. En cambio, los nombres variables y las etiquetas son con diferenciación entre mayúsculas y minúsculas. No hay significado especial para la parte superior contra minúscula y poca las convenciones extensamente seguidas. La muestra del por ciento (%) es legal como primero carácter de variables y de etiquetas.

Postconditionals : SET: N<10 A=" FOO" fija A al " FOO" si N es menos de 10; DO: N>100 PRINTERR, realiza PRINTERR si N es mayor de 100. Esta construcción proporciona un condicional cuyo alcance sea menos que una línea completa.

Abreviatura : Usted puede abreviar casi todos los comandos y funciones nativas a un solo carácter.

Palabras reservadas : Ninguno. Puesto que las PAPERAS interpretan código fuente por contexto, no hay necesidad de palabras reservadas. Usted puede utilizar los nombres de los comandos de la lengua como variables. No ha habido competencia ofuscada de las PAPERAS como en C, a pesar de el potencial de ejemplos tales como el siguiente, perfectamente legal, código de las PAPERAS:

GREPTHIS () NUEVO SISTEMA, NUEVO, ENTONCES, SI, la MATANZA, PARÓ IF=" DETERMINADO; KILL", SET=" 11", KILL=" l1", QUIT=" RETURN", THEN=" KILL" SI ENTONCES HACEN IF=THEN PARADO: $QUIT PARÓ PARADO; (parado) ENTONCES SI SI, SET&KILL SET=SET+KILL DETERMINADO PARÓ

El pone en orden : se crean dinámicamente, almacenado como B-trees, no utilizan casi ningún espacio para los nodos que falta, puede utilizar cualquier número de subíndices, y los subíndices pueden ser secuencias o numéricos (coma flotante incluyendo). Los órdenes siempre se almacenan automáticamente en orden clasificada, tan allí nunca son cualquier ocasión a clasificar, embalar, reordenan, o reorganizan de otra manera la base de datos. las funciones de $ORDER, de $ZPREVIOUS, y de $QUERY proporcionan el traversal eficiente de la estructura fundamental del arsenal, en disco o en memoria.

para i=10000: 1: 12345 =i*i sqtable determinado (i) dirección determinada (" Smith", " Daniel")=" dpbsmith@world.com"

El Local del pone en orden : los nombres variables que no comienzan con el signo de intercalación son almacenados en memoria por proceso, son privados al proceso que crea, expiran cuando el proceso que crea termina. El almacenaje disponible depende de tamaño de la partición, pero es típicamente pequeño (32K). La asignación de memoria eficiente significa que éste era poco impedimiento práctico en anterior, memoria muerta de hambre, las épocas y sigue siendo menos una edición hoy. La historia del desarrollo de las PAPERAS ha llevado a la considerable eficacia en casi todas las puestas en práctica, PAPERAS de la memoria ha hecho que menos código hinche que casi todos sistemas de otra manera similares.

Órdenes globales : ^abc, ^def. Éstos se almacenan en disco, están disponibles para todos los procesos, y son persistentes cuando el proceso que crea termina. Los globals muy grandes (eg., centenares de megabytes) son prácticos y eficientes en la mayoría de las puestas en práctica. Éste es " principal de las PAPERAS; database" mecanismo. Se utiliza en vez de invitar el sistema operativo crear, escribir, y leer archivos.

Engaño : en muchos contextos, @VBL se puede utilizar, y substituye con eficacia el contenido de VBL en otra declaración de las PAPERAS. SET XYZ=" ABC" FIJAR los sistemas de @XYZ=123 el ABC variable a 123. SET SUBROU=" REPORT" HACER @SUBROU realiza la subrutina nombrada REPORT. Éste es con eficacia el equivalente operacional del " pointers" en otras idiomas.

Función del pedazo del : Esto rompe variables en los pedazos dirigidos por un carácter de separador especificado usuario. Los que saben el Awk encontrarán a este familiar. $PIECE (STRINGVAR, " ^", 3) significa el " tercer pedazo signo de intercalación-separado de STRINGVAR." Puede aparecer como blanco de la asignación. Después

FIJAR X=" dpbsmith@world.com"

$PIECE (" world. ", 2) rinde el " std" SET $P (X, " @", 1)=" office" hace X convertirse en " office@world.com" (nota que $P es equivalente a $PIECE y se podría escribir como tal).

Función de la orden del

Fijar la materia (6)=" xyz", materia (10)=26, =" de la materia (15); "

$Order (materia (" ")) rinde 6, $Order (la materia (6)) rinde 10, $Order (la materia (8)) rinde 10, $Order (la materia (10)) rinde 15, $Order (materia (15)) rinde el " ".

Fijar el i=" " Para el sistema i=$O (materia (i)) Parado: i=" " ¡Escribir! ¿, i? 10, materia (i)

Aquí, el de la discusión-menos para las repeticiones de hasta parado por un terminal paró . Esta línea imprime una tabla de i y de la materia (i) donde está sucesivamente 6, 10, y 15 i.

Para un listado cuidadoso del resto de los comandos de las PAPERAS, los operadores, funciones y variables especiales, ven estos recursos en línea:
PAPERAS de Example, o el libro (agotado) del mismo nombre de Ed de Moel. Mucho del sintaxis de la lengua se detalla allí, con ejemplos del uso.
El estándar anotado de la lengua de las PAPERAS, demostrando la evolución de la lengua y de las diferencias entre las versiones del estándar del ANSI .

" MUMPS" contra " M"

Mientras que de poco interés para ésos fuera de la comunidad de MUMPS/M, este asunto ha sido discutible allí.

Todas las posiciones siguientes pueden, y han sido, apoyado por la gente bien informada en las varias horas:
El nombre de la lengua se convirtió en M en 1993 en que la asociación de la tecnología de M lo adoptó.
El nombre se convirtió en M en el 1995 del 8 de diciembre con la aprobación de ANSI X11.1-1995
El de M y las PAPERAS de son nombres oficialmente aceptados.
M es solamente un " name" alterno; o " nickname" para la lengua, y las PAPERAS todavía está el nombre oficial.

Algo de la contención se presentó en respuesta a defensa fuerte de M de parte de un interés comercial, el InterSystems, cuyo ejecutivo tuvo aversión las PAPERAS conocidas y sentía que representó un obstáculo serio de la comercialización. Así, favorecer M hasta cierto punto se identificó como alineación con InterSystems. El conflicto también reflejó rivalidad entre las organizaciones (la asociación de la tecnología de M, el comité de desarrollo de las PAPERAS, el ANSI y comités de estándares de la ISO ) en cuanto a quién determina el " official" nombre de la lengua. Algunos escritores han intentado desactivar la edición refiriendo a la lengua como M '', los corchetes que eran la notación acostumbrada para los elementos opcionales del sintaxis.

El estándar más reciente (11756:1999 de ISO/IEC, reafirmado en el 2005 del 6 de enero ), todavía menciona M y PAPERAS como nombres oficialmente aceptados.

La época de las PAPERAS

En PAPERAS, la fecha y la hora actuales se contiene en una variable de sistema especial, $H (corto para el " HOROLOG"). El formato es un par de números enteros separados por una coma, e. " 54321,12345" El primer número es el número de días desde el 31 de diciembre, 1840, es decir el día número 1 es el 1 de enero, 1841 ; el segundo es el número de segundos desde medianoche.

La razón de esta opción no muy obvia de la época es un pedacito de las curiosidades de las PAPERAS. Poitras ha escrito que él eligió esta época para las rutinas de fecha y de la hora en un paquete desarrollado por su grupo en MGH en 1969:

" Recordaba la lectura del más viejo (una del más vieja?) Ciudadano de los E., veterano de la guerra civil, que era 121 años en ese entonces. Puesto que quise poder representar las fechas en un juliano - mecanografiar la forma de modo que la edad pudiera fácilmente ser calculada y poder representar cualquier fecha de nacimiento en la gama numérica seleccionada, yo decidía que una fecha el comenzar en el 1840s temprano sería “caja fuerte.” Desde mi algoritmo trabajó lo más lógicamente posible cuando cada cuarto año era un año bisiesto, el primer año fue tomado como 1841. El punto cero era entonces el 31 de diciembre, 1840 …. No era partido a las negociaciones del MDC, sino que expliqué la lógica de mi opción a los miembros del Committee."

(Versiones más coloridas han circulado en el folklore, sugiriendo, por ejemplo, que el el 1840 del 31 de diciembre era la fecha exacta de la primera entrada en los expedientes MGH, pero éstas parecen ser las leyendas urbanas.)

Un pedazo de curiosidades de las PAPERAS: $HOROLOG golpeó 60000 el el 10 de abril, 2005 ; ser 70000 el el 26 de agosto, 2032 ; 80000 el el 12 de enero, 2060 ; 90000 el el 30 de mayo, 2087 ; y 100000 el el 16 de octubre, 2114 .

Opinión

Los discusiones sobre los méritos y las desventajas de la lengua de las PAPERAS son virtualmente nada por razones pragmáticas. Muchos usos existentes de las PAPERAS han estado en uso de la producción desde los años 70 y serían infeasible (o por lo menos, muy costosos) reescribir en otra lengua. Las empresas de informática que venden usos Papera-basados tensionan raramente la lengua en la cual se escribe el uso, que no da a usuario final la oportunidad de obrar recíprocamente con la lengua. Así, los usos se venden en sus propios méritos, no la lengua.

El competidor importante de las PAPERAS en la arena base de datos-especializada de la lengua es el SQL . El SQL no se puede utilizar generalmente en sus los propios sin embargo, pues no es una lengua completa . Ni uno ni otro hace el SQL especifica cómo la base de datos debe ser estructurada. Cuando una puesta en práctica de las PAPERAS se compara a otras idiomas, es generalmente una combinación de varias idiomas y de un vendedor de la base de datos, por ejemplo SQL + el C + Oracle, o el SQL + Perl + PostgreSQL . Algunos vendedores de las PAPERAS incluso apoyan combinación del SQL + de las PAPERAS. Las PAPERAS ofrecen ambos más y menos funcionalidad nativa en diversas áreas que la combinación de SQL y de C, y pueden superar o underperform un sistema equivalente construido con Oracle dependiendo varios factores. Las comparaciones son siempre difíciles, quizás parcialmente explicando porqué nunca ha habido un aliciente convincente para reescribir usos de las PAPERAS en otras idiomas. Los usos base de datos-conducidos a estrenar son probables ser escritos en el SQL y C, PHP u otra lengua popular simplemente porque hay una piscina de talento mucho más ancha de la gente con esas habilidades.

favorable

Los vendedores de las PAPERAS han llamado a PAPERAS el " secreto Mejor-guardado en IT", y Richard G. Davis (en Walters, 1989) comentaron ese " Donde ha estado una consideración la economía primaria… la lengua de las PAPERAS ha distinguido itself."

Los abogados de las PAPERAS lo creen para estar debajo de apreciado -- en la parte debido a su edad venerable, a su nombre gracioso, y al " indiferencia total al correctness" académico;.

Las PAPERAS tienen varias características para recomendarlo. Pueden funcionar con los requisitos de sistema minúsculos, non-programmers pueden aprender fácilmente su sintaxis simple, los nuevos programadores pueden ver resultados muy rápidamente. Muchas de las características nativas de la lengua están disponibles en otras idiomas solamente a través de bibliotecas adicionales, si en absoluto. Las ventajas de las PAPERAS sobre otras idiomas disponibles en los años 70 entonces estaban claras, en algunos espacios del uso. Utilizó típicamente lejos menos memoria y recursos de la CPU que balbucea, y permite el programador más fácil obrar recíprocamente con una base de datos que el FORTRAN.

Los abogados de las PAPERAS demandan a menudo ventajas significativas de la velocidad sobre su competición. Una prueba patrón en el principios de los 80 patrocinada por la DEC encontró que la puesta en práctica de DSM de la DEC que funcionaba en el hardware de la DEC era 3-6 veces más rápidamente que Oracle que funcionaba en el hardware de IBM y del HP. No parece haber ninguna estudios de comparación con los resultados público - disponibles después de 1990.

En algunos usos, el acceso directo y uncluttered de las PAPERAS a los datos almacenados es una considerable ventaja sobre sistemas de base de datos modernos más complejos.

Estafa

La carencia de las PAPERAS del renombre y sus diferencias de las idiomas modernas en uso extenso son quizás sus desventajas más grandes. Las limitaciones de la longitud del nodo de la longitud y de la base de datos de la secuencia (que varían con la puesta en práctica) así como la carencia del DBMS incluido, u orientado al objeto, las características son a menudo críticas citadas por los observadores neutrales.

Las soluciones alternativas no estándar, vendor-specific se ofrecen para la mayor parte de estos problemas, pero usarlos pueden hacer código no-portable a otras puestas en práctica de las PAPERAS.

La lengua permite el uso de los comandos INDICADOS que pueden reducir el tiempo de desarrollo requerido para solucionar problemas específicos pero, como todas las declaraciones no estructuradas en cualquier lengua, puede animar el uso Antipatterns y por lo tanto a hacer la eliminación de errores de más difícil. Las declaraciones indicadas han sido de largo " harmful" considerado; y ser teóricamente innecesario en todo caso. Están sin embargo, utilizado con frecuencia en código de las PAPERAS; si están utilizadas con disciplina y cuidado, sus desventajas pueden hacia fuera no pesar su conveniencia.

Programas de muestra

“Hola un programa más avanzado del mundo”. hellohtml del
 ()   ; Esto vuelve a dirigir toda la salida a un archivo, aquí un archivo de HTML.  FIJAR el dev=" WWW/HelloWorld.htm"  ABRIR el revelador   UTILIZAR el revelador  HACER el HTML  CERRAR el revelador  PARAR  ; ¡HTML W!, " "   Dirigir, cuerpo  " de W; " ¡!  Q  ; cabeza; las subrutinas similares del Javascript y del estilo podían ser agregadas.  ¡W!, " "   HACER el Javascript, estilo  " de W; " ¡!  Q  ;  ¡cuerpo W!, " "   HACER H1  ¡W!, " " ¡!  Q  ; ¡H1 W!, " pt'>" de 

2&'(%Y#4)+$P (" ^31^59^90^120^151^181^212^243^273^304^334", " ^", %M)+%D ¡S EL %='% M! '%D, %Y=%Y-141, %H=%H+ (%Y*365) + (%Y \ 4) - (%Y>59) el +%, %Y=$S (%: - 1.1: %H+4#7) K %M, %D, % DE Q ; DOW D H S Y=%Y K %H, %Y Q DW D H S Y=%Y, X=$P (" SUN^MON^TUES^WEDNES^THURS^FRI^SATUR", " ^" ,) _" Y+1; DAY" S: Y<0 X=" " Q 7 S %=%H>21608+%H-.25 \ 1 S %D=%+306# (%Y#4=0+365) #153#61#31+1, %M=%-%D \ 29+1 S X=%Y_" 00" +%M_" 00" +%D Q ; YX D YMD S EL Y=X_% G DD^%DT YMD D 7 S %=$P (%H, ", ", 2) D S K %D, %M, %Y Q T F %=1: 1 S Y=$E (X, %) Q: " +-" G 1^%DT: $E (" TODAY", %) 'del =Y S X=$E (X, %+1.: Y=" " I +X'= X D DMW S el X=% G: 'X 1^%DT P.S @ (" %H=$H" _Y_X) D TT G 1^%DT: ¿%I (3) '? 3N, D^%DT N-F %=2: 1 S Y=$E (X, %) Q: " +-" G 1^%DT: $E (" NOW", %) 'del =Y I Y=" " S %H=$H G RT S X=$E (X, %+1.N1" H" S X=X*3600, %H=$H, @ (" X=$P (%H, " ", " ", 2)" _Y_X), %=$S (X<0: - 1.1: 0) + (X \ 86400), X=X#86400, %H=$P (%H, ", ")+%_", " _X G RT D DMW G 1^%DT: '% de S @ (" %H=$H" el _Y_%), %H=%H_", " _$P ($H, ", ", 2) RT D TT S %=$P (%H, ", ", 2) D S S EL %=X_% I %DT S %=+$E (%, 1.12) Q: '$D (% (0)) S el Y=% G E^%DT PICOFARADIO S %H=$H D YMD S %(9)=X, X=%DT I @ (" %I (1)*100+%I (2)" _$E (" > <" ,) _" X+2; " de $E (%(9), 4.7);) S %I (3)=%I (3)+X Q TT D 7 S %I (el 1)=%M, %I (2)=%D, %I (3)=%Y K %M, %D, %Y Q AHORA S %H=$H, %H=$S ($P (%H, ", ", 2): %H, 1: %H-1) D TT S %=$P (%H, ", ", 2) D S S %=X_$S (%: %, 1: .24) Q ¿DMW S %=$S (X? 1.N1" D": ¿+X, X? 1.N1" W": ¿X*7, X? 1.N1" M": X*30, +X=X: X, 1: 0) Q COMA; S %D=X<0 S: %D X=-X S %=$S ($D (X2): +X2,1: 2), X=$J (X, 1, %), %=$L (X) - 3-$E (23456789, %), %L=$S ($D (X3): X3,1: 12) F el %=%: - 3 Q: =" de $E (X, %); " _" DE S X=$E (X, 1, %);, " _$E (X, %+1.99) S: $D (X2) X=$E (" $", X2 S X=$J ($E (" (", %D) _X_$E (" ) ", %D+1), %L) K %, %D, %L Q AYUDA S DDH=$S ($D (DDH): DDH, 1: 0), A1=" Ejemplos de fechas válidas: " D % S. 1=" 20 DE ENERO DE 1957 o 20 de enero de 57 o 1/20/57" _$S (%DT o 012057", 1: " ") D % S. 1=" T (para el HOY), T+1 (para la MAN¢ANA), T+2, T+7, etc. 1=" T-1 (para el AYER), T-3W (por HACE 3 SEMANAS), etc. 1=" Si se omite el año, el " de la computadora; _$S (%DT a la fecha en el PAST.", 1: " utiliza el YEAR." ACTUAL;) D % I %DT S. 1=" Usted puede omitir el día exacto, como: ENERO, 1957" D % I %DT G 0 S. 1=" Si se omite la fecha, la fecha actual es assumed. 1=" Seguir la fecha con una época, tal como el 20 DE ENERO @10, T@10AM, 10:30, etc. 1=" Usted puede incorporar una época, tal como MEDIODÍA, MEDIANOCHE o NOW. 1=" Los segundos se pueden incorporar como 10:30: 30 o 103030AM. 1=" El tiempo SE REQUIERE en este response." D % 0 Q: '$D (%DT (0)) S. 1=" " % de D S. 1=" Incorporar una fecha que sea " _$S (%DT (0) que o igual al " D % S Y=$S (%DT (0) D DD^%DT: Y'[" NOW" I '$D (DDS) W Y, ". " K A1 Q S DDH (DDH, " T")=DDH (DDH, " T")_Y_". " K A1 Q ; ¡% DE I '$D (DDS) W!, " ", A1 Q S DDH=DDH+1, DDH (DDH, " T")=" " _A1 Q

¡derechos reservados en el texto del código fuente o del acompañamiento un de los documentos; FMANPROG.TXT cada uno contienen explícitamente " de la declaración; El VA FileMan es un paquete de programas informáticos del public domain se desarrolla que y mantenido por el departamento de los veteranos Affairs." Así, no se requiere ningún permiso de los derechos reservados para reproducir este paso en Wikipedia.
  • Zenithic
  • Beta Canum Venaticorum
    Random links:Música vasca | Naomi Wildman | Cantante de Vernon | Parque de Basildon | Dialectos eslovenos

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">