O mito da superior produtividade do .net em relação ao Java é real?

Acho que isso não tem nada a ver não, Sérgio. O netbeans funciona da mesma maneira que o visual studio. Isso é um mito que vem sendo difundido desde a era do delphi. O “Zé da esquina colocou na cabeça que é fácil escrever software usando object pascal porque a sua ide é simples e muito produtiva”. Acho que esse ítem se enquadra mais que pensar “desenvolvedores x fazem drag & drop”.

Essa questão de quem usava delphi só sabia montar janela era uma mentira danada que apareceu porque muita gente incompetente se meteu a analista de sistema e programador. Conheço uma equipe toda que usa dotnet e não se enquadra nesse perfil.

[quote=juliocbq]
Acho que isso não tem nada a ver não, Sérgio. O netbeans funciona da mesma maneira que o visual studio. Isso é um mito que vem sendo difundido desde a era do delphi. O “Zé da esquina colocou na cabeça que é fácil escrever software usando object pascal porque a sua ide é simples e muito produtiva”. Acho que esse ítem se enquadra mais que pensar “desenvolvedores x fazem drag & drop”.

Essa questão de quem usava delphi só sabia montar janela era uma mentira danada que apareceu porque muita gente incompetente se meteu a analista de sistema e programador. Conheço uma equipe toda que usa dotnet e não se enquadra nesse perfil.[/quote]

Não estou dizendo que não. Não estou pondo todo o mundo no mesmo saco. Estou apenas dizendo que é porque alguns fazem isso (ou fizeram, não importa o tempo) a plataforma ganhou espaço como ferramenta RAD. O ponto é que existe esse perfil. E não quem se enquadra nele. Em java esse perfil não existe. E nunca existiu.
E esta diferença advem da cultura , da filosofia subjacente às plataformas.

Vejamos de outra maneira. Quantas pessoas em java sabem programar sem usar ide, só no sdk ? Muitas ? poucas ? A maioria ou a minoria ?
E em .net ? É possivel programar sem o IDE ? e se sim, é igual de produtivo que o java ? Deve ser , certo ? afinal é um monte de arquivos e um compilador.

O ponto é que em java as pessoas são instruidas as começar sem IDE. Aqui mesmo no guj essa máxima é vinculada. Em .net ?

Portanto podemos dizer que é uma questão de guerra de IDE e não das plataformas em si. Pois a linguagem é irrelevante - como já foi apontado - o design de OO é irrelevante - cada um faz o seu bem ou mal e a API em si é praticamente a mesma. Então o que sobra ? A IDE. .NET vem com IDE, java não. Isto causa diferença na hora de começar um projeto ? Para mim não. Eu uso o eclipse ha anos e sei configurá-lo para a minha produtividade. Mas em uma equipe só a configuração do ecplise pode levantar várias vagas de discussão. porquê ? Porque ha muitas opções. É flexivel de mais. Em .net vc instala e já é.
Para java também ha muitas ferramentas produtivas, mais até que o .net como a familia Grails, o Play o Spring Roo. Mas são ferramentas. Vendor lock-in.Não é portável.
Isto indica que quantas menos opções , quanto menos fexibilidade, quanto mais padronização e foco, mais produtividade.

O meu ponto é que .net sim é mais produtivo porque ele entrega um nivel diferente que o java não entrega e vc é obrigado a fazer em todos os projetos. Essa é a diferença. todos os frameworks que existem em java servem para preencher esta lacuna. E quando vc usa um framework, a produtividade fica igual. O ponto é que o tempo que o cara de java gastou para criar ou configurar o framework, o cara do .net já tem as telas feitas, navegáveis e demonstráveis.

[quote=sergiotaborda][quote=juliocbq]
Acho que isso não tem nada a ver não, Sérgio. O netbeans funciona da mesma maneira que o visual studio. Isso é um mito que vem sendo difundido desde a era do delphi. O “Zé da esquina colocou na cabeça que é fácil escrever software usando object pascal porque a sua ide é simples e muito produtiva”. Acho que esse ítem se enquadra mais que pensar “desenvolvedores x fazem drag & drop”.

Essa questão de quem usava delphi só sabia montar janela era uma mentira danada que apareceu porque muita gente incompetente se meteu a analista de sistema e programador. Conheço uma equipe toda que usa dotnet e não se enquadra nesse perfil.[/quote]

