Modern Pascal (a veces estilizado como ModernPascal ) es un sistema de código cerrado , multiplataforma , intérprete , compilador y en tiempo de ejecución (entorno) para aplicaciones de red, del lado del servidor y de la línea de comandos . Las aplicaciones modernas de Pascal están escritas en Pascal y Object Pascal , y se pueden ejecutar dentro del tiempo de ejecución de Modern Pascal en los sistemas operativos Microsoft Windows , Linux , macOS , FreeBSD , Solaris y DOS / 32.. Su trabajo está alojado y respaldado por 3F, LLC y su socio MP Solutions, LLC.
Autor (es) original (es) | Ozz Nixon |
---|---|
Desarrollador (es) | 3F, LLC Soluciones modernas de Pascal, LLC |
Versión inicial | 2000 |
Lanzamiento estable | 2.0 / 26 de febrero de 2020 |
Escrito en | Pascal , Object Pascal , Free Pascal , Turbo Pascal |
Sistema operativo | macOS , Linux , Solaris , FreeBSD , OpenBSD , Windows DOS / 32 |
Plataforma | IA-32 , x86-64 |
Tipo | CLI de secuencias de comandos de servidor de red |
Licencia | Propiedad |
Sitio web | modernpascal |
Modern Pascal proporciona una tecnología de interfaz de programación de aplicaciones (API) de E / S de bloqueo que se usa comúnmente para las aplicaciones del sistema operativo .
Modern Pascal CodeRunner contiene una biblioteca incorporada para permitir que las aplicaciones actúen como un servidor web sin software como Apache HTTP Server o Internet Information Services (IIS).
Historia
Modern Pascal fue inventado en 2000 por Ozz Nixon mientras también desarrollaba DXJavaScript con Alexander Baronovski. Ozz se inspiró en el proyecto Borland Kylix en 1999, donde se reunió con el equipo Pascal de Borland y compartió su lenguaje de programación "Modern Pascal". [1] Ozz portó su suite de sockets comerciales DXSock a Kylix y luego comenzó a desarrollar Modern Pascal, por lo que ejecutó scripts pascal en Microsoft Windows, Linux y OS X. [2]
En 2002, se lanzó la versión 1.1. Podría ejecutar la mayoría de la sintaxis de Turbo Pascal (DOS). Fue la última versión que usa Variants internamente como instancias de código y variable. Introdujo soporte para unidades RTL integradas, lo que permite extender la gramática del lenguaje para admitir llamadas CRT / Display y TCP / IP Socket.
En 2005, se lanzó la versión 1.2. Estaba disponible para plataformas de 64 bits , con binarios nativos de 64 bits y soporte interno para números de 64 bits y direcciones de memoria.
En 2007, se lanzó la versión 1.3. Agregó soporte multiplataforma para bibliotecas dinámicas, .so, .dylib, .DLL. Fue la primera versión capaz de desarrollar aplicaciones de interfaz gráfica de usuario (GUI) para Windows nativo y Linux Qt . Al admitir bibliotecas externas, el lenguaje ya no se limitaba a una línea de comandos o una función de motor de secuencia de comandos del servidor web.
En 2008, se lanzó la versión 1.4. Tenía una bifurcación llamada internamente DECisioning LANguage (DECLAN) para su uso en la industria crediticia y financiera. También introdujo la compatibilidad de TDataset con el compilador Borland Delphi junto con la capacidad de conectarse a bases de datos a través del soporte ODBC integrado. Esto permite aprovechar casi todos los motores de bases de datos SQL para la línea de comandos y el uso de la Web.
En 2009, se lanzó la versión 1.5. Fue un rediseño de la fase del analizador Lexicon . Es la primera versión que comienza a incluir sintaxis de otros lenguajes populares como + =, - =, * -, / = de C y JavaScript . Estaba disponible como un módulo Apache nativo para Windows, Linux y OS X.
En 2010, se lanzó la versión 1.6. Incorpora más unidades RTL integradas: cifrados, compresiones, hash. Se centró en la migración de aplicaciones a la web y necesitaba soporte integrado para cifrados comunes, hashes y algoritmos de compresión utilizados por aplicaciones de transferencia de estado representacional (RESTful).
En 2011, se lanzó la versión 1.7. Fue un rediseño del Módulo Apache. A partir de esta versión, Modern Pascal ya no se incorporó al módulo Apache. Se introdujo Modern Pascal Celerity , inspirado en el diseño del back-end de Adobe ColdFusion nTier para servidores web. Esto significa que en una versión futura se podrían implementar FastCGI, ISAPI e incluso antiguas interfaces CGI y NSAPI. La versión 1.7 también introdujo una característica antigua de Pascal 3.0 llamada Chaining en un estilo un poco más moderno.
En 2013, se lanzó la versión 1.8. Introdujo soporte para clases similares a Delphi, registros inteligentes, uniones y creación de instancias propias. Fue la primera versión en la que Modern Pascal comenzó a convertirse en un dialecto de Pascal.
En 2014, se creó la versión 1.9, pero no se lanzó. Se utilizó para construir DevelopIP, un sitio web público a gran escala. [3]
En 2015, se inició la versión 2.0. Es un tenedor de lape. Si bien las versiones anteriores eran rápidas y eficientes, no eran lo suficientemente rápidas para algunos clientes más importantes. Luego, los puntos de referencia mostraron que la v2.0 puede procesar más de 100 millones de instrucciones por segundo, aproximadamente 8 veces más rápido que la versión 1.9 y mucho más rápido que los motores de secuencia de comandos Pascal alternativos. En julio de 2015, la versión 2.0 entró en su último ciclo Beta privado. El equipo transfirió fragmentos de código y aplicaciones antiguas a 2.0 y publicó el código en GitHub .
En 2017, se lanzó la versión 2.0. Incluye compatibilidad nativa con dBase III +, IV, V, VII, Clipper y FoxPro. Durante los 24 meses de desarrollo, 3F se ha adaptado a GitHub, Source a 17 BBSes (incluidos QuickBBS, TPBoard, Hermes), Protocolo BinkP (Fidonet), múltiples Tossers, Adventure Game Studio (1984), Custom Micro Solutions, Inc. Contabilidad y Software de Punto de Venta, Aplicaciones Web RIA. 3F también introdujo soporte transparente para gráficos ASCII, ANSI y UTF8 extendidos.
En 2018-2019, se incluyó el acceso nativo al servidor Premier SQL Middleware. Se amplió la unidad de video y comunicaciones para traducir caracteres CodePage 437 de 8 bits a caracteres UTF8. Se agregó soporte para ASPELL y se implementaron binarios de Linux, Mac y Windows en github.
Descripción general
La moderna interfaz de línea de comandos de Pascal permite crear y ejecutar programas similares a DOS , utilizando Pascal y décadas de código fuente libre , para una amplia gama de clases de negocios y utilidades de comandos.
Modern Pascal Celerity permite crear programas similares al middleware independiente o un motor backend. Combinado con el módulo Apache, Celerity se puede utilizar para crear una amplia gama de programas de secuencias de comandos web.
El moderno Pascal CodeRunner permite crear herramientas de red independientes, incluidos servidores web , servidores de correo electrónico y servidores de chat. CodeRunner administra las comunicaciones del Protocolo de control de transmisión (TCP) para el código, incluso Transport Layer Security (TLS, anteriormente Secure Sockets Layer (SSL)). Para el desarrollo, simplemente concéntrese en lo que sucede después de que se establece una conexión.
Muestra de código
Aquí hay una muestra de código para el botín del juego : [4]
Programa de juego . Botín . Ejemplo ;usa matemáticas ;const MaxProbability = 1000 ;type LootType = ( Bloodstone , Cobre , Esmeralda , Oro , Heronita , Platino , Shadownita , Plata , Soranita , Umbrarita , Cobalto , Hierro , Nada ) ; Saqueador = Probabilidades de clase : Matriz [ 0 .. 12 ] de Longint ; Elija : función privada : LootType de objeto ; AsString : función privada ( l : LootType ) : Cadena de objeto ; Fin ; función Saqueador . Elija : LootType ; var Loop , randomValue : Word ;Comenzar randomValue : = Random ( MaxProbability - 1 ) ; Bucle : = 0 ; Mientras Probabilites [ Loop mod 13 ] < randomValue do Inc ( Loop ) ; Resultado : = LootType ( Loop mod 13 ) ; Fin ;función Saqueador . AsString ( l : LootType ) : Cadena ; Comience el Caso 1 de Bloodstone : Resultado : = 'Bloodstone' ; Cobre : Resultado : = 'Cobre' ; Esmeralda : Resultado : = 'Esmeralda' ; Oro : Resultado : = 'Oro' ; Heronita : Resultado : = 'Heronita' ; Platino : Resultado : = 'Platino' ; Shadownite : Resultado : = 'Shadownite' ; Plata : Resultado : = 'Plata' ; Soranita : Resultado : = 'Soranita' ; Umbrarita : Resultado : = 'Umbrarita' ; Cobalto : Resultado : = 'Cobalto' ; Hierro : Resultado : = 'Hierro' ; Else Resultado : = '' ; Fin ; Fin ;procedimiento Saqueador . Libre ; Comenzar Fin ;// Debe aparecer después de todas las demás implementaciones // Saqueador de procedimientos . Init ; Comenzar Aleatorizar ; with Self do begin // ¡Se usa para vincular métodos a instancia! Probabilites [ 0 ] : = 10 ; Probabilitas [ 1 ] : = 77 ; Probabilitas [ 2 ] : = 105 ; Probabilitas [ 3 ] : = 125 ; Probabilitas [ 4 ] : = 142 ; Probabilitas [ 5 ] : = 159 ; Probabilitas [ 6 ] : = 172 ; Probabilitas [ 7 ] : = 200 ; Probabilitas [ 8 ] : = 201 ; Probabilitas [ 9 ] : = 202 ; Probabilitas [ 10 ] : = 216 ; Probabilitas [ 11 ] : = 282 ; Probabilites [ 12 ] : = MaxProbability ; // para evitar la sobrecarga de RTTI / VMT: TMethod ( @ asstring ) : = [ @ Looter . AsString , @ self ] ; TMethod ( @ choose ) : = [ @ Looter . Elija , @ self ] ; TMethod ( @ free ) : = [ @ Looter . Libre , @ self ] ; Fin ; Fin ; var loot : saqueador ; n : longint ;comenzar el botín . init ; para n : = 0 a 99 hacer Writeln ( Loot . AsString ( Loot . elegir )) ; // para n: = 0 a 99 hacer Writeln (Loot.choose); {esto usó una macro incorporada para convertir Enum a String} botín . liberar ; final .
PRODUCCIÓN
Muestra una lista aleatoria de botines que se pueden encontrar mientras se navega por un juego de laberinto / mapa.
Reemplazó la muestra de código original con algo que es más fácil de leer / seguir.
Hola Mundo
Modern Pascal puede ejecutar la sintaxis de Turbo Pascal. Por lo tanto, el programa Hola mundo se codifica como en Pascal normal "Hola mundo".
programa HelloWorld ; begin Writeln ( '¡Hola, mundo!' ) ; final .
Modern Pascal es compatible con Brief Pascal, por lo que las declaraciones se pueden ejecutar con menos formalidad.
Writeln ( '¡Hola, mundo!' ) ;
Unidades empotradas
En la nomenclatura de Pascal, un conjunto de métodos reutilizables se denomina Unidad , otros lenguajes suelen llamar a estos módulos o bibliotecas. Modern Pascal tiene unidades integradas para manejar la visualización, llamadas de entorno como entrada / salida (E / S) del sistema de archivos , sockets para redes TCP , datos binarios (búferes), clases y objetos, funciones de criptografía , flujos de datos , expresión regular , colecciones. , registro, archivos de configuración usando ini , formatos de valores separados por comas (CSV) o SDF (similar a CSV), bases de datos a través de Open Database Connectivity (ODBC), dBase integrado, Clipper y FoxPro, y otras funciones básicas.
Dependencias
Modern Pascal funciona sin necesidad de bibliotecas de terceros. Opcionalmente, puede requerir OpenSSL para lograr escuchas y clientes TLS-SSL.
Archivos incluidos
- Moderna Pascal Compiler Comercial:
mpc
(Windows:mpc.exe
) - Pascal moderna interfaz de línea de comandos:
mp2
(Windows:mp2.exe
) - Moderna Pascal RTL motor (para los scripts compilados):
mpx
(Windows:mpx.exe
)- En macOS y Linux (s), el script compilado contiene! # / Bin / mpx para autoejecutar
- Moderna Pascal Celeridad:
celerity2
(Windows:celerity2.exe
) - Módulo Apache moderna Pascal para Celeridad:
mod_pascal.so
(Windows:mod_pascal.dll
) - Moderna Pascal CodeRunner:
coderunner2
(Windows:coderunner2.exe
)
Enhebrado
Modern Pascal opera usando un modelo de hilo único, usando el bloqueo de llamadas de E / S. Celerity y CodeRunner son motores de subprocesamiento automático que permiten a Modern Pascal admitir decenas de miles de conexiones simultáneas. El diseño de un solo hilo para cada instancia de código significa que puede usarse para construir aplicaciones confiables. El objetivo de diseño de una aplicación Pascal moderna es que cualquier nivel de habilidad del programador pueda operar sin temor a pérdidas de memoria, colisión variable entre subprocesos, etc. Este enfoque permite escalar con el número de núcleos de CPU de la máquina que está ejecutando. . El aspecto negativo de este enfoque es el aumento de los contextos de conmutación de subprocesos. Modern Pascal se ha probado en una computadora portátil Dell básica que maneja más de 50,000 conexiones o scripts simultáneos.
Referencias
- ^ "Pascal moderno: Wiki pública" . C2.com . Ward Cunningham . Consultado el 28 de marzo de 2016 .
- ^ "Evolución de Pascal moderno: Blog público" . Todo Nu.de . Consultado el 28 de marzo de 2018 .
- ^ "DevelopIP" .
- ^ "Muestras de lenguaje Pascal moderno" . Soluciones modernas de Pascal, LLC . Consultado el 18 de marzo de 2018 .
enlaces externos
- Página web oficial
- Repositorio de muestras en GitHub