Una de las razones por las cuales, entre otras cosas, la complejidad del tiempo es una pregunta popular de la entrevista: la complejidad del espacio es un poco más difícil de formalizar y cuantificar, especialmente en relación con el tamaño del código, en comparación con la complejidad del tiempo.
Otra razón es la falacia generalizada de que la memoria es barata. No lo es, y deberíamos preocuparnos tanto por el espacio como por el tiempo (siempre y cuando el costo de desarrollo lo justifique, por supuesto).
Hay varios aspectos aquí. En primer lugar, la memoria caché del procesador es muy costosa. Si las áreas de uso frecuente de su código y datos pueden caber en la memoria caché de la CPU, sus ganancias de velocidad pueden ser de orden de magnitud en comparación con cuando no lo hacen. Pero los ingenieros de software rara vez piensan en su código en términos de caché de CPU.
Segundo, RAM: si su aplicación no se ajusta a la memoria del usuario, el intercambio y la desaceleración pueden arruinar toda la experiencia para ellos. Yo mismo soy desarrollador y, con 8 GB de RAM, las herramientas de desarrollo que utilizo pueden ser lentas e incómodas. Esta fue una de las razones, por ejemplo, dejé gcc por clang: este último tiene mucha menos memoria. De lo contrario, tendría que actualizar mi RAM a 16 GB.
Además, ancho de banda de red. Estoy en roaming móvil en este momento con un plan de datos muy limitado, y no hay manera en la Tierra que pueda descargar, por ejemplo, Adobe Photoshop, la madre de todo el bloatware. Incluso pensaría antes de descargar una aplicación de 50 MB, que Adobe Photoshop podría haber sido fácil si los desarrolladores tuvieran limitaciones de espacio en mente.
Finalmente, tenemos las nuevas generaciones de teléfonos móviles y tabletas a las que se aplican restricciones de espacio, casi como en los años 90 nuevamente.
Con todo, a medida que el hardware se hace más pequeño y más barato, lo que siempre hace, tendemos a aprovechar eso en ambas direcciones: diseñando computadoras más potentes por el mismo precio y, por otro lado, haciendo los diseños existentes más compactos . Siempre habrá dispositivos populares que tendrían aproximadamente las mismas limitaciones de memoria y potencia de procesamiento que hace décadas (más o menos). En pocas palabras, debemos aprender a crear código rápido, compacto y hermoso, independientemente de lo que la sabiduría común esté tratando de impulsarnos en un momento dado.