| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/12/2011 19:04:02
|
fuadksd
JavaTeenager
![[Avatar]](/images/avatar/92cf72685514221c79c830bfcd4aac4e.jpg)
Membro desde: 18/05/2011 08:56:02
Mensagens: 153
Offline
|
Sou iniciante em Java (desde o começo do ano e me interesso bastante por desenvolvimento desktop, principalmente softwares utilitários e tal.
Então andei fazendo umas pesquisas sobre qual plataforma escolher para programar. Pelo qu posso ver, a maioria dos softwares nesse sentido são desenvolvidos em C++.
Eu já tentei me dar bem com C++, mas acho uma abordagem muito injusta da orientação a objetos (me parece mais como: C++ é procedural, mas se precisar tem objetos, como php). Não gosto da sintaxe - acho confusa, feia.
Outra opção disponível seria o C#. Mas também não me apeguei muito - me parece uma cópia mal feita do Java.
Poderia tentar scripts, como Python, mas também não me atraem muito.
O Java pra mim parece a melhor plataforma de desenvolvimento, um nível generalizado. Mas quando vamos falar de software para desktop, pelas características "cross-platform" que carrega, me parece que deixa um pouco a desejar em interfaces gráficas bonitas e integração com cada sistema operacional.
Gostaria de saber a opinião de vocês, e se tiverem mais experiência no assunto que pudessem dar dicas de por onde começar.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/12/2011 22:58:33
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Eu estou no mercado desktop há mais de 10 anos e programo com freqüência nas 3 linguagens. Gosto muito das 3.
Além de moderador do GUJ, sou dono de uma comunidade no DevBrasil (C#) e participo do grupo cppbrasil.
Se você quer programar para desktop, provavelmente o Java é a pior alternativa das 3 que você citou.
O que você quer dizer com "o C++ tem uma abordagem injusta da orientação à objetos"? Injusta em que sentido?
Ele suporta tudo que o Java suporta: Polimorfismo, herança (inclusive herança múltipla).
Ele suporta encapsulamento, com melhores modificadores de acesso (e, inclusive, o acesso friend, que faz muita falta no Java).
O C++ não é uma linguagem procedural. Na verdade, ela implementa 3 paradigmas: procedural, o orientado a objetos e o genérico.
Na prática, os programas modernos em C++ utilizam pouco o paradigma procedural. Os dois últimos são os mais usados.
Quanto ao número de plataformas, creio que nenhuma supera o C++. Pegue uma biblioteca como a Qt (que é OO, por sinal), e você vai ver que sua aplicação vai rodar em praticamente qualquer lugar.
Finalmente, das 3 linguagens que você citou, o C++ é o único que dá garantias de tempo real, incluindo hard-real time (pode ser necessário em apps desktop, como as que trabalham com processamento de vídeo).
O C++ tem duas grandes desvantagens:
1. É uma linguagem difícil: pois não é uma linguagem gerenciada. E lidar com memória no braço é muito difícil (embora te dê muito controle).
2. É uma linguagem antiga: Muitas implementações não são tão legais nele, pois alguns conceitos nem sequer estavam maduros na época que eles foram implementados no C++. Há muitas más práticas que a linguagem criou por conta do legado também. Para programar com conforto em C++ é importantíssimo conhecer o que são boas práticas modernas e é importante não sair programando feito um maluco. Depois de entender a sintaxe da linguagem é fundamental pegar um livro como Effective C++ e ler de cabo à rabo (esse tipo de evolução é normal e com o tempo todas as linguagens começam a ter esse tipo de coisa. É o caso de "preferir StringBuilder no lugar de StringBuffer" no Java, ou ArrayList no lugar de Vector, só que o C++ é cheio de coisas como essa). Fique atento pois os últimos 20 anos de evolução do C++ estão na forma de se programar, não na linguagem em si (aliás, se vc não usa STL, boost, ou mesmo a QT, não programou em C++ ainda).
No caso de comparar Java e C#, eu diria que o Java peca em alguns requisitos básicos, que geralmente aparecem em aplicações desktop:
- Pouca ou nenhuma integração com o SO (nada de acessar registro, AD, etc.)
- Precária integração com hardware
- Péssimo suporte a gráficos, sons e multimídia em geral (esqueça jogos em Java).
Para os dois primeiros casos, o C# possui os unsafe methods, que são infinitamente mais fáceis, limpos e seguros do que usar JNI.
Para o último caso, você tem o XNA que, aliás, é suportado em 3 plataformas.
O C# realmente começou como uma cópia, em muitos casos mal feita, do Java. Mas hoje, o Java é que corre atrás do prejuízo. O C# já suporta coisas que o Java vem prometendo faz tempo, como as lambda expressions. E suporta mais coisas: extension methods, LINQ, partial classes, etc. Tem uma implementação mais inteligente dos generics, sobrecarga de operadores, entre outros recursos interessantes. É preciso reconhecer que os prejuízos que a Sun sofreu, associado ao período de venda e aquisição pela Oracle teve um impacto bastante negativo na evolução da linguagem, e a Oracle terá que correr muito se quiser alcançar novamente a MS (que por sinal, está fazendo um ótimo trabalho).
Coloque na mesa os critérios que são importantes para os tipos de aplicações que você quer desenvolver, e enumere o que as linguagens oferem para cobri-los. Pelo seu texto, o que mais parece é que você está preferindo o Java por gosto pessoal, e não por uma escolha técnica.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 00:05:29
|
fuadksd
JavaTeenager
![[Avatar]](/images/avatar/92cf72685514221c79c830bfcd4aac4e.jpg)
Membro desde: 18/05/2011 08:56:02
Mensagens: 153
Offline
|
Não, eu falo de escolha pessoal mesmo. Acho o Java muito organizado, fácil de entender a plataforma (to falando a nível de iniciante, ferramentas de desenvolvimento e runtime...).
Achei um pouco mais difícil quando decidi tentar o C# - me parece que tu fica um pouco preso ao Visual Studio (e a programação visual) pra qualquer coisa que tenha que fazer (visão de iniciante).
Eu gosto muito da abordagem da sun (oracle) de organizar o java.
Quanto ao C++, sim me dá a impressão de ser uma linguagem velha. E fico pensando se vale a pena investir e aprender. Me parece um ganho significativo de liberdade, milhões de bibliotecas por aí... mas parece meio "largado". Pelo menos é a impressão que me passa. Por exemplo: se eu decidisse começar a aprender C++ hoje, nem saberia por onde.
Me expressei mal, não que a OO do C++seja injusta mas que deveria ser o padrão. Por exemplo: eu vejo pelas bibliotecas padrão do java (como IO), vejo uma orientação a objetos muito limpa, diferente do "padrão" do C++ que me parece muito procedural.
Como eu disse, eu to começando agora e to procurando alguma coisa pra me aprofundar: comecei com Java SE, to tentando aprender Java EE, mas as vezes sinto que falta sair um pouco do "sandbox" que o Java proporciona.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 02:15:55
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
fuadksd wrote:Não, eu falo de escolha pessoal mesmo. Acho o Java muito organizado, fácil de entender a plataforma (to falando a nível de iniciante, ferramentas de desenvolvimento e runtime...).
Achei um pouco mais difícil quando decidi tentar o C# - me parece que tu fica um pouco preso ao Visual Studio (e a programação visual) pra qualquer coisa que tenha que fazer (visão de iniciante).
Eu gosto muito da abordagem da sun (oracle) de organizar o java.
Quanto ao C++, sim me dá a impressão de ser uma linguagem velha. E fico pensando se vale a pena investir e aprender. Me parece um ganho significativo de liberdade, milhões de bibliotecas por aí... mas parece meio "largado". Pelo menos é a impressão que me passa. Por exemplo: se eu decidisse começar a aprender C++ hoje, nem saberia por onde.
Me expressei mal, não que a OO do C++seja injusta mas que deveria ser o padrão. Por exemplo: eu vejo pelas bibliotecas padrão do java (como IO), vejo uma orientação a objetos muito limpa, diferente do "padrão" do C++ que me parece muito procedural.
Como eu disse, eu to começando agora e to procurando alguma coisa pra me aprofundar: comecei com Java SE, to tentando aprender Java EE, mas as vezes sinto que falta sair um pouco do "sandbox" que o Java proporciona.
a impressão que passa é que a maioria dos professores passam muita coisa errada para os seus alunos hoje em dia. Mas porque ainda hoje c++ é amplamente utilizado?
1) porque o seu compilador é hoje o que gera código mais enxuto e limpo.
2) runtime pequeno e muito leve.
É uma linguagem difícil mas que oferece os melhores recursos.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 02:19:38
|
fuadksd
JavaTeenager
![[Avatar]](/images/avatar/92cf72685514221c79c830bfcd4aac4e.jpg)
Membro desde: 18/05/2011 08:56:02
Mensagens: 153
Offline
|
Aqui na faculdade eles passam Java para o pessoal da TI em geral e C++ para jogos e segurança da informação.
Vcs sabem de algum material aberto na web pra aprender C++ (assumindo que vc ja saiba o basico, pq o problema não é a lógica de programaçãoe sim um "bootstrap" pra começar por algum canto)?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 06:42:50
|
kicolobo
Moderador
![[Avatar]](/images/avatar/445b6949ed8860ca6175e8c89464ba85.jpg)
Membro desde: 19/07/2006 14:11:09
Mensagens: 1188
Localização: Belo Horizonte
Offline
|
ViniGodoy wrote:Eu estou no mercado desktop há mais de 10 anos e programo com freqüência nas 3 linguagens. Gosto muito das 3.
Além de moderador do GUJ, sou dono de uma comunidade no DevBrasil (C#) e participo do grupo cppbrasil.
Se você quer programar para desktop, provavelmente o Java é a pior alternativa das 3 que você citou.
O que você quer dizer com "o C++ tem uma abordagem injusta da orientação à objetos"? Injusta em que sentido?
Ele suporta tudo que o Java suporta: Polimorfismo, herança (inclusive herança múltipla).
Ele suporta encapsulamento, com melhores modificadores de acesso (e, inclusive, o acesso friend, que faz muita falta no Java).
O C++ não é uma linguagem procedural. Na verdade, ela implementa 3 paradigmas: procedural, o orientado a objetos e o genérico.
Na prática, os programas modernos em C++ utilizam pouco o paradigma procedural. Os dois últimos são os mais usados.
Quanto ao número de plataformas, creio que nenhuma supera o C++. Pegue uma biblioteca como a Qt (que é OO, por sinal), e você vai ver que sua aplicação vai rodar em praticamente qualquer lugar.
Finalmente, das 3 linguagens que você citou, o C++ é o único que dá garantias de tempo real, incluindo hard-real time (pode ser necessário em apps desktop, como as que trabalham com processamento de vídeo).
O C++ tem duas grandes desvantagens:
1. É uma linguagem difícil: pois não é uma linguagem gerenciada. E lidar com memória no braço é muito difícil (embora te dê muito controle).
2. É uma linguagem antiga: Muitas implementações não são tão legais nele, pois alguns conceitos nem sequer estavam maduros na época que eles foram implementados no C++. Há muitas más práticas que a linguagem criou por conta do legado também. Para programar com conforto em C++ é importantíssimo conhecer o que são boas práticas modernas e é importante não sair programando feito um maluco. Depois de entender a sintaxe da linguagem é fundamental pegar um livro como Effective C++ e ler de cabo à rabo (esse tipo de evolução é normal e com o tempo todas as linguagens começam a ter esse tipo de coisa. É o caso de "preferir StringBuilder no lugar de StringBuffer" no Java, ou ArrayList no lugar de Vector, só que o C++ é cheio de coisas como essa). Fique atento pois os últimos 20 anos de evolução do C++ estão na forma de se programar, não na linguagem em si (aliás, se vc não usa STL, boost, ou mesmo a QT, não programou em C++ ainda).
No caso de comparar Java e C#, eu diria que o Java peca em alguns requisitos básicos, que geralmente aparecem em aplicações desktop:
- Pouca ou nenhuma integração com o SO (nada de acessar registro, AD, etc.)
- Precária integração com hardware
- Péssimo suporte a gráficos, sons e multimídia em geral (esqueça jogos em Java).
Para os dois primeiros casos, o C# possui os unsafe methods, que são infinitamente mais fáceis, limpos e seguros do que usar JNI.
Para o último caso, você tem o XNA que, aliás, é suportado em 3 plataformas.
O C# realmente começou como uma cópia, em muitos casos mal feita, do Java. Mas hoje, o Java é que corre atrás do prejuízo. O C# já suporta coisas que o Java vem prometendo faz tempo, como as lambda expressions. E suporta mais coisas: extension methods, LINQ, partial classes, etc. Tem uma implementação mais inteligente dos generics, sobrecarga de operadores, entre outros recursos interessantes. É preciso reconhecer que os prejuízos que a Sun sofreu, associado ao período de venda e aquisição pela Oracle teve um impacto bastante negativo na evolução da linguagem, e a Oracle terá que correr muito se quiser alcançar novamente a MS (que por sinal, está fazendo um ótimo trabalho).
Coloque na mesa os critérios que são importantes para os tipos de aplicações que você quer desenvolver, e enumere o que as linguagens oferem para cobri-los. Pelo seu texto, o que mais parece é que você está preferindo o Java por gosto pessoal, e não por uma escolha técnica.
Oi Vinícius,
sabe: eu tenho o "sonho técnico" de um dia produzir algo útil em C++ e, como você, também trabalho há alguns anos desenvolvendo aplicações desktop (no início em VisualBasic/Delphi e depois em Java). Quais os seus toolkits favoritos para este tipo de empreitada?
Com relação ao Java ser a pior opção para desktop, há ressalvas. É importante lembrar os aspectos positivos também. O Swing é uma biblioteca riquíssima (o table model pra aplicações corporativas, por exemplo, é uma das sete maravilhas do mundo pra mim ) , e o desenvolvimento multiplataforma com ele é real. Sim, pode haver pequenas diferenças entre uma plataforma e outra, mas não é algo que chegue a inviabilizar um projeto.
Com relação ao acesso às bibliotecas nativas mais básicas, é verdade, mas por outro lado, não é algo que seja feito de forma tão comum assim como possa parecer. Na esmagadora maioria das vezes, o modelo padrão que ainda reina é o cliente/servidor mesmo. Sobre a beleza das interfaces, neste caso é importante salientar que mais do que a presença de recursos, entra em cena o fator "bom gosto". Há aplicações com interfaces nojentas em C#, Qt, Cocoa ou qualquer outro framework cool com o qual topemos.
|
http://devkico.itexto.com.br
Twitter: http://www.twitter.com/loboweissmann
Vamos aprender Grails?
http://www.grailsbrasil.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 06:48:39
|
Rodrigo Vieira Pinto
JavaEvangelist
![[Avatar]](/images/avatar/e7e69cdf28f8ce6b69b4e1853ee21bab.jpg)
Membro desde: 15/07/2004 11:05:05
Mensagens: 354
Localização: São Paulo
Offline
|
ViniGodoy wrote:Eu estou no mercado desktop há mais de 10 anos e programo com freqüência nas 3 linguagens. Gosto muito das 3.
Além de moderador do GUJ, sou dono de uma comunidade no DevBrasil (C#) e participo do grupo cppbrasil.
Se você quer programar para desktop, provavelmente o Java é a pior alternativa das 3 que você citou.
O que você quer dizer com "o C++ tem uma abordagem injusta da orientação à objetos"? Injusta em que sentido?
Ele suporta tudo que o Java suporta: Polimorfismo, herança (inclusive herança múltipla).
Ele suporta encapsulamento, com melhores modificadores de acesso (e, inclusive, o acesso friend, que faz muita falta no Java).
O C++ não é uma linguagem procedural. Na verdade, ela implementa 3 paradigmas: procedural, o orientado a objetos e o genérico.
Na prática, os programas modernos em C++ utilizam pouco o paradigma procedural. Os dois últimos são os mais usados.
Quanto ao número de plataformas, creio que nenhuma supera o C++. Pegue uma biblioteca como a Qt (que é OO, por sinal), e você vai ver que sua aplicação vai rodar em praticamente qualquer lugar.
Finalmente, das 3 linguagens que você citou, o C++ é o único que dá garantias de tempo real, incluindo hard-real time (pode ser necessário em apps desktop, como as que trabalham com processamento de vídeo).
O C++ tem duas grandes desvantagens:
1. É uma linguagem difícil: pois não é uma linguagem gerenciada. E lidar com memória no braço é muito difícil (embora te dê muito controle).
2. É uma linguagem antiga: Muitas implementações não são tão legais nele, pois alguns conceitos nem sequer estavam maduros na época que eles foram implementados no C++. Há muitas más práticas que a linguagem criou por conta do legado também. Para programar com conforto em C++ é importantíssimo conhecer o que são boas práticas modernas e é importante não sair programando feito um maluco. Depois de entender a sintaxe da linguagem é fundamental pegar um livro como Effective C++ e ler de cabo à rabo (esse tipo de evolução é normal e com o tempo todas as linguagens começam a ter esse tipo de coisa. É o caso de "preferir StringBuilder no lugar de StringBuffer" no Java, ou ArrayList no lugar de Vector, só que o C++ é cheio de coisas como essa). Fique atento pois os últimos 20 anos de evolução do C++ estão na forma de se programar, não na linguagem em si (aliás, se vc não usa STL, boost, ou mesmo a QT, não programou em C++ ainda).
No caso de comparar Java e C#, eu diria que o Java peca em alguns requisitos básicos, que geralmente aparecem em aplicações desktop:
- Pouca ou nenhuma integração com o SO (nada de acessar registro, AD, etc.)
- Precária integração com hardware
- Péssimo suporte a gráficos, sons e multimídia em geral (esqueça jogos em Java).
Para os dois primeiros casos, o C# possui os unsafe methods, que são infinitamente mais fáceis, limpos e seguros do que usar JNI.
Para o último caso, você tem o XNA que, aliás, é suportado em 3 plataformas.
O C# realmente começou como uma cópia, em muitos casos mal feita, do Java. Mas hoje, o Java é que corre atrás do prejuízo. O C# já suporta coisas que o Java vem prometendo faz tempo, como as lambda expressions. E suporta mais coisas: extension methods, LINQ, partial classes, etc. Tem uma implementação mais inteligente dos generics, sobrecarga de operadores, entre outros recursos interessantes. É preciso reconhecer que os prejuízos que a Sun sofreu, associado ao período de venda e aquisição pela Oracle teve um impacto bastante negativo na evolução da linguagem, e a Oracle terá que correr muito se quiser alcançar novamente a MS (que por sinal, está fazendo um ótimo trabalho).
Coloque na mesa os critérios que são importantes para os tipos de aplicações que você quer desenvolver, e enumere o que as linguagens oferem para cobri-los. Pelo seu texto, o que mais parece é que você está preferindo o Java por gosto pessoal, e não por uma escolha técnica.
Cara, as comparações foram muito bem esmiuçadas. Da próxima vez que eu for fazer um software desktop vou pensar 2 vezes antes de partir pro Swing logo de cara.
Valeu!
|
"Ser o segundo é ser o primeiro dos perdedores" - Ayrton Senna
"Eu vou dá 10 pau!!" - Aracy de Almeida
Nova dupla sertaneja: Waterfall e Procedural. Pra começar, é sertanejo (ARGH!)
"Bem, dizia eu que a aritmética..." - Prof. Girafales
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 07:41:43
|
ErickMacedo
JavaChild
Membro desde: 09/12/2011 10:17:00
Mensagens: 113
Localização: Tupã/São Paulo
Offline
|
Aqui na faculdade eles passam Java para o pessoal da TI em geral e C++ para jogos e segurança da informação.
Vcs sabem de algum material aberto na web pra aprender C++ (assumindo que vc ja saiba o basico, pq o problema não é a lógica de programaçãoe sim um "bootstrap" pra começar por algum canto)?
Só para "fixar" no caso da Web,, JAVA sai na frente em relação a C++
|
Bacharel em Sistema de Informação
Sun Certified Java Programmer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 07:45:47
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
kicolobo wrote:Oi Vinícius,
sabe: eu tenho o "sonho técnico" de um dia produzir algo útil em C++ e, como você, também trabalho há alguns anos desenvolvendo aplicações desktop (no início em VisualBasic/Delphi e depois em Java). Quais os seus toolkits favoritos para este tipo de empreitada?
Com relação ao Java ser a pior opção para desktop, há ressalvas. É importante lembrar os aspectos positivos também. O Swing é uma biblioteca riquíssima (o table model pra aplicações corporativas, por exemplo, é uma das sete maravilhas do mundo pra mim  ) , e o desenvolvimento multiplataforma com ele é real. Sim, pode haver pequenas diferenças entre uma plataforma e outra, mas não é algo que chegue a inviabilizar um projeto.
Com relação ao acesso às bibliotecas nativas mais básicas, é verdade, mas por outro lado, não é algo que seja feito de forma tão comum assim como possa parecer. Na esmagadora maioria das vezes, o modelo padrão que ainda reina é o cliente/servidor mesmo. Sobre a beleza das interfaces, neste caso é importante salientar que mais do que a presença de recursos, entra em cena o fator "bom gosto". Há aplicações com interfaces nojentas em C#, Qt, Cocoa ou qualquer outro framework cool com o qual topemos.
Oi Kiko. Se for desenvolver apps desktop com C++, tente produzir algo com o Qt. Mas antes, recomendo fortemente que leia o Effective C++, e aprenda um pouco do C++ moderno.
Quanto a ser a pior das três linguagens. É bom lembrar que "pior" é uma comparação. Ser a pior das três não significa que a linguagem é ruim. Só significa que há menos vantagens que as outras duas. De fato, o Java é uma boa linguagem para aplicações desktop que não envolvem interação com o SO, ou tempo real e que precisam rodar simultaneamente no Windows e no Linux. Boa parte das aplicações comerciais são assim, e não vejo qualquer problema em faze-las em Swing.
E eu concordo com você: O Swing é poderoso, flexível, e rico. Desde que você siga algumas boas práticas (inclusive a de aprender ele direito, e programar models), ele se torna agradável e poderoso. Há algumas implementações nele que deixam muito a desejar, como é o caso das JInternalPanes, mas nada que não se possa conviver (e todas as outras linguagens tem lá seus problemas).
O fato é que o Java é tão bom, que se você optar por ele, não estará muito atrás do C#. Ao ponto de que, se sua equipe tiver know how em Java, não tem porque fazê-los reaprender o C# caso o sistema realmente não peça muita integração com o Windows (se pedir pouca, pode-se até quebrar o galho com JNA e JNI). Nesse caso, ponha o povo para trabalhar com que eles gostam e sabem melhor, e conviva com os eventuais inconvenientes.
Agora, o colega estava falando que queria se especializar em aplicações Desktop. Nesse caso, acho importantíssimo que ele não considere Java como sua única escolha. Se você quer ser especialista em desktop, e conseguir empregos realmente bons na área, é importante conhecer bem o C++. Isso abre portas para um leque enorme de aplicações, seja na área de engenharia, monitoramento, segurança, sistemas operacionais, aplicações multimídia, etc. E, vale lembrar, que para apps exclusivamente desktop, o C++ possui hoje o maior e mais bem remunerado mercado.
Mas também é um erro achar que o C++ é a panacéia para todos os problemas. Embora realmente seja possível desenvolver tudo com ele, para as aplicações mais simples, ele não é exatamente a linguagem mais produtiva. Use-o quando precisar de integração ou performance (requisitos comuns em apps desktop), mas tenha em mãos uma linguagem de desenvolvimento rápido quando não precisar disso. Nesse caso, é legal também conhecer o C#, que hoje tem se mostrado uma alternativa de desenvolvimento muito rápido, e com integração fácil com o Windows, ou o próprio Java.
Existem poucas linguagens que considero ruins. Uma delas é o VB6. De resto, é só estar atento para fazer um julgamento técnico, não baseado em gosto pessoal. É difícil, eu sei, eu mesmo já escolhi muito por gosto pessoal, mas quando fizer isso, admita para si mesmo, e meça bem se vale a pena lidar com as consequências da escolha - e muitas vezes vale.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 07:46:27
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
ErickMacedo wrote:Só para "fixar" no caso da Web,, JAVA sai na frente em relação a C++
Indiscutivelmente.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 07:54:39
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
fuadksd wrote:Aqui na faculdade eles passam Java para o pessoal da TI em geral e C++ para jogos e segurança da informação.
As áreas em que o C++ está presente e é forte: - Sistemas embarcados (embora aqui use-se ele quase como se usa o C); - Sistemas operacionais; - Aplicativos desktop para distribuição em escala (seu navegador, bloco de notas, word, etc..) - Jogos (praticamente todos); - Aplicações multimídia (players de vídeo, photoshop, etc). - Aplicações de processamento intenso (bolsa de valores, finanças, meteorologia, aplicações para supercomputadores); - Área científica Áreas onde ele definitivamente não está presente: - Web
fuadksd wrote:Vcs sabem de algum material aberto na web pra aprender C++ (assumindo que vc ja saiba o basico, pq o problema não é a lógica de programaçãoe sim um "bootstrap" pra começar por algum canto)?
Pegue o livro do André Bueno aqui no Ponto V: http://pontov.com.br/site/cpp/46-conceitos-basicos/88-roadmap-c Recomendo que adquira e leia os livros indicados nesse artigo, em especial, o Effective C++ e o livro de STL. Veja os artigos de Smart Pointers do Ponto V: http://www.pontov.com.br/site/cpp/43-smart-pointers Veja a documentação do QT: http://doc.qt.nokia.com/qtcreator-2.4/index.html
This message was edited 1 time. Last update was at 26/12/2011 07:55:25
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 08:02:39
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
fuadksd wrote:Me expressei mal, não que a OO do C++seja injusta mas que deveria ser o padrão. Por exemplo: eu vejo pelas bibliotecas padrão do java (como IO), vejo uma orientação a objetos muito limpa, diferente do "padrão" do C++ que me parece muito procedural.
É injusto o que as faculdades fazem. Geralmente você tem contato com a parte procedural do C++. De bibliotecas, você vê no máximo um pouquinho da IOStream (cout e fstream). Quase não se fala na biblioteca padrão, a STL (muita gente sequer fica sabendo da existência dela), e de pacotes como o <algorithm>. Praticamente ninguém usa classes como a std::string, std::vector ou std::map na faculdade. Além disso, as APIs maiores não fazem parte do C++ padrão, e não são vistas na faculdade. O C++ é padronizado pela ISO, portanto, demoraria muito manterem uma API integrada como a do Java. As APIs são desenvolvidas por outro grupo, que criou uma biblioteca chamada boost: http://www.boost.org/ São as classes da boost que gradualmente vão se incorporando ao C++. Outras APIs fantásticas, como o QT, dificilmente são citadas em faculdade. Se você quer ver um conjunto de classes sólido, bem estruturado, fácil de mexer, estude a QT. Na faculdade, também quase não se vê o terceiro paradigma do C++, o genérico, responsável por boa parte da evolução do C++. Não se vê as práticas de programação modernas (aposto que você não ouviu falar de RAII ou Smart Pointers). Infelizmente, muitos profissionais acabam por comparar toda plataforma Java (linguagem + APIs) com o que viram de C++ na faculdade (praticamente só parte da linguagem), e acabam mesmo com uma impressão muito negativa.
This message was edited 2 times. Last update was at 26/12/2011 08:06:22
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 14:04:06
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
kicolobo wrote:
Oi Vinícius,
sabe: eu tenho o "sonho técnico" de um dia produzir algo útil em C++ e, como você, também trabalho há alguns anos desenvolvendo aplicações desktop (no início em VisualBasic/Delphi e depois em Java). Quais os seus toolkits favoritos para este tipo de empreitada?
Com relação ao Java ser a pior opção para desktop, há ressalvas. É importante lembrar os aspectos positivos também. O Swing é uma biblioteca riquíssima (o table model pra aplicações corporativas, por exemplo, é uma das sete maravilhas do mundo pra mim  ) , e o desenvolvimento multiplataforma com ele é real. Sim, pode haver pequenas diferenças entre uma plataforma e outra, mas não é algo que chegue a inviabilizar um projeto.
Com relação ao acesso às bibliotecas nativas mais básicas, é verdade, mas por outro lado, não é algo que seja feito de forma tão comum assim como possa parecer. Na esmagadora maioria das vezes, o modelo padrão que ainda reina é o cliente/servidor mesmo. Sobre a beleza das interfaces, neste caso é importante salientar que mais do que a presença de recursos, entra em cena o fator "bom gosto". Há aplicações com interfaces nojentas em C#, Qt, Cocoa ou qualquer outro framework cool com o qual topemos.
No quesito interface é a mais pura verdade a questão do bom gosto mesmo. O swing é muito rico e você pode desenhar o que quiser com ele, aliás swing e qtgui possuem uma coisa em comum: Ambos são lightweight. Qtgui também não é nativo do sistema operacional e é muito responsível como podem ver em algumas aplicações.
No quesito agilidade de desenvolvimento o java é a primeira opção na minha humilde opinião, porque você consegue fazer "bons softwares" com maior facilidade(grande parte das boas práticas do c++ já estão implementadas).
Agora no quesito "aplicação desktop" eu já optaria por c++ por causa do runtime muitas vezes mais leve. Grande parte dessas aplicações estão constantemente sendo alocadas e desalocadas em memória no sistema por usuários. Eles executam 4 ou 5 players simultâneamente, abrem documentos dos mais variados. Dessa maneira uma aplicação desktop necessita de runtime bem leve para atender espectativas de uso.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 18:19:44
|
marcosalex
GUJ Expert
![[Avatar]](/images/avatar/0a8f8b227be2d04a675082cc9d51c127.jpg)
Membro desde: 20/02/2008 12:32:59
Mensagens: 3371
Online
|
Também gosto do Java pra desktop e acho ele muito produtivo. Existem bibliotecas que permitem inclusive integração com os widgets do Windows 7, muito fáceis, o Java 7 deixou ele menos verboso e a nova API de IO me ajudou bem no momento que eu precisei usar o recurso, pura sorte. hehehe Apesar do Eclipse e Netbeans serem os mais populares, existem IDEs comerciais em Java bem produtivas.
Mas concordo com o que o pessoal falou, cada uma tem as vantagens e desvantagens, então vai do que a pessoa prioriza. No meu caso específico, eu precisava rodar a mesma aplicação em diferentes plataformas sem precisar disponibilizar meu código fonte ou ficar gerando builds separados. Com o Java ou .NET ainda tem a vantagem de quando surgir um hardware novo, a atualização da VM já garante as otimizações no meu software sem que eu precise recompilar ou liberar meu código fonte. E como minhas aplicações são mais cálculos que ficar criando objetos, o garbage colector não foi um impeditivo. Se eu precisasse dos recursos que o vinigodoy citou, a escolha poderia ser outra.
O C# foi minha primeira opção porque eu vinha do Delphi, mas esbarrei em quebra de compatibilidade quando fui usar o framework mais novo, até os services packs quebraram meu código. Mas sei que hoje esse problema reduziu bastante e pra maioria das aplicações a não ser que você use alguma coisa mais específica não vai esbarrar com isso. Outra dificuldade é que eu precisava de rodar no Linux e Mac e o Mono é bem mais limitado e lento do que o .NET Framework, mas também depende do caso.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/12/2011 19:07:45
|
AbelBueno
Virtual Machine Man
Membro desde: 04/08/2010 09:37:57
Mensagens: 543
Offline
|
Oi ViniGodoy,
Achei suas respostas bem esclarecedoras sobre desenvolvimento desktop.
Mas um comentário seu me despertou curiosidade:
ViniGodoy wrote:Existem poucas linguagens que considero ruins. Uma delas é o VB6.
O que acha de tão ruim em VB6 ?
Eu sempre achei que o maior problema do VB6 eram os programadores.
Com o marketing de qualquer um poder programar nela, você encontrava realmente qualquer um "programando"... e aí já viu.
Mas na ferramenta em si, quais eram os grandes problemas que via nela?
Sobre desenvolvimento desktop em geral, com as especulações de que o windows 8 jogará as aplicações desktop para segundo plano
(Aplicações em javascript + html + css rodarão direto no windows, sem o browser), acham que esse cenário mudará muito?
|
|
|
 |
|
|
|
|