Qualquer estudante de ciência da computação que não passe mais do que 2 horas por dia em redes sociais já ouviu falar de Donald E. Knuth e sua magistral obra The Art of Computer Program (TAOCP).
E qualquer estudante que não tenha uma vida já tentou, de fato, ler e entender o TAOCP. O problema é que esse livro é excelente… para nos tornarmos tão humildes quanto for possível.
A abordagem matemática dos algoritmos feita por de Knuth é magistral mas, paradoxalmente, absolutamente incompreensível para quem, pelo menos, não começou a estudar matemática em um nível bem além do básico.
O volume I do TAOCP traz um resumo (com 110 páginas, diga-se de passagem) com os conceitos fundamentais para o entendimento da obra mas, como todo resumo, é mais adequado para quem já tem um conhecimento avançado do tema, não para quem está tentando sair da matemática do esino médio e entrar na matemática universitária.
Uma tentativa de ensinar a matemática necessária para o estudo dos algoritmos (e da ciência da computação em geral) foi condensada no livro “Concrete Mathematics: a foundation for Computer Science“, de Ronald L. Graham, Donald E. Knuth e Oren Patashnik:
Com quase 700 páginas esse livro aborda desde somatórios até notação assintótica para complexidade de algoritmos, passando pela teoria dos números, funções de inteiros, probabilidade discreta e muitos outros temas fundamentais para que o futuro cientista da computação tenha uma base matemática sólida.
Segundo os autores o título “CONCRETE” é uma mistura de “CONtinuous” e “disCRETE”: é o conjunto ferramental de matemática contínua e discreta necessário ao entendimento superior de computação (e que, segundo os próprios autores, é muito diferente do que hoje se ensina nas faculdades sob o nome “matemática discreta”).
Para aqueles que gostam de ler o prefácio, esse livro tem uma daquelas pérolas impagáveis de verdade incômoda que ilustram brilhantemente algum ponto (os negritos abaixo são meus):
When Donald E. Knuth taught Concrete Mathematics at Stanford for the first time, he explained the somewhat strange title by saying that it was his attempt to teach a math course that was hard instead of soft. He announced that, contrary to the expectations of some of his colleagues, he was not goint to teach the Theory of Aggregates, nor Stone’s Embedding Theorem, nor even the Stone-Čech compactification. (Several students from the civil engineering departament got up and quietly left the room.)
Autores, no prefácio de Concrete Mathematics
E por que estou citando esse livro? Pois minha primeira tentativa de ler e entender o TAOCP foi frustrada justamente pela necessidade de matemática além do básico… comprei o Concrete Mathematics há alguns dias. Minhas férias serão bem divertidas!