Pregunta

He estado trabajando con una gran cantidad de FORTRAN 77 últimamente, y aunque no tenía reservas en un principio, ahora ver algunas grandes cualidades de la lengua. Que es:

  • fácil de aprender (no hay complicaciones programación funcional orientada a objetos o)
  • Fácil de leer
  • Blazing rápido en cálculos numéricos

Esas cualidades son naturalmente atractivo para los ingenieros no programadores y científicos que sólo quieren una manera de hacer un Give equipo respuestas rápidamente. Pero tiene muchas limitaciones en función de su edad y algunos de sus supuestos básicos. Soy escéptico acerca de la facilidad con que los no programadores pueden entender algunas de las capacidades añadidas de las versiones posteriores de Fortran, también.

¿Hay una lengua moderna que es tan sencillo como FORTRAN, igual de rápido para aplicaciones matemáticas, y menos limitado? O es la respuesta de Fortran 90, 95, 2003. . . ?

¿Fue útil?

Solución

  

O es la respuesta de Fortran 90, 95, 2003   . . . ?

Sí. Fortran 95 con el apoyo de la mayoría de los compiladores es el idioma que busca. Sin embargo Fortran 2003 tiene algunas mejoras importantes (además de innecesarias desde el punto de vista de soporte de programación orientada a objetos) que pueden ser útiles. Soporte compilador Fortran para el 2003 Standard .

Otros consejos

Bueno, yo soy un ingeniero programador no (lo que significa; tengo entendido que significa no tener mucho contacto con los estudios de ciencias informáticas) y ...

partically como continuación al comentario de JasonFruit sobre la respuesta de S. Lott:

Sí, la norma ha añadido bastantes características de F90 a 2003. Sin embargo, el "problema", si se puede llamar así (no se me ocurre o atención a una palabra más apropiada) es que muchas personas que utilizan Fortran no lo saben, excepto las características básicas que necesitan. Es una bendición y una maldición, todo en uno, en cierto modo. Ellos nunca han aprendido, nunca leyó un libro sobre el mismo - que algo simplemente lo recogió a medida que avanzaban. De esa manera sin duda puede trabajar durante un tiempo (si la estructura de sus programas simplemente, como muchos lo han hecho durante siglos, y tienen una especie de disciplina mental, este enfoque puede durar toda la vida / toda su carrera), pero después de un tiempo se comienza para mostrar sus disadvanages. Pruebe, por ejemplo, a raíz de algunas de las discusiones sobre las características recientes sobre comp.lang.fortran para probar su conocimiento.

Por lo tanto, tomar un buen libro (muchos recomendar uno de los tres para los principiantes; a) de Chapman J. Stephen b) Maine, o c) Metcalf, Reid y Cohen (conocido como el "libro MRC") - después de lo cual una gran parte de la "más oscura" no sólo presenta más claro, pero también "evidente" (como en una forma;? realmente es el mejor camino - ¿por qué lo hice de esa manera ... antes de ).

Esto se hace cargo de que se trate. Ahora, la otra pregunta - que certanly surgir - está aprendiendo pena Fortran hoy en día? ( lo hace siempre, confía en mí en esto:) . Esto ha sido cubierto en numerosas ocasiones, así que voy a dirigir a mi propio puesto con respecto a la anterior, y mi antigua página (que tendrá que desplazarse un poco más abajo), que se refiere a algunos problemas en comparación con algunos de los otros langugages mencionado aquí.

La última cosa, que es en cierto modo la causa de todas estas preguntas en la mayoría de los casos es la gente dictamen el Fortran, con el énfasis en la opinión! En términos generales (y podemos tomar este foro como una muestra bastante bueno para nuestro análisis) es que no es tan bueno. Pocos como él [preguntas complementarias marcadas FORTRAN en este espacio de un mes, y usted aprenderá rápidamente lo que son. Por cierto, a juzgar por la frecuencia de su nombre ha estado apareciendo, que está convirtiendo rápidamente en un miembro del club :)], la mayoría son indiferentes, y un poco de odio que, por pura ignorancia (comparando F66 con los lenguajes de hoy en día se utiliza a menudo), algunos fuera de sus propias razones. Ahora, si tomamos esos y la comparamos con la población en general, por simple una cuenta, el resultado está obligado a salir mal. Si usted se entrevistó sólo los ingenieros tradicionales los resultados serían muy diferentes.

Thhhh-aaa-TTT es todo.

