Estudo de Algoritmos para profissionais experientes

Vocês profissionais experientes, ainda estudam algoritmos ? Se sim, qual a motivação ? Ou compartilham daqueles que isso é “coisa” para o primeira semestre da faculdade, penso ser ao contrário, especialmente tendo obras como a de Cormen entre outros…

Cara, ultimamente não tenho estudado nada! Só lido algumas revistas e (raramente) livros, geralmente não relacionados a computação.

Mas uma coisa que eu tenho muita vontade é de voltar a estudar algoritmos. Na época de faculdade eu me trancava no quarto numa tarde de sábado ou domingo, quando caía o céu de chuva, e resolvia vários problemas. Saía do quarto com a cabeça fritando, mas sempre valia a pena. Ainda acho que vale muito a pena, porque é a essência da computação em si. Muitas pessoas dizem que não é usado pra fazer sistemas e bla bla bla, que não vai dar dinheiro no final, mas acho que tudo o que você estuda você usa pra alguma coisa, não somente nessa parte de algoritmos.

Logicamente, não é interessante estudar SOMENTE isso - arquitetura, tecnologias novas, qualidade de código / design são muito importantes também. Acho que vale a pena estudar algoritmos quando se tem prazer em fazer isso - ou quando ter como um hobby resolver problemas no TopCoder, UVa, Spoj, GCJ e afins. Acho que o estudo de algoritmos possivelmente facilita o estudo das outras áreas da computação, como novos paradigmas.

Na minha opinião algoritmos é uma coisa que você deixa de estudar e passa a criar! Quando você esta codificando, está criando algorítmos, muitas vezes com base em outro algorítmos ou até mesmo utilizando diversos algorítmos para criar outro. O estudo de algorímos, a meu ver, é uma base para isso. Aprofundar o conhecimento vale a pena somente se você estiver trabalhando em algo específico, por que é algo que não vai agregar mais valor.

A meu ver estudar padrões de projeto, agrega muito vais valor que algorítmos, até porque eles são os tijolos da construção de muitos deles.

Vejo muitos programadores também com uma ansia por distrincharem determinados conhecimentos, mas não se preocupam com o mais básico! Um exemplo é que a maioria dos programadores que dizem utilizar POO, estão programando de forma procedural. A meu ver, mais importante que Algorítmos é entender os diversos paradigamas de programação.

Geralmente se estuda algorítmos específicos.

Mas o enfoque é outro. É entender ou demonstrar uma técnica, não tanto praticar a lógica em si.
Muitos trabalhos acadêmicos usam algorítmos, mas a linguagem adotada é mais matemática. Veja um exemplo:

Para quem tem uma boa base de ciência da computação (e consequentemente já estudou todos os algoritmos mais comuns), talvez seja necessário voltar ao estudo apenas quando houver uma necessidade específica.

Mas para autoditatas em geral (sem formação superior ou formados em outras áreas, como eu), acho bastante recomendável dedicar um tempo a esse assunto, pois aumenta muito o repertório na hora de resolver problemas.

Estudar algoritmos é essencial para qualquer profissional que queira realmente exercer uma profissão na área da computação. Sempre e constantemente algoritmos novos são desenvolvidos e é isso que faz a tecnologia andar para frente. Se existem codecs como h264 e jpeg hoje é porque alguém pesquisou uma forma de otimizar um algoritmo existente ou criou um para resolver um problema do nosso dia a dia.

Sempre que posso procuro ler sobre um novo. O último que estudei foi o viola e jones, para detecção de faces. Ele consegue encontrar um rosto em uma fotografia muito rapidamente e foi criado se não me engano em 2001.

Sempre novos algoritmos estão surgindo em diversos campos como: computação gráfica, inteligência artificial, processamento de imagens, compiladores, estatística …