La cita es de Alan Perlis' Epigrams on Programming, que fue publicado en 1982.
El significado de esta cita se incorpora bien en Lisp, donde hay multitud de funciones que operan y se ocupan específicamente de las listas , y podría lograr mucho solo con listas y la variedad de funciones que operan en las listas, lo que las hace mucho más poderosas que cualquier estructura de datos de propósito único.
Lua, como otro ejemplo, uses tables to simulate classes. ¿Por qué utilizar una tabla para crear objetos en lugar de crear clases y objetos de nivel de lenguaje como los lenguajes orientados a objetos? Como su objeto es una tabla ahora, puede usar cualquier número de funciones definidas para las tablas de su objeto, ¡sin cargo! Mejor aún, no tuvimos que saturar el lenguaje con sintaxis específica de clase y tenemos que redefinir funciones de la tabla que queremos para nuestra clase.
Lo dijo Perlis es sin duda un modo prominente del pensamiento en Lisp y en functional programming en general. Esas 100 funciones en su única estructura de datos pueden componerse juntas de muchas maneras únicas, ya que todas operan en la misma estructura de datos, pero tampoco puede realmente mezclar las 10 funciones en 10 estructuras de datos, ya que solo se definieron para trabajar en su estructura de datos particular.
Una variación más moderno y más sencillo de esto se piensa en términos de abstracciones . Si estuviéramos codificando en Java, preferiríamos escribir 100 funciones en la interfaz List, o el mismo conjunto de diez funciones, una para ArrayList, una para LinkedList, una para ...
Porque 100 funciones> 10 funciones. –
Porque 100 funciones en una estructura de datos son más genéricas, ofreciendo una mejor composición, mientras que 10 funciones en 10 estructuras de datos son específicas para su estructura de datos y, por lo tanto, menos (o imposible de ser) compuestas a través de estructuras de datos. – mljrg