Olá amigos, eu estou prestes a adotar esta maravilhosa linguagem de programação, mas apenas uma coisa me impede.
Geralmente eu farei programas que realizem cálculos numéricos, utilizando critérios de precisão e tudo mais, então estou usando C e mais recentemente C++ pelo fato destas linguagens realizarem muito bem cálculos.
Uma vez eu lí q Java tratava cálculos com restrições e tal e que não seria tão boa pra realizar essas funções, mas eu queria a opinião de alguns amigos crakes em Java pra me darem uma luz.
[quote=Thobarux]Olá amigos, eu estou prestes a adotar esta maravilhosa linguagem de programação, mas apenas uma coisa me impede.
Geralmente eu farei programas que realizem cálculos numéricos, utilizando critérios de precisão e tudo mais, então estou usando C e mais recentemente C++ pelo fato destas linguagens realizarem muito bem cálculos.
Uma vez eu lí q Java tratava cálculos com restrições e tal e que não seria tão boa pra realizar essas funções, mas eu queria a opinião de alguns amigos crakes em Java pra me darem uma luz.
Agradeço desde já
Abraços![/quote]
O JAVA desempenha muito bem sim, ela faz qualquer coisa que outras linguagem faz. A diferença, é que o JAVA não depende do sistema e sim da sua propria máquina virtual (JVM). Isso faz de JAVA não só uma linguagem e sim uma verdadeira plataforma de desenvolvimento. A vantagem é que seu programa vai rodar em diferentes sistemas opracionais como Windows, GNU/Linux, Solaris, UNIX e outros.
concordo pelanamente com você xwillianx
java é muito bom e pode ser utilizado em inumeras plataformas !
essa foi a principal ideia quando foi dessenvolvida !
Bom dia a todos, gostaria tb de lembrar que java possui uma palavra reservada chamada strictfp, que pode ser utilizada tanto com a classe como com os métodos. Bem, mas o interessante é que o uso desse termo irá lhe garantir, independente da plataforma onde seu aplicativo esteja rodando, que todos os seus valores de ponte flutuante(aqui sempre se concentram os problemas de precisão) se comportem de acordo com o padrão IEEE 754, ou seja, uma precisão garantida por padrões internacionais. Agora, se quiser saber o preconiza o padrão IEEE 754…
Eu estou desenvolvendo um programa de análise numérica (que envolve métodos numéricos de resolução de integrais, localização e determinação de raízes, gráficos e resolução de sistemas), e estou muito satisfeito com a performance e tudo mais!
Eu estou utilizando bibliotecas open-source tanto para os gráficos (jfreechart) como para o parser matemático (jfep)!
Como alguem ja falou, Java implementa as normas IEEE para numeros , coisa que nem o C nem o .NET fazem. Isso torna a linguagem ainda mais segura. Usando strictfp então ainda melhor.
Uma opção , dependendo do que vc quer fazer, é usar a a API JScience que tem implementaões real-time e é portanto ainda mais rápida que java normal . Dê uma olhada.
Só para ter uma ideia, os calculos do matlab são feitos em java.
C e C++ são um lixo para executarem cálculos numéricos se você quer algo correto e rápido, e se quiser boas bibliotecas prontas. É melhor usar Fortran e as bibliotecas que já existem prontas.
Se você vai usar o ambiente Solaris ou Linux, existe o Sun Studio (gratuito) que tem um excelente compilador Fortran. Em ambiente Windows já não conheço bons compiladores Fortran gratuitos, mas devem existir. Alguém já lidou com o f77 da suíte gcc?
[quote=thingol]C e C++ são um lixo para executarem cálculos numéricos se você quer algo correto e rápido, e se quiser boas bibliotecas prontas. É melhor usar Fortran e as bibliotecas que já existem prontas.
Se você vai usar o ambiente Solaris ou Linux, existe o Sun Studio (gratuito) que tem um excelente compilador Fortran. Em ambiente Windows já não conheço bons compiladores Fortran gratuitos, mas devem existir. Alguém já lidou com o f77 da suíte gcc? [/quote]
Ainda não usei o f77. Há algumas poucas opções de Fortran gratuito para Windows. Só me lembro do OpenWatcom, Gfortran e g77. Só usei o OpenWatcom, que não é o Fortran que estou usando no meu atual projeto de cálculo de estruturas suportadas por cabos.
Para quem já programou muito em Fortran, é duro ler elogios ao suporte IEEE. Há muito tempo atrás, fiz e vendi toda uma biblioteca de funções científicas escritas em assembler para permitir o uso do coprocessador aritmético 8087/80287/80387 pelo Clipper. Fiz em asembler justamente pela dificuldade de fazer em C. Se pudesse ter usado o Fortran teria sido bem fácil porque havia suporte nativo ao coprocessador.
É claro que C/C++ não chegam a ser um lixo e eu entendi claramente que o thingol usou a expressão apenas para reforçar o argumento de que há coisas mais específicas. Sei que há muitos sistemas enormes feitos em C. Só que a escolha da linguagem não foi pelos cálculos científicos e sim pelas demais facilidades da linguagem.
Recomendo fortemente a quem quiser fazer cálculos numericos com Java que dê uma breve googlada sobre o que quer fazer. Além de haver boas possibilidades de já encontrar pronto, vai acabar caindo no site da nist e consequentemente no http://math.nist.gov/javanumerics/.
Mas se precisar de posições na memória de 80 bits, aí o Java não serve.
80 bits = 10 bytes => 19 dígitos significativos => 10**-4932 à 10**4932
Realmente eu não conhecia estas habilidades especiais de cálculos de Java e ainda sabendo das experiências dos amigos fico mais seguro em investir meu pouco tempo em algo que pelo visto abrirá e muito o meu leque de ferramentas (Java e ainda agora com aquela interessantíssima ferramenta nova de interfaces, a JavaFX).