Pensamento crítico

[quote=Luiz Augusto Prado]
E o que vc sugere? Lisp?

Entendo o que quer dizer quando chega algum “estranho” e soca uma parafernalha mostro só para matar uma formiga.
Mas isso ocorre em qualquer linguagem. Não só no java. Esse é um problema mais do programador que dá linguagem.
Ou vc tá querendo dizer que não existem frameworks e bibliotecas para Lisp? [/quote]

Isso não acontece apenas com “estranhos”. Esse é o normal dos desenvolvedores Java. O típico desenvolvedor Java não sabe usar o operador “new” e precisa de uma Factory que vem de um Provider que carrega o BusinessLocator cujos services são configurados no Spring, que faz bytecode instrumentation para alterar as classes, cujas dependências são gerenciadas pelo Maven, etc.

Desenvolvedores Java, em sua maioria, até mesmo aqueles com anos de experiência, são incapazes de fazer algo simples.

Um simples softwarezinho, se torna um monstro de 15 camadas.

Lisp é uma opção, mas qualquer linguagem dinâmica já faria tudo o que o Spring faz e muito mais. Muitos outros frameworks deixariam de existir por causa disso também.

Com tanta experiência certamente você não terá dificuldade em encontrá-los.

[quote=perdeu][quote=Longino]
Acho que acontece mais com Java por causa das limitações da linguagem. Um framework como Spring serve apenas para simular features que você encontra em qualquer linguagem dinâmica.
[/quote]

cita umas features ai…
[/quote]

Por exemplo:

  • Metaprogramação:

No caso do Lisp isso acontece em tempo de compilação. Em linguagens como Ruby ou Python é em tempo de execução. Isso permite por exemplo que você consigar gerar código baseado em alguma configuração. Isso eliminaria por exemplo a necessidade de uma conifguração externa para se rodar o aplicativo, pois seria possível construir o que fosse necessário a partir da linguagem mesmo.

  • Protocolo meta objetos:

Em Lisp especificamente existe suporte para customização do sistema de OO. Por exemplo, pode-se usar :around methods ou customizar a invocação dos métodos, logo AOP também seria desnecessário. Ou poderia-se utilizar uma biblioteca que faria o seu código funcionar com AOP sem nenhuma necessidade de framework ou configuração externa.

A próxima versão da minha implementação será completa e terá essa feature.

  • DSLs:

Sempre ao se modelar um domínio você está descrevendo-o em código. Em alguns casos criar DSLs para certas tarefas pode facilitar bastante.

  • Programação funcional:

O fato de não estar preso a classes e poder passar funções como parâmetros permite tornar o seu código mais simples. Nesse caso não haveria a necessidade de criar a implementação de um service, bastando-se alterar alguma parâmetro que refere a alguma função.

E por aí vai. Existem muitas outras coisas também.

O Spring é um símbolo de tudo o que existe de errado com o Java.

E quem disse que não o fazem?[/quote]

A julgar pelo estado do desenvolvimento Java é óbvio que desevolvedores não o fazem.

Se o fizessem, tudo seria muito mais simples.

Cara, qualquer um que frequenta o fórum já sabe que você considera Java enquanto linguagem limitada, apesar do Longino rodar na JVM. Faça-nos um favor então, escreve um blog, deixa a sua opinião clara e pronto. Muito provavelmente você não é o 1o a descobrir que a b*$t@ fede. Agora, eu só não entendo porque para expor a sua opnião você precisa taxar toda uma classe de profissionais.

[quote=Longino]

Com tanta experiência certamente você não terá dificuldade em encontrá-los.[/quote]

Como vc é bom de dedução, logo deve ter entendido que não vi nada de mais em Lisp.

Talvez seja porque o material que tenho encontrado na internete seja ruim?
Talvez seja porque eu quase não conheço ninguem que programa em List para trocar idéia e por isso estou tendo uma interpretação errada?

[quote=Luiz Augusto Prado][quote=Longino]

Com tanta experiência certamente você não terá dificuldade em encontrá-los.[/quote]

Como vc é bom de dedução, logo deve ter entendido que não vi nada de mais em Lisp.

Talvez seja porque o material que tenho encontrado na internete seja ruim?
Talvez seja porque eu quase não conheço ninguem que programa em List para trocar idéia e por isso estou tendo uma interpretação errada?

