stringtranslate.com

Objeto Pascal

Object Pascal es una extensión del lenguaje de programación Pascal que proporciona funciones de programación orientada a objetos (OOP), como clases y métodos .

El lenguaje fue desarrollado originalmente por Apple Computer como Clascal para el sistema de desarrollo Lisa Workshop. Cuando Lisa dio paso a Macintosh , Apple colaboró ​​con Niklaus Wirth , el autor de Pascal, para desarrollar una versión oficialmente estandarizada de Clascal. Esto pasó a llamarse Objeto Pascal. Hasta mediados de la década de 1980, Object Pascal fue el principal lenguaje de programación para las primeras versiones del marco de aplicaciones MacApp . El lenguaje perdió su lugar como principal lenguaje de desarrollo en Mac en 1991 con el lanzamiento de MacApp 3.0, basado en C++ . El apoyo oficial terminó en 1996.

Symantec también desarrolló un compilador para Object Pascal para su producto Think Pascal, que podía compilar programas mucho más rápido que el Macintosh Programmer's Workshop (MPW) de Apple . Luego, Symantec desarrolló Think Class Library (TCL), basada en conceptos de MacApp, a la que se podía llamar tanto desde Object Pascal como desde THINK C. La suite Think desplazó en gran medida a MPW como principal plataforma de desarrollo en Mac a finales de los años 1980.

Symantec portó Object Pascal a la PC y desarrolló un marco de objetos similar en esa plataforma. A diferencia de TCL, que finalmente migró a C++, las bibliotecas de PC siguieron basándose principalmente en Pascal.

Borland agregó soporte para programación orientada a objetos a Turbo Pascal 5.5, que eventualmente se convertiría en la base del dialecto Object Pascal usado en Delphi creado por Anders Hejlsberg . Delphi siguió siendo la corriente principal para las aplicaciones empresariales en PC hasta principios de la década de 2000, y fue parcialmente desplazada en la década de 2000 con la introducción de .NET Framework , que incluía C# de Hejlsberg .

Historia

manzana pascal

Pascal se convirtió en un lenguaje importante en el mundo de la programación en la década de 1970, con implementaciones de alta calidad en la mayoría de las plataformas de minicomputadoras y microcomputadoras . Entre los últimos se encontraba el sistema UCSD Pascal , que se compilaba en un formato de código p-System intermedio que luego podía ejecutarse en múltiples plataformas. Apple obtuvo la licencia de UCSD y la utilizó como base para su sistema Apple Pascal para Apple II y Apple III .

Pascal se convirtió en uno de los idiomas principales de la empresa en este período. Con el inicio del proyecto Apple Lisa , se seleccionó Pascal como lenguaje de programación principal de la plataforma, aunque esta vez como compilador a diferencia del intérprete p-System .

Clascal y el primer Object Pascal de Apple

Object Pascal es una extensión del lenguaje Pascal que fue desarrollado en Apple Computer por un equipo dirigido por Larry Tesler en consulta con Niklaus Wirth , el inventor de Pascal. [2] Desciende de una versión anterior de Pascal orientada a objetos llamada Clascal , que estaba disponible en la computadora Lisa .

Se necesitaba Object Pascal para soportar MacApp , un marco de aplicación expandible para Macintosh que ahora se denominaría biblioteca de clases . Las extensiones de Object Pascal y MacApp fueron desarrolladas por Barry Haynes, Ken Doyle y Larry Rosenstein, y fueron probadas por Dan Allen. Larry Tesler supervisó el proyecto, que comenzó a principios de 1985 y se convirtió en producto en 1986.

También se implementó una extensión de Object Pascal en el entorno de desarrollo integrado (IDE) Think Pascal. El IDE incluye el compilador y un editor con resaltado y verificación de sintaxis, un potente depurador y una biblioteca de clases. [3] Muchos desarrolladores prefirieron Think Pascal a la implementación de Object Pascal de Apple porque Think Pascal ofrecía un ciclo de compilación, enlace y depuración mucho más rápido y una estrecha integración de sus herramientas. La última versión oficial de Think Pascal fue la 4.01, en 1992. Posteriormente, Symantec lanzó una versión no oficial 4.5d4 sin costo alguno.