Ah, una cosa más - Fortran es / era y sigue siendo dirigido principalmente a los ingenieros, no matemáticos. Que es más adecuado para la resolución de sistemas grandes, entonces el cálculo de Pi a un decimal ka-zi-llionth. No sé si eso era un error tipográfico en su pregunta, o intencional. Para aplicaciones puramente matemáticos (en un sentido clásico del matemático) Me gustaría (que eran una parte de ese campo) probablemente elegiría, no sé, Mathematica? O Pascal (no sé por qué siempre estaba Pascal; pero parece terriblemente popular entre esos tipos).

Me sorprende que el consenso aquí es para Fortran moderna, y de mala gana está de acuerdo.

Cualquiera que sean sus defectos, Fortran es el único idioma por ahí que se especifique expresamente lo contrario programación científica. programación científica es a la vez más sutil (por línea) y menos complicado (en estructura) que, por ejemplo, un servidor web, y que sólo necesita diferentes herramientas. La recolección de basura, por ejemplo, casi nunca es útil para resolver problemas de gran 2D / 3D PDEs donde sus estructuras de datos primarios son fijos.

Cualquier lenguaje de programación que ni siquiera tiene múltiples d matrices como objetos de primera clase puede ser despedido de inmediato para la programación científica. y eso es todo de los lenguajes basados-C. Cualquier lenguaje de programación que es inherentemente espantoso lento - Java, estoy mirando a ti - puede ser despedido inmediatamente. Cualquier lenguaje de programación que es propietaria y requiere de miles de dólares de derechos de licencia - Matlab -. Puede ser despedido de inmediato

Python y lenguas relacionadas son buenos para la creación de prototipos, y el trazado es fácil, y una vez que tienes cosas de trabajo puede escribir los núcleos numéricos en lenguajes compilados para la velocidad; pero una vez más sufre de la falta de matrices reales (Numpy es buena, pero no excelente) y es s..l..o..w.

Por cierto - no jamás por los libros Numerical Recipes. Son basura, los algoritmos que ecartamientos de la fecha, y los rangos de códigos de pobre a mal. Tómese algoritmos numéricos reales supuesto - hay buenos en línea - o comprar una algoritmos numéricos reales de libro - y por el amor de Dios, no escriba en el código de un libro para hacer álgebra lineal o lo que sea; utilizar los millones y millones de bibliotecas de calidad reales y profesionales que hay.

Para obtener la respuesta más directa a su pregunta, creo que kemiisto 's respuesta es correcta, con las salvedades identificados por Idigas .

Dicho esto, he encontrado más de mi código numérico que entra en contacto con las cosas como FTP, Web, y más cerca de los gráficos. He visto MATLAB sugirió en otra respuesta, pero yo he estado escribiendo más y más Python (con NumPy) y llamando a Fortran cuando necesito la velocidad. Yo casi seguro que no iba a escribir todo un sistema (por ejemplo, todo un modelo de predicción numérica del tiempo) de esta manera, pero eso me permite tener lo mejor de ambos mundos en muchos aspectos.

O es la respuesta de Fortran 90, 95, 2003. . . ? Sí. Para la computación científica, Fortran> = 90 elimina las limitaciones de FORTRAN 77. Aprende a utilizar matrices asignables dinámicamente para tener matrices de tamaño considerable. Aprender a utilizar módulos para organizar sus procedimientos y variables - y fácilmente proporcionar consistencia comprobación automática entre los argumentos reales y ficticias. A partir de FORTRAN 77, se puede aprender gradualmente Fortran 90/95/2003, utilizando la dirección de características parece útil para usted. Usted no tiene que aprender las características OO y puede pasar por alto la parte de la lengua, hasta que quizá algún día se ofrece utilidad para usted.

Yo recomiendo el libro Metcalf, Reid y Cohen.

Es posible que se busca en MATLAB. Muchos estudiantes de ingeniería aprenden que lo que creo que es fácil para los no programadores a encontrar pies.

Si usted desea conseguir el hardcore, echar un vistazo a J .

Creo Fortran 95 debería ser su elección se ve más moderno y se extiende Fortran 77 de forma significativa. El estándar Fortran 2003 no está completamente soportado por la mayoría de los compiladores. La gran ventaja de Fortran es que hay una subrutina optimizado para cada problema matemático (por ejemplo, búsqueda de raíces, la multiplicación de matrices, problemas de valores propios, etc.). Otras personas mencionadas bibliotecas heredadas y lapack es sólo un ejemplo poderoso. Una desventaja importante de Fortran es que nadie lo está utilizando en el mundo real.

