Pascal es un lenguaje de programación ideado por Niklaus Wirth a finales de la década de 1960 y principios de la de 1970. Delphi , desarrollado originalmente por Borland Software Corporation, se compone de un IDE, un conjunto de bibliotecas estándar y un lenguaje basado en Pascal, comúnmente llamado Object Pascal , Delphi Pascal o simplemente «Delphi» ( la documentación actual de Embarcadero lo denomina «el lenguaje Delphi (Object Pascal)» [ 1 ] ). Desde su lanzamiento, se ha convertido en la implementación comercial de Pascal más popular.
Durante el desarrollo de Pascal, Wirth empleó un procedimiento de autoarranque en el que cada nueva versión del compilador de Pascal se escribía y compilaba con su predecesora. Así, el compilador 'P2' se escribió en el dialecto compilable por 'P1', el 'P3' a su vez se escribió en 'P2', y así sucesivamente, hasta llegar a 'P5'. El compilador 'P5' implementaba Pascal en su estado final, tal como lo definió Wirth, y posteriormente se estandarizó como 'ISO 7185 Pascal'.
El dialecto de Borland, al igual que el popular Pascal de la UCSD , se basó en la versión 'P4' del lenguaje, en lugar de la revisión final de Wirth. Tras una considerable evolución independiente del Pascal estándar, la variante de Borland se convirtió en la base de Delphi. Esta página repasa las diferencias entre Delphi y el Pascal estándar. No aborda las extensiones específicas de Delphi, que son numerosas y siguen aumentando.
Características exclusivas
Las siguientes características son mutuamente excluyentes. La implementación en Standard Pascal no es compatible con Delphi y, viceversa, el código de Delphi no es compatible con Standard Pascal.
Módulo con dividendo negativo
El lenguaje Pascal estándar tiene una definición del modoperador similar a la euclidiana , mientras que Delphi utiliza una definición truncada.
Comentarios anidados
Standard Pascal requiere que los delimitadores de comentarios {y el bigrama , así como y, sean sinónimos entre sí. [ 2 ] En Delphi, sin embargo, un comentario de bloque que comienza con debe cerrarse con un . [ 3 ] El bigrama solo cerrará cualquier comentario que comience con . [ 3 ] Este esquema permite comentarios anidados .(*}*){}*)(*
Tipos de datos procedimentales
La forma en que se pueden pasar los procedimientos y las funciones como parámetros difiere: Delphi requiere que se declaren explícitamente los tipos de procedimiento, mientras que Standard Pascal no lo requiere. [ 4 ]
Conversión de caracteres de nueva línea
Varios sistemas informáticos muestran una amplia variedad de formas de indicar un salto de línea . Esto afecta la representación interna de textlos archivos que se componen de una serie de "líneas". Para evitarle al programador cualquier problema asociado, Standard Pascal exige que la lectura de un "carácter de fin de línea" devuelva un único carácter de espacio. Para distinguir dicho carácter de espacio de "fin de línea" de un carácter de espacio que en realidad es carga útil genuina de la línea, EOLnse convierte en true.
Delphi no muestra este comportamiento. Al leer un salto de línea, se devolverá la secuencia de caracteres que representa un salto de línea en el sistema anfitrión actual, por ejemplo, dos charvalores (retorno de carro) más (salto de línea). [ 3 ]chr(13)chr(10)
Características adicionales o faltantes
Las siguientes características están presentes o ausentes en ambos idiomas.
Globalgoto
Pascal estándar permite que un gotosea cualquier labeldefinido en el ámbito. En Delphi, un gotodebe estar dentro de la rutina actual, es decir, no puede salir del marco. [ 3 ]begin … end
programa jumpAround ; etiqueta 999 ; procedimiento foo ; inicio { Esto no está permitido en Delphi: } ir a 999 ; fin ; inicio foo ; 999 : ; fin .Variables de búfer
Delphi no admite variables de búfer ni rutinas estándar asociadas gety put. [ 3 ]
programa copiar ( entrada , salida ) ; comenzar mientras no EOF ( entrada ) hacer comenzar { Copiar búferes de archivo. No compatible con Delphi } salida ↑ := entrada ↑ ; { Entrada ↑ contiene un espacio si se produjo un salto de línea. } si EOLn ( entrada ) entonces comenzar escribirLn ( salida ) ; fin sino comenzar poner ( salida ) ; fin ; { Avanzar cursor de lectura. } obtener ( entrada ) ; fin ; fin .Asignación de registro de variante discriminada
En Standard Pascal, la asignación de memoria para una variante recordpuede indicar una variante específica. Esto permite que las implementaciones asignen la menor cantidad de memoria realmente necesaria. Delphi no admite esto. [ 3 ]
programa variantRecord ; tipo sexo = ( femenino , masculino ) ; clothingMeasures = registro circunferencia : real ; caso género : sexo de femenino : ( debajo del busto : real ) ; masculino : ( ) ; fin ; var tamaño : clothingMeasures ; inicio { NB: No se ha asignado espacio para `debajo del busto`. } nuevo ( tamaño , masculino ) ; fin .Archivos temporales
En Delphi, cualquier archivo debe estar respaldado por un archivo en el sistema de archivos. Esto significa que cualquier archivo filedebe estar asociado con un nombre de archivo en el assignprocedimiento de Delphi. En cambio, Standard Pascal se puede usar sin nombres de archivo. Lo siguiente producirá un error en tiempo de ejecución con Delphi. [ 3 ]
programa archivoTemporal ( salida ) ; var FD : texto ; inicio reescritura ( FD ) ; escribirLn ( FD , '¡Hola mundo!' ) ; fin .Embalaje
Delphi no implementa los procedimientos estándar packy unpack. [ 3 ] Sin embargo, transferir datos entre tipos de datos empaquetados y desempaquetados es una tarea sencilla. No obstante, Delphi permite declarar una clase, objeto o registro como "empaquetado", lo que minimiza el espacio que utilizan.
writeAncho predeterminado faltante
Delphi no asocia el tipo de datos Booleancon un ancho predeterminado si se especifica como parámetros write/ writeLn. [ 3 ] Delphi demuestra el comportamiento habitual para cadenas de caracteres.
Sobrecarga
Delphi permite sobrecargar rutinas. En Standard Pascal, los identificadores deben ser únicos en cada bloque.
función f ( x : entero ) : real ; inicio resultado := sin ( x ) ; fin ;función f ( x : real ) : real ; inicio resultado := cos ( x ) ; fin ; // ─── PRINCIPAL ──────────────────────────────────────────── inicio // Observe los diferentes tipos de datos. writeLn ( f ( 3 )) ; writeLn ( f ( 3.0 )) ; fin .Valores de parámetros predeterminados
Delphi permite parámetros predeterminados .
Características de implementación peculiares
writeAncho estándar
En Pascal, si el archivo de destino es un textarchivo, los parámetros de write/ writeLntienen un ancho total predeterminado definido por la implementación. En Delphi, para integervalores esto es simplemente 1. Eso significa que siempre se ocupa la menor cantidad de espacio. [ 3 ] Otros compiladores han mostrado anchos predeterminados de, por ejemplo, 20lo que permite una vista tabular fina sin costo de código adicional.
Referencias
- ↑ "Referencia de Delphi - RAD Studio XE2" .
- ↑ van der Heijden, Jan-Jaap; Gerwinski, Peter; Heckenbach, Frank; deBoer, Berend; Freche, Dominik; Lange, Eike; Luis, Pedro; et al. "El Manual de GNU Pascal" . Una guía de inicio rápido de Borland Pascal a GNU Pascal . Consultado el 24 de abril de 2023 .
- 1 2 3 4 5 6 7 8 9 10 Moore, Scott (2 de diciembre de 2022). "Preguntas frecuentes sobre Standard Pascal" . P. ¿Cuáles son las diferencias entre Borland Delphi y la norma ISO 7185? Recuperado el 24 de abril de 2023 .
- ↑ Reagan, John (3 de abril de 1995). "Preguntas frecuentes sobre los estándares Pascal" . Comparación de Borland Pascal con los estándares Pascal. Archivado del original el 28 de septiembre de 2021.
Lecturas adicionales
- Kathleen Jansen y Niklaus Wirth : PASCAL - Manual de usuario e informe. Springer-Verlag, 1974, 1985, 1991, ISBN 0-387-97649-3, ISBN 0-387-90144-2y ISBN 3-540-90144-2
- Niklaus Wirth: El lenguaje de programación Pascal. Acta Informatica, 1, (junio de 1971) 35–63
- ISO/IEC 7185: Lenguajes de programación - PASCAL.
- Doug Cooper: Standard Pascal: Manual de referencia del usuario. WW Norton & Company, 1983, ISBN 0-393-30121-4, ISBN 978-0-393-30121-2
Enlaces externos
- El sitio web de ISO 7185 Pascal
- Documentos de estándares de Pascal
- Familia de lenguajes de programación Pascal
- Borland
- Comparación de lenguajes de programación individuales