Euforia | |
---|---|
Semántica | imperativo |
clase de idioma | procesal |
tipo de ejecución | interpretación , interpretación de bytecode , traducción C |
Apareció en | 1993 |
Autor | Robert Craig (creador) y Jeremy Kovgar, Matt Lewis, Derek Parnell (desarrolladores de la versión 4) |
Desarrollador | abrir Grupo Euphoria |
extensión de archivo | .e, .ex, .exw, .edb |
Liberar | 4.15.2 [1] (15 de agosto de 2019 ) |
Versión de prueba | 4.1 Beta 2 |
sistema de tipos | estático , dinámico |
Dialectos | RDS Euforia, openEuphoria |
sido influenciado | BÁSICO , C |
influenciado | Fijar |
Licencia | abierto |
Sitio web | openeuphoria.org |
sistema operativo | multiplataforma |
Archivos multimedia en Wikimedia Commons |
Euphoria ( [ju:ˈfɔ:riə] , yufori, también ruso euforia, alegría) es un lenguaje de programación creado por Robert Craig (Rapid Deployment Software) [2] en Toronto , Canadá . El nombre Euphoria es un acrónimo de "Programación de usuario final con objetos jerárquicos para aplicaciones interpretadas robustas".
El primer lanzamiento público [3] fue para máquinas de 32 bits (i386) con MS-DOS y fue propietario (1993). En 2006, con el lanzamiento de la versión 3 [4] , el proyecto Euphoria se volvió abierto y fue desarrollado por la comunidad OpenEuphoria [5] , que en diciembre de 2010 lanzó la cuarta versión [6] con un nuevo logotipo y mascota [7 ] . La versión 4.* del paquete OpenEuphoria está disponible actualmente para Microsoft Windows , Linux , Mac OS X y tres sistemas BSD ( FreeBSD , NetBSD , OpenBSD ).
Euphoria es un lenguaje imperativo interpretado de propósito general y alto nivel . El código fuente de Euphoria se puede usar para generar código fuente C usando un traductor , que a su vez se puede compilar en un archivo ejecutable o en una biblioteca dinámica usando compiladores como GCC , OpenWatcom , etc. El programa Euphoria también se puede "enlazar" [8 ] con un intérprete para producir un autoejecutable . Se admiten varias bibliotecas GUI , incluidas Win32lib [9] y contenedores para wxWidgets [10] , GTK+ [11] e IUP [12] . Euphoria tiene un sistema de base de datos simple integrado [13] y contenedores para trabajar con otros tipos de bases de datos [14] .
Euphoria es un lenguaje de procedimientos de propósito general que se caracteriza por su simplicidad, legibilidad, implementación rápida y alto rendimiento.
SencillezEl desarrollo del lenguaje Euphoria comenzó con los experimentos de Robert Craig [2] en la computadora personal Atari Mega-ST [15] . Muchas ideas de diseño de idiomas provinieron de la tesis de maestría de Craig en la Universidad de Toronto [16] . La disertación fue escrita bajo la influencia del trabajo de John Backus sobre lenguajes de programación funcionales [16] .
Luego, Craig transfirió la implementación original de Atari del lenguaje a la plataforma de 32 bits de 386 máquinas que ejecutan Microsoft MS-DOS y lanzó el primer paquete (versión 1.0) en julio de 1993 [3] bajo una licencia propietaria , fundando su propia empresa Rapid Deployment. Softawre (RDS) para el desarrollo y venta del intérprete Euphoria en la variante DOS32. Craig llama a la implementación original de Atari "primitiva" [17] y no la publicó. Hasta 2006, Craig continuó desarrollando y publicando Euphoria en su firma (rapideuphoria.com [2] ), compuesta por él y su esposa Janko Miura, lanzando más de una docena de versiones en dos series, 1.* y 2.*. En octubre de 2006, RDS lanzó la tercera [4] serie Euphoria y anunció que, en el futuro, Euphoria se distribuiría libremente bajo una licencia de código abierto. El resultado de trabajar con las series propietarias 1 y 2 es una comunidad de usuarios registrados en 67 países de todo el mundo, incluidos muchos programadores, cuyo número exacto solo se conoce en RDS, pero en el momento del lanzamiento de la versión 2.5 estaba bien Más de mil.
Bajo la supervisión directa de RDS, la comunidad ha seguido lanzando Euphoria, actualizando el paquete a la versión 3.1.1 (agosto de 2007) [16] [18] . Desde entonces, RDS se ha alejado gradualmente del liderazgo del desarrollo de Euphoria, y la comunidad OpenEuphoria [5] realiza más mejoras y cambios bajo el liderazgo colegiado. En diciembre de 2010 [19] la comunidad lanzó la versión 4.0, comenzando la Serie 4, ahora con un nuevo logotipo y mascota del proyecto [7] .
La versión 3.1.1 es un hito importante en la evolución del lenguaje, ya que es la última versión oficialmente compatible con la plataforma MS-DOS [20] . La versión 3.1.1 sigue siendo la última versión de la estricta dirección clásica, sin las "libertades" que aparecieron en la 4ta.
Una breve lista de innovaciones que han aparecido desde la versión 4.0.0 [21] :
y mucho más.
El intérprete de lenguaje Euphoria se escribió originalmente en su totalidad en C. Desde la versión 2.5 [16] , lanzada en noviembre de 2004, el intérprete se ha dividido en dos partes: un analizador escrito en Euphoria y un intérprete de bytecode escrito en C.
Euphoria fue concebido y desarrollado con los siguientes objetivos y características en mente:
Euphoria pretende ser una solución llave en mano para facilitar el manejo de colecciones dinámicas de datos de varios tipos, y es particularmente útil para manejar cadenas e imágenes. Euphoria se utiliza para experimentar con inteligencia artificial , estudiar matemáticas , enseñar programación y crear fuentes que constan de miles de caracteres. Una parte bastante grande del intérprete de Euphoria está escrita en Euphoria.
Euphoria tiene cuatro tipos de datos integrados:
átomo (átomo) un número implementado como un entero con signo de 31 bits o un número de punto flotante IEEE de 64 bits . Euphoria cambia dinámicamente entre representar un número como un número entero o un número de punto flotante dependiendo de su valor actual. secuencia (número, secuencia) un conjunto formado por varios elementos. Cada elemento del conjunto puede ser un átomo o un número . El número de elementos de fila no es fijo (no requiere declaración obligatoria). El programa puede agregar o eliminar elementos según sea necesario en cualquier momento. La asignación/desasignación de memoria se gestiona automáticamente mediante el recuento de referencias. Se accede a los elementos individuales utilizando el valor de índice encerrado entre corchetes. El índice del primer elemento es [1]. Se accede a los elementos de la serie anidada utilizando índices adicionales entre corchetes, por lo que X[3][2] se refiere al segundo elemento de la serie anidada, que es el tercer elemento de la serie X. Cada elemento de la serie es de tipo objeto ( objeto) (ver más abajo). entero (entero) un átomo cuyos valores solo pueden ser números enteros de −1073741824 a 1073741823 (de −2 30 a 2 30 -1). El tipo entero suele ser más eficiente en las operaciones que el tipo átomo , pero no puede contener el mismo rango de valores. Los caracteres se almacenan como números, por ejemplo, ASCII 'A' es lo mismo que 65. objeto Objeto) un tipo de datos general que puede contener datos de cualquiera de los tipos enumerados ( átomo , secuencia o entero ) que cambian durante la ejecución del programa.Euphoria no tiene un tipo de datos especial para cadenas de caracteres . Una cadena es una serie de enteros , pero las cadenas usan la notación habitual entre comillas dobles. Así, en el programa Euphoria
"ABC"equivalente a:
{'A', 'B', 'C'}y equivalentemente:
{65,66,67}Además de los tipos integrados, un programa Euphoria puede funcionar con tipos de datos definidos por el programador que especifican un rango más estrecho de valores de variables dentro de los límites de los tipos integrados. Los tipos de datos definidos por el usuario se utilizan principalmente al depurar un programa; después de la depuración, la directiva puede deshabilitar la verificación de estos tipos without type_check, mientras que la verificación de los tipos integrados siempre permanece habilitada.
El siguiente código busca el elemento x en un grupo de elementos. Si se encuentra dicho elemento, se elimina concatenando todos los elementos del grupo anterior con todos los elementos posteriores. Tenga en cuenta que el primer elemento de la serie tiene índice uno [1], y el signo de dólar $ como índice denota el número del último elemento de la serie.
función delete_item ( objeto x, grupo de secuencia ) entero pos pos = encontrar (x, grupo) si pos > 0 entonces grupo = grupo[1 .. pos-1] & grupo[pos+1 .. $] terminara sifunción de fin de grupo de retornolínea de código
group = group[1 .. pos-1] & group[pos+1 .. $]muestra una forma de trabajar con series [23] . Una fila puede contener un grupo de elementos de cualquier tipo, y pueden seleccionarse y luego combinarse ( concatenarse ) con otra fila usando operadores integrados. La operación de seleccionar los elementos de una serie se denomina sección de la serie.
La siguiente modificación del ejemplo anterior reemplaza el elemento antiguo por el nuevo. Como las variables old y new se declaran como objetos, pueden ser tanto átomos como series. No se requiere verificación de tipo porque la función puede operar en cualquier tipo de datos.
función replace_item ( objeto antiguo, objeto nuevo, grupo de secuencia ) entero pos pos = encontrar (antiguo, grupo) si pos > 0 entonces grupo[pos] = nuevo terminara sifunción de fin de grupo de retornoLos parámetros a la subrutina siempre se pasan por valor, sin embargo, inicialmente solo se pasa una referencia al objeto, y su copia se crea solo si la subrutina intenta cambiarla, y luego la subrutina trabaja con la copia, y no con el objeto. en sí mismo (el llamado método de “ copia en escritura ”). Así, el parámetro puede cambiar dentro de la subrutina, mientras que el objeto original permanece sin cambios. Opcionalmente, se puede pasar una copia modificada del objeto como valor de retorno de la función.
Hay una modificación de la versión 2.5 de Euphoria con palabras clave en inglés y ruso (en codificación CP866 ) y un alfabeto ilimitado para identificadores, desarrollado con la participación de Craig [24] . También se está desarrollando un mod bilingüe para Euphoria versión 3, actualmente en alfa.
Phix [25] es un compilador de lenguaje de programación desarrollado por Pete Lomax basado en la sintaxis RDS Euphoria, pero con las siguientes diferencias [26] [27] :
Por el momento, la versión actual 0.6.2 del compilador, lanzada el 10 de julio de 2011, tiene un estado beta.
Julieta Kemp. Codificación alegre con OpenEuphoria // LinuxFormat (versión en inglés). - Noviembre 2013. - Nº 176 .
Lenguajes de programación | |
---|---|
|