Não estou dizendo que não. Não estou pondo todo o mundo no mesmo saco. Estou apenas dizendo que é porque alguns fazem isso (ou fizeram, não importa o tempo) a plataforma ganhou espaço como ferramenta RAD. O ponto é que existe esse perfil. E não quem se enquadra nele. Em java esse perfil não existe. E nunca existiu.
E esta diferença advem da cultura , da filosofia subjacente às plataformas.

Vejamos de outra maneira. Quantas pessoas em java sabem programar sem usar ide, só no sdk ? Muitas ? poucas ? A maioria ou a minoria ?
E em .net ? É possivel programar sem o IDE ? e se sim, é igual de produtivo que o java ? Deve ser , certo ? afinal é um monte de arquivos e um compilador.

O ponto é que em java as pessoas são instruidas as começar sem IDE. Aqui mesmo no guj essa máxima é vinculada. Em .net ?

Portanto podemos dizer que é uma questão de guerra de IDE e não das plataformas em si. Pois a linguagem é irrelevante - como já foi apontado - o design de OO é irrelevante - cada um faz o seu bem ou mal e a API em si é praticamente a mesma. Então o que sobra ? A IDE. .NET vem com IDE, java não. Isto causa diferença na hora de começar um projeto ? Para mim não. Eu uso o eclipse ha anos e sei configurá-lo para a minha produtividade. Mas em uma equipe só a configuração do ecplise pode levantar várias vagas de discussão. porquê ? Porque ha muitas opções. É flexivel de mais. Em .net vc instala e já é.
Para java também ha muitas ferramentas produtivas, mais até que o .net como a familia Grails, o Play o Spring Roo. Mas são ferramentas. Vendor lock-in.Não é portável.
Isto indica que quantas menos opções , quanto menos fexibilidade, quanto mais padronização e foco, mais produtividade.

O meu ponto é que .net sim é mais produtivo porque ele entrega um nivel diferente que o java não entrega e vc é obrigado a fazer em todos os projetos. Essa é a diferença. todos os frameworks que existem em java servem para preencher esta lacuna. E quando vc usa um framework, a produtividade fica igual. O ponto é que o tempo que o cara de java gastou para criar ou configurar o framework, o cara do .net já tem as telas feitas, navegáveis e demonstráveis.

[/quote]

Mas as telas construídas sendo com o netbeans ou o visual studio possuem a mesma complexidade. A microsoft só te entrega uma gama maior de ferramentas de produtividade, mas isso em questão não tem muita importância se forem usadas sozinhas, já que existem mais parâmetros que devem ser somados, como os “frameworks” que você citou.

Sobre “dummys”, eles estão por toda a parte. O drag & drop é uma realidade java, .net, c++(com visual studio, c++ builder, qtcreator…), pascal(delphi e lazarus). Não uma exclusividade de algumas.

Galera sem querer ser muito chato, mas se utilizar as ferramentas e recursos como argumento sobre produtividade iremos sempre falar das mesmas coisas que são ditas a + OU - 25 atrás. :shock:

Na época o centro das atenções eram Cobol, Basic x Clipper x C x Pascal - a discussão era exatamente A MESMA.

A MS sempre priorizou a facilidade e teve como principal alvo usuários leigos ou menos qualificados, ela se fez em cima desta estratégia; funcionou e funciona muito bem - não é demérito, ao contrario, percebendo a carência no setor ela soube e ainda sabe investir de forma certeira.

Quem construiu JAVA possui (ou ao menos possuía) outro conceito de facilidade / produtividade, bem diferente da MS.

flws

Tópico de altíssimo nível técnico! Parabéns a todos os debatedores! :wink:

Você esqueceu o primeiro framework action-based em Java full-stack => http://www.mentaframework.org

Acho que antes dele só tinha o Rife, mas esse é component-based.

Tirando isso não vejo muita relevância nesse tópico. As linguagens são extremamente parecidas, tanto na arquitetura quanto na sintaxe. Logo essa discussão só faz algum sentido se vc pegar dois times ou duas pessoas que nunca viram nenhuma das duas. Caso contrário me parece óbvio que quem tem experiência com .NET vai achar ela mais produtiva e quem tem experiência com Java vai achar Java mais produtivo.

Eu acho a linguagem Java um pouco mais simples que .NET. .NET te dá um pouco mais de poder o que pode complicar as coisas. Java é uma das linguagens mais simples que existem.

