Today with the modern hardware and memory coming cheap, how much sense does it make to spend effort to analyze algoriths or data structure complexity?
ha ancora senso oggi.
forse l'esempio migliore che posso dare è quello della crescita dei numeri in cpu (più che in frequenza). scegliere i giusti algoritmi e strutture sono ancora importanti perché hai ancora questi massimi fisici: un programma ben scritto può richiedere una frazione del tempo o delle risorse della CPU.
Un'ovvia alternativa alla scelta degli algoritmi / implementazioni giusti è l'utilizzo dell'esecuzione parallela (PE). anche se in alcuni casi va bene, PE non è sempre una buona soluzione:
- può diventare molto complesso scrivere.
- può essere molto difficile eseguire il debug, testare e mantenere
- mentre molti problemi sono buoni candidati per PE, molti non si estendono bene nel dominio.
dato lo sforzo necessario per implementare correttamente il PE, gli algos e le strutture giuste sono ancora importanti e soluzioni molto più semplici e potenti per molti casi.
quindi, diciamo che hai raggiunto questo limite: preferiresti riadattare il programma per PE, o preferiresti usare (o verificare che il tuo programma stia usando) i tipi / algos / implementazioni corretti?
anche se scegli PE, il tuo programma (nella maggior parte dei casi) finirà col consumare più risorse di picco / totale nella sua esecuzione = =.
Wouldn't it be better instead, to focus on clean, maintainable code, readable code than on optimizations for complexity?
i due possono coesistere. (anche se alcune lingue o i tempi di esecuzione possono influire negativamente su questo, in modo tale che ci sia una minore sovrapposizione - la domanda è indipendente dalla lingua)