Fortran
Fortran (précédemment Fortran de ) est un d'usage universel, le procédural, le langage de programmation impératif de du qui est particulièrement adapté au calcul numérique et au de calcul scientifique. À l'origine développé par IBM dans les années 50 pour les applications scientifiques et de technologie, Fortran est venue pour dominer ce domaine de la programmation dès l'abord et a été dans l'utilisation continuelle pour plus de le demi-siècle dans des secteurs comportant de nombreux calculs tels que le climat de la modélisation de , d'analyse par éléments finis , de dynamique des fluides informatique (CFD) de , de physique informatique , du calcul financier, et de chimie informatique .
Le Fortran (une valise a dérivé du le mathématique d'IBM pour le système slating de Tran de mula) entoure une lignée des versions, qui ont évolué pour ajouter des prolongements à la langue tout en maintenant la compatibilité avec des versions préalables. Les versions successives ont ajouté le soutien du traitement des données caractère-basées (Fortran 77 ), de la rangée de programmant , de programmation module-basé par et Objet-ont basé de programmation ( de Fortran 90 / 95 ), et orienté objectivement et de programmation générique (Fortran 2003).
Histoire
Vers la fin de 1953, le John W. Backus a soumis une proposition à ses supérieurs au IBM pour développer une alternative plus efficace à langage d'assemblage pour programmer leur ordinateur central d'IBM 704 . Des spécifications d'ébauche pour le la formule mathématique d'IBM traduisant le système ont été accomplies par mid-1954. Le premier manuel pour le Fortran est paru en octobre 1956, avec le premier compilateur de Fortran fourni en avril 1957. C'était un compilateur de linéarisation , parce que les clients étaient peu disposés à employer un langage de programmation à niveau élevé à moins que son compilateur pourrait produire du code dont l'exécution était comparable à celle du main-codé langage d'assemblage.Tandis que la communauté était sceptique que cette nouvelle méthode pourrait probablement surpasser le main-codage, elle a réduit la quantité de rapports de programmation nécessaires pour utiliser une machine par un facteur de 20, et a rapidement gagné l'acceptation. Ledit créateur John Backus pendant une entrevue 1979 avec pensent, le magazine des employés d'IBM, " ; Beaucoup de mon travail est venu d'être paresseux. Je n'ai pas aimé des programmes d'écriture, et ainsi, quand je travaillais à IBM 701 (un ordinateur tôt), écrivant des programmes pour calculer la trajectoire de missile, j'ai commencé le travail sur un système de programmation pour le faciliter pour écrire programs." ;
La langue a été largement adoptée par des scientifiques pour écrire numériquement les programmes intensifs, qui ont encouragé des créateurs de compilateur à produire les compilateurs qui pourraient produire d'un code plus rapide et plus efficace. L'inclusion d'un type de données de du nombre complexe dans la langue a fait le Fortran particulièrement adapté aux applications techniques telles que l'électrotechnique.
D'ici 1960, les versions du Fortran étaient disponibles pour le 709 d'IBM, le 650 , le 1620 , et les ordinateurs du 7090 . De manière significative, la popularité croissante du Fortran a stimulé les constructeurs d'ordinateurs de concurrence fournir des compilateurs de Fortran pour leurs machines, de sorte que par 1963 plus de 40 compilateurs de Fortran ait existé. Pour ces raisons, le Fortran est considéré le premier employé couramment < ! -- la Croix-plate-forme n'est pas une limite bien définie ! --> langage de programmation soutenu à travers une série d'architectures informatiques.
Le développement du Fortran a mis en parallèle l'évolution tôt de la technologie de compilateur ; en effet beaucoup d'avances dans la théorie et la conception des compilateurs ont été spécifiquement motivées par la nécessité de produire du code efficace pour des programmes de Fortran.
Fortran
Le dégagement initial du Fortran pour IBM 704 a contenu 32 rapports, incluant : Au cours des prochaines années, Fortran II ajouterait également le soutien du Par le 1965 , Fortran IV a été censé être le " ; standard" ; et conformément au groupe de travail américain de Fortran de l'association X3. , et rapports du Dans cette révision de la norme, un certain nombre de dispositifs ont été enlevés ou changés en quelque sorte qui pourraient infirmer des programmes de précédent-standard-conformation. (le déplacement était la seule alternative permise à X3J3 à ce moment-là, depuis le concept du " ; deprecation" ; n'était pas encore disponible pour les normes de norme ANSI.) Tandis que la plupart des 24 articles dans les échappatoires adressées ou les cas pathologiques de liste de conflit (voir l'annexe A2 de X3.9-1978) permettaient par la norme précédente mais rarement utilisé, un nombre restreint de possibilités spécifiques ont été délibérément enlevées, comme : Une prolongation pratique importante à Fortran 77 était le dégagement de MIL-STD-1753 en 1978. Ces spécifications, développées par le Département de la Défense des États-Unis, ont normalisé un certain nombre de dispositifs mis en application par la plupart des compilateurs de Fortran 77 mais non inclus dans la norme de Fortran 77 de norme ANSI. Ces dispositifs seraient par la suite incorporés à la norme de Fortran 90. et rapports du La norme du POSIX d'IEEE 1003.9 de , libérée en 1991, si moyens simples pour que les programmeurs Fortran-77 publient des appels système de POSIX. Plus de 100 appels ont été définis dans le document - permettre l'accès à à régulation de processus POSIX-compatible, au signal manipulant, commande de système de fichiers, commande d'appareil, pointage de procédé, et entrée-sortie de jet d'une façon portative. Le développement d'une norme révisée pour réussir Fortran 77 serait à plusieurs reprises retardé comme procédé d'étalonnage a lutté pour suivre les changements rapides de la pratique de calcul et de programmation. En attendant, comme " ; FORTRAN" standard ; pendant presque quinze années, Fortran 77 deviendrait le dialecte historiquement le plus important. Les ordinateurs de la Control Data Corporation ont eu une autre version de Fortran 77, ont appelé le Fortran du Minnesota, avec des variations des constructions de rendement, des utilisations spéciales des terrains communaux et des rapports de DONNÉES, des niveaux de code d'optimisations pour compiler, et ont détaillé des listes d'erreur, messages d'avertissement étendus, et les corrigent. Un petit ensemble de dispositifs ont été identifiés comme " ; obsolescent" ; et compté être enlevé dans une norme de futur. Un autre supplément important à Fortran 95 était le technique TR-15580 de rapport d'OIN : Manipulation d'exception à point mobile , officieusement connue sous le nom de IEEE TR. cet appui défini par spécifications pour l'arithmétique à point mobile d'IEEE de et la manipulation d'exception de de la virgule flottante . Selon les réalisateurs de normes, " ; les pièces facultatives décrivent les dispositifs d'un seul bloc qui ont été demandés par un corps substantiel des utilisateurs et/ou des réalisateurs, mais qui ne sont pas considérés être de généralité suffisante pour qu'ils soient exigés en tout le Fortran de standard-conformation compilers." ; Néanmoins, si un Fortran de standard-conformation fournit de telles options, puis elles " ; doit être fourni selon la description de ces équipements dans la partie appropriée du Standard." ; De cet article, les perfectionnements principaux pour cette révision incluent : voient également : s dispositifs de langue de Fortran Les prolongements incompatibles n'étaient pas le seul problème de portabilité. Que les calculs numériques, il est important tiennent compte des caractéristiques de l'arithmétique. Ceci a été adressé par Fox et autres dans le cadre de la norme 1966 par la bibliothèque du PORT de . Les idées sont là-dedans devenues employées couramment, et ont été par la suite incorporées à la norme 1990 par des fonctions intrinsèques d'enquête. (Maintenant presque l'adoption répandue d'universel) de la norme d'IEEE 754 pour l'arithmétique à point mobile binaire a essentiellement enlevé ce problème. L'accès à l'environnement de calcul (par exemple la ligne de la commande du programme, les variables d'environnement, l'explication textuelle des conditions d'erreur) est demeuré un problème jusqu'à ce qu'il ait été adressé par la norme 2003. Grandes collections de " ; library" ; le logiciel qui pourrait être décrit comme étant loosely-related à la technologie et aux calculs scientifiques, tels que des bibliothèques de graphiques, ont été écrits en C, et accèdent donc à elles a présenté un problème de portabilité. Ceci a été adressé par incorporation d'interopérabilité de C dans la norme 2003. Il est maintenant possible (et relativement facile) d'écrire un programme entièrement portatif en Fortran, même sans recours à un préprocesseur. Fortran orienté objectivement était une prolongation orientée objectivement du Fortran, dans laquelle des données élémentaires peuvent être groupées dans les objets, qui peuvent être instanciés et exécutés en parallèle. Il était disponible pour Sun, iris, iPSC, et nCUBE, mais n'est plus soutenu. De tels prolongements propres à une machine ont disparu avec le temps ou ont eu des éléments incorporés aux normes principales ; la prolongation restante principale est un OpenMP , qui est une prolongation de croix-plate-forme pour la programmation de mémoire partagée. Une nouvelle prolongation, Fortran de CoArray de , est prévue pour soutenir la programmation parallèle. La norme Fortran-95 inclut une partie facultative de qui définit des possibilités facultatives de la compilation conditionnelle . Ces possibilités désigné souvent sous le nom du " ; CoCo" ;. Beaucoup de compilateurs de Fortran ont intégré des sous-ensembles du préprocesseur du C dans leurs systèmes. Le SIMSCRIPT est un préprocesseur spécifique à l'application de Fortran pour modeler et simuler de grands systèmes discrets. Le F a été conçu pour être un sous-ensemble propre de Fortran 95 qui a essayé d'enlever le superflu, non structuré, et a désapprouvé des dispositifs du Fortran, tels que le rapport de voient également : Wikibooks : s exemples de Fortran/Fortran , le désordre infantile, à ce jour presque 20 années, est désespérément insatisfaisant pour quelqu'application informatique vous ayez à l'esprit aujourd'hui : il est maintenant trop maladroit, trop risqué, et trop cher d'employer. - Edsger Dijkstra , circa 1970. ; Plus le monde oublie que le Fortran existait jamais tôt, le better." ; (imputé à Joseph Weizenbaum ) ; 95 pour cent des personnes qui ont programmé en premières années ne l'auraient jamais fait sans Fortran." ; - Ken Thompson , circa 2005 ; Le but primaire du rapport de DONNÉES est de donner des noms aux constantes ; au lieu à de se rapporter à pi en tant que 3.141592653589793 à chaque aspect, pi variable peut être donné que valeur avec un rapport de DONNÉES et être employé au lieu de la forme plus longue de la constante. Ceci simplifie également modifier le programme, si la valeur de pi change." ; - Manuel tôt de Fortran pour des ordinateurs de Xerox < ! -- Veuillez ne pas ajouter davantage de commentaire à cette plaisanterie (par exemple, concerner comment la valeur interne du changement de _could_ de pi réellement, ou des expressions mathématiques équivalentes pour spécifier la valeur de pi, etc.), parce qu'un tel commentaire ruine tout à fait la plaisanterie. Parfois, moins dit, le meilleur. --Contribuant original de plaisanterie --> ; Uniformément la séparation des mots par les espaces est devenue une coutume générale au sujet du dixième siècle A., et a duré jusqu'environ à 1957, quand le Fortran a abandonné le practice." ; - manuel de référence de Fortran de Sun de ; Les gens sont très flexibles et apprennent à s'ajuster sur des environnements étranges - ils peuvent s'habituer pour lire des programmes blèsent et de Fortran, par exemple. " ; - art de de PROLOG , de Sterling et d'Ehud Shapiro, presse de Leon de MIT ; Avertissement : Aller directement emprisonner. Ne pas rassembler $200." ; - oeuf de pâques dans le SDS /le compilateur de Fortran du sigma 7 Xerox , quand le a inexactement attribué la perte de la sonde d'espace du marin I à une erreur typographique dans un programme de Fortran. Par exemple, " ; Rappeler la première sonde d'espace américaine à Venus, censément perdu parce que le Fortran ne peut pas identifier une virgule absente dans a FONT le " de rapport… ; . L'ordinateur 1401 d'IBM, présenté en 1959, a soutenu le Fortran par les années 60 moyennes bien que le 1401 ait été prévu pour le calcul décimal d'affaires et comme " primitif d'imprimeur ; server" ; cela imprimerait le contenu des bandes magnétiques, préparé sur des systèmes beaucoup plus grands tels qu'IBM 7090. La configuration minimum absolue a été soutenue, par exemple, à l'université de Roosevelt Chicago jusqu'en 1974 (cf. Nilges, " ; Construire vos propres. Prendre la langue et le Compiler" au filet ; , Apress 2004). Cette configuration était 8K des hexets pour le RAM et un lecteur de cartes et un poinçon (cf. Nilges, " ; Anecdotes" ; , Transactions d'IEEE sur l'histoire du logiciel, ressort/été 1999). Le compilateur, comme décrit ci-dessous, était une série d'environ 100 petites phases de recouvrement (cf. Lee, " ; L'anatomie d'un Compiler" ; , Van Nostrand Rheinhold 1968), où un moniteur miniature est resté résident dans la mémoire pour charger chaque phase. Ces phases ont été chargées d'un paquet de cartes de plus de 2.000 cartes perforées (plus de deux pieds de long) ou d'un système d'entraînement de bande magnétique (qui n'était pas disponible à l'installation d'université de Roosevelt). Ces recouvrements balayeraient et analyseraient un " ; squozed" ; (blanc-enlevé : courir) la forme codée par longueur du code source pour produire des rapports dans une langue interprétative à la fin de la mémoire disponible (puisque la fin de la mémoire ne pourrait pas être sentie, elle a dû être définie sur un " ; commander le card" ;). La phase finale était responsable d'interpréter le code. En dépit du compilateur primitif de Fortran II, qui n'a eu aucune corde, le rapport plutôt complexe et flexible de FORMAT a été soutenu. En outre, un autre " ; control" ; la carte pourrait spécifier combien de décimales seraient soutenues dans le format de virgule flottante ; ce dispositif a attendu avec intérêt un dispositif énormément plus flexible dans le système d'aujourd'hui de Mathematica. Cependant, pendant un certain nombre d'années, l'installation à l'université de Roosevelt a été privée du Fortran en dépit de la disponibilité du " de compilateur ; deck" ;. À du moment en 1970, un technicien d'IBM a eu le " ; fixed" ; un bogue, une pensée à résulter de l'absence du matériel de multiplication/division pour un but particulier (pour ce que 1401 clients ont dû payer à des frais supplémentaires) par mémoire de recouvrement avec un saut à une sous-routine pour la multiplication et une division. Malheureusement, sur la configuration minimale, ceci instructions détruites et non jamais travaillé pour cette raison. Roosevelt payait multiplient et divisent, ainsi, quand dans 1972 la pièce rapportée du technicien a été enlevée, le compilateur puis travaillé. Il a été employé pour l'administration, l'enseignement et la recherche jusqu'environ à 1977. Le IBM 1460 (semblables au 1401) a également eu un compilateur de Fortran II qui a résidé sur bande. Il a exigé seulement ce système d'entraînement de bande magnétique , un lecteur de cartes de /poinçon et un imprimeur , c. aucun " de ; work" ; dispositifs. Le compilateur pour le 1401 et le 1460 était sous forme de multitude de phases minuscules, ou de segments, qui ont été passés au-dessus du programme source qui a été tenu dans le stockage dans toute la compilation. La première phase a lu le programme du lecteur de cartes, a numéroté les rapports, et a produit une liste de source. Les phases suivantes pourraient être quelque chose comme le " ; copier (et inverse) le programme du bas stockage au stockage élevé, assignant et remplaçant les noms par les marques . " ; L'aspect était que la bande système contenant le compilateur " ; blip" ; , l'ordinateur ronflerait pour un peu, puis la bande " ; blip" ; encore et une partie différente de la liste apparaîtrait sur l'imprimeur. Le résultat final était un paquet de cartes objet sur le poinçon, et le programme a été laissé dans le stockage et prépare pour aller. L'effet était tout à fait peu commun, et a été conçu pour pouvoir compiler le plus grand possible programme avec les quelques dispositifs périphériques du . Au cours de la même réunion du comité de normes de Fortran à laquelle le " nommé ; Fortran 77" ; a été choisi, une proposition technique a été passée en contrebande de façon ou d'autre dans la distribution officielle, porter le titre, " ; La lettre O a considéré le harmful" ;. Cette proposition trompeusement simple a prétendu adresser la confusion qui surgit parfois entre le " de lettre ; O" ; et le numéro zéro, en éliminant la lettre des noms variables permis. Cependant, la méthode proposée était d'éliminer la lettre du jeu de caractères entièrement (maintenant de ce fait 48 comme nombre de caractères lexicologiques, que les deux points avaient augmentés à 49). Parmi le " ; PRO" ; les arguments étaient l'affirmation que ceci favoriserait également la programmation structurée, en le rendant impossible d'employer le notoire de Le " unique ; CON" ; l'argument a concédé ce " ; ceci pourrait infirmer un certain programs" existant ; mais remarquable que les la plupart de ces " ; étaient probablement non conformes, anyway" ;. distribution de poteau-réunion de X3J3 pour la réunion tenue au laboratoire national de Brookhaven en novembre 1976.
de GambaraDIMENSION et rapports de EQUIVALENCE
Instructions d'affectation
Rapport arithmétique du à trois voies IF.
rapports de IF pour la vérification des exceptions (ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW, et DIVIDE CHECK) ; et rapports de IF pour les commutateurs de sens de et les lumières de sens de manipulation
GOTO, GOTO calculé, ASSIGN, et GOTO assigné
boucles de DO
Entrée-sortie composée : FORMAT, READ, ENTRÉE TAPE de READ, de WRITE, RENDEMENT TAPEWRITE, PRINT, et PUNCH
Entrée-sortie non formatée : READ TAPE, READ DRUM, WRITE TAPE, et WRITE DRUM
L'autre entrée-sortie : END FILE, REWIND, et BACKSPACE
PAUSE, STOP, et CONTINUE
rapport de FREQUENCY (pour fournir des conseils d'optimisation au compilateur) FORTRAN II
Fortran II du d'IBM est apparu en 1958. Le perfectionnement principal était de soutenir le de programmation procédural en permettant des sous-routines et des fonctions écrites par l'utilisateur. Six nouveaux rapports ont été présentés :
SUBROUTINE, FUNCTION, et END
CALL et RETURN
COMMON les types de données À DOUBLE PRÉCISION de et de COMPLEX. Programme simple de Fortran II
Ce programme, pour la formule du héron de , a une entrée de carte mécanographique, avec des zéro-données simples éditent le contrôle. Si une des valeurs d'entrée est zéro, alors le programme finira avec un code d'erreur de " ; ARRÊTER 1" ; dans la gestion de JOBs carder la liste suivant l'exécution du programme. Le rendement normal sera une ligne imprimée avec A, B, C, et SECTEUR sur le " ; report" ; la page après la compilation sans les unités spécifiques sont énoncées ; et avec un " normal ; STOP" ; dans la liste de carte de travail. RÉGION DE C D'UNE TRIANGLE AVEC UNE FONCTION RACINE CARRÉE STANDARD C ENTRÉ - LECTEUR DE CARTES 5, ENTRÉE DE NOMBRE ENTIER C PRODUIT - UNITÉ 6, VRAI RENDEMENT D'IMPRIMANTE LIGNE PAR LIGNE CODE 1 DE SORTIE ERREURS DE L'ERREUR DISPAY D'ENTRÉE DE C DANS LA LISTE DE GESTION DE JOBS NOMBRE ENTIER A, B, C (5.501) A LU, B, C FORMAT 501 (3I5) C A, B, ET C PEUT NE PAS ÊTRE NÉGATIF C EN OUTRE, LA SOMME DE DEUX CÔTÉS D'UNE TRIANGLE C EST PLUS GRAND QUE LE TROISIÈME CÔTÉ, AINSI NOUS VÉRIFIONS CELUI, AUSSI SI (A.0) ARRÊT 1 SI ((A+B . A)) ARRÊT 1 C USING LA FORMULE DU HÉRON NOUS CALCULONS RÉGION DE C DE LA TRIANGLE S = (A + B + C)/2.0 SECTEUR = racine carrée (S * (S - A) * (S - B) * (S - C)) ÉCRIRE (6.601) A, B, C, SECTEUR FORMAT 601 (UNITÉS AREA=, F10.2, 12HSQUARE de 4H A=, d'I5,5H B=, d'I5,5H C=, d'I5,8H) ARRÊT EXTRÉMITÉ
FORTRAN III
IBM a également développé un Fortran de III en 1958 qui a tenu compte du code assembleur intégré entre d'autres dispositifs ; cependant, cette version n'a été jamais libérée comme produit. Comme les 704 Fortran et Fortran II, Fortran III a inclus les dispositifs machine-dépendants qui ont rendu le code écrit dans lui unportable à partir de la machine à la machine. Les versions tôt du Fortran ont fourni par des autres fournisseurs soufferts du même inconvénient. FORTRAN IV
Commençant dans le 1961 , en raison des demandes de client, IBM a commencé le développement d'un Fortran IV de qui a enlevé les dispositifs machine-dépendants de Fortran II (tel que le READ ENTRER TAPE), tout en ajoutant de nouveaux dispositifs tels qu'un type de données de LOGICAL, des expressions booléennes logique et le logique SI le rapport comme alternative à l'arithmétique de SI rapport. Fortran IV de a été par la suite libéré en 1962, d'abord pour le IBM 7030 (" ; Stretch" ;) ordinateur, suivi des versions pour le IBM 7090 et le IBM 7094 . Fortran 66
Peut-être le développement le plus significatif dans l'histoire des débuts du Fortran était la décision par l'association américaine (maintenant norme ANSI de normes de de ) pour former un comité pour développer un " ; Norme américaine Fortran." ; Les deux normes en résultant, approuvées en mars 1966, définies deux langues, Fortran de (basé sur Fortran IV, qui avait servi de norme de fait du ), et Fortran de base de (basé sur Fortran II, mais dépouillé de ses dispositifs machine-dépendants). Le Fortran défini par la première norme est devenu notoire comme Fortran 66 de (bien que beaucoup continus pour se rapporter à lui comme Fortran IV, la langue sur laquelle la norme a été en grande partie basée). Fortran 66 est effectivement devenu le premier " ; industrie-standard" ; version du Fortran. Fortran 66 a inclus :
Programme principal de SUBROUTINE, FUNCTION, et unités de programme du BLOCK DATA
INTEGER, REAL, types de données À DOUBLE PRÉCISION de de , de COMPLEX, et de LOGICAL * rapports de COMMON, de DIMENSION, et de EQUIVALENCE
rapport de DATA pour spécifier des valeurs initiales
Qualité intrinsèque et fonctions de EXTERNAL (bibliothèque de par exemple, )
Instruction d'affectation
GOTO, assigné GOTO, et rapports calculés de GOTO
IF logique et rapports (à trois voies) arithmétiques de IF
boucles de DO
rapports de READ, de WRITE, de BACKSPACE, de REWIND, et de ENDFILE pour l'entrée-sortie séquentielle
rapport de FORMAT
rapports de CALL, de RETURN, de PAUSE, et de STOP
Constantes de Hollerith dans des rapports de DATA et de FORMAT, et en tant qu'arguments réels aux procédures
Marques de jusqu'à six caractères de longueur
Lignes de commentaire Fortran 77
Après que le dégagement de la norme de Fortran 66, fournisseurs de compilateur ait présenté un certain nombre de prolongements au " ; Fortran" standard ; , norme ANSI de incitation en 1969 pour commencer le travail sur mettre à jour la norme 1966. Les versions finales de cette norme révisée ont circulé en 1977, menant à l'approbation formelle de la nouvelle norme de Fortran en avril 1978. La nouvelle norme, connue sous le nom de Fortran 77 de , a ajouté un certain nombre de dispositifs significatifs pour adresser plusieurs des points faibles de Fortran 66 :
Bloc IF de END IF, avec des clauses facultatives de ELSE et de ELSE IF, pour fournir l'appui amélioré de langue pour la programmation structurée
FAIRE les prolongements de boucle, y compris des expressions de paramètre, des incréments négatifs, et des comptes zéro de voyage
rapports de OPEN, de CLOSE, et de INQUIRE pour des possibilités améliorées d'entrée-sortie
Entrée-sortie d'accès direct de dossier
rapport de IMPLICIT
type de données de CHARACTER, avec les équipements énormément augmentés pour l'entrée et le rendement de caractère et le traitement des données caractère-basées
rapport de PARAMETER pour spécifier des constantes
rapport de SAVE pour des variables locales persistantes
Noms génériques pour des fonctions intrinsèques
Un ensemble de qualités intrinsèques (LGE, LGT, LLE, LLT) pour la comparaison de lexical des cordes, basée sur l'ordre de classement du ASCII . de (les fonctions d'ASCII ont été exigées par le Département de la Défense des États-Unis, dans leur voix conditionnelle d'approbation.)
Constantes de Hollerith et données de Hollerith, comme : de
le de SALUENT = 12HHELLO LÀ !
Le transfert de la commande dans la gamme d'a font une boucle (également connu comme " ; Range" prolongé ;).
Overindexing des bornes d'un tableau par des indices inférieurs. de
DU
Y= A (11.1) DE DIMENSION A (10.5) DE
DO WHILE de END DO
rapport de INCLUDE
Variante du IMPLICIT NONE du rapport de IMPLICIT
Fonctions intrinsèques de la modification de configuration binaire , basées sur les fonctions semblables incluses en Fortran industriel de temps réel de (ANSI/ISA S61.1 (1976)) Fortran 90
Le successeur beaucoup retardé de Fortran 77, officieusement connu sous le nom de Fortran 90 de , a été finalement libéré comme norme de norme ANSI en 1992. Cette révision principale a ajouté beaucoup de nouveaux dispositifs pour refléter les changements cruciaux de la pratique de programmation qui avait évolué depuis la norme 1978 :
entrée Free-form de source , aussi avec des mots-clés minuscules de Fortran
Marques jusqu'à 31 caractères de longueur
Commentaires intégrés
La capacité d'opérer range (ou des sections de rangée) dans son ensemble, de ce fait considérablement simplifiant des maths et machinant des calculs.
instructions d'affectation de rangée et expressions de rangée entières, partielles et masquées, telles que le   ; X (1 : N)=R (1 : N)*COS (A (1 : N)))
rapport de WHERE pour la tâche sélective de rangée
constantes et expressions ranger-évaluées,
fonctions ranger-évaluées définies pour l'utilisateur et constructeurs de rangée.
procédures du RECURSIVE
Modules , pour grouper les procédures relatives et les données ensemble, et les rendre disponibles à d'autres unités de programme, y compris les possibilités pour limiter l'accessibilité seulement aux pièces spécifiques du module.
Énormément amélioré argument-passant le mécanisme, permettant le connecte à vérifier à au moment de la compilation
Interfaces écrites par l'utilisateur pour des procédures génériques
Surcharge d'opérateur
Types de données dérivés de l'abrégé sur
Nouveau type syntaxe de données de déclaration, pour spécifier le type de données et d'autres attributs de variables
Attribution de mémoire dynamique au moyen de l'attribut de ALLOCATABLE et des rapports de ALLOCATE et de DEALLOCATE
attribut du POINTER , tâche d'indicateur, et rapport de NULLIFY pour faciliter la création et la manipulation des structures de données dynamiques
Constructions de bouclage structurées, avec un rapport du END DO pour l'arrêt de boucle, et rapports de EXIT et de CYCLE pour le " ; " d'éclatement ; des itérations normales de boucle de DO d'une manière ordonnée
construction de SELECT… CASE pour le choix de multi-manière
Spécifications portatives de précision numérique sous la commande de l'utilisateur
Procédures intrinsèques nouvelles et augmentées. Obsolescence et suppressions
À la différence de la révision précédente, Fortran 90 n'a supprimé aucun dispositif.1 indique, " ; La liste de dispositifs supprimés dans cette norme est empty." ;) N'importe quel programme de standard-conformation de Fortran 77 standard-se conforme également sous Fortran 90, et l'un ou l'autre standard devrait être utilisable pour définir son comportement. Fortran 95
Fortran 95 de était une révision mineure, résoudre la plupart du temps quelques problèmes en suspens de la norme de Fortran 90. Néanmoins, Fortran 95 a également ajouté un certain nombre de prolongements, notamment des spécifications de Fortran de haute performance de :
FORALL et constructions nichées de WHERE pour faciliter le vectorization
Procédures définies pour l'utilisateur de PURE et de ELEMENTAL
Initialisation de défaut d'initialisation et de structure d'indicateur Un supplément important à Fortran 95 était le technique TR-15581 du rapport d'OIN de : Type de données augmenté équipements , officieusement connus sous le nom de TR Allocatable. Ces spécifications de ont défini l'utilisation augmentée des rangées de ALLOCATABLE, avant la disponibilité entièrement des compilateurs de Fortran conformes de Fortran 2003. De telles utilisations incluent des rangées de ALLOCATABLE comme type dérivé composants, dans des listes d'argument factice de procédé, et en tant que valeurs de retour de fonction. (les rangées de ALLOCATABLE sont préférables aux rangées de POINTER-based parce que des rangées de ALLOCATABLE sont garanties par Fortran 95 à désaffecter automatiquement quand elles sortent de la portée, éliminant la possibilité de la fuite de mémoire de en outre, le crénelage n'est pas une issue pour l'optimisation des références de rangée, permettant à des compilateurs de produire d'un code plus rapide que dans le cas des indicateurs.) Compilation conditionnelle et cordes variables de longueur
En plus du " obligatoire ; Language" bas ; (défini dans ISO/IEC 1539-1 : 1997), la langue de Fortran 95 inclut également deux modules facultatifs :
Chaînes de caractères variables (ISO/IEC 1539-2 : 2000)
Compilation conditionnelle (ISO/IEC 1539-3 : 1998) ce qui, ensemble, comportent la norme internationale à parties multiples (ISO/IEC 1539). Fortran 2003
La norme la plus récente, Fortran 2003 de , est une révision importante présentant beaucoup de nouveaux dispositifs. Un résumé complet des nouveaux dispositifs de Fortran 2003 est disponible au site Web officiel du groupe de travail de Fortran (WG5).
Type dérivé perfectionnements : types dérivés paramétrisés, commande améliorée d'accessibilité, constructeurs améliorés de structure, et finalizers.
Appui de la programmation orientée objectivement : le type prolongation de et la transmission , le polymorphisme , type dynamique attribution de , et type-bondissent des procédures.
Perfectionnements de manipulation de données : les composants allocatable (TR de incorporation 15581), le type reporté paramètres, l'attribut , type explicite spécifications du VOLATILE dans des constructeurs de rangée et des directives d'attribution, des perfectionnements d'indicateur, des expressions prolongées d'initialisation, et des procédures intrinsèques augmentées.
Perfectionnements d'entrée-sortie : le transfert asynchrone du , accès de jet, utilisateur a spécifié des opérations de transfert pour les types dérivés, utilisateur a spécifié la commande de l'arrondissage pendant des conversions de format, des constantes appelées pour les unités preconnected, le rapport de FLUSH, la régularisation des mots-clés, et l'accès aux messages d'erreur.
Indicateurs de procédé de .
Soutien de l'arithmétique à point mobile d'IEEE de et de la manipulation d'exception de de la virgule flottante (TR de incorporation 15580).
Interopérabilité avec le langage de programmation du C .
Soutien d'utilisation internationale : accéder à OIN 10646 à 4 caractères de byte et choix de décimale ou de virgule dans l'entrée-sortie composée numérique.
Intégration augmentée avec le centre serveur du système d'exploitation : accéder à la ligne de commande de arguments de , aux variables d'environnement et aux messages d'erreur de processeur. Fortran 2008
Les efforts sont en cours pour développer une révision à Fortran 2003, à titre d'essai appelé le Fortran 2008. Comme avec Fortran 95, ceci est prévue pour être une mise à niveau mineure, des clarifications de incorporation et des corrections à Fortran 2003, aussi bien que présenter un choisi peu de nouvelles possibilités. Les nouvelles possibilités proposées incluent le
le Co-rangent Fortran - un modèle de traitement en simultanéité
Type de données du PEU Le legs du Fortran
Puisque le Fortran a été en service pendant plus de cinquante années, il y a un vaste corps du Fortran en utilisation quotidienne dans toutes les communautés scientifiques et de technologie. C'est la langue primaire pour certaines des tâches de superinformatique les plus intensives, telles que le temps et le climat de modelant , dynamique des fluides informatique , chimie informatique , chromodynamics de Quantum de , simulations de la dynamique à long terme de système solaire de , orbites de haute fidélité de satellite artificiel d'évolution de , et simulation de la dynamique d'accident d'automobile de . En effet, on constate que même aujourd'hui, demi-siècle plus tard, les repères à point mobile pour mesurer l'exécution de nouveaux processeurs d'ordinateur sont encore écrits en Fortran (le par exemple, CFP2000, le composant à point mobile de Spéc. Dispositifs de langue
Les dispositifs de langue de Fortran de décrits sont prévus pour être une vue d'ensemble assez complète de la langue de Fortran ; des détails complets peuvent être trouvés dans n'importe lequel de plusieurs manuels de Fortran. Seulement ces dispositifs employés couramment dans de nouveaux programmes sont décrits, comme peu des dispositifs historiques sont employés dans des programmes modernes. Toujours, les la plupart ont été maintenues dans la langue pour maintenir la compatibilité ascendante . Portabilité
La portabilité était un problème en débuts parce qu'il n'y avait aucune référence même d'IBM convenu manuel-et société informatique standard-non luttée pour différencier leurs offres de d'autres en fournissant les dispositifs incompatibles. Les normes ont amélioré la portabilité. La norme 1966 a fourni une syntaxe et une sémantique de référence, mais les fournisseurs ont continué à fournir des prolongements incompatibles. Bien que les programmeurs soigneux soient en venus à se rendre compte que l'utilisation des prolongements incompatibles a posé des problèmes chers de portabilité, et était donc using des programmes tels que le le vérificateur de PFORT, elle n'était pas jusqu'à après la norme 1977, quand le bureau national des normes (maintenant NIST ) a édité Fips Pub 69 , que de les processeurs ont acheté par le gouvernement des États-Unis ont été exigés pour diagnostiquer des prolongements de la norme. Plutôt qu'offrent deux processeurs, essentiellement chaque compilateur a par la suite eu au moins une option pour diagnostiquer des prolongements. Variantes du Fortran
Variantes spécifiques
Les fournisseurs des ordinateurs scientifiques à rendement élevé ( Burroughs de par exemple, , CDC , Cray , Honeywell , IBM , Texas Instruments , et UNIVAC ) ont ajouté des prolongements au Fortran pour tirer profit des dispositifs de matériel spéciaux tels que les canalisations de la cachette d'instruction de , du d'unité centrale de traitement, et les rangées de vecteur. Par exemple, un de compilateurs de Fortran d'IBM ( H IUP prolongé ) a eu un niveau d'optimisation qui a commandé à nouveau les instructions de langage machine du de maintenir les unités de calcul internes multiples occupées simultanément. Un autre exemple est le CFD , une variante spéciale du Fortran conçue spécifiquement pour l'ordinateur géant du ILLIAC IV , courant le centre de recherches d'Ames de de s de la NASA à le '. langues Fortran-basées
Avant Fortran 77, un certain nombre de préprocesseurs étaient utilisés généralement pour fournir à une langue plus amicale, l'avantage que le code prétraité pourrait être compilé sur n'importe quelle machine avec un compilateur de Fortran standard. Les préprocesseurs populaires ont inclus le FLECS , le MORTRAN , le Ratfor , et le Ratfiv . (Ratfor et Ratfiv, par exemple, ont mis en application remarquablement un C - comme la langue, produisant le code prétraité en Fortran standard 66.) EQUIVALENCE. Coder les exemples
Les programmes d'échantillon peuvent être compilés et course avec n'importe quel compilateur de Fortran standard (voir la fin de de cet article pour des listes de compilateurs). La plupart des compilateurs en Fortran modernes attendent un dossier avec une prolongation de .f ou de .for (pour la source à forme fixe de Fortran 66 ou de Fortran 77, bien que le dialecte de Fortran 66 puisse devoir être choisi spécifiquement avec une commande-ligne option) ou la prolongation de .f95 (pour la source free-form de Fortran 90/95, respectivement). Citations de Fortran
Pour un langage de programmation avec un legs de demi-siècle, le Fortran comme on pouvait s'y attendre a accumulé sa part des plaisanteries et du folklore. Du disque historique
Dieu de est vrai, à moins que nombre entier avoué. Allan Toogood, programmeur de Fortran.
Fortran de
" de
" de
" de
" de
" de
" de GO de rapport à JAIL a été produit. Le message est d'une carte de chance de dans le monopole . Références dans la culture populaire
Dans l'épisode pilote de la série de Futurama de , la cintreuse du robot boit une bouteille de boisson alcoolisée de malt de Fortran d'Olde de (faisant référence au " ; " anglais d'Olde ; boisson alcoolisée de malt)
Le folklore d'ordinateur de
En 1982, les fous du 10.000 ont libéré une chanson appelée " ; Le a prévu le " de l'obsolescence ; cela inclut la ligne répétée - " ; Vérité de la Science pendant la vie, dans la langue de Fortran l'answer" ;. Anecdotes de Fortran
Fortran II sur IBM 1401 et 1460
La lettre O a considéré nocif
ALLER au rapport de en tant qu'avant. (Des rapports ennuyeux de FORMAT de de on éliminerait , aussi bien.) Random links: Comté de Granville, la Caroline du Nord | Alberto Gerchunoff |