Question

Je travaille avec beaucoup de FORTRAN 77 ces derniers temps, et bien que j'avais des réserves au début, je vois maintenant quelques grandes qualités de la langue. Il est:

  • Simple à apprendre (pas orientée objet ou de complications fonctionnelles programmation)
  • Facile à lire
  • Blazing rapide au numéro crissement

Ces qualités sont naturellement attrayants pour les ingénieurs non-programmeur et les scientifiques qui veulent juste un moyen de faire une réponse de give d'ordinateur. Mais il a beaucoup de limitations en fonction de son âge et certaines de ses hypothèses de base. Je suis sceptique quant à la facilité avec laquelle les non-programmeurs peuvent comprendre certaines des fonctionnalités supplémentaires de versions ultérieures de Fortran, ainsi.

Y at-il une langue moderne qui est aussi simple que FORTRAN, tout aussi rapide pour les applications mathématiques, et moins limité? Ou est la réponse Fortran 90, 95, 2003. . . ?

Était-ce utile?

La solution

  

Ou est la réponse Fortran 90, 95, 2003   . . . ?

Oui. Fortran 95 soutenu par la plupart des compilateurs est la langue que vous recherchez. Cependant Fortran 2003 a quelques améliorations majeures (en plus inutiles de votre soutien point de vue de la POO) qui pourrait être utile. standard.

Autres conseils

Eh bien, je suis un ingénieur non-programmeur (quoi que cela signifie, je crois cela signifie ne pas avoir beaucoup de contacts avec des études de sciences informatiques) et ...

partically en suite au commentaire de JasonFruit sur la réponse de S. Lott:

