Logo Hardware.com.br
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas

Linguagem para programacao cientifica

#1 Por Felipe Fonte... 11/03/2011 - 07:53
Atualmente eu uso principalmente o MATLAB para fazer minhas simulações, entretanto ele esbarra em 2 grandes problemas: Lentidão e licenças.

Para programas que requerem uma execução rápida, eu utilizo o C. O problema é a dificuldade de programar em C. Ainda tenho dificuldades com a manipulação de ponteiros...
Sem falar nos erros de execução que são dificílimos de debugar...

Enfim, estou procurando uma linguagem que seja fácil de programar (fácil leitura tb!) e que gere códigos bem optimizados...

Pensei no Python, mas depois de uma busca rápida vi que ele e lento...
Ouvi falar do OCaml, alguém conhece?

Pensei no GO tb, do google, mas ela ainda esta em fase experimental, não é?
Sugestões?
Kakao
Kakao Super Participante Registrado
645 Mensagens 23 Curtidas
#5 Por Kakao
11/03/2011 - 09:33
Felipe Fontes disse:

Pensei no Python, mas depois de uma busca rápida vi que ele e lento...


Eu acho que vale a pena você analisar melhor. Para você criar um programa em C que seja mais rápido que algo feito em Python vai ter que suar muito. Isso porque as bibliotecas científicas são muito otimizadas.

Dá uma olhada neste site:
http://www.scipy.org/

Se mesmo usando as bibliotecas científicas do Python você achar que ainda está lento você pode substituir os loops mais internos por código em C.

Ah! E também é possível compilar programas em Python.
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#6 Por Felipe Fonte...
11/03/2011 - 10:29
Kakao disse:
Eu acho que vale a pena você analisar melhor. Para você criar um programa em C que seja mais rápido que algo feito em Python vai ter que suar muito. Isso porque as bibliotecas científicas são muito otimizadas.

Dá uma olhada neste site:
http://www.scipy.org/

Se mesmo usando as bibliotecas científicas do Python você achar que ainda está lento você pode substituir os loops mais internos por código em C.

Ah! E também é possível compilar programas em Python.


Não foi isso que eu encontrei quando pesquisei...

um exemplo:
http://hbfs.wordpress.com/2009/11/10/is-python-slow/
Nesse comparativo Python foi mais lento que Java...

De fato as bibliotecas cientificas do python são atraentes... mas se a linguagem é lenta, eu fico com o Matlab mesmo...
Inserir trechos em C dentro do programa, pra poder optimizar, pra mim é gambiarra... Além do + isso não é um diferencial, o Matlab tb faz isso (mex files)


O grande problema é que eu não tenho tempo pra aprender varias linguagens e comparar...
Afinal, se Python é mais lenta que java, pra mim é mais vantagem ficar com Java, que eu já conheço...


EDIT:
http://www.scipy.org/PerformancePython
Com muitos tweaks, Python consegue melhorar sua performance, mas Python em si é lenta! 600x mais lenta que C.
O que me impressionou foi o fato de ser mais lenta que o Matlab... (+- 13x mais lento que C)

PS. Eu não estou querendo achar um substituto pro Matlab, eu quero achar um substituto pro C. Logo eu gostaria de algo com velocidade semelhante... so que um pouco mais fácil de programar...
Python + bibliotecas cientificas podem vir a ser um bom substituto pro Matlab, mas não pro C.

O interessante é quanto mais eu procuro sobre esse assunto, mais eu encontro bons comentarios sobre o FORTRAN... Se não fosse tão jurassica, quem sabe...
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#8 Por Felipe Fonte...
11/03/2011 - 11:18
Fergo disse:
Em termos de desempenho não tem nenhuma linguagem estruturada que bate o desempenho do C (C++ é outra história). Python é interpretada, não tem como ser mais rápida que código nativo já pela implementação.

Fergo

Isso eu sei... o que eu quero é uma linguagem mais lenta (mas não muito mais lenta) só que mais fácil de programar...

estou abrindo mão do desempenho do C por facilidade de Leitura, principalmente.
Mas por um outro lado, em termos de facilidade de leitura e programação, pra mim o Matlab é imbatível. Em compensação seu desempenho não é dos melhores...

Mas aprender algo que tenha desempenho pior (ou semelhante) que o Matlab, pra mim é inadmissível...

Na verdade pra rentabilizar o tempo de aprendizado, a linguagem que eu procuro teria que ter um desempenho semelhante ao do C. (Enfase no SEMELHANTE e não MELHOR)
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
cleovano
cleovano Super Participante Registrado
409 Mensagens 20 Curtidas
#9 Por cleovano
11/03/2011 - 11:24
Olá.
Não sou programador, mas faz algum tempo que pesquiso sobre o assunto.
Sobre o Python ser lento, depende do programa escrito. Não acredito que isso seja um padrão.
Talvez este material seja interessante para você se decidir: http://www.fc.up.pt/pessoas/jsilva/python/curso_python.pdf

Sobre a linguagem Go, a mesma está disponível para Linux e Mac OS x, mas ainda está em desenvolvimento para Windows.