Por as linguagens serem muito parecidas, essa discussão é pointless, assim como se eu te perguntar quem é mais produtivo: Ruby ou Python?

Vc sentitizou bem. É isso ai mesmo.

Concordo com o fato de que a produtividade esta mais relacionada com o conhecimento do individuo sobre a linguagem/plataforma do que a linguagem/plataforma em si.

Apesar de .NET não ser feito somente de drag and drop e ter muitos recursos ótimos que são bem aproveitados por quem está preocupado com implementar uma arquitetura decente, a propaganda não é em cima desses recursos. Voce quase nao ouve “ah, partial eh legal, linq eh show, delegates eh massa” da maioria dos que dizem que .NET é mais produtivo.

Normalmente a propaganda é: “Nossa, .NET é muito melhor, voce tem tudo integrado, arrasta e já está pronto. Em alguns minutos voce já tem tudo funcionando.” Isso é ilusório, ou é real para aplicações pequenas. Esse pensamento para aplicações maiores é suicídio.

[quote=YvGa][quote=saoj]
… As linguagens são extremamente parecidas, tanto na arquitetura quanto na sintaxe. Logo essa discussão só faz algum sentido se vc pegar dois times ou duas pessoas que nunca viram nenhuma das duas. Caso contrário me parece óbvio que quem tem experiência com .NET vai achar ela mais produtiva e quem tem experiência com Java vai achar Java mais produtivo.

Eu acho a linguagem Java um pouco mais simples que .NET. .NET te dá um pouco mais de poder o que pode complicar as coisas. Java é uma das linguagens mais simples que existem.

Por as linguagens serem muito parecidas, essa discussão é pointless, assim como se eu te perguntar quem é mais produtivo: Ruby ou Python?
[/quote]

Concordo com o fato de que a produtividade esta mais relacionada com o conhecimento do individuo sobre a linguagem/plataforma do que a linguagem/plataforma em si.

Apesar de .NET não ser feito somente de drag and drop e ter muitos recursos ótimos que são bem aproveitados por quem está preocupado com implementar uma arquitetura decente, a propaganda não é em cima desses recursos. Voce quase nao ouve “ah, partial eh legal, linq eh show, delegates eh massa” da maioria dos que dizem que .NET é mais produtivo.

Normalmente a propaganda é: “Nossa, .NET é muito melhor, voce tem tudo integrado, arrasta e já está pronto. Em alguns minutos voce já tem tudo funcionando.” Isso é ilusório, ou é real para aplicações pequenas. Esse pensamento para aplicações maiores é suicídio.[/quote]

Apesar de eu trabalhar com java nunca vi a microsoft vender suas soluções com esse argumento. Onde você leu isso?

[quote=juliocbq]
Apesar de eu trabalhar com java nunca vi a microsoft vender suas soluções com esse argumento. Onde você leu isso?[/quote]

Nao eh da microsoft que normalmente eu ouço, mas da maioria dos desenvolvedores que dizem que .NET é mais produtivo.

Mas voce tem certeza que nunca ouviu a MS falar das suas maravilhas todas integradas?

[quote=YvGa]
Concordo com o fato de que a produtividade esta mais relacionada com o conhecimento do individuo sobre a linguagem/plataforma do que a linguagem/plataforma em si.

Apesar de .NET não ser feito somente de drag and drop e ter muitos recursos ótimos que são bem aproveitados por quem está preocupado com implementar uma arquitetura decente, a propaganda não é em cima desses recursos. Voce quase nao ouve “ah, partial eh legal, linq eh show, delegates eh massa” da maioria dos que dizem que .NET é mais produtivo.

Normalmente a propaganda é: “Nossa, .NET é muito melhor, voce tem tudo integrado, arrasta e já está pronto. Em alguns minutos voce já tem tudo funcionando.” Isso é ilusório, ou é real para aplicações pequenas. Esse pensamento para aplicações maiores é suicídio.[/quote]

Bom saber que você despreza ferramentas visuais e programa tudo no Emacs. Mas falta de usabilidade do Java não a torna ideal para “sistemas de verdade”.

Esse É sim um grande calcanhar de aquiles do Java, não ter uma empresa por detrás investindo em uma ferramenta visual de verdade, com coisas do tipo drag and drop e outros recursos visuais sim, que quer você ou não, ajuda na produtividade do desenvolvedor.

Os clientes estão satisfeitos ???

