A Arte da Programação!

Iniciado por Deus Ex Machina, 17 de Julho de 2008, 17:26

tópico anterior - próximo tópico

Deus Ex Machina

Olá pessoal,

alguém sabe por que ninguém cita esses livros aqui? O autor, Donald E. Knuth, é uma sumidade, mas aqui nunca vi ninguém indicar com leitura obrigatória para se tornar um programador de alto nível. O cara sabe demais algoritmo!

Abraços!
Notebook Asus A7Jc; Core Duo 1,66 GHz; ATI Mobility Radeon X1600 256 MB; 2GB DDR2.
Hardy Heron funcionando (quase) perfeitamente!

carlosaluisio

A mesma coisa é banco de dados: De nada adianta o cara dominar bem as ferramentas de um Oracle se ele nao tem noção das realidades que estão em volta deles. O cara que vale, num sistema de informação, é aquele que vê as entradas e planeja as saídas, em qualquer caso. Com isso, basta utilizar um banco robusto, como Oracle ou Postgres, ou até mesmo Firebird, que são tudo repositórios de informações.

O mesmo vale para o artista gráfico: Gimp, Inkscape, Photoshop...... o que vale é o artista ! O designer ! Se ele é bom, ele faz com qualquer ferramenta (claro, nao com um Paint)!

E, com os algoritmos é isso! Estamos precisando de desenvolvedores para GNU. A linguagem deve ser definida somente depois de aprender bem os algoritmos. Só depois disso! Estudem algoritmos, depois escolha uma linguagem de programação.
Carlos
Ubuntu Lucid é 10 !!!

netzen

[ "Autoridade" ]
Numa entrevista alguns anos atrás, o Bill Gates disse que "se vc já leu Donald Knuth"
(e supostamente compreendeu), pode enviar seu currículo pra MS que "teremos emprego pra vc" ... rsrs ...
Sem dúvida o "homi" é uma AUTORIDADE!

[ Livros ]
Pra quem já sabe programar (qualquer coisa), recomendo esse :
CODE COMPLETE - Steve McConnell
http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670
Este não trata diretamente de algoritmos.
Code Complete trata das várias formas que um, digamos, um "atleta do software"
deva levar em consideração para ter uma vida PRODUTIVA na arena do "esporte do software".
Recomendo para o hobbista amante dos códigos e os profissionais também.
O livro NÃO contém linguagem técnica. Leitura super fácil e agradável.

jeanlandim

"O processo de preparar programas para um computador tem um atrativo especial, não tem só uma recompensa econômica e científica, mas também pode ser uma experiência estética, como a poesia ou a música".
Donald Knuth.

jeanlandim

"O processo de preparar programas para um computador tem um atrativo especial, não tem só uma recompensa econômica e científica, mas também pode ser uma experiência estética, como a poesia ou a música".
Donald Knuth.

jeanlandim

"O processo de preparar programas para um computador tem um atrativo especial, não tem só uma recompensa econômica e científica, mas também pode ser uma experiência estética, como a poesia ou a música".
Donald Knuth.

Dubiesto

Citação de: carlosaluisio online 17 de Julho de 2008, 21:43
A mesma coisa é banco de dados: De nada adianta o cara dominar bem as ferramentas de um Oracle se ele nao tem noção das realidades que estão em volta deles. O cara que vale, num sistema de informação, é aquele que vê as entradas e planeja as saídas, em qualquer caso. Com isso, basta utilizar um banco robusto, como Oracle ou Postgres, ou até mesmo Firebird, que são tudo repositórios de informações.

O mesmo vale para o artista gráfico: Gimp, Inkscape, Photoshop...... o que vale é o artista ! O designer ! Se ele é bom, ele faz com qualquer ferramenta (claro, nao com um Paint)!

E, com os algoritmos é isso! Estamos precisando de desenvolvedores para GNU. A linguagem deve ser definida somente depois de aprender bem os algoritmos. Só depois disso! Estudem algoritmos, depois escolha uma linguagem de programação.
Carlos