Apple dejó de admitir Object Pascal cuando pasaron de los chips de la serie Motorola 68000 a la arquitectura PowerPC de IBM en 1994. MacApp 3.0 ya había sido reescrito en C++ y portado a esta plataforma.

Metrowerks ofreció con CodeWarrior un compilador Object Pascal para Macintosh dirigido tanto a 68k como a PowerPC , tanto en su IDE como en herramientas MPW. Los desarrolladores de Macintosh que usaban Object Pascal tenían un camino para migrar a PowerPC , incluso la arquitectura después de que Apple y Symantec abandonaran el soporte. MacApp 2.0, escrito en Object Pascal, fue portado al PowerPC usando CodeWarrior . [4] [5]

Años de Borland, Inprise, CodeGear y Embarcadero

En 1986, Borland introdujo extensiones similares, también denominadas Object Pascal, al producto Turbo Pascal para Macintosh, y en 1989 para Turbo Pascal 5.5 para DOS. Cuando Borland pasó de DOS a Windows en 1994, crearon un sucesor de Turbo Pascal, llamado Delphi , e introdujeron un nuevo conjunto de extensiones para crear lo que ahora se conoce como el lenguaje Delphi.

El desarrollo de Delphi comenzó en 1993 y Delphi 1.0 se lanzó oficialmente en los Estados Unidos el 14 de febrero de 1995. Si bien aún se podía compilar el código que utilizaba el modelo de objetos Turbo Pascal, Delphi presentó una nueva sintaxis que utilizaba la palabra clave classen lugar de object, el constructor Create. y un destructor virtual Destroy (y que niega tener que llamar a los procedimientos Newy Dispose), propiedades, punteros a métodos y algunas otras cosas. Estos se inspiraron en el borrador de trabajo ISO para extensiones orientadas a objetos, pero muchas de las diferencias con el dialecto de Turbo Pascal (como el requisito del borrador de que todos los métodos sean virtuales ) fueron ignoradas.

El lenguaje Delphi ha seguido evolucionando a lo largo de los años para admitir construcciones como matrices dinámicas , genéricos y métodos anónimos . La antigua sintaxis de objetos introducida por Apple ("Tipos de objetos de estilo antiguo") todavía es compatible. [6]

Versiones

Compiladores

Los compiladores de Object Pascal están disponibles para una amplia gama de sistemas operativos y arquitecturas.

Productos heredados

Intérpretes

Pascal Script (anteriormente InnerFuse ) y DWScript (Delphi Web Script) son intérpretes y motores de scripting de Object Pascal de código abierto escritos en Delphi. Admiten subconjuntos de Object Pascal. DWScript también puede compilar código Object Pascal en código JavaScript (Smart Pascal) y admite la compilación justo a tiempo (JIT). Modern Pascal proporciona 3 intérpretes diferentes: una interfaz de línea de comandos (CLI), módulo Apache (Celerity) y CodeRunner (solución similar a node.js capaz de manejar diferentes scripts por puerto), además de la capacidad de compilar y proteger el código fuente de un script. . [12]

Ejemplos de programas "Hola Mundo"

Aquí hay varios programas "Hello World" en diferentes versiones de Object Pascal.

versión de manzana

programa ObjetoPascalExample ;  escriba THelloWorld = procedimiento de objeto Put ; fin ;       var HolaMundo : HolaMundo ;   procedimiento HolaMundo . Poner ; comenzar ShowMessage ( '¡Hola, mundo!' ) ; fin ;    comenzar nuevo ( HolaMundo ) ; Hola Mundo . Poner ; Eliminar ( HolaMundo ) ; fin .   