El mejor libro alrededor es mi opinión es "Fortran 90/95 para científicos e ingenieros".

Por supuesto, todas las demás sugerencias son válidas, pero Matlab no es libre, mientras que es Fortran.

Python es gratuito y tiene soporte para una gran cantidad de aplicaciones científicas a través de paquetes adicionales, tales como Numpy y Scipy. Sin embargo Python es bastante lento cuando se trata de rendimiento numérico. Es probablemente una buena opción para los pequeños proyectos que no requieren una gran cantidad de potencia de cálculo. La sintaxis es muy fácil de entender.

C es, por supuesto, también es una opción libre y tiene una gran cantidad de bibliotecas (actualización constante) científicos disponibles. Sin embargo, cuando se trata de la lectura no puede vencer a Fortran. Fortran está bien establecido arriba para trabajar con vectores y matrices.

C ++ es un superconjunto de C por lo que es sin duda también una opción posible. Sin embargo, es un lenguaje que podría ser a lo complejo de los problemas que se encuentra en el mercado. El número de bibliotecas científicas C ++ es bastante limitada. Hay algunos por ahí, pero que no puede vencer a las versiones de Fortran (o son sólo las envolturas de los). Es probablemente una muy buena opción para proyectos muy grandes, pero algunas muy grandes programas que se ejecutan en los ordenadores más rápidos del mundo están escritos en Fortran. C ++ es definitivamente vale la pena el aprendizaje ya que se utiliza para un amplio número de aplicaciones del mundo real.

Por supuesto, hay otros lenguajes o herramientas, pero creo que estos son los más comúnmente utilizados en todas las disciplinas científicas.

Si usted está realmente entusiasmado con el uso de Fortran, es posible considerar el uso de Fortran para Microsoft.NET . La idea detrás de este proyecto es que permite utilizar el Fortran idioma , mientras que aprovechando un entorno de código mangaged a través del Common Language Runtime (CLR).

@ S. Lott: No se puede imaginar a los usuarios, tales como Fortran científicos, tener que cambiar una y volcar todo su trabajo Fortran .....: S El PO está buscando información sobre lo que es nuevo ...

Para el PO: Tiene leer sobre Wikipedia que se detallan los cambios realizados en Fortran, para la versión de 2003, permite la interoperabilidad con C, así que tal vez S. Lott tiene un punto, tal vez, poco a poco, con suavidad puerto algunas cosas sobre o escribir un envoltorio en C para llamar a los módulos Fortran? Voy a citar de que la página de Wikipedia ...

  

La interoperabilidad con el lenguaje de programación C.

He trabajado recientemente con una gran cantidad de Matlab, y puedo ver sus beneficios hoy. Si es que es lento porque es un lenguaje interpretado, pero es algoritmos matriciales son rápidos. Y me gusta precisamente por ese comportamiento. La lentitud de la de bucles y el rendimiento de las operaciones de la matriz que animan a pensar de una manera más matemática en lugar de apegarse a la programación orientada bucle. Pero estoy de acuerdo que Matlab puede ser despedido, porque no está abierto.

Actualmente estoy deseando que llegue el lenguaje Julia. Está fuertemente inspirado en Matlab excepto que quieren ser rápido. También dispone de tipos estáticos que también es una ventaja muy grande. Pero Julia es aún muy joven, así que no espere eso ya satisfacer todas sus necesidades.

  

fácil de aprender (no hay complicaciones programación funcional orientada a objetos o)

     

Fácil de leer

     

Blazing rápido en cálculos numéricos

Sonidos como C.

Comprar Numerical Recipes en C que casi cubre todas las bases en un estilo claro y legible.

http://www.amazon.com/Numerical-Recipes-Art-Scientific -Computing / dp / 0521431085

supongo que está considerando pequeños programas escritos dedicados a resolver problemas específicos. En ese caso, si la complejidad de OO realmente le molestaba que acababa de escribir un C # o Java aplicación y no utilizo OO. Visual Basic debe ser bastante maldito rápido en estos días también.

Casi todos lenguajes compilados será matemáticamente rápida en estos días, todas las operaciones se realizan en el coprocesador matemático - por lo menos que haya encontrado un lenguaje particular que se carece de no dejaría que ningún idioma "velocidad de matemáticas" me molesta mucho más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top