Isso é verdade irretorquível,um claro axioma...Entretanto,como soe acontecer,o caso foi dif'rente comigo.Antes de tomar contato com qualquer lingüagem de programação além de Javascript,eu procurei vários livros sobre algoritmos:encontrei muitos,comprei alguns e não terminei de ler nenhum - direi por que:nos primeiros capítulos,diziam-se coisas (ao menos p'ra mim) demasiado óbvias,mas os li;fui prosseguindo a leitura e permaneceu a mesma sensação.Como em outras vezes,recriminei-me a mim mesmo,alegando que era impaciência em vez de entendimento.Pr'a provar a mim mesmo que era aquele e não este,peguei um livro de referência sobre C (C Completo e Total) e propus-me a criar,sem olhar o código disponível no livro e no disquete,um jogo da velha (fazia apenas uma semana que eu tomara contato com a lingüagem C).Fí-lo,compilei - apareceram algumas mensagens de erro como falta de ponto-e-vírgula e coisas semelhantes,resolvendo-as eu facilmente -,falatavam algumas coisas,terminei e,enfim,conferi o resultado:a exceção de difr'enças de estilo,meu código estava muito parecido com o do autor,Herbet Schildt,e o resultado era quase o mesmo.Diante disto,parti p'ra o aprendizado da lingüagem e,mais tarde,de C++,Assembly,Java e outras.Bem,programo há quatro anos e nunca li um livro de algoritmos...Talvez isto deva-se ao meu interesse p'la matemática e p'lo pensamento silogístico encadeado - de qualquer modo,quase tudo o que fiz deduzi por mim mesmo,muito embora me pertube por vezes um desejo irracional e estúpido de pegar um livro de algoritmos e começar tudo de novo,como se eu tivesse precisão!

Deus Ex Machina

#7
Citação de: Dubiesto online 18 de Julho de 2008, 01:00
Citação de: carlosaluisio online 17 de Julho de 2008, 21:43
A mesma coisa é banco de dados: De nada adianta o cara dominar bem as ferramentas de um Oracle se ele nao tem noção das realidades que estão em volta deles. O cara que vale, num sistema de informação, é aquele que vê as entradas e planeja as saídas, em qualquer caso. Com isso, basta utilizar um banco robusto, como Oracle ou Postgres, ou até mesmo Firebird, que são tudo repositórios de informações.

O mesmo vale para o artista gráfico: Gimp, Inkscape, Photoshop...... o que vale é o artista ! O designer ! Se ele é bom, ele faz com qualquer ferramenta (claro, nao com um Paint)!

E, com os algoritmos é isso! Estamos precisando de desenvolvedores para GNU. A linguagem deve ser definida somente depois de aprender bem os algoritmos. Só depois disso! Estudem algoritmos, depois escolha uma linguagem de programação.
Carlos

Isso é verdade irretorquível,um claro axioma...Entretanto,como soe acontecer,o caso foi dif'rente comigo.Antes de tomar contato com qualquer lingüagem de programação além de Javascript,eu procurei vários livros sobre algoritmos:encontrei muitos,comprei alguns e não terminei de ler nenhum - direi por que:nos primeiros capítulos,diziam-se coisas (ao menos p'ra mim) demasiado óbvias,mas os li;fui prosseguindo a leitura e permaneceu a mesma sensação.Como em outras vezes,recriminei-me a mim mesmo,alegando que era impaciência em vez de entendimento.Pr'a provar a mim mesmo que era aquele e não este,peguei um livro de referência sobre C (C Completo e Total) e propus-me a criar,sem olhar o código disponível no livro e no disquete,um jogo da velha (fazia apenas uma semana que eu tomara contato com a lingüagem C).Fí-lo,compilei - apareceram algumas mensagens de erro como falta de ponto-e-vírgula e coisas semelhantes,resolvendo-as eu facilmente -,falatavam algumas coisas,terminei e,enfim,conferi o resultado:a exceção de difr'enças de estilo,meu código estava muito parecido com o do autor,Herbet Schildt,e o resultado era quase o mesmo.Diante disto,parti p'ra o aprendizado da lingüagem e,mais tarde,de C++,Assembly,Java e outras.Bem,programo há quatro anos e nunca li um livro de algoritmos...Talvez isto deva-se ao meu interesse p'la matemática e p'lo pensamento silogístico encadeado - de qualquer modo,quase tudo o que fiz deduzi por mim mesmo,muito embora me pertube por vezes um desejo irracional e estúpido de pegar um livro de algoritmos e começar tudo de novo,como se eu tivesse precisão!

