2010-09-24 13 views
10

He estado fuera del negocio del modelaje, por así decirlo, desde hace un tiempo. Cuando estaba en la universidad, la mayoría de los modelos con los que trabajaba estaban escritos en FORTRAN, lo que nunca me gustó. Estoy buscando volver a la ciencia, así que me pregunto si hay idiomas modernos con conjuntos de características adecuados para este tipo de aplicación. ¿Cuál considerarías que es un lenguaje óptimo para simular sistemas de física complejos?¿Cuál es el mejor lenguaje para el modelado de física?

+1

Buena pregunta, pero creo que esto pertenece a http://programmers.stackexchange.com/ –

Respuesta

4

Creo que es discutible que FORTRAN siga siendo dominante a la hora de resolver problemas físicos a gran escala, siempre que hablemos de cálculos en serie.

Sé que la paralelización está cambiando el juego. Estoy menos seguro de si las versiones paralelas de LINPACK y otros paquetes de álgebra lineal aún se escriben en FORTRAN.

Muchos ingenieros están utilizando MATLAB y Mathematica actualmente, porque combinan capacidades numéricas y gráficas.

También me gustaría señalar que hay una diferencia entre el cálculo y los motores de visualización. El primero aún podría estar escrito en FORTRAN, pero este último puede estar utilizando idiomas más modernos y OpenGL.

Tampoco estoy seguro de cuánto modelado se ha infiltrado en la biología. La química física podría ser un animal muy diferente.

Si escribe un excelente paquete de álgebra lineal paralela en Scala o F # o Haskell que rinde bien, el mundo se abrirá camino hasta su puerta.

+1

Oh, lo siento, no me di cuenta de que ya habías sugerido Matlab. Sin embargo, para agregar a su respuesta: Fortran todavía está presente hoy en día en códigos como Siesta (Iniciativa Española para Simulaciones Electrónicas con Millares de Átomos) que está paralelizado. – Geodesic

+1

Creo que ni siquiera vale la pena mencionar FORTRAN en este día y edad. – OTZ

+3

¿De verdad? ¿Se han reescrito todos los paquetes de elementos finitos comerciales? ¿Las personas están haciendo CFD en C# ahora? ¿Estás escribiendo software para modelar problemas de física? Si es así, ¿se vende por dinero? – duffymo

8

Si bien es cierto que Fortran era la regla absoluta para esto, Python se está utilizando cada vez más exactamente para este propósito. Si bien es muy difícil decir cuál es el mejor programa para esto, he encontrado que Python es bastante útil para simulaciones de física y educación física.

+1

+1 - NumPy y SciPy. No creo que el software comercialmente disponible esté siguiendo su ejemplo. – duffymo

2

Python + + Matplotlib NumPy + α

1

También hay una gran cantidad de capacidad con MATLAB. Especialmente cuando interactúa sus simulaciones con hardware, o si necesita que se visualicen sus resultados.

+3

Lo siento, los softwares comerciales como Matlab son demasiado antiguos. Teniendo en cuenta la probabilidad de que continúe pagando por la suscripción y las actualizaciones futuras, no vale la pena la inversión. – OTZ

+1

Las personas que conozco en una compañía de ingeniería de Dow Jones están utilizando Matlab y escribiendo paquetes de CFD en Fortran. ¿Qué credenciales tienes que respaldar con lo que estás diciendo? – duffymo

+0

¿Y no llamarías a Dow Jones "vieja escuela"? Nunca escuché nada innovador tecnológicamente de DJ & Co y similares. – OTZ

3

La comunidad de física nuclear/partículas/alta energía se ha movido fuertemente hacia C++ (en parte debido a ROOT y Geant4), con cierto interés en Python (porque tiene enlaces ROOT).

Pero observará que esto depende de la subdisciplina ... "física" y "modelado" son grande, temas generales, por lo que no hay una respuesta.

+0

Interesante. Hice todo mi trabajo en física astronómica y planetaria, y trabajé con varios modelos, todos los cuales fueron escritos en FORTRAN. Usamos IDL para el análisis. – FCBastiat

7

Depende de la tarea

  • C++ es bueno en las estructuras de datos complejas, pero es malo en el corte y multiplicar matrices. (Esta tarea le obliga a pasar mucho tiempo escribiendo bucles.)
  • FORTRAN tiene una buena notación para cortar y multiplicar matrices, pero es torpe para crear una estructura de datos complicada, como gráficos y listas vinculadas.
  • Python/scipy tiene una buena notación para todo, pero python es un lenguaje interpretado, por lo que es lento en ciertas tareas.
  • Algunas personas están interesadas en idiomas como CUDA que le permiten usar su GPU para acelerar sus simulaciones.

En la comunidad de dinámica molecular, C++ parece ser popular, porque se necesitan estructuras de datos algo complicadas para representar las formas de las moléculas.

+1

¿puede proporcionar un enlace a las complicadas estructuras de datos utilizadas en dinámica molecular? – mt3

2

Modelica es un lenguaje especializado para modelar (y simular) sistemas físicos. OpenModelica es una implementación de código abierto de Modelica.

1

Colaré con Python, pero también debería mirar a R para cualquier trabajo estadístico que pueda necesitar hacer. Realmente debería estar preguntando qué paquetes para qué idiomas usar en lugar del lenguaje en sí.

0

Python es muy popular entre las personas orientadas a la ciencia, como lo es Matlab. El problema con estos es que ambos son MUY lentos (para funcionar). Si desea hacer simulaciones grandes que pueden tomar minutos/horas/días, tendrá que elegir otro idioma.

Siempre que elija un idioma para la velocidad, insértelo y use C/C++, tal vez con CUDA según sus necesidades.

Pensamiento final: si le toma dos días más escribir y depurar su modelo en C que en python, y el código resultante tarda 10 minutos en ejecutarse en lugar de una hora, ¿realmente se guardó en cualquier momento?

Cuestiones relacionadas