Prograph es un lenguaje de programación visual , orientado a objetos , de flujo de datos y multiparadigma que utiliza símbolos icónicos para representar las acciones que se deben realizar sobre los datos. Los entornos de desarrollo de software comercial Prograph como Prograph Classic y Prograph CPX estuvieron disponibles para las plataformas Apple Macintosh y Windows durante muchos años, pero finalmente se retiraron del mercado a fines de la década de 1990. La compatibilidad con el lenguaje Prograph en macOS ha reaparecido recientemente con el lanzamiento del entorno de desarrollo de software Marten. [1]
Paradigma | multi-paradigma : orientado a objetos , visual , flujo de datos |
---|---|
Diseñada por | Universidad de acadia |
Desarrollador | Varios |
Apareció por primera vez | 1983 |
SO | Multiplataforma : MacOS clásico , Microsoft Windows , macOS |
Licencia | Propiedad |
Implementaciones importantes | |
Prograph CPX, Marten | |
Influenciado por | |
programación funcional , diagramas de flujo de datos |
Historia
La investigación sobre Prograph comenzó en la Universidad de Acadia en 1982 como una investigación general sobre lenguajes de flujo de datos, estimulada por un seminario sobre lenguajes funcionales dirigido por Michael Levin. Se utilizaron diagramas para aclarar la discusión, lo que llevó a la idea: "dado que los diagramas son más claros que el código, ¿por qué no hacer que los diagramas en sí mismos sean ejecutables?" Así nació Prograph - Programming in Graphics - como un lenguaje de flujo de datos visual. Este trabajo fue dirigido por el Dr. Tomasz Pietrzykowski, con Stan Matwin y Thomas Muldner como coautores de los primeros artículos. De 1983 a 1985, se construyeron prototipos de investigación en una estación de trabajo gráfica Three Rivers PERQ (en Pascal , con los datos visualizados como bolas de fuego moviéndose por enlaces de datos), y un VAX con un terminal Tektronix , y se programó un compilador experimental en una PC IBM . Este trabajo fue continuado en la Universidad Técnica de Nueva Escocia por Pietrzykowski y el Dr. Philip Cox, incluida una versión realizada en Prolog .
En 1985, se comenzó a trabajar en un prototipo comercializable en Macintosh, la única computadora de bajo precio y ampliamente disponible con soporte de gráficos de alto nivel disponible en ese momento. A principios de 1986, este prototipo fue adquirido por The Gunakara Sun Systems (más tarde rebautizado como TGS Systems ) para su comercialización, TGS anteriormente era una empresa de consultoría formada por Pietrzykowski en la Universidad de Acadia . Trabajando con Pietrzykowski y Cox, Terry Kilshaw contrató y administró el equipo de desarrollo original, con Jim Laskey como desarrollador principal. En 1987, Mark Szpakowski sugirió la fusión de la orientación a objetos con el flujo de datos visual, creando un sistema de "flujo de objetos". Después de casi cuatro años de desarrollo, el primer lanzamiento comercial, v1.2, se presentó en la conferencia OOPSLA en Nueva Orleans en octubre de 1989. Este producto ganó el premio MacUser Editor's Choice Award de 1989 a la mejor herramienta de desarrollo. La versión 2.0, lanzada en julio de 1990, agregó un compilador al sistema.
TGS cambió su nombre a Prograph International (PI) en 1990. Aunque las ventas fueron lentas, en 1992 se llevó a cabo el desarrollo de una nueva versión, Prograph CPX ( Cross-Platform eXtensions ), que tenía la intención de construir aplicaciones completamente multiplataforma. Esta versión fue lanzada en 1993 y fue seguida inmediatamente por el desarrollo de un marco de aplicación cliente-servidor. A pesar del aumento de las ventas, la empresa no pudo mantener los costos operativos y, tras un fallido intento de financiación a fines de 1994, entró en suspensión de pagos a principios de 1995.
A medida que avanzaba la quiebra, la dirección y los empleados de PI formaron una nueva empresa, Pictorius , que adquirió los activos de PI. Poco después, se inició el desarrollo de una versión para Windows de Prograph CPX. Aunque nunca se lanzó formalmente, las versiones de Windows Prograph se pusieron regularmente a disposición de los clientes de Prograph CPX, algunos de los cuales portaron aplicaciones existentes escritas en Macintosh Prograph, con diversos grados de éxito.
Después de los cambios de gestión en la nueva empresa, el énfasis pasó del desarrollo de herramientas a la programación personalizada y el desarrollo de aplicaciones web. En abril de 2002, la parte de desarrollo web de la empresa fue adquirida por Paragon Technology Group de Bermuda y pasó a llamarse Paragon Canada. El nombre de Pictorius y los derechos del código fuente de Prograph fueron retenidos por McLean Watson Capital, una firma de inversiones con sede en Toronto que había financiado fuertemente a Pictorius. Una referencia a Pictorius apareció durante un tiempo en la página de Portfolio del primero, pero desde entonces ha desaparecido. La versión de Windows de CPX se lanzó más tarde para uso gratuito y estuvo disponible durante algún tiempo para su descarga desde los restos del sitio web de Pictorius (enlace a continuación).
Un grupo de usuarios de Prograph ("Prographers") que se autodenominan " The Open Prograph Initiative " (OPI) se formó a fines de la década de 1990 con el objetivo de mantener a Prograph viable frente a los avances del sistema operativo de Apple y Microsoft. Durante un tiempo, el grupo también buscó crear un nuevo lenguaje de programación visual de código abierto para que sirviera como sucesor de Prograph, pero con la llegada del entorno de programación visual Marten de Andescotia , la participación en el grupo esencialmente cesó.
El lenguaje Prograph es compatible con Marten IDE de Andescotia Software. [1]
Descripción
Durante la década de 1970, la complejidad de los programas creció considerablemente, pero las herramientas utilizadas para escribir programas eran generalmente similares a las que se usaban en la década de 1960. Esto generó problemas al trabajar en proyectos más grandes, que se volverían tan complejos que incluso cambios simples podrían tener efectos secundarios que son difíciles de comprender por completo. Una investigación considerable sobre el problema llevó a muchos a pensar que el problema era que los sistemas de programación existentes se centraban en la lógica del programa, mientras que en realidad el propósito de un programa era manipular datos. Si los datos que se manipulan son el aspecto importante del programa, ¿por qué los datos no son el "ciudadano de primera clase" del lenguaje de programación? Trabajando sobre esa base, evolucionaron varios sistemas de programación nuevos, incluida la programación orientada a objetos y la programación de flujo de datos .
Prograph llevó estos conceptos más allá, introduciendo una combinación de metodologías orientadas a objetos y un entorno completamente visual para la programación. Los objetos están representados por hexágonos con dos lados, uno que contiene los campos de datos y el otro los métodos que operan sobre ellos. Al hacer doble clic en cualquier lado se abriría una ventana que mostraba los detalles de ese objeto; por ejemplo, abrir el lado de las variables mostraría las variables de clase en la parte superior y las variables de instancia debajo. Al hacer doble clic en el lado del método, se muestran los métodos implementados en esta clase, así como los heredados de la superclase. Cuando se hace doble clic en un método en sí, se abre en otra ventana que muestra la lógica.
En Prograph, un método está representado por una serie de iconos, cada icono contiene una instrucción (o un grupo de ellos). Dentro de cada método, el flujo de datos se representa mediante líneas en un gráfico dirigido . Los datos fluyen en la parte superior del diagrama, pasan por varias instrucciones y finalmente fluyen hacia la parte inferior (si hay alguna salida).
Varias características del sistema Prograph son evidentes en esta imagen de una operación de clasificación de base de datos. Los espectáculos de barras superiores que este método, concurrent sort
, se pasa en un único parámetro, A Database Object
. Luego, este objeto se alimenta, a través de las líneas, en varias operaciones. Tres de estos extraen un índice con nombre ( indexA
etc.) del objeto usando la getter
operación (la salida del getter no conectado pasa el objeto "completo"), y luego pasa el índice extraído a una operación de clasificación. A continuación, se hacen pasar a la salida de estas operaciones de ordenación, junto con una referencia a la base de datos original, a la operación final, update database
. La barra en la parte inferior de la imagen representa las salidas de este método y, en este caso, no hay conexiones con él, por lo que este método no devuelve un valor. También tenga en cuenta que aunque este es un método de alguna clase, no existe self
; si se necesita uno mismo, se puede proporcionar como entrada o buscar.
En un lenguaje de flujo de datos, las operaciones pueden tener lugar tan pronto como tengan entradas válidas para todas sus conexiones. Eso significa, en términos tradicionales, que cada operación en este método podría realizarse al mismo tiempo. En el ejemplo de la base de datos, todos los tipos podrían tener lugar al mismo tiempo si la computadora fuera capaz de suministrar los datos. Los lenguajes de flujo de datos tienden a ser inherentemente concurrentes, lo que significa que son capaces de ejecutarse en sistemas multiprocesador "naturalmente", una de las razones por las que despertó tanto interés en la década de 1980.
Los bucles y las ramas se construyen modificando operaciones con anotaciones. Por ejemplo, un bucle que llama al doit
método en una lista de datos de entrada se construye arrastrando primero el operador doit, luego adjuntando el modificador de bucle y proporcionando la lista como entrada al bucle. Otra anotación, "inyección", permite que el método en sí se proporcione como entrada, lo que convierte a Prograph en un lenguaje dinámico hasta cierto punto.
Ejecución
El entorno integrado de desarrollo y ejecución de Prograph también permitió la depuración visual. Se apoyaron los mecanismos habituales de punto de interrupción y de un solo paso. Cada operación en un diagrama de flujo de datos se resaltó visualmente a medida que se ejecutaba. Un mecanismo similar a la información sobre herramientas mostraba valores de datos cuando se mantenía el mouse sobre un enlace de datos cuando se detenía en modo de depuración. La visualización visual de la pila de ejecución permitió la ejecución de retroceso y avance. Para muchos usuarios, los aspectos de ejecución visual del lenguaje eran tan importantes como sus facilidades gráficas de tiempo de edición.
La característica de depuración en tiempo de ejecución más importante fue la capacidad de cambiar el código sobre la marcha durante la depuración. Esto permitió que los errores se corrigieran durante la depuración sin la necesidad de volver a compilar.
Crítica
Varios problemas con el sistema Prograph también son evidentes en la implementación de este método.
El código del programa se puede comentar mediante etiquetas. En las versiones iniciales, la mayoría de las clases incluidas no estaban etiquetadas. A menudo era necesario consultar la documentación para determinar las entradas adecuadas para un método. Esto se abordó en gran medida en versiones posteriores, pero los métodos nunca se documentaron hasta el punto de que los comentarios explicaban cómo y por qué funcionaban.
Los desarrolladores tuvieron que prestar atención al enrutamiento del cableado y a comentar las entradas y salidas, para mantener limpio su código de diagrama. En el ejemplo anterior de operación de base de datos de Prograph, dos de las rutas se cruzan porque uno de los cables de la barra de entrada debe fluir a una determinada entrada en la operación de actualización. Esto podría evitarse simplemente arrastrando y reposicionando los íconos 'indexA' y 'sort' para que estuvieran dentro del cable más a la izquierda, pero en términos generales no había forma de evitar este tipo de código espagueti literal .
Otro problema fue la profusión de ventanas. Al moverse por el espacio de trabajo de Prograph, el IDE generalmente requería que se abriera una nueva ventana para ver el contenido de los métodos.
Ver también
- Lenguaje de programación visual
- Spreadsheet 2000 , una hoja de cálculo única escrita en Prograph
- LabVIEW , una aplicación de programación gráfica.
- PWCT (software)
Otras lecturas
- Cox, PT; Pietrzykowski, T. (1984), "Ayudas de programación avanzadas en proyecto", Informe técnico 8408 , Halifax, Nueva Escocia: Facultad de Ciencias de la Computación, Universidad Técnica de Nueva Escocia.
- Cox, PT; Mulligan, IJ (1984), "Compilación del lenguaje funcional gráfico Prograph", Informe técnico 8402 , Halifax, Nueva Escocia: Facultad de Ciencias de la Computación, Universidad Técnica de Nueva Escocia.
- Matwin, S .; Pietrzykowski, T. (1985), "Prograph: A Preliminary Report", Computer Languages , 10 (2): 91-126, doi : 10.1016 / 0096-0551 (85) 90002-5.
- Kilshaw, Terry (mayo de 1991), "Prograph Primitives" , Revista MacTech , 7 (5).
- Kilshaw, Terry (enero de 1992), "Prograph 2.5" , MacTech Magazine , 8 (1).
- Kilshaw, Terry (enero de 1993), "A Pictorial Button Class in Prograph" , MacTech Magazine , 9 (1).
- Kilshaw, Terry (marzo de 1994), "A Review of Prograph CPX 1.0" , MacTech Magazine , 10 (3): 64–74.
- Schmucker, Kurt (noviembre de 1994), "Prograph CPX - A Tutorial" , MacTech Magazine , 10 (11).
- Shafer, Dan (1994), The Power of Prograph CPX , Estados Unidos: The Reader Network, ISBN 1-881513-02-5.
- Schmucker, Kurt (enero de 1995), "Commands and Undo in Prograph CPX" , MacTech Magazine , 11 (1).
- Schmucker, Kurt (marzo de 1995), "Filters & Tamices in Prograph CPX" , MacTech Magazine , 11 (3).
- Schmucker, Kurt (mayo de 1995), "MacApp and Prograph CPX - A Comparison" , MacTech Magazine , 11 (5).
Referencias
- ^ a b "Productos: Marten IDE 1.6" . Andescotia Software . Consultado el 31 de mayo de 2019 .
enlaces externos
- Pictorius : la página de inicio de Pictorius, que ya ni siquiera tiene un registro DNS . Las descargas de Prograph aún se pueden encontrar durante un tiempo en https://archive.is/20010425093223/http://192.219.29.95/prograph.html , pero este enlace ahora se agota.
- Artículos sobre Prograph - 10 artículos sobre Prograph, que cubren la historia y el lenguaje
- Prograph CPX - A Tutorial - un excelente artículo sobre el sistema, que data poco después del lanzamiento original de Prograph CPX
- Lenguajes de programación visual: una encuesta : incluye una breve descripción general del sistema Prograph.
- The Open Prograph Initiative : página de inicio del grupo interesado en crear una versión de código abierto de Prograph
- Programación visual con Prograph CPX - Libro de texto sobre Prograph CPX
- [1] - 28 de diciembre de 2011 anuncio del lanzamiento beta de Marten.