Algoritmos e Estruturas de Dados
Erro em Lua: Não é possível criar o processo: proc_open(/dev/null): failed to open stream: Operation not permitted
Estudamos estruturas de dados para que possamos aprender a escrever programas mais eficientes. Mas por que os programas devem ser eficientes quando os novos computadores ficam mais rápidos a cada ano? A razão é que nossas ambições crescem com nossas capacidades. Em vez de tornar as necessidades de eficiência obsoletas, a revolução moderna em poder de computação e capacidade de armazenamento simplesmente aumenta as apostas de eficiência à medida que tentamos tarefas mais complexas.
A busca pela eficiência do programa não precisa e não deve entrar em conflito com o design e a clareza do código. Criar programas eficientes tem pouco a ver com "truques de programação", mas sim com base em boa organização de informações e bons algoritmos. É provável que um programador que não dominou os princípios básicos de um design claro escreva programas pouco eficientes. Por outro lado, as preocupações relacionadas aos custos de desenvolvimento e manutenção não devem ser usadas como uma desculpa para justificar um desempenho ineficiente. A generalidade no design pode e deve ser alcançada sem sacrificar o desempenho, mas isso só pode ser feito se o designer entender como medir o desempenho e fizer parte integrante do processo de projeto e implementação. A maioria dos currículos de ciência da computação reconhece que as boas habilidades de programação começam com uma forte ênfase nos princípios fundamentais de engenharia de software. Então, uma vez que um programador aprendeu os princípios de design e implementação de programas claros, o próximo passo é estudar os efeitos da organização de dados e algoritmos sobre a eficiência do programa.