Bueno, parece que el corazón de la declaración es:
Una estructura de datos es solo un ... lenguaje de programación
Lo cual es bastante cierto si lo piensas. Después de todo, los compiladores confían en esta transitividad todo el tiempo; toman un lenguaje de programación, lo convierten en una estructura de datos, hacen algunas transformaciones en esos datos y luego convierten el resultado en otro lenguaje de programación.
De hecho, si quisieras, incluso podrías hacer algo loco como una estructura de datos C, que te permite escribir código C llamando a sus diversos métodos, por ejemplo (en C #, porque eso es lo que estoy usando ahora):
var C = new HorribleCObject ();
C.Función <int> ("main", typeof (char [] []), typeof (int))
.Variable ("i", typeof (int), 0)
.Mientras que ("i", Func (i) => i <10))
.Call ("printf", "% d", "i")
.PostIncrement ("i")
.EndWhile ();
.Volver (0)
.FinFunción ();
Ahora, en cuanto a la cita completa: ¿por qué algo así sería estúpido en comparación con (digamos) escribir en C? Debería ser bastante obvio que esto es detallado y no tan legible como su equivalente en C (y, en la práctica, podría no ser compatible con todo el alcance de lo que C puede hacer; typedefs sería complicado); por lo tanto, esta estructura de datos es solo un lenguaje de programación "estúpido", incrustado en un lenguaje de programación "real". Esa misma lógica se puede generalizar a cualquier estructura de datos que se te ocurra; las listas enlazadas son solo una versión "estúpida" de Lisp, y los mapas hash son solo una versión "estúpida" de algún lenguaje teórico de programación Hash (¿Hasp?).
Sin embargo, la cuestión es que no siempre queremos escribir Hasp para interactuar con nuestros mapas hash. Es el problema que tienen todos los lenguajes específicos de dominio : por un lado, un DSL bien implementado es lo suficientemente potente como para expresar todo lo que el modelo subyacente puede hacer; por otro lado, debes implementar el DSL en primer lugar, y luego otras personas tienen que aprenderlo. Eso lleva tiempo y esfuerzo que probablemente no quieran gastar; después de todo, solo quiero poner cosas en mi mapa hash y luego verificar que hay otras cosas allí, no quiero aprender todas las complejidades de la programación orientada a Hash.
Entonces, casi sin pensarlo, tomamos estos lenguajes de programación teóricos altamente específicos y muy inteligentes y los resumimos en las pocas y estúpidas operaciones incorporadas en una estructura de datos. Una lista vinculada tiene una pequeña colección de métodos simples; un mapa hash tiene algunos otros. Ignoramos las otras operaciones más potentes que podría realizar sobre la estructura de datos (la mayoría de las implementaciones de LinkedList no tienen una función .Map o .ForEach, por ejemplo, y ni siquiera puedo imaginar lo que haría en Hasp), a favor de implementarlos explícitamente en el lenguaje de programación principal, que es con lo que la mayoría de los programadores estarán familiarizados.
Las estructuras de datos son, esencialmente, una estúpida extensión de su idioma principal en el espacio del problema que representan conceptualmente. Una extensión lo suficientemente inteligente requeriría un lenguaje de programación nuevo y específico, y la mayoría de las personas no querrán aprender eso.