Preciso sair de onde estou hoje, pois o cenário que venho vivendo há uns 4 anos é completamente o oposto disso… O que vejo é sempre uma guerrinha entre “TI vs Cliente” onde a culpa sempre é do outro e ninguém está satisfeito.

Estou terminando um Post em meu blog sobre isso e gostaria de atualizar o status, pois até onde eu pensava, era a realidade do mercado :frowning:

Nessas horas que vejo que estou no lugar errado.

Creio que a discussão está indo em um nível muito bom e cada opinião, achamos novidades…

Abs [][/quote]

Repare que falei o cliente está satisfeito, e não os desenvolvedores da consultoria. Isso eu imaginei porque as consultorias continuam atuando no mercado, então os clientes estão voltando?

Os desenvolvedores concordo com você, pelo menos aqueles que valorizam sua profissão, quase sempre estarão infelizes num ambiente de consultoria, mas acho que isso é assunto pra outro tópico.
[/quote]

E eu também estou falando de clientes… Eu lido com clientes desde meu primeiro emprego… Graças a Deus, nunca participei de fábrica a ponto de ficar isolado dos negócios sendo code monkey… Sempre trabalhei também, analisando problemas e buscando soluções. Acredite, também conheço o lado dos clientes e dos 15 - 20 mais diretos que já trabalhei, posso dizer que mais de 70% não está NEM UM POUCO satisfeito, o resto está apenas dando pro gasto. Tente mudar esse panorama… Simplesmente não dá, porque você, dev, ou esbarra no comercial, ou no Big “GERENTE”, que quer tudo pra ontem.

[quote=JoseIgnacio]
Até porque, no fim o mais produtivo é aquele que consegue criar algo funcionando com janela, botões e tudo mais, não aquele que fica discutindo combinações de arquitetura/frameworks/padrões que não leva a lugar nenhum.[/quote]
Ficar discutindo arquiteturas padrões e tudo mais leva a algum lugar sim cara, leva a produtividade em longo prazo. Quanto mais bonito o desenho da sua App (decidido nas longas conversas das combinações de arquitetura/framework) menos tempo de manutenção. Adivinha onde está o maior gasto dos Projetos de TI ??? Desenv ou manutenção ???

Entendo seu ponto de vista e tenhos muitos conhecidos que o tem também, mas não concordo, principalmente quando o tema foco é Produtividade.

Abs [] :wink:

[quote=YvGa][quote=juliocbq]
Apesar de eu trabalhar com java nunca vi a microsoft vender suas soluções com esse argumento. Onde você leu isso?[/quote]

Nao eh da microsoft que normalmente eu ouço, mas da maioria dos desenvolvedores que dizem que .NET é mais produtivo.

Mas voce tem certeza que nunca ouviu a MS falar das suas maravilhas todas integradas?[/quote]

Onde eu mais leio sobre essa questão de drag & drop é em fóruns. E dizem a mesma coisa sobre java, .net e delphi. É o que eu quis dizer mais acima, são “dummys” que dizem isso.

Que dê a entender sobre ser somente arrastar e colar da mídia da microsoft nunca, só em fóruns onde algumas pessoas dizem. Por isso eu não generalizo esse tipo de coisa.

Bem, apenas estou estudando e ainda não trabalho na área de desenvolvimento de sistemas, mas eu acho que, na verdade, a grande resposta para definir, cientificamente, os principais pontos de cada linguagem estará no estudo de baixo nível, ou seja, como cada recurso de determinada linguagem se comporta em situações peculiares de desenvolvimento, inclusive no que tange ao hardware…acho que, também, seria de grande valia dar uma estudada na área de Qualidade de Software…pois, não acredito que, analisando as linguagens em alto nível, chegaremos à real diferença.

Se voce esta falando de desktop pode ser, realmente ficar criando controles e posicionando tudo na mão toma muito tempo. Mas para web não vejo vantagem. Com um pouco de estudo em css e html voce consegue prototipar tão rapido quanto qualquer drag and drop.

É sobre esse tipo de afirmação que eu falo, drag and drops, sempre eles. E se eu não gosto deles (coisa que não disse) já se supoe que eu gosto de programar em bloco de notas. Um IDE é muito, muito mais que drag and drop. Trabalho ha anos com java para web e só senti falta desse recurso enquanto não tinha dedicado tempo a estudar javascript, html e css.

Desktop é outra historia.

