Se proponen un lenguaje de programación en español que pueda ser traducido a otros lenguajes de alto nivel; un repositorio de vocabulario y entidades que contenga los elementos que emplear para la construcción de los identificadores en la programación; un repositorio de código público que aloje las acciones desarrolladas; y un entorno de desarrollo básico. Y se valida mediante un prototipo.
Motivaciones... Aspectos que mejorar: - Código claro y sencillo. Dificultado por las prisas,...
-- Problemas: identificadores sin significado (i, j, p), líneas blancas aleatorias, ...
- Estructuras de datos poco claras -- Problemas: mala nomenclatura, falta de ejemplos, ...
- Demasiados lenguajes de programación: -- Parecidos en mucho, diferentes en poco.
-- Librerías nuevas que hacen lo mismo que las otras.
-- Especializados en exceso.
- Poca reutilización de código -- No se sabe dónde encontrar el código a reutilizar -- No se sabe lo fiable que es.
-- Su código no es muy legible o comprensible.
Objetivos I - Un lenguaje de programación sencillo.
-- Fácil de aprender.
-- Utilizable para documentar comportamientos dinámicos en ingeniería del software.
-- Que no compita con otros lenguajes.
--- Traducible a otros lenguajes de programación --- Permitir incluir código de otros lenguajes.
- Un repositorio global que contenga código fuente escrito en dicho lenguaje de programación.
-- Contendría el código que se quiere compartir.
-- Escrito en el nuevo lenguaje de programación .
-- Sin uso comercial, disponible en Internet, según la filosofía Web 2.0 (mantenido por la comunidad web) Objetivos II - Un repositorio de vocabulario y entidades disponible para facilitar la nomenclatura de nuevos elementos de programación y de posibles estructuras de datos.
-- Contendrá un vocabulario reducido.
-- En el idioma español, con restricciones como: --- Emplear solo el singular.
--- Usar masculino o femenino, no ambos.
--- Evitar sinónimos.
--- Utilizar verbos solo en infinitivo, gerundio y participio.
--- Admitir palabras compuestas, unidas por guion bajo (_).
-- Sin uso comercial, disponible en Internet, según la filosofía Web 2.0 (mantenido por la comunidad web) Objetivos III - Un entorno de programación simple para la escritura de programas.
-- De código abierto y gratuito, y disponible a todos los programadores, en Internet.
-- Integrado con el repositorio de las acciones.
-- Incluye un editor de texto sencillo --- Permite incluir instrucciones a través de formularios --- Sintaxis coloreada.
-- Con herramientas para: --- La comprobación del código --- La traducción a otro lenguaje de programación.
Un nuevo lenguaje de programación I - Nombre: EPI, por sus tres tipos de código: -- Entidad: Definen algoritmos y es fácilmente traducible a otros lenguajes de programación -- Procedimiento: Compatible con los procedimientos dinámicos de la ingeniería del software.
-- Interfaz: Permite la mezcla de códigos.
- Características del lenguaje Epi (I): -- Alto nivel -- Programación procedural, completa.
-- P.O. a Objetos, parcial (solo al nivel de métodos).
-- P. Lineal, parcial (sin saltos (goto)).
-- P. Estructurada, completa.
-- P. Modular, módulos por función o procedimiento.
Un nuevo lenguaje de programación II - Características del lenguaje Epi (II): -- Lenguaje genérico.
-- Turing completo (como la mayoría de lenguajes p.) -- Gramática tipo 2 (como la mayoría de lenguajes p.) -- Semántica compatible con la dinámica y la estática.
-- Tipado dinámico con restricciones por compatibilidad con el tipado estático.
-- Fuertemente tipado.
-- Implementado mediante traductores a otro lenguaje de programación.
-- Con un código programado sencillo y claro.
-- Concurrencia en acciones de tipo procedimiento.
-- Sin "plantillas" ni "reflexión" de código.
Reducir el número de palabras clave - Java: 58, C: 32, C++: 92, C#: 76, PHP: 70, Epi: 44 Epi tiene pocas palabras clave (incompleto) - Instrucciones de control: si, contra, repetir, salir, finbien, finmal, listar, bifurcacion, reunion.
- Gestiona las excepciones con: -- tratarexcepcion: y finexcepcion: - Pocas constantes: nulo, verdad, falso.
- Operadores lógicos con nombre: no, y, o, u (xor) - Usa los operadores de manera única: +, -, *, /, %, ., =, = ref:, +=, -=, *=, /=, %=, .=, ==, >=, <=, != (no tiene operadores de bit) - Nota: Más adelante se incorporarán nuevas palabras clave por motivos específicos.
La nomenclatura de los identificadores en Epi - Se utilizan solo letras minúsculas y sin acentos.
- Se recomienda emplear las palabras del repositorio de vocabulario y entidades.
-- Los bloques de código en Epi - Palabras clave para los bloques de acción (unión de función y procedimiento): accion, finaccion.
- Dos palabra clave: una para el bloque de captura de excepciones y otra para el objeto: tratarexcepcion: objetoexcepcion - Bloque diferenciados: si: {, }; repetitivo: {{, }}; - Bloques específicos de acciones de tipo procedimiento: bifurcación: {{{, }}}; reunión: {{{{, }}}} La sintaxis de Epi (I) - Los saltos de línea forman parte de su sintaxis. Esto pretende forzar un estilo de escritura más uniforme entre programadores - Los bloques de código tienen saltos de línea: -- accion
- Su retorno: Siempre se retorna un valor booleno: -- Valor finbien, la acción terminó verdad (sin errores).
-- Valor finmal, la acción terminó falso (o con errores).
- Si los parámetros son: --- De entrada: , sus datos se usan y se pueden cambiar --- De salida: sus datos son resultados, siempre.
- El parámetro que Indica el acciontipo: -- ¿entidad¿; código de programación simple.
-- ¿procedimiento¿; definir comportamiento dinámico.
-- ¿interfaz¿; captura excepciones, usa otros lenguajes.
La sintaxis de las acciones (II) - El parámetro que indica el tipo de gestión de errores de la acción, indicado con accionfin: -- ¿terminarfinmal¿; una acción llamada en el cuerpo de la acción que retorno finmal fuera de un si, causa el fin de la acción con un retorno finmal.
-- ¿terminarexcepcion¿; una acción llamada en el cuerpo de la acción que retorno finmal fuera de un si, causa el fin de la acción con una excepción.
-- ¿continuar¿; no hay tratamiento de errores.
- Las acciones y entidades de los que depende la acción se indican con dependencia: - Nota: Más adelante se describe con más detalle el formato de los parámetros de la acción y el modo exacto de definir una acción.
La sintaxis de las expresiones lógicas - Los operadores lógicos son: y, o, u (xor) y no.
- Los operadores se agrupan con paréntesis.
- Existen más de una forma de escribir las expresiones lógicas. Para simplificar esto, se reduce la sintaxis, de modo que no se permite el operador no delante de paréntesis:
Simplificar las estructuras de datos en Epi (I) - No posee palabras clave para definir estructuras de datos.
- No posee palabras clave para crear ¿arrays¿ - Las estructuras de datos se definen dinámica-mente mediante la palabra clave de, que permite indicar pertenencia de una entidad a otra.
Simplificar las estructuras de datos en Epi (II) -
- Y puede tener una profundidad de múltiples niveles - Se crea una instrucción para poder recorrer secuencialmente (por orden de creación) los identificadores que forman parte de uno dado: -- listar
- El nombre de una acción comienza por una entidad agrupadora de las acciones, que tiene el mismo formato que un identificador: --
- Y el nombre descriptivo de la acción, permiti-éndose el uso de espacios en blanco.
- Las acciones se almacenan en el repositorio de acciones, donde se pueden localizar por diferentes criterios de búsqueda.
Manejo de excepciones - Debe ser una acción de tipo ¿interfaz¿.
- Una excepción se puede lanzar desde una acción de tipo ¿entidad¿ o ¿interfaz¿.
-- Usando finexcepcion:
tratarexcepcion: objetoexcepcion -- objetoexcepcion tiene información de la excepción.
...
finaccion Variables o entidades estructuradas (I) - Siempre se declaran dentro de las acciones. Dos alcances posibles en la declaración de variables: -- local:; una variable de uso interno -- global:; una variable que perdura fuera de la acción o añadir un atributo a un parámetro entidad.
- A continuación el identificador, indicando su pertenencia a otro identificador.
-- local:
- También se puede usar otras modalidades de declaración de variables.
Variables o entidades estructuradas (II) - Usando alias: permite poner delante la entidad que se usa de modelo (se puede usar: de).
-- local:
-- local:
- Dentro de un bloque de reunion en una acción de tipo "procedimiento".
- Para crear una referencia a una acción - Para pasar una referencia a una acción como parámetro.
- Su formato consiste en el nombre completo de la acción seguido de (...) -- No hay polimorfismo. Dos acciones no pueden ser diferentes en función de sus parámetros.
-- No se comprueban los parámetros en las llamadas de las referencias a acciones.
Lo exclusivo de acciones de tipo "procedimiento" - Este tipo de acciones permiten describir comportamientos dinámicos de ingeniería del Sw.
- Para ello cuentan con palabras claves para la concurrencia: -- bifurcacion {{{ --
- La reunión espera por dos o más funciones llamadas en la bifurcacion. Se indica su prototipo.
Declarar parámetros - Se declaran en la firma de la acción.
- Los parámetros de entrada: se componen de: --
- El paso de parámetro es por referencia siempre.
Los comentarios - Se utiliza: // hasta el final de línea.
Código ajeno en las acciones de ¿interfaz¿ - Se utiliza noepi:
Palabras reservadas de Epi (I) - si, contra, repetir, salir, listar, nombre:, valor: - accion:, entrada:, salida:, renombre:, valor:, dependencia:, accionfin:, ¿terminarfinmal¿, ¿terminarexcepcion¿, ¿continuar¿, acciontipo:, ¿procedimiento¿, ¿entidad¿, ¿interfaz¿, finbien, finmal, finaccion - bifurcación, reunion Palabras reservadas de Epi (II) - finexcepcion:, tratarexcepcion: objetoexcepcion - local:, global:, alias:, ref_alias:, de - = ref: - noepi:, epi: - y, o, u, no, verdad, falso, nulo - ", ", \b, \t, \n, \r, \", \\ - ., e, E - +, -, *, /, %, +=, -=, *=, /=, %=, ., .=, =, ==, !=, <, <=, >, >=, ++, -- - (...) - , - // El repositorio de vocabulario y entidades de Epi (I) -- El objetivo de este repositorio es doble: --- Contener el vocabulario mínimo que realmente se necesita para desarrollar código.
---- Libre de sinónimos ---- Libre de palabras iguales, salvo por tener diferente género.
---- Libre de diferenciaciones de número, al no permitir el plural.
---- Extensible, gracias a la colaboración de la comunidad de desarrolladores en el mantenimiento del mismo.
--- Agrupar los vocablos para documentar estructuras jerárquicas de pertenencia, composición, especialización u otro tipo de relación.
---- Una palabra puede aparecer en muchas estructuras.
---- Cada estructura puede aparecer como elemento independiente o como parte perteneciente a otra entidad.
El repositorio de vocabulario y entidades de Epi (II) - Los vocablos del repositorio cumplen con: -- Solo se pueden usar minúsculas. No se permiten los acentos. Incluye las letras: ñ, ç, ü y el guión bajo: "_".
-- No pueden comenzar por un número, pero si contenerlo. No pueden estar en plural.
-- Tener una longitud de una letra, o de más.
- Además se debe comprobar que (I): -- Si la palabra es un verbo, debe ir en modo infinitivo, en gerundio o en participio.
-- La palabra no es un sinónimo de otra que ya existe.
-- Las excepciones de plural, se marcan con un guion bajo ("_") al final de éstas.
-- La palabra tiene correspondencia con elementos en el lenguaje natural y entidades del mundo real.
El repositorio de vocabulario y entidades de Epi (III) - Además se debe comprobar que (II): -- La palabra no es confusa. Por ejemplo ¿gato¿ puede ser un animal y un mecanismo para levantar peso: --- La palabra de uso más común mantiene su nombre.
--- La palabra menos común añade un especializador. Por ejemplo: ¿gato_mecanico¿ o se usa un sinónimo.
-- La palabra no es un acrónimo: --- Los acrónimos deberían escribirse extendidos y sepa-rados por el guion bajo (¿_¿); o ser nombres propios.
-- La palabra no es una marca comercial. Aunque se permiten los nombres propios, no se desea su uso publicitario.
El repositorio de vocabulario y entidades de Epi (IV) - Usar el vocabulario: -- Buscar la palabra que tenía pensado utilizar.
-- Si al realizar la búsqueda, ésta no está, puede realizar la búsqueda con palabras que sean sinónimas.
-- Si tampoco tiene éxito, entonces puede incorporarla al vocabulario, si es que se desea ponerla a disposición de la comunidad de usuarios para su reutilización.
-- Si un nuevo identificador a crear, se compone de varias palabras, éstas se unen mediante el símbolo guion bajo ("_").
--- Y no tiene por qué incluirse en el repositorio, a menos que describa una entidad real o reutilizable.
El repositorio de vocabulario y entidades de Epi (V) - Las normas para generar las entidades del repositorio serían: -- Las entidades usan sustantivos para denominarse.
-- Una entidad puede contener otras entidades, en función de cualquier tipo de relación: Agregación, Composición, Inclusión, Extensión, Generalización.
-- Una entidad puede contener verbos, indicando las acciones que puede realizar.
- En el lenguaje Epi, la pertenencia de un atributo a una entidad es "de".
-- Un atributo podría tener el siguiente formato: nombre de empleado de empresa.
-- La estructura del día de una fecha, podría ser: dia de mes de año.
El repositorio de vocabulario y entidades de Epi (VI) - La estructura de las acciones: -- El sujeto de la acción está determinado por una entidad. Se permite utilizar: de.
-- Le sigue un verbo en modo infinitivo.
-- Le sigue el objeto directo: Se forma con una sucesión de palabras del vocabulario, separadas por blancos.
--- No sigue estructura jerárquica y no está prohibido el uso de la palabra reservada "de".
- Ejemplos: -- tiempo de fecha restar tiempo de fecha (...) -- frase concatenar detras (...) -- frase extraer subfrase (...) -- numero_real calcular raiz cuadrada (...) -- lista invertir orden (...) El repositorio de acciones (I) - En el lenguaje Epi, las librerías del entorno del lenguaje, consisten en conjuntos de acciones y siguen un modelo distinto, ya que: -- Se inspira en la filosofía de la Web 2.0.
-- No son promovidas ni mantenidas por ninguna organización.
-- No están limitadas en cuanto a su crecimiento.
-- Se nutren de las aportaciones de los propios desarrolladores.
-- Incorporan el código fuente de las acciones, de manera pública.
-- Presentan un sistema de nomenclatura de las acciones que se centraliza en el repositorio del vocabulario.
El repositorio de acciones (II) - Deben cumplir con una serie de requisitos: -- Las acciones deben estar localizables en Internet por todos los programadores.
-- Cualquier programador debe poder descargarse el código fuente, en el lenguaje Epi.
-- Cualquier programador puede publicar sus acciones en el repositorio.
-- No se permiten nombres de acciones repetidos en el repositorio. Aunque pueden diferenciarse, mediante un comentario tras el nombre de la acción.
-- No se responsabiliza con los contenidos o los resultados que el uso de estos ocasionen.
-- Cualquier programador puede corregir errores en el contenido de las acciones del repositorio.
Entorno de desarrollo del repositorio de acciones (I) - El objetivo de este sistema es permitir: -- El acceso de toda la comunidad global de desarrolladores al código de acciones que pueden reutilizarse o servir de modelo para acciones semejantes.
-- El uso de convenciones de escritura de código para facilitar la lectura y comprensión del mismo.
-- Utilizar el idioma español para el desarrollo de código de programación.
-- El trabajo en equipo.
-- Permitir desarrollar código en cualquier ordenador conectado a Internet.
Entorno de desarrollo del repositorio de acciones (II) - Las características del entorno de desarrollo: -- Facilitar la disposición de todas las palabras claves del lenguaje de Epi, a los desarrolladores, en función del tipo de acción que estén desarrollando.
-- Automatizar la detección de las dependencias de la acción y la posibilidad de repasarlas y modificarlas en el momento de la grabación.
-- Permitir que la sintaxis esté coloreada.
-- Estructurar el código escrito, conforme al formato estricto del lenguaje Epi, sin que sea preciso que el desarrollador deba conocerlo.
-- Usar sangrías del texto dentro de bloques y numerar las líneas con sangría, con un formato de esquema numerado.
Ejemplo de acción en Epi: -- accion: --- lista ordenar burbuja -- entrada: --- lista -- salida: -- dependencia: -- accionfin: --- "terminarfinmal" -- acciontipo: --- "procedimiento" -- global: posicion_actual de lista -- global: posicion_auxiliar de lista -- lista leer longitud (lista, posicion_actual de lista) - posicion_actual de lista -- repetir {{ --- si posicion_actual de lista <= 0 { --- salir --- } --- posicion_auxiliar de lista --- = 0 --- repetir {{ --- si posicion_auxiliar de lista > posicion_actual de lista { --- salir --- } --- si lista ser mayor valor actual que auxiliar (lista) { --- lista intercambiar valor actual con auxiliar (lista) --- } --- ++ posicion_auxiliar de lista --- }} - posicion_actual de lista -- }} -- finaccion Conclusiones (I) - El lenguaje Epi: -- Reutiliza todas las librerías de los lenguajes de destino de la traducción del código Epi.
-- Evita al programador concentrarse en: --- El tratamiento de errores de código.
--- La definición previa de estructuras de datos.
-- Define las dependencias de las acciones en la firma.
-- Se concentra en los algoritmos y se olvida de otros elementos de la programación.
-- Permite compartir con la comunidad global.
-- Permite construir múltiples versiones de la acciones, diferenciándolas por un comentario libre.
-- Permite espacios en blanco en nombres de acciones -- Incluye los saltos de línea en su gramática, lo que da homogeneidad al código escrito.
Conclusiones (II) - Las aportaciones del lenguaje Epi (I): -- Utiliza el idioma español.
-- Simplifica el número de palabras clave mediante la: --- Reducción de las instrucciones de control.
--- Eliminación la definición de estructuras de datos.
--- Simplificación de las declaraciones.
--- Reducción de los niveles de encapsulación.
--- Eliminación de palabras clave al no incorporar POO.
-- Tiene una sintaxis estricta que incluye saltos de línea.
-- Variables únicamente en minúsculas y singular.
-- Acceso a los atributos de las entidades mediante la palabra clave ¿de¿ empleando un orden semejante al de la gramática española.
Conclusiones (III) - Las aportaciones del lenguaje Epi (II): -- Un sistema de nomenclatura de acciones que: --- Permite los espacios en blanco.
--- Utiliza el ¿sujeto de la acción¿, agrupador de éstas.
-- Dos tipos de parámetros, ambos por referencia: --- Entrada: Sus datos son utilizados y se pueden modificar.
--- Salida: Sus datos no son solo resultados.
-- Dos datos de retorno: finbien: la acción termina bien o verdad; y finmal: termina mal, o falso.
-- Permite la traducción de código a otros lenguajes de programación, procedural o orientado a objetos.
-- Declara las dependencias de las acciones.
Conclusiones (IV) - Las aportaciones del lenguaje Epi (III): -- Diferentes tipos de código: --- Procedimiento: Diseñado para definir acciones que describen comportamientos dinámicos de Ing. del Sw.
--- Entidad: Diseñado para la escritura de código traducible a otros lenguajes de programación.
--- Interfaz: Diseñado para integrar código Epi con código no Epi, y para la captura y tratamiento de excepciones.
-- Incluye un nivel básico del tratamiento de errores, según el retorno de las acciones llamadas en una acción: --- "terminarfinmal" : finmal, fuerza a retornar finmal.
--- "terminarexcepcion": finmal, fuerza a lanzar una excepción.
--- "continuar": No se hace nada.
Conclusiones (V) - Las aportaciones del Repositorio de acciones: -- Basado en la filosofía de la Web 2.0. se mantiene con colaboradores de toda la red global.
-- Permite publicar código en un lugar centralizado.
-- Da acceso a código fuente de manera gratuita.
-- Permite que se utilizar los buscadores de Internet.
- El Repositorio de vocabulario y entidades (I): -- Basado en la filosofía de la Web 2.0.
-- Utiliza un sistema de formularios.
-- Favorece la eliminación de duplicidades, sinónimos o polisemias.
-- Permite construir jerarquías de palabras de ejemplo como modelos de entidades.
Conclusiones (VI) - El Repositorio de vocabulario y entidades (II): -- Selecciona un vocabulario especializado.
-- Favorece la traducción a otros idiomas.
- El Entorno de desarrollo integrado con el Repositorio de acciones: -- Disponible en Internet, gratuito y multiplataforma.
-- Con un sistema de formularios para la programación.
-- Sintaxis coloreada.
-- Informa de modificaciones simultáneas.
Líneas futuras - Desarrollar un mecanismo automático de traducción de código y vocabulario entre idiomas.
- Construir un sistema global, en Internet, donde todos los desarrolladores puedan trabajar empleando el lenguaje Epi y producir código compartido para su reutilización.
- Desarrollar traductores de código Epi a Java, C#, C++, Pyton o Perl.
- Lograr el uso del sistema en el mundo empresarial.
- Lograr que la iniciativa de código abierto en Internet use Epi como lenguaje base de sus desarrollos.
© 2001-2024 Fundación Dialnet · Todos los derechos reservados