Oui, la norme a ajouté quelques fonctionnalités de F90 à 2003. Mais le « problème », si on peut l'appeler ainsi (je ne peux pas penser ou de soins à un terme plus approprié) est que beaucoup de gens qui utilisent Fortran ne le savent pas, sauvegardez les caractéristiques de base dont ils ont besoin. Il est une bénédiction et une malédiction tout en un, en quelque sorte. Ils ont jamais appris, n'a jamais lu un livre sur ce sujet - ils un peu juste ramassé comme ils sont allés le long. De cette façon, peut certainement travailler pendant un certain temps (si vous structurer vos programmes simplement, comme beaucoup l'ont fait pendant des siècles, et ont une sorte de discipline mentale, cette approche peut durer toute une vie / de votre carrière), mais après un certain temps, il commence pour montrer ses de désavantages. Essayez par exemple, suite à certaines des discussions sur les caractéristiques récentes sur comp.lang.fortran pour tester vos connaissances.

Alors, prenez un bon livre (beaucoup recommander l'un des trois pour les débutants; a) b) du Maine, ou c) Metcalf, Reid et Cohen J. Chapman Stephen (connu sous le nom "livre MRC") - après quoi une beaucoup de « plus obscur » caractéristiques non seulement deviennent plus clairs, mais aussi « évidente » (comme une manière;? ce qui est vraiment la meilleure façon - pourquoi ai-je l'ai fait de cette façon ... avant ).

qui prend soin de cette question. Maintenant, l'autre question - qui certanly se produire - est une valeur Fortran apprentissage de nos jours? ( il le fait toujours, faites-moi confiance sur ce point:) . Cela a été couvert de nombreuses fois, donc je vais juste diriger mon propre poste en ce qui concerne ce qui précède, et

Je suis surpris que le consensus est là pour Fortran moderne, et je suis d'accord avec réticence.

Quelles que soient ses défauts, Fortran est la seule langue en étant conçu explicitement pour la programmation scientifique. La programmation scientifique est à la fois plus subtile (par ligne) et moins compliquée (structure) que, par exemple, un serveur Web, et il a juste besoin d'outils différents. Collecte des ordures ménagères, par exemple, est presque jamais utile pour résoudre un grand 2d / 3d où vos structures PDEs de données primaires sont fixes.

Tout langage de programmation qui ne dispose même pas des tableaux multi-d comme des objets de première classe peut être rejetée immédiatement pour la programmation scientifique. et c'est toutes les langues à base C. Tout langage de programmation qui est intrinsèquement lent terrible dieu - Java, je vous regarde - peut être rejetée immédiatement. Tout langage de programmation qui est propriétaire et nécessite des milliers de dollars de frais de licence - Matlab -. Peut être rejetée immédiatement

Python et langues apparentées sont bonnes pour le prototypage et la représentation graphique est facile, et une fois que vous avez des choses de travail peut écrire les noyaux numériques dans les langages compilés pour la vitesse; mais il souffre encore de l'absence de tableaux réels (Numpy est bonne, mais pas super) et il est s..l..o..w.

Par ailleurs - ne pas jamais par les livres numériques Recettes. Ils sont de la merde, les algorithmes qu'ils sont PITCH de ce jour, et les plages de codes de mauvais à tort. Prenez réel des algorithmes numériques bien sûr - il y a les bons en ligne - ou acheter un véritable algorithmes numériques de livres - et pour l'amour de Dieu, ne tapez pas dans le code d'un livre à faire l'algèbre linéaire ou que ce soit; utiliser les zillions de véritables bibliothèques de qualité professionnelle sur le marché.

Pour la réponse la plus directe à votre question, je pense que kemiisto 's réponse est correcte, avec les mises en garde identifiées par Idigas .

Cela dit, je l'ai trouvé plus de mon code numérique entrant en contact avec des choses comme FTP, web, et plus proche de graphiques. Je l'ai vu dans une autre Matlab suggéré réponse, mais j'ai écrit de plus en plus Python (avec NumPy) et d'appeler vers Fortran quand j'ai besoin de la vitesse. Je certainement pas écrire tout un système (par exemple un modèle de prévision numérique du temps entier) de cette façon, mais il ne me permet d'avoir le meilleur des deux mondes à bien des égards.

Ou est la réponse Fortran 90, 95, 2003. . . ? Oui. Pour le calcul scientifique, Fortran> = 90 supprime les limites de FORTRAN 77. Apprenez à utiliser des tableaux affectables pour avoir des tableaux dynamiques de taille. Apprenez à utiliser des modules pour organiser vos procédures et les variables - et fournir facilement la cohérence entre la vérification automatique des arguments réels et fictifs. A partir de 77 FORTRAN, vous pouvez apprendre progressivement Fortran 90/95/2003, en utilisant selon les caractéristiques semblent utiles. Vous ne devez pas apprendre les fonctionnalités OO et peut ignorer cette partie de la langue, jusqu'à ce que peut-être un jour il offre utilitaire pour vous.

Je recommande la Metcalf, livre Reid et Cohen.

Vous cherchez peut-être à Matlab. De nombreux étudiants de premier cycle ingénieur apprennent que donc je pense qu'il est facile pour les non-programmeurs à grok.

Si vous voulez obtenir hardcore, jetez un oeil à J .

Je pense que Fortran 95 devrait être votre choix, il semble plus moderne et étend Fortran 77 tout à fait significative. La norme Fortran 2003 n'est pas complètement pris en charge par la plupart des compilateurs. Le grand avantage de Fortran est qu'il existe un sous-programme optimisé pour tous les problèmes mathématiques (comme la recherche de la racine, la multiplication des matrices, des problèmes de valeurs propres, etc.). D'autres personnes ont mentionné les bibliothèques existantes et lapack est un exemple très puissant. Un inconvénient majeur de Fortran est que personne ne l'utilise dans le monde réel.

Le meilleur livre est autour de mon avis « Fortran 90/95 pour les scientifiques et les ingénieurs ».

Bien sûr, toutes les autres suggestions sont valables, mais Matlab est pas libre tout en Fortran est.

Python est gratuit et a un support pour un grand nombre d'applications scientifiques grâce à des packages supplémentaires tels que Numpy et Scipy. Python est cependant assez lent en ce qui concerne la performance numérique. Il est probablement une bonne option pour les petits projets qui ne nécessitent pas beaucoup de puissance de calcul. La syntaxe est très facile à comprendre.

C est bien sûr aussi une option gratuite et a beaucoup de mises à jour (en permanence) bibliothèques scientifiques disponibles. Cependant, en matière de lisibilité, il ne peut pas battre Fortran. Fortran est bien mis en place pour travailler avec des vecteurs et des tableaux.

C ++ est un surensemble de C il est donc sans aucun doute aussi un choix possible. Cependant, il est une langue qui pourrait être à complexe pour les problèmes que vous regardez. Le nombre de bibliothèques C ++ scientifiques est plutôt limitée. Il y a un peu autour, mais ils ne peuvent pas battre les versions Fortran (ou ne sont que des enveloppes de celles-ci). Il est probablement une très bonne option pour les très grands projets, mais certains très grands programmes qui tournent sur des ordinateurs les plus rapides du monde sont en Fortran. C ++ est l'apprentissage vaut vraiment la peine car il est utilisé pour un grand nombre d'applications du monde réel.

Il y a bien sûr d'autres langues ou des outils, mais je pense que ce sont les plus couramment utilisés dans toutes les disciplines scientifiques.

Si vous êtes vraiment excité à l'aide Fortran, vous pouvez envisager d'utiliser Fortran pour Microsoft.NET . L'idée derrière ce projet est qu'il vous permet d'utiliser le Fortran langue tout en profitant d'un environnement de code mangaged via le Common Language Runtime (CLR).

@ S. Lott: Ne peut pas imaginer les utilisateurs Fortran tels que les scientifiques, avoir à basculer et vider leur travail Fortran .....: S L'OP est à la recherche des commentaires sur les nouveautés ...

Pour l'OP: Avez-vous lu sur Wikipedia qui détaille les modifications apportées à Fortran, pour la version 2003, permet l'interopérabilité avec C, alors peut-être S. Lott marque un point, peut-être, peu à peu, le port doucement des choses au-dessus ou écrire un wrapper en C pour appeler les modules Fortran? Je vais citer cette page Wikipedia ...

  

L'interopérabilité avec le langage de programmation C.

J'ai travaillé récemment avec beaucoup de Matlab, et je peux voir les avantages de aujourd'hui. Oui est est lent parce qu'il est un langage interprété, mais les algorithmes de la matrice sont rapides. Et je l'aime justement à cause de ce comportement. La lenteur des boucles et pour l'exécution des opérations de matrice vous incitent à penser d'une manière plus mathématique au lieu de coller à la programmation orientée en boucle. Mais je peux d'accord que Matlab peut être rejeté, parce qu'il est pas ouvert.

Actuellement, je suis impatient de la langue Julia. Il est fortement inspiré par Matlab, sauf qu'il ne veut être rapide. En outre, il a des types statiques qui est aussi un très grand avantage. Mais Julia est encore très jeune, donc ne vous attendez pas qui ne répond déjà à toutes vos exigences.

  

Simple à apprendre (pas orientée objet ou de complications fonctionnelles programmation)

     

Facile à lire

     

Blazing rapide au numéro crissement

Sons comme C.

Acheter numérique Recettes en C. couvre à peu près toutes les bases dans un style clair et lisible.

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

Je suppose que vous envisagez de petits programmes dédiés écrits pour résoudre des problèmes spécifiques. Dans ce cas, si la complexité de OO vous avez vraiment pris la peine que je venais d'écrire un C # ou Java application et ne pas utiliser OO. Visual Basic doit être sacrément rapide ces jours aussi.

La quasi-totalité des langages compilés seront mathématiquement rapidement ces jours-ci, toutes les opérations sont effectuées sur le co-processeur mathématique - donc à moins que vous avez trouvé un langage pour être particulièrement défaut, je ne laisserais pas les langues « vitesse de maths » me dérange pas beaucoup.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top