Estudo de algoritmos

[quote=mochuara]Nunca precisei estudar algoritmos gerais, apenas aqueles básicos de introdução a programação. Depois disso, no máximo caia em algum pesquisando pra alguma aplicação que estava desenvolvendo. Mas não me lembro de ter conseguido aproveitar alguma idéia diretamente no meu código. Minha impressão que estudar algoritmos não te torna mais hábil para criar novos algoritmos, assim como contemplar uma obra de arte não te ajuda a formar um artista. Ninguém precisa estar familiarizado com algoritmos prontos para ter criado o page rank por exemplo. Considerando que é muito chato estudar algo que não vou usar no dia a dia (e convenhamos, algoritmo não é bem o que espero estar contemplando), simplesmente não vejo motivos em faze-lo.

E vc, estuda algoritmos pra que?[/quote]
Pra sistemas CRUD não precisa mesmo.
Já diria Cormen (eu sei que parece que ele falou só pra vender o peixe dele, mas…)

Pode parecer que eu pago pau mesmo pra ele e mimimi, mas não me importo. O negócio é que eu, depois que comecei a resolver problemas e estudar mais algoritmos, deu uma boa melhorada na lógica. Não sei que influência tem diretamente e nem sei o porquê de ajudar, mas a minha maneira de programar melhorou muito.

mochuara, antes de começar tentar resolver esses problemas, também não me interessava e nem via porque estudar. Como o Andre disse para CRUD não precisa. Mas agora que estou estudando algoritmos, fazer sistemas até perdeu um pouco a graça, não sei se é fase, mas acho muito mais interessante algoritmos.

Não é nem questão de fase. Se não se conhece algoritmos não se conhece computação. Eu trabalho com muitos algoritmos, em processamento de imagens, para poder filtrar ruídos, recuperar informações. Transformações de furrier, laplacianos etc…
Precisa saber algoritmos para processar corretamente, e em tempo ótimo. Imagina uma aplicação de segurança que deveria gravar vídeo, mas não gravou porque demorou a processar uma cena?

:frowning:

Quanto ao contemplar as obras de arte os professores das escolas de arte discordam profundamente de sua opinião.

eu andei pensando sobre o tópico que postaram uma vez sobre a revista info, falando sobre fábricas de software. Realmente aquilo é verdade.

Então, tenho a segunda edição do Introduction to Algorithms do Cormen em PDF, mas nunca li ele.
Estava pensando em comprar a terceira edição em papel, acham que vale a pena? A leitura é muito pesada?

Valeu!

[quote=Gabriel]Então, tenho a segunda edição do Introduction to Algorithms do Cormen em PDF, mas nunca li ele.
Estava pensando em comprar a terceira edição em papel, acham que vale a pena? A leitura é muito pesada?

Valeu![/quote]
É um pouco pesada sim, mas acho que é o melhor e mais completo. Nada comparado com TAOCP do Donald Knuth, que é trash. Como eu falei, não são textbooks. Entra no site da MIT Press, que lá tem o Cormen mesmo falando do que tem de novo na terceira edição.

o que é?

o que é?[/quote]

Eles disseram na reportagem, que os programadores de software não tem noção do projeto, e que são condicionados a repetirem tarefas, que nem peão de obra.
Não havia concordado, mas comecei a pensar e percebi que realmente acontece isso.

:frowning:

Quanto ao contemplar as obras de arte os professores das escolas de arte discordam profundamente de sua opinião. [/quote]

Eu falei como programador, não como analista de sistema. Qual seria a opinião do artista?

Continuo sem saber como estudar algoritmos me tornaria mais produtivo. Apesar de que na última aplicação que eu desenvolvi tive que criar um algoritmo que me deixou orgulhoso.

:frowning:

Quanto ao contemplar as obras de arte os professores das escolas de arte discordam profundamente de sua opinião. [/quote]

Eu falei como programador, não como analista de sistema. Qual seria a opinião do artista?