Versión Turbo Pascal

Todavía es compatible con Delphi y Free Pascal. FPC también empaqueta sus propios sustitutos para las bibliotecas/unidades. Delfos no lo hace. La serie Free Pascal 1.0 y el IDE en modo texto FPC son las bases de código abiertas más grandes en este dialecto. Free Pascal 2.0 fue reescrito en un dialecto más parecido a Delphi, y el IDE en modo texto y los marcos relacionados (Free Vision) son las únicas partes en la versión TP de Object Pascal.

Asignación basada en pila

programa ObjetoPascalExample ;  escriba THelloWorld = procedimiento de objeto Put ; fin ;       procedimiento HolaMundo . Poner ; comenzar WriteLn ( '¡Hola, mundo!' ) ; fin ;    var HolaMundo : HolaMundo ; {asignado en la pila y puede usarse sin asignación explícita. } comenzar HolaMundo . Poner ; fin .    

Asignación basada en montón

programa ObjetoPascalExample ;  escriba PHelloWorld = ^ THelloWorld ; THelloWorld = procedimiento de objeto Put ; fin ;          procedimiento HolaMundo . Poner ; comenzar WriteLn ( '¡Hola, mundo!' ) ; fin ;    var HolaMundo : PHelloMundo ; {este es un puntero escrito a THelloWorld}   comenzar nuevo ( HolaMundo ) ; Hola mundo ^. Poner ; Eliminar ( HolaMundo ) ; fin .   

Otro ejemplo:

programa ObjetoPascalExample ;  escriba PHelloWorld = ^ THelloWorld ; THelloWorld = procedimiento de objeto Put ; fin ;          procedimiento HolaMundo . Poner ; comenzar WriteLn ( '¡Hola, mundo!' ) ; fin ;    var HolaMundo : PHelloMundo ; { este es un puntero escrito a THelloWorld } HelloWorld2 : ^ THelloWorld ; { esto es exactamente lo mismo con una sintaxis diferente } HolaMundo3 : ^ HolaMundo ; HolaMundo4 : PHelloMundo ; comenzar { Esto funciona de manera similar al código anterior, tenga en cuenta la asignación y desasignación, aunque  muchas personas se confunden. En el pasado hubo un ejemplo incorrecto con comentarios incorrectos aquí... }               Nuevo ( HolaMundo ) ; {una instancia} HolaMundo4 := HolaMundo ; { esto es válido - una copia de puntero } HolaMundo2 := HolaMundo ; {esto es válido: una copia de puntero} Nuevo ( HolaMundo3 ) ; {una segunda instancia} HolaMundo4 := HolaMundo3 ; { esto es válido - una copia de puntero } HolaMundo2 := HolaMundo3 ; {esto es válido: una copia de puntero} Dispose ( HolaMundo ) ; {asigna sólo dos instancias} Dispose ( HelloWorld3 ) ; { por lo que debe liberar sólo dos instancias } fin .                       

Esto funciona basándose en una copia de puntero, a menos que haya una asignación específica para una copia más profunda.

Versión Delphi y Free Pascal

programa ObjetoPascalExample ; escriba THelloWorld = procedimiento de clase Put ; fin ;      procedimiento HolaMundo . Poner ; comenzar Writeln ( '¡Hola, mundo!' ) ; fin ;  var HolaMundo : HolaMundo ; {este es un puntero implícito}   comenzar HolaMundo := HolaMundo . Crear ; { constructor devuelve un puntero a un objeto de tipo THelloWorld } HelloWorld . Poner ; Hola Mundo . Gratis ; {esta línea desasigna el objeto THelloWorld señalado por HelloWorld} fin .       

Tenga en cuenta que la construcción del objeto todavía está disponible en Delphi y Free Pascal.

Versión oxigenada