Talvez você nunca tenha precisado usar/criar um algoritmo complexo, imaginando algo do tipo de um jogo de Xadrez.  Acredito que para trabalhar com o básico, dia a dia, na maioria dos programas comerciais, que é pegar uma entrada, consultar/alterar um banco de dados, e devolver uma saída, o estudo avançado de algoritmos não é tão necessário. Mas será que funciona assim, digamos em cálculos e análises de Bioinformática, jogos modernos, inteligência artificial? Acredito que nesses ramos não haja espaço para algoritmos genéricos. Tudo deve ser extremamente preciso e com alto desempenho, coisas que um genérico não conseguiria...

Percebo que você fala que deduziu por si mesmo, mas eu te pergunto, será que isso não é reinventar a roda? Será que ao estudar, evitaria ter que recriar soluções, economizando tempo para aperfeiçoar sua técnica, mesmo com tempo "perdido" para estudar?

Abração!
Notebook Asus A7Jc; Core Duo 1,66 GHz; ATI Mobility Radeon X1600 256 MB; 2GB DDR2.
Hardy Heron funcionando (quase) perfeitamente!

Dubiesto

Bem,eu me aplico ao estudo da IA e da programação p'ra jogos em geral.

"Percebo que você fala que deduziu por si mesmo, mas eu te pergunto, será que isso não é reinventar a roda? Será que ao estudar, evitaria ter que recriar soluções, economizando tempo para aperfeiçoar sua técnica, mesmo com tempo "perdido" para estudar?"

Sim,é reiventar a roda,e não recomendo isto a ninguém.Entretanto,devo dizer que este estudo solitário proporcionou-me um entendimento tão abrangente de modo que posso encontrar facilmente soluções de problemas que a muitas pessoas parecem complexos.Se eu não fosse um auto-didata incorrigível,certamente não seguiria o caminho que segui.


tfmoraes


kunigas

<--- Eu não sou muito fã de Donald Knuth =P

Citaralguém sabe por que ninguém cita esses livros aqui? O autor, Donald E. Knuth, é uma sumidade, mas aqui nunca vi ninguém indicar com leitura obrigatória para se tornar um programador de alto nível. O cara sabe demais algoritmo!

Eu já peguei um desses livros para ler e achei extremamente difícil. Este livro vai fundo no estudo dos algoritmos e por isso acho que se você pretente aprender algoritmos devia tentar as literaturas clássicas como o Cormen, que cobre vários algoritmos mas não deixa de ser rigoroso com provas de corretude e complexidade (por isso é tão grande!).

kunigas

Citação de: Deus Ex Machina online 18 de Julho de 2008, 08:57
Citação de: Dubiesto online 18 de Julho de 2008, 01:00
Citação de: carlosaluisio online 17 de Julho de 2008, 21:43
A mesma coisa é banco de dados: De nada adianta o cara dominar bem as ferramentas de um Oracle se ele nao tem noção das realidades que estão em volta deles. O cara que vale, num sistema de informação, é aquele que vê as entradas e planeja as saídas, em qualquer caso. Com isso, basta utilizar um banco robusto, como Oracle ou Postgres, ou até mesmo Firebird, que são tudo repositórios de informações.

O mesmo vale para o artista gráfico: Gimp, Inkscape, Photoshop...... o que vale é o artista ! O designer ! Se ele é bom, ele faz com qualquer ferramenta (claro, nao com um Paint)!

E, com os algoritmos é isso! Estamos precisando de desenvolvedores para GNU. A linguagem deve ser definida somente depois de aprender bem os algoritmos. Só depois disso! Estudem algoritmos, depois escolha uma linguagem de programação.
Carlos