Continuo sem saber como estudar algoritmos me tornaria mais produtivo. Apesar de que na última aplicação que eu desenvolvi tive que criar um algoritmo que me deixou orgulhoso.[/quote]

Nem analistas de sistemas precisam se preocupar com algoritmos. O trabalho deles não exige isso. O que uma transformação de furrier serviria para eles?

Esse tipo de coisa é para quem trabalha na área de exatas e engenharia.

[quote=mochuara]
Continuo sem saber como estudar algoritmos me tornaria mais produtivo. Apesar de que na última aplicação que eu desenvolvi tive que criar um algoritmo que me deixou orgulhoso.[/quote]

Um amigo meu trabalhava numa empresa que tinha um problema que estava custando muita grana para eles, e duas equipes de analistas, de dois países diferentes não resolviam, deram uma solução meio ruim que levava horas para ser calculada e nem sempre trazia resultados bons. Ele puxou para ele a responsa e usando o que ele conhecia de algoritmos de grafos resolveu o problema deles. Não é uma empresa pequena, é uma multinacional bem conhecida. Se não fosse por ele, a empresa teria duas opções: 1- sentar e chorar; 2- contratar alguns consultores muito caros e que nem sempre resolveriam o problema.
Estudar algoritmos não vai te tornar mais produtivo, mas pode te tornar capaz de resolver algum problema real que ninguém mais tem a coragem de botar a mão. Mas, claro, para ser bem realista, é bem difícil de surgir algo assim no dia a dia de um analista de sistemas comum.

[quote=elciok][quote=mochuara]
Continuo sem saber como estudar algoritmos me tornaria mais produtivo. Apesar de que na última aplicação que eu desenvolvi tive que criar um algoritmo que me deixou orgulhoso.[/quote]

Um amigo meu trabalhava numa empresa que tinha um problema que estava custando muita grana para eles, e duas equipes de analistas, de dois países diferentes não resolviam, deram uma solução meio ruim que levava horas para ser calculada e nem sempre trazia resultados bons. Ele puxou para ele a responsa e usando o que ele conhecia de algoritmos de grafos resolveu o problema deles. Não é uma empresa pequena, é uma multinacional bem conhecida. Se não fosse por ele, a empresa teria duas opções: 1- sentar e chorar; 2- contratar alguns consultores muito caros e que nem sempre resolveriam o problema.
Estudar algoritmos não vai te tornar mais produtivo, mas pode te tornar capaz de resolver algum problema real que ninguém mais tem a coragem de botar a mão. Mas, claro, para ser bem realista, é bem difícil de surgir algo assim no dia a dia de um analista de sistemas comum.[/quote]

bem falado.

[quote=elciok][quote=mochuara]
Continuo sem saber como estudar algoritmos me tornaria mais produtivo. Apesar de que na última aplicação que eu desenvolvi tive que criar um algoritmo que me deixou orgulhoso.[/quote]

Um amigo meu trabalhava numa empresa que tinha um problema que estava custando muita grana para eles, e duas equipes de analistas, de dois países diferentes não resolviam, deram uma solução meio ruim que levava horas para ser calculada e nem sempre trazia resultados bons. Ele puxou para ele a responsa e usando o que ele conhecia de algoritmos de grafos resolveu o problema deles. Não é uma empresa pequena, é uma multinacional bem conhecida. Se não fosse por ele, a empresa teria duas opções: 1- sentar e chorar; 2- contratar alguns consultores muito caros e que nem sempre resolveriam o problema.
Estudar algoritmos não vai te tornar mais produtivo, mas pode te tornar capaz de resolver algum problema real que ninguém mais tem a coragem de botar a mão. Mas, claro, para ser bem realista, é bem difícil de surgir algo assim no dia a dia de um analista de sistemas comum.[/quote]

