Nun, es scheint, als wäre der Kern der Aussage:
Eine Datenstruktur ist nur eine ... Programmiersprache
Was ganz richtig ist, wenn Sie darüber nachdenken. Immerhin verlassen sich Compiler die ganze Zeit auf diese Transitivität. Sie nehmen eine Programmiersprache, konvertieren sie in eine Datenstruktur, wandeln diese Daten um und wandeln das Ergebnis in eine andere Programmiersprache um.
Wenn Sie möchten, können Sie sogar etwas Verrücktes wie eine C-Datenstruktur erzeugen, mit der Sie C-Code schreiben können, indem Sie die verschiedenen Methoden aufrufen.
var C = neues HorribleCObject ();
C.Funktion <int> ("main", typeof (char [] []), typeof (int))
.Variable ("i", typeof (int), 0)
.Während ("i", Func (i) => i <10))
.Call ("printf", "% d", "i")
.PostIncrement ("i")
.EndWhile ();
.Retoure (0)
.EndFunction ();
Nun zum vollständigen Zitat: Warum wäre so etwas dumm im Vergleich zum Schreiben in C selbst? Es sollte ziemlich offensichtlich sein, dass dies ausführlich und nicht annähernd so gut lesbar ist wie das Äquivalent in C (und in der Praxis möglicherweise nicht den vollen Umfang dessen unterstützt, was C kann - typedefs wären schwierig). daher ist diese Datenstruktur nur eine "dumme" Programmiersprache, eingebettet in eine "echte" Programmiersprache. Dieselbe Logik kann auf jede denkbare Datenstruktur verallgemeinert werden. verknüpfte Listen sind nur eine "blöde" Version von Lisp, und Hash-Maps sind nur eine "blöde" Version einer theoretischen Hash-Programmiersprache (Hasp?).
Die Sache ist jedoch, dass wir nicht immer Hasp schreiben möchten, um mit unseren Hash-Maps zu interagieren. Dies ist das Problem, das alle domänenspezifischen Sprachen haben. Einerseits ist eine gut implementierte DSL leistungsfähig genug, um alles auszudrücken, was das zugrunde liegende Modell kann. Auf der anderen Seite muss man das DSL zuerst implementieren und dann müssen andere Leute es lernen. Das kostet Zeit und Mühe, die sie wahrscheinlich nicht ausgeben wollen. Schließlich möchte ich nur Dinge in meine Hash-Map einfügen und dann prüfen, ob andere Dinge darin enthalten sind. Ich möchte nicht alle Feinheiten der Hash-orientierten Programmierung kennenlernen.
Ziemlich ohne darüber nachzudenken, nehmen wir diese theoretischen hochspezifischen und sehr intelligenten Programmiersprachen und destillieren sie auf die wenigen, dummen Operationen herunter, die in einer Datenstruktur enthalten sind. Eine verknüpfte Liste enthält eine kleine Sammlung einfacher Methoden. Eine Hash-Map hat einige andere. Wir ignorieren die anderen, leistungsstärkeren Operationen, die Sie möglicherweise über die Datenstruktur ausführen könnten (die meisten LinkedList-Implementierungen haben beispielsweise keine .Map- oder .ForEach-Funktion, und ich kann mir nicht einmal vorstellen, was Sie in Hasp tun würden). zugunsten einer expliziten Implementierung in der übergeordneten Programmiersprache - mit der die meisten Programmierer vertraut sein werden.
Datenstrukturen sind im Wesentlichen eine blöde Erweiterung ihrer übergeordneten Sprache in den Problemraum, den sie konzeptionell darstellen. Eine ausreichend intelligente Erweiterung würde eine neue, spezifische Programmiersprache erfordern, und die meisten Leute werden das nicht lernen wollen.