C++

Algumas coisas que “por default” o java é mais rápido que o C++:

  1. Criação e destruição de objetos (aqui a diferença é gritante);
  2. Invocação de métodos (a VM consegue fazer inline automático);
  3. Uso de classes sincronizadas em aplicação single-threaded (a VM consegue, muitas vezes, eliminar os locks);
  4. Uso de reflexão (aqui considerando só os recursos que um compilador com RTTI ligado forneceria ao C++);

Digo, “por default” pois no C++ é possível usar recursos da linguagem para otimizar praticamente todos esses itens (mas isso é trabalhoso, difícil de fazer, sujeito a erros e custa caro, muito caro).

[quote=dedejava]Ah!
Uma coisa que eu queria perguntar:

Existe algum GUC++? ou GUCPP?[/quote]

Os programadores C++ são muito desunidos, comparados aos programadores Java - normalmente eles se agrupam por tecnologias (MSVC++ = Microsoft, gcc, sistemas embarcados etc.

Para dar uma idéia, antigamente existia uma revista chamada “C Users Journal”, que depois foi promovida para “C/C++ Users Journal” (http://www.cuj.com). Há alguns anos atrás ela resolveu ter uma seção Java; e há uns dois ou mais anos essa revista não existe mais, nem em versão Web.

Nossa, mas por que tanta desunião? :frowning: :frowning: :slight_smile:
O único conjunto de pessoas que eu vejo sempre respondendo perguntas é a comunidade no orkut. Quanto custa manter um fórum como o GUJ, só que de C++?

Tem muita gente boa respondendo sobre C++ também no fórum da PDJ:
http://www.programadoresdejogos.com

Mas tem muita gente orientada a Czão por lá também.

Java é uma religião com várias seitas - Swing, SWT, JavaEE (com as suas subseitas Spring, WebSphere, BEA, JBoss, Struts etc).
Acho que muita gente quer criar seu framework da mesma forma que a cada dia aparece uma nova igreja pentecostal: todos têm a sua mensagem e a querem divulgar de sua maneira.
.NET é uma religião com bem menos seitas - basicamente ASP.NET e C#.
C e C++ não é exatamente uma religião - acho que é mais uma filosofia que uma religião, e cada um fica na sua.
Acho que o Linux é uma religião, que também é dividida em algumas seitas - há os adoradores do Slackware e os do Ubuntu, por exemplo.

Havia um tempo em que eu ficava respondendo no fórum da Microsoft sobre ATL e STL - isso faz alguns anos atrás, e não com o meu nickname atual.

O fato é que o “core” do C++ é menor e tem um número muito grandes de tecnologias em volta dele.

Por exemplo, um programador C++, Windows, que usa MFC vai ter um perfil e dúvidas muito diferentes de um programador C++ que faz aplicações no Linux. Esse exemplo vale para outras tecnologias, pois o C++ não tem classes nativas para acesso a banco de dados, por exemplo.

Acho que por isso as comunidades acabam se formando em torno dos usuários de diferentes tecnologias.

Entendo. Mas e agora me diz… em software embarcado cai mais C ou C++?
E hoje em dia vale aprender C++?

[quote=dedejava]Entendo. Mas e agora me diz… em software embarcado cai mais C ou C++?
E hoje em dia vale aprender C++?[/quote]

Embarcado em que?

Se for em componentes eletrônicos, o C ainda predomina.
Se for no dispositivo todo, o C++ domina.

Por exemplo, o software dos DSPs das centrais telefônicas são escritos em C. Mas o software da central em si, já está sendo escrito em C++.

Sempre é bom saber mais de uma linguagem.
Isso porque força você a pensar de outras maneiras - ser bitolado faz com que você não consiga encontrar soluções para seus problemas.

O programador Java comum (ou seja, aquele que há alguns anos atrás seria um “coboleiro” - hoje em dia é aquele cuja realização na vida é escrever uma action do Struts sem fazer muita besteira) pode se beneficiar, por exemplo, ao aprender C# e uma linguagem de script, como o Javascript*; o programador Java “hardcore” deve saber pelo menos uma linguagem de baixo nível (como C), uma de nível médio (C++) e uma de nível alto e de outro paradigma (funcional, como a Haskell).

  • Javascript, tal como está sendo definido hoje em dia, é uma linguagem altamente complexa e que tem conceitos mais complexos que o Java. Tanto é que a implementação de referência está sendo escrita em uma linguagem funcional chamada Standard ML.

[quote=thingol]Sempre é bom saber mais de uma linguagem.
Isso porque força você a pensar de outras maneiras - ser bitolado faz com que você não consiga encontrar soluções para seus problemas.

O programador Java comum (ou seja, aquele que há alguns anos atrás seria um “coboleiro” - hoje em dia é aquele cuja realização na vida é escrever uma action do Struts sem fazer muita besteira) pode se beneficiar, por exemplo, ao aprender C# e uma linguagem de script, como o Javascript*; o programador Java “hardcore” deve saber pelo menos uma linguagem de baixo nível (como C), uma de nível médio (C++) e uma de nível alto e de outro paradigma (funcional, como a Haskell).

  • Javascript, tal como está sendo definido hoje em dia, é uma linguagem altamente complexa e que tem conceitos mais complexos que o Java. Tanto é que a implementação de referência está sendo escrita em uma linguagem funcional chamada Standard ML. [/quote]

Aos interessados em linguagens funcionais recomendo a Erlang. Tem um futuro promissor pela frente, em especial para os computadores multi-core.

T+

Só pra dar uma “ressaltadinha” (não tenho vindo muito ao fórum).

Erlang é de programação paralela né?
Existe muita diferença se eu não aprender Erlang, mas usar OpenMPI, Jini, Jaspaarc, MPI e derivados (de desempenho)?

[quote=dedejava]Só pra dar uma “ressaltadinha” (não tenho vindo muito ao fórum).

Erlang é de programação paralela né?
Existe muita diferença se eu não aprender Erlang, mas usar OpenMPI, Jini, Jaspaarc, MPI e derivados (de desempenho)?[/quote]

MPI e afins é para programação distribuida. Erlang permite paralelismo intra-processo.