Perché le strutture dati come i BST non fanno parte delle librerie principali di più lingue? [chiuso]

0

Ad esempio, perché JavaScript non fornisce un BST come struttura dati nativa che potresti usare?

var bst = new BST();
bst.insert('5');
bst.insert('3');
bst.find('5'):

Domanda alternativa: quali sono i costi e i benefici per includere tali strutture in una lingua? Non vedo quali sono i costi, a parte il tempo necessario per l'implementazione. Avere una struttura dati aggiuntiva rallenterebbe altre cose?

Fondamentalmente, lo sto chiedendo dal punto di vista di qualcuno che abbia familiarità con le basi delle strutture dati ed è uno sviluppatore JavaScript, ma sa molto poco sui compilatori e sulla progettazione del linguaggio. Il modo in cui lo vedo, aggiungendo una struttura dati aggiuntiva, è lì se lo vuoi, ma non ferirà coloro che non vogliono usarlo. Ma sono sicuro che ci sono cose importanti che non sto considerando, e quello che sto chiedendo veramente è "cosa sono"?

    
posta Adam Zerner 15.11.2015 - 19:05
fonte

1 risposta

1

Quando si progetta un linguaggio di programmazione, in genere si desidera che il nucleo della lingua sia il più semplice possibile ma il più generale possibile e il più espressivo possibile, pur continuando a soddisfare i propri obiettivi di progettazione fondamentali. Quando aggiungi una funzione a una lingua, devi considerare come si adatta al design e alla filosofia generale della lingua. Tutto ciò che non soddisfa quell'estetica appartiene a una libreria esterna, non nella lingua.

Lo scopo degli alberi binari è quello di fornire un modo veloce per cercare qualcosa dato una chiave. Poiché Javascript ha elenchi con coppie chiave / valore come una delle sue funzionalità principali, esiste un potenziale utilizzo per alberi binari nella lingua stessa. Ma il progettista di Javascript non ha scelto un albero binario come suo backing store; ha scelto un tavolo hash. Quindi l'albero binario è lasciato senza potenziali casi d'uso nella lingua stessa.

Se vuoi aggiungere alberi binari a una lingua, perché non aggiungere anche b-tree? Alberi rosso-neri? Salta elenchi? Perché un albero binario in particolare? Ognuna di queste strutture dati fa essenzialmente la stessa cosa, ma con caratteristiche di prestazione diverse. Avere strutture di dati di questo tipo in una libreria consente al programmatore di scegliere ciò di cui ha bisogno dalla libreria senza aggiungere peso morto alla lingua.

Per tutti questi motivi, nella maggior parte dei casi, gli alberi binari si adattano meglio a una libreria esterna piuttosto che al linguaggio di programmazione.

    
risposta data 15.11.2015 - 20:37
fonte

Leggi altre domande sui tag