Per una lunga vita da studente mi sono sempre chiesto perché ce ne siano così tanti, ma in molti di loro sembra esserci una mancanza di utilizzo. L'opinione non è cambiata davvero quando ho ottenuto un lavoro.
Abbiamo libri brillanti su ciò che sono e le loro complessità, ma non ho mai incontrato risorse che dessero effettivamente un buon accenno all'uso pratico. Capisco perfettamente che devo esaminare il problema, analizzare le operazioni richieste, cercare la struttura dei dati che li faccia in modo efficiente. Tuttavia in pratica non lo faccio mai, non a causa della sindrome della pigrizia umana, ma perché quando si tratta di lavoro riconosco la priorità temporale rispetto allo sviluppo personale.
Nel tempo ho pensato che quando sarei stato uno sviluppatore migliore ne userei automaticamente di più - non è successo affatto o forse non l'ho fatto. Poi ho scoperto che i colleghi di solito erano nello stesso piatto di me - conoscendo più o meno tre delle strutture dati e ne erano totalmente contenti e si rifiutavano di discutere ulteriormente con me, tornando alle conversazioni sui "nuovi linguaggi fantastici" librerie che fanno lavori per te 'e la gioia di lavorare sotto scrumban ecc.
Sono bloccato con ArrayLists, Arrays e SortedMap, che a prescindere da ciò che faccio sono sempre sufficienti o li ritocco per essere in grado di adempiere al mio compito. Sì, potrebbe essere inefficiente, ma dobbiamo davvero preoccuparci se Intel aumenterà le prestazioni nel corso degli anni, non importa se miglioriamo le nostre competenze? Le nuove macchine Xeon o IBM si preoccupano veramente di ciò che usiamo? Cosa succede se mi piace costruire le cose, ma non sono particolarmente entusiasta se è n log (n) o solo n? In vent'anni la potenza di elaborazione è aumentata enormemente, il che ci dà la libertà di non essere critici su quale utilizzare? Inoltre, appaiono nuovi linguaggi più ottimizzati che supportano più core in modo più efficiente.
Per essere più specifici: mi piacerebbe trovare materiale motivazionale su complesse aree reali / casi di possibili utilizzi effettivi delle strutture dati. Sarei davvero grato se volessi fornire risorse pertinenti. C'è una domanda simile, ma alla fine i link di nuovo descrivono o fanno un esempio stupido (veicoli, studenti o ricerca del Santo Graal - sì, molto rilevanti) e la gente continua a riferirsi allo "scenario decide la struttura dei dati da usare". Voglio conoscere questi scenari complessi per essere in grado di identificare le somiglianze con il mio scenario e poi usarli. Gli scenari complessi in cui conta davvero e non necessariamente di natura quantitiva. Sembra che le strutture dei dati riguardino solo l'efficienza e nient'altro? Non sembra esserci alcuna particolare convenienza per gli sviluppatori in uso uno sopra l'altro.
(solo quando ho trovato risorse scientifiche sul perché esattamente i carboidrati semplici sono cattivi ho smesso di mangiare zucchero e caramelle sostituendolo completamente con frutti meno dannosi - spero che tu possa vedere l'analogia)