[/quote]

Eu prefiro ver um livro a procurar na internet. Existem o Practical Common Lisp que é muito bom, e também o ANSI Common Lisp do Paul Graham. Ambos são ótimos.

Na internet fica mais difícil ter uma idéia geral porque a informação é toda picada em artigos diferentes.

E quem disse que não o fazem?[/quote]

A julgar pelo estado do desenvolvimento Java é óbvio que desevolvedores não o fazem.

Se o fizessem, tudo seria muito mais simples.[/quote]

Mais uma vez vc está sendo genérico,‘estado do desenvolvimento Java’ é um termo abrangente e falacioso demais.

O ferramental está ai a disposição.Dá pra fazer bom e mal uso das ferramentas,depende de quem vai usar.

Pois bem,e o que seria ‘O típico desenvolvedor Java’?Vc rotula demais as coisas e usa sempre uma conotação pejorativa.

é troll!

Falta pensamento crítico sim. 90% desse forum não reconhece um troll quando vê um.

Vou ignorar a agressividade que está dominando o tópico, tanto por parte do criador dele quanto das outras pessoas que estão agindo de forma um defensiva demais.
Esse assunto pode sim render uma discussão saudável!

Separei aqui o trecho mais “útil” do que foi dito até agora

De fato, às vezes tenho algumas “crises existenciais” em relação a isso.
Na hora de montar uma arquitetura sempre ficam pairando aqueles fantasminhas dizendo “Isso precisa ser injetado senão você fica acoplado à implementação!” “É preciso estar preparado para uma troca de banco de dados!” “Cuidado com a internacionalização!”, etc etc etc.

Resultado: eu também muitas vezes acabo usando um monstro de 15 camadas para algo que poderia ser simples. Mas sempre com aquela pulga atrás da orelha, o pensamento na possibilidade de estar realmente exagerando em tudo isso.
Fica muito evidente na hora de apresentar a um outro desenvolvedor… “Para criar uma nova funcionalidade, você cria essa classe, essa, essa, configura isso, acrescenta aquele arquivo…”. Nessa hora tenho a sensação de que é demais.

Será que às vezes nos falta coragem para assumir que determinada aplicação é realmente simples, e sempre será?

O que acham?

[quote=Longino]
Eu prefiro ver um livro a procurar na internet. Existem o Practical Common Lisp que é muito bom, e também o ANSI Common Lisp do Paul Graham. Ambos são ótimos.

Na internet fica mais difícil ter uma idéia geral porque a informação é toda picada em artigos diferentes.[/quote]

Está equivocado quando diz que os erros de escolha do desenvolvedor é culpa da linguagem.
Bibliotecas, patterns, frameworks, são escolhas dos desenvolvedores. Não obrigações.

Ninguem, em sã consciencia (Salvo em projetos solitários), vai querer desenvolver um projeto fora do padrão porque se algum desenvolvedor parar no meio do caminho, outro deve ser capaz de continuar.
Mesmo que vc ache ruim o mundarel de camadas, frameworks, bibliotecas e patterns não vai resolver em nada criticar, pois sistemas criados desta forma foram criados para crescerem e absorverem desenvolvedores especializados para atuarem naquele framework, camada, pattern etc.
Mas ai vc diria, o excesso de camadas, patterns, bibliotecas, e frameworks atrapalham. Sim se o projeto for uma merda. E nesse ponto, novamente a culpa recai sobre o desenvolvedor, que poderia repetir o erro utilizando qualquer outra linguagem. Se vc não gosta de um framework, utilize outro ou faça o seu. Isso é escolha sua.

Em Lisp parece que não deve ter Loop…
Notou que vamos voltar para o que já lhe dissemos?

Aprendi java por influencia de colegas e a vasta quantidade de bons materiais na internete.
Se acha que pode produzir alguma informação melhor, faça como já lhe sugeriram:
Publique em um Blog, depois que escrever um artigo bem legal sobre, poste o link aqui.
Enquanto não me convencer lendo um artigo que preste…

Novamente, publique um blog falando sobre:

  • performance;
  • material para estudo (Apostila);
  • custo do compilador (ou interpretador);
  • tempo de dedicação;
  • se é multiplataforma;
  • comparação com alguma das linguagens que já conheço e suas vantagens;
  • integração com hardwares e softwares;
  • e principalmente a demanda.