Certa vez eu trabalhei num projeto que estava custando muito grana porque tinha um programador que queria de toda maneira resolver o problema utilizando um algoritmo de grafos que ele havia aprendido na faculdade recentemente. Como não foi dada uma solução mais simples para o problema eu tive que chamar a responsa e usei meu conhecimento da Java Collections Framework que resolveu o problema. Essa empresa também era uma grande multinacional.

Putz, provavelmente esse cara que você falou aprendeu a usar um martelo e passou a enxergar prego em tudo quanto é coisa.

[quote=mochuara]

Certa vez eu trabalhei num projeto que estava custando muito grana porque tinha um programador que queria de toda maneira resolver o problema utilizando um algoritmo de grafos que ele havia aprendido na faculdade recentemente. Como não foi dada uma solução mais simples para o problema eu tive que chamar a responsa e usei meu conhecimento da Java Collections Framework que resolveu o problema. Essa empresa também era uma grande multinacional.[/quote]

Vou te dar um exemplo:

Você possui uma lista de cidades, esta lista tmb contém a distância de cada uma delas. Você precisa percorrer todas as cidades pelo caminho mais curto, de maneira a poupar tempo, pois vc usa um avião com pouco combustível e precisa tomar decisões em microsegundos. Como resolveria?

[quote=juliocbq][quote=mochuara]

Certa vez eu trabalhei num projeto que estava custando muito grana porque tinha um programador que queria de toda maneira resolver o problema utilizando um algoritmo de grafos que ele havia aprendido na faculdade recentemente. Como não foi dada uma solução mais simples para o problema eu tive que chamar a responsa e usei meu conhecimento da Java Collections Framework que resolveu o problema. Essa empresa também era uma grande multinacional.[/quote]

Vou te dar um exemplo:

Você possui uma lista de cidades, esta lista tmb contém a distância de cada uma delas. Você precisa percorrer todas as cidades pelo caminho mais curto, de maneira a poupar tempo, pois vc usa um avião com pouco combustível e precisa tomar decisões em microsegundos. Como resolveria? [/quote]

Traçaria a rota mais curta entre cada ponto e voaria acima da troposfera pq?

[quote=mochuara][quote=juliocbq][quote=mochuara]

Certa vez eu trabalhei num projeto que estava custando muito grana porque tinha um programador que queria de toda maneira resolver o problema utilizando um algoritmo de grafos que ele havia aprendido na faculdade recentemente. Como não foi dada uma solução mais simples para o problema eu tive que chamar a responsa e usei meu conhecimento da Java Collections Framework que resolveu o problema. Essa empresa também era uma grande multinacional.[/quote]

Vou te dar um exemplo:

Você possui uma lista de cidades, esta lista tmb contém a distância de cada uma delas. Você precisa percorrer todas as cidades pelo caminho mais curto, de maneira a poupar tempo, pois vc usa um avião com pouco combustível e precisa tomar decisões em microsegundos. Como resolveria? [/quote]

Traçaria a rota mais curta entre cada ponto e voaria acima da troposfera pq?[/quote]

a questão é como.
E dito no problema, você não tem gasolina.
E mais, imagine essa lista com milhões de possibilidades(Uma árvore, para falar a verdade).

[quote=juliocbq]
a questão é como.
E dito no problema, você não tem gasolina.
E mais, imagine essa lista com milhões de possibilidades(Uma árvore, para falar a verdade).[/quote]

É um bom dever de casa, mas pra mim se não vem acompanhado de um modelo de receita não é um problema que vale a pena perder meu tempo. rsrs

[quote=mochuara][quote=juliocbq]
a questão é como.
E dito no problema, você não tem gasolina.
E mais, imagine essa lista com milhões de possibilidades(Uma árvore, para falar a verdade).[/quote]

É um bom dever de casa, mas pra mim se não vem acompanhado de um modelo de receita não é um problema que vale a pena perder meu tempo. rsrs
[/quote]
Então fique sabendo que te pagariam $1.000.000, se fizesse um software que resolvesse esse problema em tempo real.
Com certeza você não é um engenheiro, nem cientista da computação. Essa é a diferença entre eles e os analistas.