Isso é verdade irretorquível,um claro axioma...Entretanto,como soe acontecer,o caso foi dif'rente comigo.Antes de tomar contato com qualquer lingüagem de programação além de Javascript,eu procurei vários livros sobre algoritmos:encontrei muitos,comprei alguns e não terminei de ler nenhum - direi por que:nos primeiros capítulos,diziam-se coisas (ao menos p'ra mim) demasiado óbvias,mas os li;fui prosseguindo a leitura e permaneceu a mesma sensação.Como em outras vezes,recriminei-me a mim mesmo,alegando que era impaciência em vez de entendimento.Pr'a provar a mim mesmo que era aquele e não este,peguei um livro de referência sobre C (C Completo e Total) e propus-me a criar,sem olhar o código disponível no livro e no disquete,um jogo da velha (fazia apenas uma semana que eu tomara contato com a lingüagem C).Fí-lo,compilei - apareceram algumas mensagens de erro como falta de ponto-e-vírgula e coisas semelhantes,resolvendo-as eu facilmente -,falatavam algumas coisas,terminei e,enfim,conferi o resultado:a exceção de difr'enças de estilo,meu código estava muito parecido com o do autor,Herbet Schildt,e o resultado era quase o mesmo.Diante disto,parti p'ra o aprendizado da lingüagem e,mais tarde,de C++,Assembly,Java e outras.Bem,programo há quatro anos e nunca li um livro de algoritmos...Talvez isto deva-se ao meu interesse p'la matemática e p'lo pensamento silogístico encadeado - de qualquer modo,quase tudo o que fiz deduzi por mim mesmo,muito embora me pertube por vezes um desejo irracional e estúpido de pegar um livro de algoritmos e começar tudo de novo,como se eu tivesse precisão!

Talvez você nunca tenha precisado usar/criar um algoritmo complexo, imaginando algo do tipo de um jogo de Xadrez.  Acredito que para trabalhar com o básico, dia a dia, na maioria dos programas comerciais, que é pegar uma entrada, consultar/alterar um banco de dados, e devolver uma saída, o estudo avançado de algoritmos não é tão necessário. Mas será que funciona assim, digamos em cálculos e análises de Bioinformática, jogos modernos, inteligência artificial? Acredito que nesses ramos não haja espaço para algoritmos genéricos. Tudo deve ser extremamente preciso e com alto desempenho, coisas que um genérico não conseguiria...

Percebo que você fala que deduziu por si mesmo, mas eu te pergunto, será que isso não é reinventar a roda? Será que ao estudar, evitaria ter que recriar soluções, economizando tempo para aperfeiçoar sua técnica, mesmo com tempo "perdido" para estudar?

Abração!

Eu concordo com o Deus Ex Machina, a não ser que você seja um gênio da matemática/computação. O fato de você ter feito um jogo da velha com pouco tempo de programação indica que você tem aptidão e autodidatismo. Mas a teoria por trás dos algoritmos clássicos que são apresentados em livros de algoritmos é muito complexa e levou anos pra chegar onde está. Eu sugiro fortemente que você estude até o final algum livro de algoritmos (o Cormem por exemplo) e verá que tem muito mais coisa do que podemos imaginar a princípio.

Eu acho extremamente válido tentar pensar em soluções de problemas simples para ganhar um "feeling" do problema. Mas há horas em que temos que deixar o ego de lado e buscar soluções prontas senão podemos ficar travados em um problema a vida inteira sem conseguir resolvê-lo.


Dubiesto

'Stá certo...Entretanto,não tenho encontrado nenhuma solução em livros de algoritmos p'ra o meu último projeto,que é muito mais complexo do que um jogo da velha,e creio que não encontrarei,uma vez que trata de algo que muito provavelmente não atraiu a atenção de ninguém (ao menos na mesma profundidade).

Deus Ex Machina

Citação de: Dubiesto online 20 de Julho de 2008, 22:43
'Stá certo...Entretanto,não tenho encontrado nenhuma solução em livros de algoritmos p'ra o meu último projeto,que é muito mais complexo do que um jogo da velha,e creio que não encontrarei,uma vez que trata de algo que muito provavelmente não atraiu a atenção de ninguém (ao menos na mesma profundidade).

Fiquei curioso, o que seria esse projeto, pode falar?

Abração!
Notebook Asus A7Jc; Core Duo 1,66 GHz; ATI Mobility Radeon X1600 256 MB; 2GB DDR2.
Hardy Heron funcionando (quase) perfeitamente!

kunigas

Ia perguntar a mesma coisa, mas você foi mais rápido =P