Yah, sepertinya inti dari pernyataan itu adalah:
Struktur data hanyalah ... bahasa pemrograman
Yang benar jika Anda memikirkannya. Bagaimanapun, kompiler mengandalkan transitivitas ini sepanjang waktu; mereka mengambil bahasa pemrograman, mengubahnya menjadi struktur data, melakukan beberapa transformasi pada data itu, dan kemudian mengubah hasilnya menjadi bahasa pemrograman lain.
Bahkan, jika Anda mau, Anda bahkan dapat membuat sesuatu yang gila seperti struktur data C, yang memungkinkan Anda menulis kode C dengan memanggil berbagai metode - misalnya (dalam agak C #, karena itulah yang saya gunakan sekarang):
var C = HorribleCObject baru ();
C.Fungsi <int> ("main", typeof (char [] []), typeof (int))
.Variabel ("i", typeof (int), 0)
.Sementara ("i", Func (i) => i <10))
.Call ("printf", "% d", "i")
.PostIncrement ("i")
.EndWhile ();
.Return (0)
.EndFunction ();
Sekarang, seperti kutipan lengkap: mengapa sesuatu seperti itu menjadi bodoh dibandingkan dengan (katakanlah) menulis di C sendiri? Seharusnya cukup jelas bahwa ini verbose dan tidak hampir sama terbaca dengan padanannya dalam C (dan, dalam praktiknya, mungkin tidak mendukung cakupan penuh dari apa yang dapat dilakukan C - typedef akan rumit); karenanya, struktur data ini hanyalah bahasa pemrograman "bodoh", yang tertanam dalam bahasa pemrograman "nyata". Logika yang sama dapat digeneralisasikan ke struktur data apa pun yang dapat Anda pikirkan; daftar tertaut hanyalah versi "bodoh" dari Lisp, dan peta hash hanyalah versi "bodoh" dari beberapa Bahasa Pemrograman Hash teoretis (Hasp?).
Masalahnya adalah, kita tidak selalu ingin menulis Pengait untuk berinteraksi dengan peta hash kita. Ini masalah yang dimiliki semua bahasa khusus domain - di satu sisi, DSL yang diimplementasikan dengan baik cukup kuat untuk mengekspresikan semua yang dapat dilakukan oleh model yang mendasarinya; di sisi lain, Anda harus mengimplementasikan DSL di tempat pertama, dan kemudian orang lain harus mempelajarinya. Itu membutuhkan waktu dan usaha yang mungkin tidak ingin mereka habiskan; setelah semua, saya hanya ingin meletakkan hal-hal di peta hash saya dan kemudian memeriksa hal-hal lain di sana, saya tidak ingin mempelajari semua seluk-beluk Pemrograman Berorientasi Hash.
Jadi, cukup banyak tanpa memikirkannya, kami mengambil bahasa pemrograman teoritis yang sangat spesifik dan sangat cerdas ini dan menyaringnya ke beberapa, operasi bodoh yang terkandung dalam struktur data. Daftar tertaut memiliki satu kumpulan kecil metode sederhana; peta hash memiliki beberapa yang lain. Kami mengabaikan operasi lain yang lebih kuat yang berpotensi Anda lakukan di atas struktur data (sebagian besar implementasi LinkedList tidak memiliki fungsi .Map atau .ForEach, misalnya, dan saya bahkan tidak dapat membayangkan apa yang akan Anda lakukan dalam Pengait), mendukung menerapkannya secara eksplisit dalam bahasa pemrograman induk - yang merupakan hal yang paling akrab bagi para programmer.
Struktur data pada dasarnya adalah perpanjangan bodoh dari bahasa induknya ke dalam ruang masalah yang secara konseptual mereka wakili. Ekstensi yang cukup pintar akan membutuhkan bahasa pemrograman baru dan spesifik, dan kebanyakan orang tidak ingin mempelajarinya.