espacio de nombres ObjectPascalExample ;  interfaz escriba ConsoleApp = clase método de clase Principal ; fin ;        THelloWorld = método de clase Put ; fin ;      implementación método SaludoMundo . Poner ; comenzar consola . WriteLine ( '¡Hola, mundo!' ) ; fin ;     Método de clase ConsoleApp . Principal ; comenzar var HolaMundo : = nuevo HolaMundo ; Hola Mundo . Poner ; fin ;          fin .

Versión DWScript (Smart Pascal)

escriba THelloWorld = procedimiento de clase Put ; comenzar PrintLn ( '¡Hola, mundo!' ) ; fin fin ;         var HolaMundo := HolaMundo . Crear ; Hola Mundo . Poner ;   

La implementación del método también se puede realizar en una ubicación distinta como en otros dialectos de Object Pascal.

Desarrollo

Se han introducido continuamente muchas funciones en Object Pascal con extensiones para Delphi y extensiones para FreePascal. En reacción a las críticas, Free Pascal ha adoptado genéricos con la misma sintaxis que Delphi, siempre que se seleccione el modo de compatibilidad de Delphi, y que tanto Delphi (parcial) como Free Pascal (más extenso) admitan la sobrecarga del operador . Delphi también ha introducido muchas otras características desde la versión 7, [13] incluidas las genéricas. Mientras que FreePascal intenta ser compatible con Delphi en el modo de compatibilidad de Delphi, también suele introducir muchas características nuevas en el lenguaje que no siempre están disponibles en Delphi.

Referencias

  1. ^ ab Gibson, Steve (8 de mayo de 1989). "Borland y Microsoft ingresan al anillo Pascal orientado a objetos". InfoMundo . vol. 11, núm. 19. pág. 28. Archivado desde el original el 29 de febrero de 2024 . Consultado el 18 de septiembre de 2021 .
  2. ^ Tesler, Larry (1985). "Informe del objeto Pascal". Mundo del lenguaje estructurado . 9 (3): 10–7.
  3. ^ Seiter, Charles (noviembre de 1990). "Piensa en Pascal 3". Macmundo . vol. 7, núm. 11. pág. 236.
  4. ^ Arnold, Brian; McCarthy, Guy (noviembre de 1995). "MacApp Pascal vuelve a montar". MacTech . vol. 11, núm. 11. págs. 30–31.
  5. ^ Arnold, Brian (febrero de 1996). "MacApp 2 para PowerPC en Object Pascal". MacTech . vol. 12, núm. 2. págs. 25–32.
  6. ^ Lischner, Ray (2000). Delphi en pocas palabras: una referencia rápida de escritorio (1ª ed.). Sebastopol, CA: O'Reilly y asociados. ISBN 1565926595.
  7. Carta a la comunidad: Embarcadero Technologies acuerda adquirir CodeGear de Borland Archivado el 2 de marzo de 2018 en Wayback Machine . Edn.embarcadero.com. Recuperado el 21 de julio de 2013.
  8. ^ "Desarrollo de iPhone/iPod". Equipo de desarrollo de Pascal gratuito. Archivado desde el original el 28 de abril de 2009 . Consultado el 13 de abril de 2009 .
  9. ^ Un libro inteligente. Leanpub. 18 de mayo de 2012. Archivado desde el original el 25 de mayo de 2013 . Consultado el 19 de junio de 2013 .
  10. ^ Funa, Igor (2021). "Turbo51: Compilador Turbo Pascal para microcontroladores 8051". Archivado desde el original el 25 de septiembre de 2018.
  11. ^ Draxler, Wolfgang. "WDSibyl: entorno de desarrollo visual". Archivado desde el original el 12 de febrero de 2020.
  12. ^ "Pascal moderno". Archivado desde el original el 11 de diciembre de 2018 . Consultado el 22 de octubre de 2018 .
  13. ^ "Nuevas funciones del lenguaje Delphi desde Delphi 7". Código de engranaje. Archivado desde el original el 2 de julio de 2008 . Consultado el 6 de julio de 2008 .

enlaces externos

Delfos