Primeros idiomas con soporte genérico de programación

15

Cuál fue el primer lenguaje con soporte de programación genérico, y cuál fue el primer lenguaje principal tipado estáticamente (ampliamente utilizado) con soporte genérico.

Los genéricos implementan el concepto de tipos parametrizados para permitir múltiples tipos. El término genérico significa "perteneciente o apropiado a grandes grupos de clases".

He visto las siguientes menciones de "primero":

El polimorfismo paramétrico de primer orden ahora es un elemento estándar de los lenguajes de programación estáticamente tipados. Comenzando con el Sistema F [20,42] y los lenguajes de programación funcional, las construcciones han llegado a los lenguajes principales como Java y C #. En estos idiomas, el polimorfismo paramétrico de primer orden generalmente se denomina genérico.

De " Genéricos de un tipo superior" , Adriaan Moors, Frank Piessens y Martin Odersky

La programación genérica es un estilo de programación de computadora en el que los algoritmos se escriben en términos de tipos que se especificarán posteriormente que luego se instancian cuando sea necesario para tipos específicos proporcionados como parámetros. Este enfoque, iniciado por Ada en 1983

De Wikipedia Programación genérica

oluies
fuente

Respuestas:

4

Probablemente Lisp. Estaba más o menos haciendo eso en la década de 1960. De hecho, si la pregunta es cuál fue el primer idioma en hacer casi cualquier cosa notable, probablemente encontrará que fue lisp. ¡Es un poco aterrador darse cuenta de que la nueva característica genial en el lenguaje X era de hecho la nueva característica genial de lisp en 1960!

Zachary K
fuente
77
Lisp no fue mecanografiado estáticamente, por lo que "genéricos" ni siquiera tiene sentido en ese contexto.
Rufflewind
Bueno, los "genéricos" solo tienen sentido para algunos tipos de tipeo estático. Hay muchos tipos de sistemas de tipos que tienen diferentes propiedades.
Zachary K
@ZacharyK La característica específica del sistema de tipos que se entiende por "genéricos" es el polimorfismo paramérico , que no tiene sentido en lenguajes sin tipo.
Jack
3

Antes de los genéricos había plantillas, y antes de esa macro sustitución.

Lie Ryan
fuente
Las plantillas no son polimorfismos paramétricos, que es lo que la mayoría de las personas quieren decir cuando dicen "genéricos" en el contexto de los tipos. Las plantillas y las macros ni siquiera están vinculadas a los sistemas de tipos, son una característica ortogonal por completo.
Jack
Esta respuesta confunde "genéricos de Java" con "programación genérica".
Kaz