Também há linguagens como Ruby, Haskell e a Lua que foi sugerida anteriormente e que foi desenvolvida no Brasil.

Nesse site há uma estatística de uso de linguagens de programação. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#10 Por Felipe Fonte...
11/03/2011 - 11:45
Cleovane Selbach disse:
Olá.
Não sou programador, mas faz algum tempo que pesquiso sobre o assunto.
Sobre o Python ser lento, depende do programa escrito. Não acredito que isso seja um padrão. ...


Acredite, simulações do tipo Monte Carlo podem demorar bastante... Horas num código C optimizado...
Normalmente eu reduzo ao máximo o numero de iterações nas minhas simulações em Matlab para poder obter tempos de calculo admissíveis... mas isso compromete a fiabilidade do resultado...

enfim, espere os piores tipos de programas em programação cientifica... São normalmente de uma complexidade enorme e escritos por péssimos programadores... (triste verdade...) eu sou um deles...
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
Kakao
Kakao Super Participante Registrado
645 Mensagens 23 Curtidas
#11 Por Kakao
11/03/2011 - 11:46
Felipe Fontes disse:

PS. Eu não estou querendo achar um substituto pro Matlab, eu quero achar um substituto pro C. Logo eu gostaria de algo com velocidade semelhante... so que um pouco mais fácil de programar...
Python + bibliotecas cientificas podem vir a ser um bom substituto pro Matlab, mas não pro C.


As bibliotecas científicas são escritas em C. Estes são os fontes no Numpy:

https://github.com/numpy/numpy/tree/master/numpy/core/src

Assim, no aspecto velocidade você vai continuar com o C só que com uma interface de programação Python. O melhor dos dois mundos.
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#12 Por Felipe Fonte...
11/03/2011 - 11:48
Kakao disse:
As bibliotecas científicas são escritas em C. Estes são os fontes no Numpy:

https://github.com/numpy/numpy/tree/master/numpy/core/src

Assim, no aspecto velocidade você vai continuar com o C só que com uma interface de programação Python. O melhor dos dois mundos.


Segundo o site http://www.scipy.org/PerformancePython

Python + Numpy teve desempenho semelhante ao Matlab...
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
Delphing
Delphing Geek Registrado
2.1K Mensagens 96 Curtidas
#13 Por Delphing
12/03/2011 - 21:38
Olá, eu não sei exatamente o que seria programação científica, porém se for algo apenas para fazer cálculos e tal existem opções de linguagens funcionais, como por exemplo F#, é realmente impressionante o poder destas linguagens para cálculos, outra linguegen que eu vi ser muito poderosa para cálculos é Lisp, o negócio é poderoso, porém é chato mexer com ela.

Abraço
http://www.dotclass.com.br
punk.gif

"Se correr o bicho pega se ficar o bicho come mas se unir o bicho foge."
Mário Sérgio Cortella
http://www.youtube.com/watch?v=IQ9MkP7XWcA

"Para conquistar o que deseja, precisa ser quem é! Do contrário o desejo não é teu a conquista não é tua." by Eu legal.png
Felipe Fontes
Felipe Fonte... Veterano Registrado
1.4K Mensagens 15 Curtidas
#14 Por Felipe Fonte...
13/03/2011 - 08:36
Delphing disse:
Olá, eu não sei exatamente o que seria programação científica, porém se for algo apenas para fazer cálculos e tal existem opções de linguagens funcionais, como por exemplo F#, é realmente impressionante o poder destas linguagens para cálculos, outra linguegen que eu vi ser muito poderosa para cálculos é Lisp, o negócio é poderoso, porém é chato mexer com ela.

Abraço


O problema do F# é que é para .net, logo estaria preso ao windows, certo?

Quando falo em programação cientifica, e justamente isso... sao programas voltados para calculo, normalmente utilizando um algoritmo especifico...

no meu caso, eu faco simulações de sistemas de telefonia móvel utilizando o método de monte carlo...
And the heavens shall tremble

"Life can only be understood backwards, but it must be lived forwards." Soren Kierkegaard
Delphing
Delphing Geek Registrado
2.1K Mensagens 96 Curtidas
#15 Por Delphing
13/03/2011 - 20:26
O problema do F# é que é para .net, logo estaria preso ao windows, certo?

Quando falo em programação cientifica, e justamente isso... sao programas voltados para calculo, normalmente utilizando um algoritmo especifico...

no meu caso, eu faco simulações de sistemas de telefonia móvel utilizando o método de monte carlo...


Sim pelo o que vejo agora só falta você se decidir.
Você quer alguma linguagem que seja rápida, ou que seja lenta?
Sim mas depois o quesito presa ao .Net tambem conta? Ve se te orienta ae na caminhada, de outra forma vai acabar no C mesmo.

Boa escolha e

Abraço
http://www.dotclass.com.br
punk.gif

"Se correr o bicho pega se ficar o bicho come mas se unir o bicho foge."
Mário Sérgio Cortella
http://www.youtube.com/watch?v=IQ9MkP7XWcA

"Para conquistar o que deseja, precisa ser quem é! Do contrário o desejo não é teu a conquista não é tua." by Eu legal.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal