Estoy compilando una historia detallada del lenguaje Pascal, y me faltan algunos detalles.
Hay tantas características hoy que damos por sentado. ¿Qué características contribuyeron significativamente a la evolución de Pascal y por qué fueron significativas?
Estoy buscando características de lenguaje, no características de plataforma o marco. Entonces, como la sobrecarga del operador o los parámetros predeterminados, pero no el soporte de Linux o el nuevo widget de texto enriquecido.
Sé que hay algunos sabores diferentes de Pascal (Delphi, Free Pascal, Oxygene, Quick Pascal, Apple Pascal, etc.) e introdujeron las mismas características en diferentes momentos y en paralelo. Es correcto. Estoy viendo el lenguaje Pascal como un todo, y cuándo ocurrieron los hitos significativos (fechas, versiones, etc.)
Apps
, que es solo un nuevo sabor de cliente-servidor).Respuestas:
Desde una perspectiva histórica del lenguaje, probablemente la mayor contribución de Pascal fue la seguridad de tipo fuerte. Esa batalla ya casi ha terminado, ganó el lado de Pascal, y el punto de inflexión industrial fue Java. Pero durante mucho tiempo, C fue favorecido antes que Pascal por personas que se consideraban codificadores adultos en gran parte debido a esto: la gente quería la libertad de manipular sus punteros como si fueran números enteros. Sin embargo, las implementaciones prácticas de Pascal tenían lagunas, como las uniones que no verificaban dinámicamente el campo discriminante, o que incluso tenían un encuadre completo de punteros hasta el punto de ser todos menos C (Turbo Pascal era uno de estos).
Esto, y una simplificación de la complicada especificación ALGOL 68 [1], podría ser un punto de partida.
[1] Intenta leer el informe ALGOL 68 en algún momento, ¡definitivamente es un producto de los años 60! Un sitio en la web menciona algunas de sus jergas extrañas: 'token de bus', 'árboles de producción invisibles', 'entornos primarios', 'uniones incestuosas', 'nociones', 'protonotions', 'metanotions', 'hypernotions', ' paranotaciones ', etc.
fuente
Diría que las dos fuerzas impulsoras más importantes a lo largo de la historia de Pascal han sido:
fuente
Realmente necesitas volver a los orígenes: encuentra algo de la historia de Niklaus Wirth. Pascal comenzó su vida como un idioma de enseñanza. "Algoritmos + Estructuras de datos = Programas" es un buen punto de partida.
En ese momento, Pascal era mucho más simple que Algol 68 y PL / 1. Forzó la estructura y la declaración, y una seguridad de tipo fuerte, a diferencia de Fortran4 (Fortran 77 mejoró un poco las cosas allí, pero aún podía jugar terriblemente rápido y suelto). Y en comparación con COBOL, fue breve, simple y fácil de escribir. (Hola mundo en aproximadamente 6 líneas en lugar de 600).
Cuando se originó, había cosas como matrices de caracteres en Pascal, eso era para el manejo de cadenas. Las cosas mejoraron con los años.
Si realmente quiere profundizar en la historia de Pascal, algunos puntos que debe tener en cuenta:
En la década de 1980 hubo una gran fiesta de babosas entre Pascal y C. Hubo una gran cantidad de desarrollo y actividad en ambos campamentos.
Como consecuencia, cosas extrañas y maravillosas como Bliss-32, Algol y PL / 1 han desaparecido prácticamente, pero las ideas de estos llegaron a Pascal.
EDITAR: las matrices de caracteres se pueden empaquetar, lo que le confiere algunas propiedades especiales, pero si quería lo que ahora conocemos como manejo de cadenas, debe crecer usted mismo.
fuente
packed array[1..n] of char;
, por ejemplo, en lectura (ln) y escritura (ln)Extensiones orientadas a objetos! Object Pascal fue el mayor salto (no oficial) de estándares con el lanzamiento de Delphi (1) a mediados de los 90. Es difícil elegir solo uno, pero todo el núcleo del modelo de objetos en su conjunto ayudó a llevar el lenguaje al estado moderno. Desafortunadamente hasta el día de hoy, no se ha convertido en un estándar único unificado oficial que todos los compiladores cumplirían para codificar la simetría.
Afortunadamente, los desarrolladores del proyecto Free Pascal se han acomodado bastante a las características agregadas a Delphi tanto por Borland como por Embarcadero. RemObjects no tanto, pero al menos tienen vínculos con Embarcadero bajo Delphi Prism, por lo que cualquier desviación de un estándar (para hacer que el lenguaje sea más compatible con .NET) estaría altamente documentado.
fuente
virtual
palabra clave para hacerlos reemplazables por subclases.Solo una o dos cosas que recuerdo de haber usado Pascal hace mucho tiempo con MS-DOS:
Turbo Pascal introdujo más o menos un tipo de IDE en los años 80 (y el rendimiento de la compilación recibió un gran impulso en comparación con UCSD Pascal
De alguna manera, a mediados de los años 90, Borland cambió el nombre de Turbo a Borland Pascal. . Como primer paso, las Unidades introducidas, que permitieron dividir grandes proyectos en unidades de compilación separadas.
Más tarde también agregaron programación orientada a objetos.
fuente
Uno de los pasos evolutivos centrales en Pascal fue la noción adecuada de cuerdas. ISO 7185 ("Pascal estándar") no los tenía, lo cual es un poco vergonzoso. Sin embargo, todos los programadores reales los necesitaban, y las implementaciones de Pascal viables (como Borland / Turbo Pascal) los proporcionaron.
fuente
Mirando hacia atrás en las innovaciones del lenguaje Pascal de Delphi, agregaría el modelo de Propiedad, Método, Evento (PME) y la sección "Publicada" para las clases. Eso hizo que el código nativo, fácil de usar y ampliara la construcción de componentes posible. Components cumplió la promesa de Brad Cox de circuitos integrados de software.
fuente
La lucha entre muchos sabores de Pascal en los años 80 y principios de los 90.
Tenías Apple Pascal , Microsoft Pascal y QuickPascal y Turbo Pascal .
Todos introdujeron Object Pascal de una forma u otra (QuickPascal 1.0 y Turbo Pascal 5.5 alrededor del mismo período de tiempo). Apple porque lo necesitaban para su plataforma, Microsoft y Borland porque OO se estaba volviendo 'genial' (luego QuickPascal murió poco después, y Turbo Pascal 6.0 agregó un marco de OO razonable llamado Turbo Vision ).
Rudy Velthuis está bastante completo sobre esto en su publicación en el foro .
Puede descargar una imagen ISO con DOS 6.22 y algunos de los compiladores Pascal de DOS de esa época .
fuente
Creo que la introducción de interfaces (en Delphi 3 IIRC) fue muy importante para convertirlo en un lenguaje moderno orientado a objetos.
fuente
Agregaré métodos anónimos y genéricos a la mezcla.
fuente
Las nuevas características del lenguaje entre Delphi 7 y Delphi XE se describen en la página 52 de este informe técnico de Embarcadero:
http://www.embarcadero.com/images/dm/technical-papers/reasons-to-migrate-to-delphi-xe -white-paper.pdf
fuente
Para mí, las dos cosas más importantes (después de otros lenguajes como C ...) fueron la insensibilidad a las mayúsculas y la velocidad del compilador.
Y después de eso está el hecho de que es más fácil escribir con el teclado finlandés, porque no necesito constantemente las teclas {} u otras teclas que son difíciles de alcanzar ...
He estado a bordo desde Delphi2 pero usé D1 en el trabajo hace un par de años ...
fuente
Comience con "Programación estructurada" , de Dahl, Dijkstra y Hoare. La sección de Dijkstra es fundamental, incluso hoy. La sección de Tony Hoare sobre estructuración de datos sentó una gran parte del trabajo preliminar para PASCAL. (La sección de Dahl habló sobre lo que eventualmente se convirtió en programación orientada a objetos. Describió lo que se convirtió en clases en Simula 67).
Examine ALGOL-W, la implementación de Wirth de una variante de ALGOL-60.
También necesita saber sobre PL / I y el editor de enlaces IBM 360 (enlazador) en ese momento. Fue una maravilla de generalidad, con el pequeño problema de que corrió más lento que la melaza en enero en Juneau, Alaska. PASCAL fue diseñado específicamente para ser compilado y vinculado en una sola pasada, para mayor velocidad. (Ayudó que el lenguaje comenzara en una supercomputadora CDC 6400 junior, con mucha memoria, haciendo práctico un compilador de una pasada).
En realidad, había dos versiones principales de PASCAL de ETH Zurich. El idioma que todos conocen actualmente como PASCAL fue en realidad PASCAL2, la segunda versión.
fuente