É por esse tipo de pensamento que nós temos esses monstros monoliticos para dar manutenção hoje em dia. Seja lé em java, c#, php, delphi etc… Há uma preocupação com produtividade, sem medir produtividade de nada. A maior parte do tempo que se perde construindo uma aplicação grande é na definição e implementação das regras dessa aplicação.

Mas o que normalmente é feito? Já escolhem a tecnologia porque tem drag and drop e binding de componente. Ajuda? Em muitos casos sim, mas é só a ponta do iceberg. Então depois disso definido, e garantido que a equipe, que há anos não estuda nada de novo, vai ter uma curva de aprendizado suave o projeto começa. Protótipo, telinha pronta aqui, telinha pronta lá e tudo uma maravilha.

Porém antes, e muito antes, da aplicação entrar em produção começa o inferno da manutenção. Cada mudança de requisito é um parto, cada alteração gera um caminhão de bugs, isso sem usuário real usando ainda. E dá-lhe programador passando o dia inteiro olhando valor de variável no debug pra descobrir porque cada vez que ele altera uma coisa outra para de funcionar. E quando finalmente o negócio vai pra produção, se é que vai, o inferno toma conta de vez. E isso tudo muitas vezes sem precisar sequer por a mão naquela tela maravilhosa feita com drag and drop que garante a superprodutividade da equipe.

E vem gente dizer que ferramenta visual é o calcanhar de aquiles do java. Se o problema fosse esse tava tudo resolvido, faz-se tudo com ferramentas visuais, os projetos não atrasam, os clientes ficam satisfeitos, os prazos são cumpridos e o java morre.

Mas não é isso que se ve, nem em .Net, nem em Java, nem em Delphi, nem nada disso. O que se vê são projetos atrasados, clientes irritados, gerentes malucos e programadores insatisfeitos. Ora? no java isso é normal pois não tem “ferramentas visuais”. Mas em .Net e Delphi? Como? Se tem ferramentas visuais espetaculares e programadores que não perdem tempo com telinhas bobas?

.

[quote=juliocbq][quote=YvGa][quote=juliocbq]
Apesar de eu trabalhar com java nunca vi a microsoft vender suas soluções com esse argumento. Onde você leu isso?[/quote]

Nao eh da microsoft que normalmente eu ouço, mas da maioria dos desenvolvedores que dizem que .NET é mais produtivo.

Mas voce tem certeza que nunca ouviu a MS falar das suas maravilhas todas integradas?[/quote]

Onde eu mais leio sobre essa questão de drag & drop é em fóruns. E dizem a mesma coisa sobre java, .net e delphi. É o que eu quis dizer mais acima, são “dummys” que dizem isso.

Que dê a entender sobre ser somente arrastar e colar da mídia da microsoft nunca, só em fóruns onde algumas pessoas dizem. Por isso eu não generalizo esse tipo de coisa.[/quote]

Sim, como eu mesmo disse, a maioria dessas opiniões vem de desenvolvedores.

O .NET não tem tando Drag n’ Drop como dizem e é até mais produtivo trabalhar sem isso na parte Web.

A sacada do .NET é que ele disponibiliza alguns componentes que seguem a mesma filosofia do VB6 (DataView, DataTable e etc), além de dar a opção de trabalhar mais próximo de obejtos (mais semelhante a forma que trabalhamos em Java), por ter essas opções, é mais fácil de aprender, já que trabalhar com um componente muitas vezes abstraí o trabalho de uma modelagem mais elaborada.

Eu diria que Java é mais produtivo para aplicações corporativas web, acho o JSF superior ao WebForms, e as soluções MVC que Java tem equivalem ao MVC3, nunca vi nada parecido com o GWT para .NET (se tiver, gostaria que me apresentassem). Para Desktop, o .NET está realmente anos luz a frente do Swing, porém não é multiplataforma (o Mono é incompleto e tem problemas de performance) e isso pode ser um problema.

Eu diria que as plataformas são equivalentes, é meio do gosto de cada programador e dos requisitos do projeto que será desenvolvido.

Nas minhas soluções escolho Java, escolho Java por ser melhor na parte que importa para os meus projetos, que geralmente são web e voltados ao negócio em si.

Acho que nem isso é vantagem, porque no caso da web esses tookits que a MS disponibiliza não são cross-browser e no fim você vai acabar apelando para um JQuery ou Extjs.

Olha aqui um sinal de que a filosofia da programação em ambiente Microsoft mudou: o tutorial oficial de C# é todo baseado em editor de texto e compilação por linha de comando.