Component Pascal es un lenguaje de programación en la tradición de Pascal de Niklaus Wirth , [ 1 ] Modula-2 , [ 2 ] Oberon [ 3 ] [ 4 ] y Oberon-2 . [ 5 ] Lleva el nombre del lenguaje Pascal y conserva su herencia, pero es incompatible con Pascal. En cambio, es una variante menor y un refinamiento de Oberon-2 con un sistema de tipos más expresivo y soporte de cadena incorporado . Component Pascal se llamó originalmente Oberon/L, y fue diseñado y mantenido por una pequeña empresa derivada de ETH Zürich llamada Oberon microsystems . Desarrollaron un entorno de desarrollo integrado (IDE) llamado BlackBox Component Builder . Desde 2014, el desarrollo y el soporte han sido asumidos por un pequeño grupo de voluntarios. La primera versión del IDE se lanzó en 1994, como Oberon/F . En aquel momento, presentó un enfoque novedoso para la construcción de interfaces gráficas de usuario (GUI) basado en formularios editables, donde los campos y los botones de comando están vinculados a variables exportadas y procedimientos ejecutables. Este enfoque guarda cierta similitud con el método de código subyacente utilizado en .NET 3.0 de Microsoft para acceder al código en el Lenguaje de Marcado de Aplicaciones Extensible (XAML), que se lanzó en 2008.
Existe una implementación de software de código abierto de Component Pascal para las plataformas .NET y la máquina virtual Java (JVM), desarrollada por el equipo de Gardens Point, liderado por John Gough, en la Universidad Tecnológica de Queensland, en Australia.
El 23 de junio de 2004, Oberon Microsystems anunció que BlackBox Component Builder estaba disponible para su descarga gratuita y que se planeaba una versión de código abierto. La versión beta de código abierto se lanzó inicialmente en diciembre de 2004 y se actualizó a la versión final v1.5 en diciembre de 2005. Incluye el código fuente completo del IDE, el compilador, el depurador, el analizador de código fuente, el generador de perfiles y las bibliotecas de interfaz, y también se puede descargar desde su sitio web. Varias versiones candidatas para la v1.6 aparecieron entre 2009 y 2011; la última (1.6rc6) apareció en las páginas web de Oberon Microsystems en 2011. A finales de 2013, Oberon Microsystems lanzó la versión final 1.6. Probablemente sea la última versión que distribuyeron. Una pequeña comunidad se hizo cargo del desarrollo.
BlackBox Component Pascal utiliza las extensiones .odc ( O beron d o c ument) para archivos de documentos, como archivos fuente, y .osf ( O beron s ymbol f ile ) para archivos de símbolos, mientras que Gardens Point Component Pascal utiliza .cp para archivos fuente y .cps para archivos de símbolos. BlackBox Component Pascal tiene su propio formato de objeto ejecutable y cargable .ocf ( O beron code f ile ) ; incluye un cargador de enlace en tiempo de ejecución para este formato. El formato de documento (.odc) es un formato binario de texto enriquecido que permite el formato, admite el plegado condicional y permite incrustar contenido activo en el texto fuente. También maneja elementos de interfaz de usuario en formularios editables. Esto sigue la tradición del formato de texto Oberon. [ 6 ]
Sintaxis
La sintaxis completa de CP, según el Informe Lingüístico, se muestra a continuación. En la forma extendida de Backus-Naur , solo se necesitan 34 producciones gramaticales, una más que para Oberon-2 , aunque se trata de un idioma más avanzado.
Módulo = MODULE ident ";" [ ImportList ] DeclSeq [ BEGIN StatementSeq ] [ CLOSE StatementSeq ] END ident "." .ImportList = IMPORT [ ident ":=" ] ident { "," [ ident ":=" ] ident } ";" .DeclSeq = { CONST { ConstDecl ";" } | TYPE { TypeDecl ";" } | VAR { VarDecl ";" }} { ProcDecl ";" | ForwardDecl ";" }.ConstDecl = IdentDef "=" ConstExpr .TypeDecl = IdentDef "=" Tipo .VarDecl = IdentList ":" Tipo .ProcDecl = PROCEDIMIENTO [ Receptor ] IdentDef [ Pars Formales ] Atributos Meth [ ";" DeclSeq [ INICIO StatementSeq ] FIN ident ].MethAttributes = [ "," NUEVO ] [ "," ( ABSTRACTO | VACÍO | EXTENSIBLE )].ForwardDecl = PROCEDIMIENTO "^" [ Receptor ] IdentDef [ Pars Formales ] Atributos Meth .FormalPars = "(" [ FPSection { ";" FPSection }] ")" [ ":" Tipo ].FPSection = [ VAR | IN | OUT ] ident { "," ident } ":" Tipo .Receptor = "(" [ VAR | IN ] ident ":" ident ")" .Tipo = Qualident | ARRAY [ ConstExpr { "," ConstExpr }] DE Tipo | [ ABSTRACTO | EXTENSIBLE | LIMITADO ] REGISTRO [ "(" Qualident ")" ] Lista de campos { ";" Lista de campos } FIN | PUNTERO A Tipo | PROCEDIMIENTO [ FormalPars ].Lista de campos = [ Lista de identificadores ":" Tipo ].StatementSeq = Statement { ";" Statement }.Declaración = [ Designador ":=" Expr | Designador [ "(" [ ListaExpr ] ")" ] | SI Expr ENTONCES StatementSeq { SINO SI Expr ENTONCES StatementSeq } [ SINO StatementSeq ] FIN | CASO Expr DE Caso { "|" Caso } [ SINO StatementSeq ] FIN | MIENTRAS Expr HACER StatementSeq FIN | REPETIR StatementSeq HASTA Expr | PARA ident ":=" Expr HASTA Expr [ POR ConstExpr ] HACER StatementSeq FIN | BUCLE StatementSeq FIN | CON [ Guarda HACER StatementSeq ] { "|" [ Guarda HACER StatementSeq ] } [ SINO StatementSeq ] FIN | SALIR | RETORNAR [ Expr ] ].Caso = [ EtiquetasCaso { "," EtiquetasCaso } ":" SecuenciaDeDeclaraciones ].CaseLabels = ExprConst [ ".." ExprConst ].Guardia = Cualident ":" Cualident .ConstExpr = Expr .Expr = SimpleExpr [ Relación SimpleExpr ].SimpleExpr = [ "+" | "-" ] Term { AddOp Term }.Término = Factor { Factor MulOp }.Factor = Designador | número | carácter | cadena | NIL | Conjunto | "(" Expr ")" | " ~ " Factor .Conjunto = "{" [ Elemento { "," Elemento }] "}" .Elemento = Expr [ ".." Expr ].Relación = "=" | "#" | "<" | "<=" | ">" | ">=" | EN | ES .AddOp = "+" | "-" | O .MulOp = "*" | "/" | DIVI | MODO | "&" .Designador = Cualident { "." identificador | "[" ListaExpr "]" | "^" | "(" Cualidente ")" | "(" [ ListaExpr ] ")" } [ "$" ].ExprList = Expr { "," Expr }.IdentList = IdentDef { "," IdentDef }.Cualident = [ ident "." ] ident .IdentDef = ident [ "*" | "-" ].Referencias
- ^ Jensen, Kathleen; Wirth, Niklaus (1974-1991). Pascal: manual de usuario e informe . Springer Verlag. ISBN 978-0-387-97649-5.
- ^ Wirth, Niklaus (1982-1985). Programación en Modula-2 . Springer Verlag. ISBN 978-3-540-15078-7.
- ↑ Reiser, Martin; Wirth, Niklaus (1 de junio de 1992). Programación en Oberon: Pasos más allá de Pascal y Modula . Addison-Wesley . ISBN 978-0201565430.PDF (334 KB) Archivado el 3 de junio de 2012 en Wayback Machine.
- ↑ Wirth, Niklaus ; Gutknecht, Jürg (1 de noviembre de 1992). Proyecto Oberon: El diseño de un sistema operativo y un compilador . Addison-Wesley . ISBN 978-0201544282.PDF (4398 KB) Archivado el 10 de julio de 2012 en Wayback Machine.
- ↑ Mössenböck, Hans-Peter; Wirth, Niklaus (1991). "El lenguaje de programación Oberon-2" (PDF) . Programación estructurada . 12 : 179–195 .
- ↑ Mössenböck, H.; Koskimies, K. (1996). "Active Text for Structuring and Understanding Source Code" . Software: Practice and Experience . 26 (7): 833– 850. doi : 10.1002/(SICI)1097-024X(199607)26:7 < 833::AID-SPE34 > 3.0.CO ; 2-Q .
Lecturas adicionales
- De Modula a Oberon Wirth (1990)
- El lenguaje de programación Oberon Wirth (1990)
- Diferencias entre Oberon y Oberon-2 Mössenböck y Wirth (1993)
- El lenguaje de programación Oberon-2 H. Mössenböck, N. Wirth, Institut für Computersysteme, ETH Zürich ( ETHZ ), enero de 1992.
- Novedades en Component Pascal (cambios de Oberon-2 a CP), Pfister (2001)
- Componentes y objetos juntos , Clemens Szyperski, Dr. Dobbs, mayo, (1999, archivado el 18 de febrero de 2018)
Enlaces externos
- Sitio web oficial
- Última versión disponible del antiguo sitio web oficial; véase también las notas históricas en la página de descarga.
- Componente Gardens Point Pascal para .NET y JVM
- Transpilador de componentes de Pascal a C basado en OFront de Josef Templ.
- Lenguajes de programación .NET
- Familia de lenguajes de programación Oberon
- Familia de lenguajes de programación Modula
- Ingeniería de software basada en componentes