Pelo menos na área de engenharia, o software mais utilizado para computação técnica é o MATLAB ou Simulink: http://www.mathworks.com/ Os físicos que eu conheço também o utilizam bastante.
Eu realmente desconhecia que o Fortran era um “padrão” da área.
Um bom exemplo é o algoritmo de Metropolis para o modelo ISING (modelo de interação ferromagnetico semelhante a sistemas com forte anisotropia, onde vc tem praticamente 2 estados para cada spin: pra cima ou pra baixo).
Dado o hamiltoniano para calcular a energia do sistema, vc escolhe um spin aleatorio e inverte o seu sentido. Se a energia total diminuir vc aceita essa flipada (pois a tendencia num sistema em equilibrio é diminuir a energia). Se a energia crescer vc pode aceitar com uma probabilidade que depende da temperatura e da constante de Boltzann (quanto mais quente, mais flutuações termicas vc tem).
Se vc fizer uma simulação de 100x100 spins por um tempinho, para varias temperaturas, medindo magnetismo, energia interna média, susceptibilidade magnética e calor específico vc pode verificar uma transição de fase do regime ferromagnetico para o paramagnetico numa dada temperatura. É o que acontece com o IMÃ: aqueça ele q logo ele deixa de ser uma imã.
É divertido: ainda mais se vc tem erros loucos como “o seu codigo fonte passou da coluna 72, por favor reconsidere” [:D] O luca sabe do que eu estou falando.
[quote=peczenyj]Um bom exemplo é o algoritmo de Metropolis para o modelo ISING (modelo de interação ferromagnetico semelhante a sistemas com forte anisotropia, onde vc tem praticamente 2 estados para cada spin: pra cima ou pra baixo).
Dado o hamiltoniano para calcular a energia do sistema, vc escolhe um spin aleatorio e inverte o seu sentido. Se a energia total diminuir vc aceita essa flipada (pois a tendencia num sistema em equilibrio é diminuir a energia). Se a energia crescer vc pode aceitar com uma probabilidade que depende da temperatura e da constante de Boltzann (quanto mais quente, mais flutuações termicas vc tem).
Se vc fizer uma simulação de 100x100 spins por um tempinho, para varias temperaturas, medindo magnetismo, energia interna média, susceptibilidade magnética e calor específico vc pode verificar uma transição de fase do regime ferromagnetico para o paramagnetico numa dada temperatura. É o que acontece com o IMÃ: aqueça ele q logo ele deixa de ser uma imã.
É divertido: ainda mais se vc tem erros loucos como “o seu codigo fonte passou da coluna 72, por favor reconsidere” [:D] O luca sabe do que eu estou falando.[/quote]
“o seu codigo fonte passou da coluna 72, por favor reconsidere escrever o programa em uma linguagem de programação decente que tenha alguma utilidade real hoje em dia”
[quote=peczenyj]Um bom exemplo é o algoritmo de Metropolis para o modelo ISING (modelo de interação ferromagnetico semelhante a sistemas com forte anisotropia, onde vc tem praticamente 2 estados para cada spin: pra cima ou pra baixo).
Dado o hamiltoniano para calcular a energia do sistema, vc escolhe um spin aleatorio e inverte o seu sentido. Se a energia total diminuir vc aceita essa flipada (pois a tendencia num sistema em equilibrio é diminuir a energia). Se a energia crescer vc pode aceitar com uma probabilidade que depende da temperatura e da constante de Boltzann (quanto mais quente, mais flutuações termicas vc tem).
Se vc fizer uma simulação de 100x100 spins por um tempinho, para varias temperaturas, medindo magnetismo, energia interna média, susceptibilidade magnética e calor específico vc pode verificar uma transição de fase do regime ferromagnetico para o paramagnetico numa dada temperatura. É o que acontece com o IMÃ: aqueça ele q logo ele deixa de ser uma imã.
É divertido: ainda mais se vc tem erros loucos como “o seu codigo fonte passou da coluna 72, por favor reconsidere” [:D] O luca sabe do que eu estou falando.[/quote]
Mas a utilização do FORTRAN nessas aplicações não é devido à linguagem, mas à obsolescência desses livros, não?
Tudo bem em utilizar ferramentas como o MATLAB ou MATHEMATICA devido à otimização ESPECIAL desses softwares, mas FORTRAN é demais… não acha?
Depende, de que Fortran vc esta falando? Fortran 77 talvez seja obsoleto mas para resolver uma integral multi-dimensional numericamente ele é imbativel. Fortran tem a versão 90 onde vc pode fazer multiplicação de matrizes fazendo algo como C = A * B, e tem a versão 95.
O Mathematica é um programa manipulação algebrica, se não me falha a memoria. Vc manda ele resolver uma equação diferencial parruda e ele resolve (nem sempre resolve bem, mas resolve).
Matlab é manipulação matricial. Inverter matrizes pra ele é o básico. Muitos problemas vc consegue resolver usando essa abordagem.
Fortran é uma linguagem de programação, a mais antiga até, que vem evoluindo. Cada uma tem o seu propósito. Com certeza vc não vai fazer um CRUD com FORTRAN 77, mas um programa que simula dinâmica molecular ou tensões em uma estrutura de concreto de repente ele pode servir.
O que ocorre é uma reação em cadeia…Físicos de décadas atrás aprendiam Fortran porque era uma linguagem bastante sofisticada para programação científica NA ÉPOCA…Esses físicos não resolveram aprender outras linguagens porque não é o foco dos caras…Eles querem é descobrir porque, em nível molecular, baldes são baldes e não camelos…Eles não ficavam folheando livros de computação em busca de linguagens mais sofisticadas…Assim, quando iam escrever livros ou publicar sesu trabalhos em artigos científicos, publicavam os processos algorítmicos em FORTRAN…A galera que foi entrando na área depois foi educada com FOrtran, porque toda essa base de conhecimento já estava delineada em Fortran…E assim sucecivamente…Clao, hoje em dia tem os matlab da vida que tem ganhado força na área…Mas Fotran ainda domina a bibliografia…
E, insisto, para trabalhar com simula,ões realmente parrudas, com zilhões de forças incidindo sobre um dado conjunto de zilhões de moléculas, por exemplo…Recomendo C paralelizado com bibliotecas matemáticas otimizadas…A menos que se tenha tempo de sobra
Pois é…É fato que o bagulho é meio que dedicado à aplicações matemáticas. Que o código fica limpo e intuitivo com esse tipo de operação sendo realizado em nível de linguagem…Mas a performance da coisa toda? Pergunto isso porque realmente não estou por dentro das últimas versões…
Acho meio injusto o que diseram do vovô Fortran. Ele é um cinqüentão enxuto
A propósito, o padrão de linguagem do Matlab foi criado por alguns dos mesmos caras que criaram o padrão Fortran 90. Não é de se estranhar que a síntaxe seja parecida, principalmente no que diz respeito ao acesso de componentes de uma matriz, como por exemplo A(2, 3:5) acessa os 3° e 5° elementos da 2ª linha.
[quote=juliocbq]Acho melhor você pesquisar em outro lugar.
Imagino que poucas pessoas, ou nenhuma trabalham diretamente com física aqui.[/quote]
Bem, concordo que sejam poucas mas discordo do nenhuma. Pelo menos eu trabalho com Fortran em aplicações de engenharia. Pelas respostas acima acho que não estou sozinho.
Como formado em Física que aprendeu a programar em Fortran 90 e foi impedido de aprender Java porque alguem entendeu que C era mais adequado para ciencia, tenho que dizer que não posso concordar com o uso do fortran.
Ok, fortran tem um sintaxe melhor para matrizes e uma miriade de bibliotecas de calculo numerico (como o C tb tem) mas nada disso é OO. E por isso outro problemas acontecem. Java tem todo um conjunto de melhoras em relação a C e programação orientada a rotinas, chama-se OOP. Nada de memória estourando por causa de um ponteiro do array…
Primeiro que o Java é multiplataforma isso possibilita utilizar cloud se os calculos forem realmente muito pesados.
Segundo Java implementa a IEEE 754-1985 com garantia de repetibilidade o que C não faz.
Terceiro Java tem a VM de realtime e uma biblioteca para fazer calculo cientifico com ela (JScience). Isto não tem concorrência.
Existem ports da bibliotecas do fortran e do C para Java. Portanto isso tb não é desculpa.
Nem sequer código legado é mais uma desculpa. Seja como f2j ou com JNA/JNI.
Velocidade ? Java pode ser mais rápido que C se o codigo for bem escrito e o programa rodar por algum tempo.
Código cientifico tb é código,tb tem que ser legivel, extensivel, etc… e OO é comprovadamente melhor para isso.
Sim, é claro que terá um problema em convencer os cientistas de que java é uma opção real , mas o fato é que é uma opção sim.
O uso de Java no projeto da sonda de marte deveria ter sido uma dica importante. Parece que não foi suficiente…
No momento em que todas as linguagens migram para dentro de uma VM, continuar usando fortran é um passo atras.
Se não gosta de java ou fortress, pelo menos usar algo dentro da jvm é mandatório.
Matlab, matematica são produtos e não linguagens de programação. São um alternativa - não livre - para o desenvolvimento,mas dificilmente para a produção. Se o propósito é apenas estudar são boas ferramentas. Se o propósito é fazer algo para vender (um produto) não são opções.
Sérgio, concordo que para projetos novos Fortran deve ser evitado e o meu principal motivo é que há poucos e caros fornecedores de ferramentas para Fortran. Mas vou colocar alguns considerandos:
Quem já usou f2j sabe que não funciona.
Já fui muito bom em C e sei perfeitamente que não é melhor do que Fortran para determinados cálculos matemáticos (a menos que usem via assembler os registros de 80 bits coprocessador aritmético). No meu caso uso Fortran para resolver grande sistemas de equações para análise não linear e preciso do máximo de precisão.
É verdade que existem bibliotecas open source famosas em Fortran (BLAS, LAPACK, etc.) que foram convertidas para Java (e outras em C). Mas no meu caso migrar para Java significaria enorme esforço para trocar 6 por meia duzia (algo que funciona e dá resultados desde 1983 por algo que ainda precisaria ser desenvolvido).
Fortress (que agora foi reescrito em Scala e ficou 75% menor do que a versão em Java) não é Fortran
Para cada caso pode haver uma determinada com solução melhor adequada. Por coincidência passei o dia de ontem estudando R (e gnuplot) que é uma linguagem (scheme argh…) especial para estatística.
[quote=sergiotaborda]Como formado em Física que aprendeu a programar em Fortran 90 e foi impedido de aprender Java porque alguem entendeu que C era mais adequado para ciencia, tenho que dizer que não posso concordar com o uso do fortran.
Ok, fortran tem um sintaxe melhor para matrizes e uma miriade de bibliotecas de calculo numerico (como o C tb tem) mas nada disso é OO. E por isso outro problemas acontecem. Java tem todo um conjunto de melhoras em relação a C e programação orientada a rotinas, chama-se OOP. Nada de memória estourando por causa de um ponteiro do array…
Primeiro que o Java é multiplataforma isso possibilita utilizar cloud se os calculos forem realmente muito pesados.
Segundo Java implementa a IEEE 754-1985 com garantia de repetibilidade o que C não faz.
Terceiro Java tem a VM de realtime e uma biblioteca para fazer calculo cientifico com ela (JScience). Isto não tem concorrência.
Existem ports da bibliotecas do fortran e do C para Java. Portanto isso tb não é desculpa.
Nem sequer código legado é mais uma desculpa. Seja como f2j ou com JNA/JNI.
Velocidade ? Java pode ser mais rápido que C se o codigo for bem escrito e o programa rodar por algum tempo.
Código cientifico tb é código,tb tem que ser legivel, extensivel, etc… e OO é comprovadamente melhor para isso.
Sim, é claro que terá um problema em convencer os cientistas de que java é uma opção real , mas o fato é que é uma opção sim.
O uso de Java no projeto da sonda de marte deveria ter sido uma dica importante. Parece que não foi suficiente…
No momento em que todas as linguagens migram para dentro de uma VM, continuar usando fortran é um passo atras.
Se não gosta de java ou fortress, pelo menos usar algo dentro da jvm é mandatório.
Matlab, matematica são produtos e não linguagens de programação. São um alternativa - não livre - para o desenvolvimento,mas dificilmente para a produção. Se o propósito é apenas estudar são boas ferramentas. Se o propósito é fazer algo para vender (um produto) não são opções.
[/quote]
Em instituições de pesquisa, a metodologia e padrões de projetos não são importantes. O importante é a comprovação científica.
Sérgio, concordo que para projetos novos Fortran deve ser evitado e o meu principal motivo é que há poucos e caros fornecedores de ferramentas para Fortran.
[/quote]
É só esse o meu ponto. Concordo contigo.
O resto das coisas so mencionei para acesso a legado.
E,sim,fortress não é fortran (graças a Deus). E seu baseado em scala , java ou groovy não interessa. O ponto é que
é uma linguagem, na plataforma Java,para coisas matemático-cientificas.Acho que este é o ponto fundamental.Pode usar o que quiser, mas use dentro da jvm.
Em instituições de pesquisa, a metodologia e padrões de projetos não são importantes. O importante é a comprovação científica.
[/quote]
Se isso fosse realmente verdade, C não seria usado nunca (pois não implementa IEEE 754-198 com repetibilidade).
(aliás nem C++ ou C#).
[/quote]
não digo padrão ou norma de implementação de linguagens e compiladores.
digo Metodologias como Orientação a Objetos ou Design Patterns. Em pesquisa científicas, o software usado é específico para uma tarefa. Ele não será comercializado e nem sairá para fora da instituição.
Por isso os pesquisadores não se preocupam em usar linguagens modernas.